simulavr
1.1.0
|
Implements a stack with stack register using RAM as stackarea. More...
#include <hwstack.h>
Public Member Functions | |
HWStackSram (AvrDevice *core, int bitsize, bool initRAMEND=false) | |
Creates a stack instance. More... | |
virtual void | Push (unsigned char val) |
Pushs one byte to stack. More... | |
virtual unsigned char | Pop () |
Pops one byte from stack. More... | |
virtual void | PushAddr (unsigned long addr) |
Pushs a address to stack. More... | |
virtual unsigned long | PopAddr () |
Pops a address from stack. More... | |
virtual void | Reset () |
Resets stack pointer and listener table. More... | |
![]() | |
HWStack (AvrDevice *core) | |
Creates a stack instance. More... | |
virtual | ~HWStack () |
unsigned long | GetStackPointer () const |
Returns current stack pointer value. More... | |
void | SetStackPointer (unsigned long val) |
Sets current stack pointer value (used by GDB interface) More... | |
void | SetReturnPoint (unsigned long stackPointer, Funktor *listener) |
Subscribes a Listener for a return address. More... | |
void | ResetLowestStackpointer (void) |
Sets lowest stack marker back to current stackpointer. More... | |
unsigned long | GetLowestStackpointer (void) |
Gets back the lowest stack pointer (for measuring stack usage) More... | |
![]() | |
TraceValueRegister (TraceValueRegister *parent, const std::string &name) | |
Create a TraceValueRegister, with a scope prefix built on parent scope + name. More... | |
TraceValueRegister () | |
Create a TraceValueRegister, with a empty scope name, single device application. More... | |
virtual | ~TraceValueRegister () |
const std::string | GetTraceValuePrefix (void) |
Returns the scope prefix. More... | |
const std::string | GetScopeName (void) |
Returns the scope name. More... | |
void | RegisterTraceValue (TraceValue *t) |
Registers a TraceValue for this register. More... | |
void | UnregisterTraceValue (TraceValue *t) |
Unregisters a TraceValue, remove it from register. More... | |
TraceValueRegister * | GetScopeGroupByName (const std::string &name) |
Get a here registered TraceValueRegister by it's name. More... | |
virtual TraceValue * | GetTraceValueByName (const std::string &name) |
Get a here registered TraceValue by it's name. More... | |
TraceValueRegister * | FindScopeGroupByName (const std::string &name) |
Seek for a TraceValueRegister by it's name. More... | |
TraceValue * | FindTraceValueByName (const std::string &name) |
Seek for a TraceValue by it's name. More... | |
TraceSet * | GetAllTraceValues (void) |
Get all here registered TraceValue's only (not with descending values) More... | |
TraceSet * | GetAllTraceValuesRecursive (void) |
Get all here registered TraceValue's with descending values. More... | |
Public Attributes | |
IOReg< HWStackSram > | sph_reg |
IOReg< HWStackSram > | spl_reg |
![]() | |
ThreadList | m_ThreadList |
Protected Member Functions | |
void | SetSpl (unsigned char) |
void | SetSph (unsigned char) |
unsigned char | GetSpl () |
unsigned char | GetSph () |
void | OnSPReadByTarget () |
![]() | |
void | CheckReturnPoints () |
Run functions registered for current stack address and delete them. More... | |
![]() | |
virtual size_t | _tvr_getValuesCount (void) |
Get the count of all TraceValues, that are registered here and descending. More... | |
virtual void | _tvr_insertTraceValuesToSet (TraceSet &t) |
Insert all TraceValues into TraceSet, that registered here and descending. More... | |
Protected Attributes | |
unsigned long | stackCeil |
bool | initRAMEND |
![]() | |
AvrDevice * | core |
Link to device. More... | |
uint32_t | stackPointer |
current value of stack pointer More... | |
uint32_t | lowestStackPointer |
marker: lowest stackpointer used by program More... | |
std::multimap< unsigned long, Funktor * > | returnPointList |
Maps adresses to listeners for return addresses. More... | |
Implements a stack with stack register using RAM as stackarea.
HWStackSram::HWStackSram | ( | AvrDevice * | core, |
int | bitsize, | ||
bool | initRAMEND = false |
||
) |
Creates a stack instance.
Definition at line 70 of file hwstack.cpp.
|
protected |
Definition at line 181 of file hwstack.cpp.
References OnSPReadByTarget(), and HWStack::stackPointer.
|
protected |
Definition at line 186 of file hwstack.cpp.
References OnSPReadByTarget(), and HWStack::stackPointer.
|
protected |
Definition at line 190 of file hwstack.cpp.
References HWStack::m_ThreadList, ThreadList::OnSPRead(), and HWStack::stackPointer.
|
virtual |
Pops one byte from stack.
Implements HWStack.
Definition at line 112 of file hwstack.cpp.
References HWStack::CheckReturnPoints(), HWStack::core, AvrDevice::GetRWMem(), IOReg< P >::hardwareChange(), HWStack::m_ThreadList, ThreadList::OnPop(), sph_reg, spl_reg, stackCeil, HWStack::stackPointer, AvrDevice::trace_on, and traceOut.
Referenced by PopAddr().
|
virtual |
Pops a address from stack.
Implements HWStack.
Definition at line 137 of file hwstack.cpp.
References HWStack::core, AvrDevice::PC_size, and Pop().
|
virtual |
Pushs one byte to stack.
Implements HWStack.
Definition at line 94 of file hwstack.cpp.
References HWStack::CheckReturnPoints(), HWStack::core, IOReg< P >::hardwareChange(), HWStack::lowestStackPointer, HWStack::m_ThreadList, ThreadList::OnPush(), AvrDevice::SetRWMem(), sph_reg, spl_reg, stackCeil, HWStack::stackPointer, AvrDevice::trace_on, and traceOut.
Referenced by PushAddr().
|
virtual |
Pushs a address to stack.
Implements HWStack.
Definition at line 126 of file hwstack.cpp.
References HWStack::core, AvrDevice::PC_size, and Push().
|
virtual |
Resets stack pointer and listener table.
Reimplemented from HWStack.
Definition at line 83 of file hwstack.cpp.
References HWStack::core, AvrDevice::GetMemIOSize(), AvrDevice::GetMemIRamSize(), AvrDevice::GetMemRegisterSize(), initRAMEND, HWStack::lowestStackPointer, HWStack::returnPointList, and HWStack::stackPointer.
Referenced by HWStackSram().
|
protected |
Definition at line 164 of file hwstack.cpp.
References avr_warning, HWStack::CheckReturnPoints(), HWStack::core, IOReg< P >::hardwareChange(), HWStack::m_ThreadList, ThreadList::OnSPWrite(), sph_reg, stackCeil, HWStack::stackPointer, AvrDevice::trace_on, and traceOut.
|
protected |
Definition at line 149 of file hwstack.cpp.
References HWStack::CheckReturnPoints(), HWStack::core, IOReg< P >::hardwareChange(), HWStack::m_ThreadList, ThreadList::OnSPWrite(), spl_reg, stackCeil, HWStack::stackPointer, AvrDevice::trace_on, and traceOut.
|
protected |
IOReg<HWStackSram> HWStackSram::sph_reg |
IOReg<HWStackSram> HWStackSram::spl_reg |
|
protected |