diff options
-rw-r--r-- | kern/linux/linux_system.cc | 47 | ||||
-rw-r--r-- | kern/tru64/tru64_system.cc | 1 |
2 files changed, 26 insertions, 22 deletions
diff --git a/kern/linux/linux_system.cc b/kern/linux/linux_system.cc index fd5d48195..12bfafd6b 100644 --- a/kern/linux/linux_system.cc +++ b/kern/linux/linux_system.cc @@ -145,29 +145,32 @@ LinuxSystem::LinuxSystem(Params *p) printThreadEvent->schedule(addr + sizeof(MachInst) * 6); intStartEvent = new InterruptStartEvent(&pcEventQueue, "intStartEvent"); - if (palSymtab->findAddress("sys_int_21", addr)) - intStartEvent->schedule(addr + sizeof(MachInst) * 2); - else - panic("could not find symbol: sys_int_21\n"); - - intEndEvent = new InterruptEndEvent(&pcEventQueue, "intEndEvent"); - if (palSymtab->findAddress("rti_to_kern", addr)) - intEndEvent->schedule(addr) ; - else - panic("could not find symbol: rti_to_kern\n"); - - intEndEvent2 = new InterruptEndEvent(&pcEventQueue, "intEndEvent2"); - if (palSymtab->findAddress("rti_to_user", addr)) - intEndEvent2->schedule(addr); - else - panic("could not find symbol: rti_to_user\n"); - - intEndEvent3 = new InterruptEndEvent(&pcEventQueue, "intEndEvent3"); - if (kernelSymtab->findAddress("do_softirq", addr)) - intEndEvent3->schedule(addr + sizeof(MachInst) * 2); - else - panic("could not find symbol: do_softirq\n"); + if (params->bin_int) { + if (palSymtab->findAddress("sys_int_21", addr)) + intStartEvent->schedule(addr + sizeof(MachInst) * 2); + else + panic("could not find symbol: sys_int_21\n"); + + intEndEvent = new InterruptEndEvent(&pcEventQueue, "intEndEvent"); + if (palSymtab->findAddress("rti_to_kern", addr)) + intEndEvent->schedule(addr) ; + else + panic("could not find symbol: rti_to_kern\n"); + + intEndEvent2 = new InterruptEndEvent(&pcEventQueue, "intEndEvent2"); + if (palSymtab->findAddress("rti_to_user", addr)) + intEndEvent2->schedule(addr); + else + panic("could not find symbol: rti_to_user\n"); + + + intEndEvent3 = new InterruptEndEvent(&pcEventQueue, "intEndEvent3"); + if (kernelSymtab->findAddress("do_softirq", addr)) + intEndEvent3->schedule(addr + sizeof(MachInst) * 2); + else + panic("could not find symbol: do_softirq\n"); + } } LinuxSystem::~LinuxSystem() diff --git a/kern/tru64/tru64_system.cc b/kern/tru64/tru64_system.cc index 5493139ee..0380c9478 100644 --- a/kern/tru64/tru64_system.cc +++ b/kern/tru64/tru64_system.cc @@ -168,6 +168,7 @@ CREATE_SIM_OBJECT(Tru64System) p->system_rev = system_rev; p->bin = bin; p->binned_fns = binned_fns; + p->bin_int = false; return new Tru64System(p); } |