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"); } };