From a7c089ab06c863c794f2096a2c321b7e31ead5b6 Mon Sep 17 00:00:00 2001 From: Ali Saidi Date: Fri, 24 Sep 2004 14:16:51 -0400 Subject: [PATCH] only set stuff up for binning interrupts if interrupt binning is on kern/linux/linux_system.cc: Don't scheduling interrupt events if we are not binning interrupts kern/tru64/tru64_system.cc: set the bin_int boolean in the system structure --HG-- extra : convert_revision : 68eea9c448f1c481fc79be1777acb536d6385495 --- kern/linux/linux_system.cc | 41 ++++++++++++++++++++------------------ kern/tru64/tru64_system.cc | 1 + 2 files changed, 23 insertions(+), 19 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"); + 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"); - 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"); + 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"); + 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); }