Go to the documentation of this file.
43 #include "arch/x86/generated/decoder.hh"
48 #include "debug/Faults.hh"
66 using namespace X86ISAInst::RomLabels;
69 if (m5reg.mode == LongMode) {
70 entry =
isSoft() ? extern_label_longModeSoftInterrupt :
71 extern_label_longModeInterrupt;
73 entry = extern_label_legacyModeInterrupt;
78 if (m5reg.mode == LongMode) {
79 entry = extern_label_longModeInterruptWithError;
81 panic(
"Legacy mode interrupts with error codes "
82 "aren't implemented.");
121 panic(
"Abort exception!");
130 panic(
"Unrecognized/invalid instruction executed:\n %s",
148 if (m5reg.mode == LongMode)
154 const char *modeStr =
"";
164 panic(
"Tried to %s unmapped address %#x.", modeStr,
addr);
166 panic(
"Tried to %s unmapped address %#x.\nPC: %#x, Instr: %s",
177 std::stringstream
ss;
185 DPRINTF(Faults,
"Init interrupt.\n");
204 SegAttr dataAttr = 0;
206 dataAttr.unusable = 0;
207 dataAttr.defaultSize = 0;
208 dataAttr.longMode = 0;
210 dataAttr.granularity = 0;
211 dataAttr.present = 1;
213 dataAttr.writable = 1;
214 dataAttr.readable = 1;
215 dataAttr.expandDown = 0;
226 SegAttr codeAttr = 0;
228 codeAttr.unusable = 0;
229 codeAttr.defaultSize = 0;
230 codeAttr.longMode = 0;
232 codeAttr.granularity = 0;
233 codeAttr.present = 1;
235 codeAttr.writable = 0;
236 codeAttr.readable = 1;
237 codeAttr.expandDown = 0;
242 0x00000000ffff0000ULL);
244 0x00000000ffff0000ULL);
294 MicroPC entry = X86ISAInst::RomLabels::extern_label_initIntHalt;
303 DPRINTF(Faults,
"Startup interrupt with vector %#x.\n",
vector);
305 if (m5Reg.mode != LegacyMode || m5Reg.submode !=
RealMode) {
306 panic(
"Startup IPI recived outside of real mode. "
307 "Don't know what to do. %d, %d", m5Reg.mode, m5Reg.submode);
virtual RegVal readMiscRegNoEffect(RegIndex misc_reg) const =0
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
static MicroPC romMicroPC(MicroPC upc)
virtual const char * mnemonic() const
virtual void setIntReg(RegIndex reg_idx, RegVal val)=0
static MiscRegIndex MISCREG_SEG_LIMIT(int index)
virtual void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr)
virtual std::string describe() const
bool FullSystem
The FullSystem variable can be used to determine the current mode of simulation.
virtual Process * getProcessPtr()=0
static MiscRegIndex MISCREG_SEG_SEL(int index)
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
SymbolTable debugSymbolTable
Global unified debugging symbol table (for target).
ThreadContext is the external interface to all thread state for anything outside of the CPU.
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
static IntRegIndex INTREG_MICRO(int index)
virtual std::string describe() const
static MiscRegIndex MISCREG_SEG_ATTR(int index)
This is exposed globally, independent of the ISA.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
virtual BaseTLB * getITBPtr()=0
virtual TheISA::PCState pcState() const =0
static MiscRegIndex MISCREG_SEG_EFF_BASE(int index)
virtual void demapPage(Addr vaddr, uint64_t asn)=0
const ExtMachInst machInst
The binary machine instruction.
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr)
virtual const std::string & disassemble(Addr pc, const Loader::SymbolTable *symtab=nullptr) const
Return string representation of disassembled instruction.
virtual RegVal readMiscReg(RegIndex misc_reg)=0
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
virtual void setMiscReg(RegIndex misc_reg, RegVal val)=0
void ccprintf(cp::Print &print)
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
static MiscRegIndex MISCREG_SEG_BASE(int index)
bool fixupFault(Addr vaddr)
Attempt to fix up a fault at vaddr by allocating a page on the stack.
void invoke(ThreadContext *tc, const StaticInstPtr &inst=StaticInst::nullStaticInstPtr) override
virtual BaseTLB * getDTBPtr()=0
#define panic(...)
This implements a cprintf based panic() function.
Generated on Wed Sep 30 2020 14:01:59 for gem5 by doxygen 1.8.17