simulavr  1.1.0
HWStackSram Class Reference

Implements a stack with stack register using RAM as stackarea. More...

#include <hwstack.h>

Inheritance diagram for HWStackSram:

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...
 
- Public Member Functions inherited from HWStack
 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...
 
- Public Member Functions inherited from TraceValueRegister
 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...
 
TraceValueRegisterGetScopeGroupByName (const std::string &name)
 Get a here registered TraceValueRegister by it's name. More...
 
virtual TraceValueGetTraceValueByName (const std::string &name)
 Get a here registered TraceValue by it's name. More...
 
TraceValueRegisterFindScopeGroupByName (const std::string &name)
 Seek for a TraceValueRegister by it's name. More...
 
TraceValueFindTraceValueByName (const std::string &name)
 Seek for a TraceValue by it's name. More...
 
TraceSetGetAllTraceValues (void)
 Get all here registered TraceValue's only (not with descending values) More...
 
TraceSetGetAllTraceValuesRecursive (void)
 Get all here registered TraceValue's with descending values. More...
 

Public Attributes

IOReg< HWStackSramsph_reg
 
IOReg< HWStackSramspl_reg
 
- Public Attributes inherited from HWStack
ThreadList m_ThreadList
 

Protected Member Functions

void SetSpl (unsigned char)
 
void SetSph (unsigned char)
 
unsigned char GetSpl ()
 
unsigned char GetSph ()
 
void OnSPReadByTarget ()
 
- Protected Member Functions inherited from HWStack
void CheckReturnPoints ()
 Run functions registered for current stack address and delete them. More...
 
- Protected Member Functions inherited from TraceValueRegister
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
 
- Protected Attributes inherited from HWStack
AvrDevicecore
 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...
 

Detailed Description

Implements a stack with stack register using RAM as stackarea.

Definition at line 131 of file hwstack.h.

Constructor & Destructor Documentation

◆ HWStackSram()

HWStackSram::HWStackSram ( AvrDevice core,
int  bitsize,
bool  initRAMEND = false 
)

Creates a stack instance.

Definition at line 70 of file hwstack.cpp.

References Reset(), and stackCeil.

Member Function Documentation

◆ GetSph()

unsigned char HWStackSram::GetSph ( )
protected

Definition at line 181 of file hwstack.cpp.

References OnSPReadByTarget(), and HWStack::stackPointer.

◆ GetSpl()

unsigned char HWStackSram::GetSpl ( )
protected

Definition at line 186 of file hwstack.cpp.

References OnSPReadByTarget(), and HWStack::stackPointer.

◆ OnSPReadByTarget()

void HWStackSram::OnSPReadByTarget ( )
protected

Definition at line 190 of file hwstack.cpp.

References HWStack::m_ThreadList, ThreadList::OnSPRead(), and HWStack::stackPointer.

Referenced by GetSph(), and GetSpl().

◆ Pop()

unsigned char HWStackSram::Pop ( )
virtual

◆ PopAddr()

unsigned long HWStackSram::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().

◆ Push()

void HWStackSram::Push ( unsigned char  val)
virtual

◆ PushAddr()

void HWStackSram::PushAddr ( unsigned long  addr)
virtual

Pushs a address to stack.

Implements HWStack.

Definition at line 126 of file hwstack.cpp.

References HWStack::core, AvrDevice::PC_size, and Push().

◆ Reset()

void HWStackSram::Reset ( void  )
virtual

◆ SetSph()

◆ SetSpl()

Member Data Documentation

◆ initRAMEND

bool HWStackSram::initRAMEND
protected

Definition at line 135 of file hwstack.h.

Referenced by Reset().

◆ sph_reg

IOReg<HWStackSram> HWStackSram::sph_reg

Definition at line 154 of file hwstack.h.

Referenced by Pop(), Push(), and SetSph().

◆ spl_reg

IOReg<HWStackSram> HWStackSram::spl_reg

Definition at line 155 of file hwstack.h.

Referenced by Pop(), Push(), and SetSpl().

◆ stackCeil

unsigned long HWStackSram::stackCeil
protected

Definition at line 134 of file hwstack.h.

Referenced by HWStackSram(), Pop(), Push(), SetSph(), and SetSpl().


The documentation for this class was generated from the following files: