summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--configs/common/FSConfig.py19
-rw-r--r--configs/example/fs.py4
-rw-r--r--src/arch/x86/interrupts.hh20
3 files changed, 33 insertions, 10 deletions
diff --git a/configs/common/FSConfig.py b/configs/common/FSConfig.py
index 2ab214dc5..78be4fc3a 100644
--- a/configs/common/FSConfig.py
+++ b/configs/common/FSConfig.py
@@ -118,6 +118,25 @@ def makeSparcSystem(mem_mode, mdesc = None):
return self
+def makeX86System(mem_mode, mdesc = None):
+ self = X86System()
+ if not mdesc:
+ # generic system
+ mdesc = SysConfig()
+ self.readfile = mdesc.script()
+
+ # Physical memory
+ self.membus = Bus(bus_id=0)
+ self.physmem = PhysicalMemory(range = AddrRange(mdesc.mem()))
+ self.physmem.port = self.membus.port
+
+ # Platform
+ self.opteron = Opteron()
+
+ self.intrctrl = IntrControl()
+
+ return self
+
def makeDualRoot(testSystem, driveSystem, dumpfile):
self = Root()
diff --git a/configs/example/fs.py b/configs/example/fs.py
index 3a57fe5b8..ea525bf41 100644
--- a/configs/example/fs.py
+++ b/configs/example/fs.py
@@ -99,6 +99,8 @@ if m5.build_env['TARGET_ISA'] == "alpha":
test_sys = makeLinuxAlphaSystem(test_mem_mode, bm[0])
elif m5.build_env['TARGET_ISA'] == "sparc":
test_sys = makeSparcSystem(test_mem_mode, bm[0])
+elif m5.build_env['TARGET_ISA'] == "x86":
+ test_sys = makeX86System(test_mem_mode, bm[0])
else:
m5.panic("incapable of building non-alpha or non-sparc full system!")
@@ -140,6 +142,8 @@ if len(bm) == 2:
drive_sys = makeLinuxAlphaSystem(drive_mem_mode, bm[1])
elif m5.build_env['TARGET_ISA'] == 'sparc':
drive_sys = makeSparcSystem(drive_mem_mode, bm[1])
+ elif m5.build.env['TARGET_ISA'] == 'x86':
+ drive_sys = makeX86System(drive_mem_mode, bm[1])
drive_sys.cpu = DriveCPUClass(cpu_id=0)
drive_sys.cpu.connectMemPorts(drive_sys.membus)
if options.fastmem:
diff --git a/src/arch/x86/interrupts.hh b/src/arch/x86/interrupts.hh
index 614909f73..0ae68618a 100644
--- a/src/arch/x86/interrupts.hh
+++ b/src/arch/x86/interrupts.hh
@@ -74,56 +74,56 @@ class Interrupts
int InterruptLevel(uint64_t softint)
{
- panic("Interrupts don't work on x86!\n");
+ panic("Interrupts::InterruptLevel unimplemented!\n");
return 0;
}
void post(int int_num, int index)
{
- panic("Interrupts don't work on x86!\n");
+ panic("Interrupts::post unimplemented!\n");
}
void clear(int int_num, int index)
{
- panic("Interrupts don't work on x86!\n");
+ panic("Interrupts::clear unimplemented!\n");
}
void clear_all()
{
- panic("Interrupts don't work on x86!\n");
+ warn("Interrupts::clear_all unimplemented!\n");
}
bool check_interrupts(ThreadContext * tc) const
{
- panic("Interrupts don't work on x86!\n");
+ panic("Interrupts::check_interrupts unimplemented!\n");
return false;
}
Fault getInterrupt(ThreadContext * tc)
{
- panic("Interrupts don't work on x86!\n");
+ panic("Interrupts::getInterrupt unimplemented!\n");
return NoFault;
}
void updateIntrInfo(ThreadContext * tc)
{
- panic("Interrupts don't work on x86!\n");
+ panic("Interrupts::updateIntrInfo unimplemented!\n");
}
uint64_t get_vec(int int_num)
{
- panic("Interrupts don't work on x86!\n");
+ panic("Interrupts::get_vec unimplemented!\n");
return 0;
}
void serialize(std::ostream & os)
{
- panic("Interrupts don't work on x86!\n");
+ panic("Interrupts::serialize unimplemented!\n");
}
void unserialize(Checkpoint * cp, const std::string & section)
{
- panic("Interrupts don't work on x86!\n");
+ panic("Interrupts::unserialize unimplemented!\n");
}
};