Go to the documentation of this file.
38 #ifndef __ARCH_ARM_SELF_DEBUG_HH__
39 #define __ARCH_ARM_SELF_DEBUG_HH__
75 bool vmid16,
bool aarch32):
156 SelfDebug* _conf,
bool lva,
bool aarch32) :
165 uint8_t
bas, uint8_t
mask,
unsigned size);
186 uint8_t
ssc, uint8_t
pac);
188 bool atomic,
unsigned size);
264 return (
Addr) 0xFFFF0000;
312 bool atomic,
unsigned size,
bool cm);
316 bool write,
bool cm);
332 case 0x0:
return true;
340 default:
panic(
"Unreachable value");
346 bool secure,
bool mask);
348 bool secure,
bool mask);
Fault testDebug(ThreadContext *tc, const RequestPtr &req, BaseTLB::Mode mode)
ExceptionLevel debugTargetFrom(ThreadContext *tc, bool secure)
bool isDoubleAligned(Addr addr)
static bool securityStateMatch(ThreadContext *tc, uint8_t ssc, bool hmc)
bool exceptionTrapping(ThreadContext *tc, ExceptionLevel el, ArmFault *fault)
void init(ThreadContext *tc)
bool test(ThreadContext *tc, Addr pc, ExceptionLevel el, DBGBCR ctr, bool from_link)
Addr getVectorBase(ThreadContext *tc, bool monitor)
bool testLinkedBk(ThreadContext *tc, Addr vaddr, ExceptionLevel el)
VectorCatch(bool _vcmatch, SelfDebug *s)
Bitfield< 23, 20 > atomic
void setAArch32(ThreadContext *tc)
static const uint8_t ACTIVE_NOT_PENDING_STATE
void setMDBGen(RegVal val)
static ExceptionLevel currEL(const ThreadContext *tc)
SoftwareStep(SelfDebug *s)
void updateDBGWCR(int index, DBGWCR val)
std::shared_ptr< Request > RequestPtr
std::vector< BrkPoint > arBrkPoints
bool testContextMatch(ThreadContext *tc, bool ctx1, bool low_ctx)
uint32_t getVMIDfromReg(ThreadContext *tc)
RegVal getContextfromReg(ThreadContext *tc, bool ctxid1) const
bool isEnabled(ThreadContext *tc, ExceptionLevel el, bool hmc, uint8_t ssc, uint8_t pac)
Fault triggerException(ThreadContext *tc, Addr vaddr)
void setDebugMask(bool mask)
bool isEnabled(ThreadContext *tc, ExceptionLevel el, uint8_t hmc, uint8_t ssc, uint8_t pmc)
bool ELIs32(ThreadContext *tc, ExceptionLevel el)
const DBGBCR getControlReg(ThreadContext *tc)
BrkPoint(MiscRegIndex ctrl_index, MiscRegIndex val_index, SelfDebug *_conf, bool ctx_aw, bool lva, bool vmid16, bool aarch32)
Fault testBreakPoints(ThreadContext *tc, Addr vaddr)
Fault triggerWatchpointException(ThreadContext *tc, Addr vaddr, bool write, bool cm)
ThreadContext is the external interface to all thread state for anything outside of the CPU.
Fault testWatchPoints(ThreadContext *tc, Addr vaddr, bool write, bool atomic, unsigned size, bool cm)
bool isActive(Addr vaddr)
SoftwareStep * getSstep()
void setMDSCRvals(RegVal val)
std::shared_ptr< FaultBase > Fault
MiscRegIndex ctrlRegIndex
bool isDebugEnabled(ThreadContext *tc)
bool advanceSS(ThreadContext *tc)
bool compareAddress(ThreadContext *tc, Addr in_addr, uint8_t bas, uint8_t mask, unsigned size)
bool addressMatching(ThreadContext *tc, Addr addr, ExceptionLevel el)
Addr getAddrfromReg(ThreadContext *tc)
WatchPoint(MiscRegIndex ctrl_index, MiscRegIndex val_index, SelfDebug *_conf, bool lva, bool aarch32)
MiscRegIndex ctrlRegIndex
bool testVMIDMatch(ThreadContext *tc)
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
void updateOSLock(RegVal val)
static const uint8_t INACTIVE_STATE
Addr getAddrfromReg(ThreadContext *tc) const
void updateControl(DBGWCR val)
std::vector< WatchPoint > arWatchPoints
Fault testVectorCatch(ThreadContext *tc, Addr addr, ArmFault *flt)
bool test(ThreadContext *tc, Addr addr, ExceptionLevel el, bool &wrt, bool atomic, unsigned size)
bool isDebugEnabledForEL32(ThreadContext *tc, ExceptionLevel el, bool secure, bool mask)
bool testAddrMissMatch(ThreadContext *tc, Addr pc, uint8_t bas)
virtual RegVal readMiscReg(RegIndex misc_reg)=0
static const uint8_t ACTIVE_PENDING_STATE
bool testAddrMatch(ThreadContext *tc, Addr pc, uint8_t bas)
bool debugExceptionReturnSS(ThreadContext *tc, CPSR spsr, ExceptionLevel dest)
void updateDBGBCR(int index, DBGBCR val)
void updateControl(DBGBCR val)
void setenableTDETGE(HCR hcr, HDCR mdcr)
std::vector< Fault * > vectorTypes()
bool targetAArch32(ThreadContext *tc)
BrkPoint * getBrkPoint(uint8_t index)
VectorCatch * getVectorCatch(ThreadContext *tc)
bool isSecure(ThreadContext *tc)
bool isDebugEnabledForEL64(ThreadContext *tc, ExceptionLevel el, bool secure, bool mask)
#define panic(...)
This implements a cprintf based panic() function.
T bits(T val, int first, int last)
Extract the bitfield from position 'first' to 'last' (inclusive) from 'val' and right justify it.
Generated on Wed Sep 30 2020 14:02:01 for gem5 by doxygen 1.8.17