diff options
author | Gabe Black <gblack@eecs.umich.edu> | 2009-04-26 02:06:21 -0700 |
---|---|---|
committer | Gabe Black <gblack@eecs.umich.edu> | 2009-04-26 02:06:21 -0700 |
commit | c5e2cf841d2502479a8f00c20ab70ab9ae325d69 (patch) | |
tree | cddec849e22944583155adb0400511c1773346e3 /src/dev | |
parent | 8d84f81e7041bd26320b0795800100f2aa298965 (diff) | |
download | gem5-c5e2cf841d2502479a8f00c20ab70ab9ae325d69.tar.xz |
X86: Record the initial APIC ID which identifies an APIC in M5.
The ID as exposed to software can be changed. Tracking those changes in M5
would be cumbersome, especially since there's no guarantee the IDs will remain
unique.
Diffstat (limited to 'src/dev')
-rw-r--r-- | src/dev/x86/i82094aa.cc | 2 | ||||
-rw-r--r-- | src/dev/x86/i82094aa.hh | 6 |
2 files changed, 5 insertions, 3 deletions
diff --git a/src/dev/x86/i82094aa.cc b/src/dev/x86/i82094aa.cc index 21332c3ae..e55f1ec87 100644 --- a/src/dev/x86/i82094aa.cc +++ b/src/dev/x86/i82094aa.cc @@ -40,7 +40,7 @@ X86ISA::I82094AA::I82094AA(Params *p) : PioDevice(p), IntDev(this), extIntPic(p->external_int_pic) { // This assumes there's only one I/O APIC in the system - id = p->apic_id; + initialApicId = id = p->apic_id; assert(id <= 0xf); arbId = id; regSel = 0; diff --git a/src/dev/x86/i82094aa.hh b/src/dev/x86/i82094aa.hh index 598e218f8..7501259c1 100644 --- a/src/dev/x86/i82094aa.hh +++ b/src/dev/x86/i82094aa.hh @@ -68,6 +68,7 @@ class I82094AA : public PioDevice, public IntDev I8259 * extIntPic; uint8_t regSel; + uint8_t initialApicId; uint8_t id; uint8_t arbId; @@ -103,8 +104,9 @@ class I82094AA : public PioDevice, public IntDev void getIntAddrRange(AddrRangeList &range_list) { range_list.clear(); - range_list.push_back(RangeEx(x86InterruptAddress(id, 0), - x86InterruptAddress(id, 0) + PhysAddrAPICRangeSize)); + range_list.push_back(RangeEx(x86InterruptAddress(initialApicId, 0), + x86InterruptAddress(initialApicId, 0) + + PhysAddrAPICRangeSize)); } void writeReg(uint8_t offset, uint32_t value); |