make m5 readfile work on solaris... we can have a solaris regression soon!
authorAli Saidi <saidi@eecs.umich.edu>
Sun, 25 Feb 2007 03:05:01 +0000 (22:05 -0500)
committerAli Saidi <saidi@eecs.umich.edu>
Sun, 25 Feb 2007 03:05:01 +0000 (22:05 -0500)
src/arch/sparc/isa/decoder.isa:
    add readfile and break to sparc decoder
src/arch/sparc/isa/operands.isa:
    fix O0-O5 operands registers
util/m5/Makefile.sparc:
    Make sparc makefile compile a 64bit binary
util/m5/m5.c:
    readfile was in here twice, once will be sufficient I think
util/m5/m5op_sparc.S:
    implement readfile and debugbreak

--HG--
extra : convert_revision : 139b3f480ee6342b37b5642e072c8486d91a3944

src/arch/sparc/isa/decoder.isa
src/arch/sparc/isa/operands.isa
util/m5/Makefile.sparc
util/m5/m5.c
util/m5/m5op_sparc.S

index e2d1707dd12a92ca52fd5d5c790c478be6caa0f7..c07295248f81b3dee6738cfec9b4da85d2fc07ff 100644 (file)
@@ -1014,6 +1014,11 @@ decode OP default Unknown::unknown()
                 // we have 7 bits of space here to play with...
                 0x21: m5exit({{PseudoInst::m5exit(xc->tcBase(), O0);
                               }}, No_OpClass, IsNonSpeculative);
+                0x50: m5readfile({{
+                                 O0 = PseudoInst::readfile(xc->tcBase(), O0, O1, O2);
+                                 }}, IsNonSpeculative);
+                0x51: m5break({{PseudoInst::debugbreak(xc->tcBase());
+                              }}, IsNonSpeculative);
                 0x54: m5panic({{
                               panic("M5 panic instruction called at pc=%#x.", xc->readPC());
                               }}, No_OpClass, IsNonSpeculative);
index 82e9407de982da82540e14db6f77d9a8bc735050..092544aab2d72d48b79dd8da806fb4492cdd401e 100644 (file)
@@ -100,12 +100,12 @@ def operands {{
     'R1':              ('IntReg', 'udw', '1', None, 7),
     'R15':             ('IntReg', 'udw', '15', 'IsInteger', 8),
     'R16':             ('IntReg', 'udw', '16', None, 9),
-    'O0':               ('IntReg', 'udw', '24', 'IsInteger', 10),
-    'O1':               ('IntReg', 'udw', '25', 'IsInteger', 11),
-    'O2':               ('IntReg', 'udw', '26', 'IsInteger', 12),
-    'O3':               ('IntReg', 'udw', '27', 'IsInteger', 13),
-    'O4':               ('IntReg', 'udw', '28', 'IsInteger', 14),
-    'O5':               ('IntReg', 'udw', '29', 'IsInteger', 15),
+    'O0':               ('IntReg', 'udw', '8', 'IsInteger', 10),
+    'O1':               ('IntReg', 'udw', '9', 'IsInteger', 11),
+    'O2':               ('IntReg', 'udw', '10', 'IsInteger', 12),
+    'O3':               ('IntReg', 'udw', '11', 'IsInteger', 13),
+    'O4':               ('IntReg', 'udw', '12', 'IsInteger', 14),
+    'O5':               ('IntReg', 'udw', '13', 'IsInteger', 15),
 
     # Control registers
 #   'Y':               ('ControlReg', 'udw', 'MISCREG_Y', None, 40),
index 835ccb2a4a344debb686db3756c21b9ef21d816c..76d82857b5182b00c2baa9cb11f2ae18ab9eb043 100644 (file)
@@ -35,7 +35,7 @@ CC=$(CROSS_COMPILE)gcc
 AS=$(CROSS_COMPILE)as
 LD=$(CROSS_COMPILE)ld
 
-CFLAGS=-O2 
+CFLAGS=-O2 -m64
 OBJS=m5.o m5op_sparc.o
 
 all: m5
@@ -47,7 +47,7 @@ all: m5
        $(CC)  $(CFLAGS) -o $@ -c $<
 
 m5: $(OBJS)
-       $(CC) -o $@ $(OBJS)
+       $(CC) -m64 -o $@ $(OBJS)
 
 clean:
        rm -f *.o m5
index 190289f06bdff24cdf740101b3e76c2ba5fc2cc3..b103796a853f11fe1f50f8d0f13d9aafb8ff334c 100644 (file)
@@ -186,21 +186,5 @@ main(int argc, char *argv[])
         m5_loadsymbol(arg1);
         return 0;
     }
-    if (COMPARE("readfile")) {
-            char buf[256*1024];
-            int offset = 0;
-            int len;
-
-            if (argc != 2)
-                    usage();
-
-            while ((len = m5_readfile(buf, sizeof(buf), offset)) > 0) {
-                    write(STDOUT_FILENO, buf, len);
-                    offset += len;
-            }
-
-            return 0;
-    }
-
     usage();
 }
index b5c421bdf5092f98fe1831cc42b052d811363473..40248ff8bf50329756e3add6fcac3d0b4c612732 100644 (file)
@@ -49,8 +49,10 @@ func:
 #define END(func)         \
         .size    func, (.-func)
 
+#define DEBUGBREAK INST(debugbreak_func, 0, 0, 0)
 #define M5EXIT INST(exit_func, 0, 0, 0)
 #define PANIC INST(panic_func, 0, 0, 0)
+#define READFILE INST(readfile_func, 0, 0, 0)
 
 LEAF(m5_exit)
     retl
@@ -62,6 +64,15 @@ LEAF(m5_panic)
     PANIC
 END(m5_panic)
 
+LEAF(m5_readfile)
+    retl
+    READFILE
+END(m5_readfile)
+
+LEAF(m5_debugbreak)
+    retl
+    DEBUGBREAK
+END(m5_debugbreak)
 
 /* !!!!!! All code below here just panics !!!!!! */
 LEAF(arm)
@@ -119,16 +130,6 @@ LEAF(m5_checkpoint)
     PANIC
 END(m5_checkpoint)
 
-LEAF(m5_readfile)
-    retl
-    PANIC
-END(m5_readfile)
-
-LEAF(m5_debugbreak)
-    retl
-    PANIC
-END(m5_debugbreak)
-
 LEAF(m5_switchcpu)
     retl
     PANIC