only set stuff up for binning interrupts if interrupt binning is on
authorAli Saidi <saidi@eecs.umich.edu>
Fri, 24 Sep 2004 18:16:51 +0000 (14:16 -0400)
committerAli Saidi <saidi@eecs.umich.edu>
Fri, 24 Sep 2004 18:16:51 +0000 (14:16 -0400)
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
kern/tru64/tru64_system.cc

index fd5d481953bd9f5120c1e3544f43f269d0b84517..12bfafd6b89ddb6e5e4f5db9edbf591d87b644ae 100644 (file)
@@ -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()
index 5493139ee04e8a7792031b16b1a1e6c43e90f52c..0380c9478acc9a7982cb43098d212fef9b980054 100644 (file)
@@ -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);
 }