Fix compiling for SPARC_SE:
authorAli Saidi <saidi@eecs.umich.edu>
Sun, 11 Jun 2006 21:21:02 +0000 (17:21 -0400)
committerAli Saidi <saidi@eecs.umich.edu>
Sun, 11 Jun 2006 21:21:02 +0000 (17:21 -0400)
- change include from exec_context.hh -> threadcontext.hh
- g++ 4.0.3 complaint about broken code (which it was).
- bad merge thread_context -> exec_context

src/arch/sparc/isa/includes.isa:
    Fix SPARC_SE for exec_context->thread_context switch
src/arch/sparc/regfile.hh:
    fix g++ 4.0.3 complaint about broken code (which it was).
src/cpu/thread_context.hh:
    fix bad merge

--HG--
extra : convert_revision : f5bab822d5c25177756e9890e143b0ad8d704201

src/arch/sparc/isa/includes.isa
src/arch/sparc/regfile.hh
src/cpu/thread_context.hh

index 762de243a3a6d675982db06f44611478713e9957..40afb372284953223b6f44d5f99d60b26d7602b4 100644 (file)
@@ -48,7 +48,7 @@ output header {{
 output decoder {{
 #include "base/cprintf.hh"
 #include "base/loader/symtab.hh"
-#include "cpu/exec_context.hh"  // for Jump::branchTarget()
+#include "cpu/thread_context.hh"  // for Jump::branchTarget()
 
 #include <math.h>
 #if defined(linux)
index 760edc41ebb9c1aa59d27a96eab3b32a039aa417..cbeb3c7b9819c65b187baeb0a4eb1d399e025620 100644 (file)
@@ -244,17 +244,22 @@ namespace SparcISA
             //In each of these cases, we have to copy the value into a temporary
             //variable. This is because we may otherwise try to access an
             //unaligned portion of memory.
+
+            uint32_t result32;
+            uint64_t result64;
             switch(width)
             {
               case SingleWidth:
-                uint32_t result32 = gtoh((uint32_t)val);
+                result32 = gtoh((uint32_t)val);
                 memcpy(regSpace + 4 * floatReg, &result32, width);
+                break;
               case DoubleWidth:
-                uint64_t result64 = gtoh((uint64_t)val);
+                result64 = gtoh((uint64_t)val);
                 memcpy(regSpace + 4 * floatReg, &result64, width);
+                break;
               case QuadWidth:
-                uint64_t result128 = gtoh((uint64_t)val);
-                memcpy(regSpace + 4 * floatReg, &result128, width);
+                panic("Quad width FP not implemented.");
+                break;
               default:
                 panic("Attempted to read a %d bit floating point register!", width);
             }
@@ -266,17 +271,21 @@ namespace SparcISA
             //In each of these cases, we have to copy the value into a temporary
             //variable. This is because we may otherwise try to access an
             //unaligned portion of memory.
+            uint32_t result32;
+            uint64_t result64;
             switch(width)
             {
               case SingleWidth:
-                uint32_t result32 = gtoh((uint32_t)val);
+                result32 = gtoh((uint32_t)val);
                 memcpy(regSpace + 4 * floatReg, &result32, width);
+                break;
               case DoubleWidth:
-                uint64_t result64 = gtoh((uint64_t)val);
+                result64 = gtoh((uint64_t)val);
                 memcpy(regSpace + 4 * floatReg, &result64, width);
+                break;
               case QuadWidth:
-                uint64_t result128 = gtoh((uint64_t)val);
-                memcpy(regSpace + 4 * floatReg, &result128, width);
+                panic("Quad width FP not implemented.");
+                break;
               default:
                 panic("Attempted to read a %d bit floating point register!", width);
             }
index e3bb7d9c3363f2b61d09f1cb1e6f883f867a5227..48c8fa28dd315219993545d23358cee94de9ac05 100644 (file)
@@ -245,6 +245,7 @@ class ThreadContext
 
     virtual void setSyscallReturn(SyscallReturn return_value) = 0;
 
+    virtual void syscall(int64_t callnum) = 0;
 
     // Same with st cond failures.
     virtual Counter readFuncExeInst() = 0;
@@ -431,6 +432,7 @@ class ProxyThreadContext : public ThreadContext
     void setSyscallReturn(SyscallReturn return_value)
     { actualTC->setSyscallReturn(return_value); }
 
+    void syscall(int64_t callnum) { actualTC->syscall(callnum); }
 
     Counter readFuncExeInst() { return actualTC->readFuncExeInst(); }
 #endif