Go to the documentation of this file.
43 #include "arch/x86/generated/decoder.hh"
49 #include "debug/Faults.hh"
70 using namespace X86ISAInst::rom_labels;
73 if (m5reg.mode == LongMode) {
74 entry =
isSoft() ? extern_label_longModeSoftInterrupt :
75 extern_label_longModeInterrupt;
77 entry = extern_label_legacyModeInterrupt;
82 if (m5reg.mode == LongMode) {
83 entry = extern_label_longModeInterruptWithError;
85 panic(
"Legacy mode interrupts with error codes "
86 "aren't implemented.");
101 std::stringstream
ss;
125 panic(
"Abort exception!");
135 panic(
"Unrecognized/invalid instruction executed:\n %s",
152 if (m5reg.mode == LongMode)
158 const char *modeStr =
"";
168 panic(
"Tried to %s unmapped address %#x.", modeStr,
addr);
170 panic(
"Tried to %s unmapped address %#x.\nPC: %#x, Instr: %s",
181 std::stringstream
ss;
189 DPRINTF(Faults,
"Init interrupt.\n");
208 SegAttr dataAttr = 0;
210 dataAttr.unusable = 0;
211 dataAttr.defaultSize = 0;
212 dataAttr.longMode = 0;
214 dataAttr.granularity = 0;
215 dataAttr.present = 1;
217 dataAttr.writable = 1;
218 dataAttr.readable = 1;
219 dataAttr.expandDown = 0;
230 SegAttr codeAttr = 0;
232 codeAttr.unusable = 0;
233 codeAttr.defaultSize = 0;
234 codeAttr.longMode = 0;
236 codeAttr.granularity = 0;
237 codeAttr.present = 1;
239 codeAttr.writable = 0;
240 codeAttr.readable = 1;
241 codeAttr.expandDown = 0;
246 0x00000000ffff0000ULL);
248 0x00000000ffff0000ULL);
298 MicroPC entry = X86ISAInst::rom_labels::extern_label_initIntHalt;
307 DPRINTF(Faults,
"Startup interrupt with vector %#x.\n",
vector);
309 if (m5Reg.mode != LegacyMode || m5Reg.submode !=
RealMode) {
310 panic(
"Startup IPI recived outside of real mode. "
311 "Don't know what to do. %d, %d", m5Reg.mode, m5Reg.submode);
virtual void setIntReg(RegIndex reg_idx, RegVal val)=0
virtual RegVal readMiscReg(RegIndex misc_reg)=0
static MiscRegIndex MISCREG_SEG_SEL(int index)
static MiscRegIndex MISCREG_SEG_LIMIT(int index)
void invoke(ThreadContext *tc, const StaticInstPtr &inst=nullStaticInstPtr) override
virtual BaseMMU * getMMUPtr()=0
static MiscRegIndex MISCREG_SEG_ATTR(int index)
void invoke(ThreadContext *tc, const StaticInstPtr &inst=nullStaticInstPtr) override
T * get() const
Directly access the pointer itself without taking a reference.
void invoke(ThreadContext *tc, const StaticInstPtr &inst=nullStaticInstPtr) override
void ccprintf(cp::Print &print)
bool fixupFault(Addr vaddr)
Attempt to fix up a fault at vaddr by allocating a page on the stack.
ThreadContext is the external interface to all thread state for anything outside of the CPU.
void demapPage(Addr vaddr, uint64_t asn)
static MiscRegIndex MISCREG_SEG_BASE(int index)
virtual TheISA::PCState pcState() const =0
virtual RegVal readMiscRegNoEffect(RegIndex misc_reg) const =0
virtual std::string describe() const
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
void invoke(ThreadContext *tc, const StaticInstPtr &inst=nullStaticInstPtr) override
virtual void invoke(ThreadContext *tc, const StaticInstPtr &inst=nullStaticInstPtr)
static IntRegIndex INTREG_MICRO(int index)
virtual Process * getProcessPtr()=0
bool FullSystem
The FullSystem variable can be used to determine the current mode of simulation.
Base class for all X86 static instructions.
virtual const std::string & disassemble(Addr pc, const loader::SymbolTable *symtab=nullptr) const
Return string representation of disassembled instruction.
static MiscRegIndex MISCREG_SEG_EFF_BASE(int index)
virtual void setMiscReg(RegIndex misc_reg, RegVal val)=0
static MicroPC romMicroPC(MicroPC upc)
void invoke(ThreadContext *tc, const StaticInstPtr &inst=nullStaticInstPtr) override
SymbolTable debugSymbolTable
Global unified debugging symbol table (for target).
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
void invoke(ThreadContext *tc, const StaticInstPtr &inst=nullStaticInstPtr) override
virtual const char * mnemonic() const
virtual std::string describe() const
void invoke(ThreadContext *tc, const StaticInstPtr &inst=nullStaticInstPtr)
#define panic(...)
This implements a cprintf based panic() function.
Generated on Tue Sep 21 2021 12:24:30 for gem5 by doxygen 1.8.17