Calling syscalls from within the trap instruction's invoke method won't work because...
authorGabe Black <gblack@eecs.umich.edu>
Fri, 3 Nov 2006 19:40:35 +0000 (14:40 -0500)
committerGabe Black <gblack@eecs.umich.edu>
Fri, 3 Nov 2006 19:40:35 +0000 (14:40 -0500)
--HG--
extra : convert_revision : 1805c9244cfd62d0ee7862d8fd7c9983e00c5747

src/arch/sparc/faults.cc
src/arch/sparc/faults.hh
src/arch/sparc/isa/decoder.isa

index 6bca6adc58dab97b87f0dc5b524bcd50adf76687..da7fc730d00c1779f94eddf85527f976a9573c0f 100644 (file)
@@ -399,11 +399,6 @@ void PowerOnReset::invoke(ThreadContext * tc)
 
 #if !FULL_SYSTEM
 
-void TrapInstruction::invoke(ThreadContext * tc)
-{
-    // Should be handled in ISA.
-}
-
 void SpillNNormal::invoke(ThreadContext *tc)
 {
     doNormalFault(tc, trapType());
index c087365a24abade0431990a5b0fd1e5449bf4a16..0c7106707b87610515b69f108d5b23deeb5d087f 100644 (file)
@@ -604,17 +604,12 @@ class TrapInstruction : public EnumeratedFault
     static TrapType _baseTrapType;
     static FaultPriority _priority;
     static FaultStat _count;
-    uint64_t syscall_num;
     TrapType baseTrapType() {return _baseTrapType;}
   public:
-    TrapInstruction(uint32_t n, uint64_t syscall) :
-        EnumeratedFault(n), syscall_num(syscall) {;}
+    TrapInstruction(int32_t n) : EnumeratedFault(n) {;}
     FaultName name() {return _name;}
     FaultPriority priority() {return _priority;}
     FaultStat & countStat() {return _count;}
-#if !FULL_SYSTEM
-    void invoke(ThreadContext * tc);
-#endif
 };
 
 
index 33352cb2c05d163c64b84b6a758812541d038c53..a5f43367d7b8436d4980beace9328d443791b509 100644 (file)
@@ -726,7 +726,7 @@ decode OP default Unknown::unknown()
 #if FULL_SYSTEM
                         int lTrapNum = I ? (Rs1 + SW_TRAP) : (Rs1 + Rs2);
                         DPRINTF(Sparc, "The trap number is %d\n", lTrapNum);
-                        fault = new TrapInstruction(lTrapNum, R1);
+                        fault = new TrapInstruction(lTrapNum);
 #else
                         DPRINTF(Sparc, "The syscall number is %d\n", R1);
                         xc->syscall(R1);
@@ -739,7 +739,7 @@ decode OP default Unknown::unknown()
 #if FULL_SYSTEM
                         int lTrapNum = I ? (Rs1 + SW_TRAP) : (Rs1 + Rs2);
                         DPRINTF(Sparc, "The trap number is %d\n", lTrapNum);
-                        fault = new TrapInstruction(lTrapNum, R1);
+                        fault = new TrapInstruction(lTrapNum);
 #else
                         DPRINTF(Sparc, "The syscall number is %d\n", R1);
                         xc->syscall(R1);