Go to the documentation of this file.
38 #ifndef __ARCH_X86_FAULTS_HH__
39 #define __ARCH_X86_FAULTS_HH__
61 const uint8_t _vector, uint64_t _errorCode=(uint64_t)-1) :
69 virtual bool isSoft() {
return false; }
74 virtual std::string
describe()
const;
127 return "unimplemented_micro";
134 panic(
"Unimplemented instruction!");
186 X86Interrupt(
"Non Maskable Interrupt",
"#NMI", 2, _vector)
233 X86Fault(
"Invalid-TSS",
"#TS", 10, _errorCode)
241 X86Fault(
"Segment-Not-Present",
"#NP", 11, _errorCode)
256 X86Fault(
"General-Protection",
"#GP", 13, _errorCode)
275 X86Fault(
"Page-Fault",
"#PF", 14, _errorCode),
addr(_addr)
282 PageFaultErrorCode code = 0;
295 virtual std::string
describe()
const;
302 X86Fault(
"x87 Floating-Point Exception Pending",
"#MF", 16)
380 #endif // __ARCH_X86_FAULTS_HH__
PageFault(Addr _addr, bool present, BaseTLB::Mode mode, bool user, bool reserved)
PageFault(Addr _addr, uint32_t _errorCode)
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
const char * name() const override
InvalidTSS(uint32_t _errorCode)
StartupInterrupt(uint8_t _vector)
virtual const char * mnemonic() const
NonMaskableInterrupt(uint8_t _vector)
GeneralProtection(uint32_t _errorCode)
SegmentNotPresent(uint32_t _errorCode)
InitInterrupt(uint8_t _vector)
virtual std::string describe() const
SystemManagementInterrupt()
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
ThreadContext is the external interface to all thread state for anything outside of the CPU.
const char * name() const override
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
virtual std::string describe() const
StackFault(uint32_t _errorCode)
EndBitUnion(PageFaultErrorCode) Addr addr
virtual uint8_t getVector() const
Get the vector of an interrupt.
This is exposed globally, independent of the ISA.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
static StaticInstPtr nullStaticInstPtr
Pointer to a statically allocated "null" instruction object.
BitUnion32(PageFaultErrorCode) Bitfield< 0 > present
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr)
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
SoftwareInterrupt(uint8_t _vector)
ExternalInterrupt(uint8_t _vector)
#define panic(...)
This implements a cprintf based panic() function.
X86FaultBase(const char *_faultName, const char *_mnem, const uint8_t _vector, uint64_t _errorCode=(uint64_t) -1)
Generated on Wed Sep 30 2020 14:01:59 for gem5 by doxygen 1.8.17