arm: fix m5ops binary for ARM and add m5fail.
authorAli Saidi <Ali.Saidi@ARM.com>
Thu, 31 Oct 2013 18:41:13 +0000 (13:41 -0500)
committerAli Saidi <Ali.Saidi@ARM.com>
Thu, 31 Oct 2013 18:41:13 +0000 (13:41 -0500)
Changes to make m5ops work under virtualization seemed to break them working
with non-virtualized systems and the recently added m5 fail command makes
the m5op binary not compile.  For now remove the code for virtualization.

util/m5/m5.c
util/m5/m5op_arm.S

index 1ddaaf66ddd327e8f3e0e33b658d53d2d0559382..2fd2d15907aea1f6cb377310e52bdf55ab9723cf 100644 (file)
@@ -145,7 +145,9 @@ do_fail(int argc, char *argv[])
     if (argc < 1 || argc > 2)
         usage();
 
-    m5_fail((argc > 1) ? strtoul(argv[1], NULL, 0) : 0, strtoul(argv[0], NULL, 0));
+    uint64_t ints[2] = {0,0};
+    parse_int_args(argc, argv, ints, argc);
+    m5_fail(ints[1], ints[0]);
 }
 
 void
index 3a43913f7c93c8a2b41452bb1450ac953e9d9ab1..988abd76e2820bd48f2a5dd8b72b1bd32d673e2d 100644 (file)
         .align 2
         .globl \name
 \name:
-        /* First, try to trap into m5 using the m5-kvm hypercall
-         * hack. The bxj will become a branch to the fallback code
-         * if it is executed in the normal m5 environment.
-         */
-        push {lr}
-#ifdef __thumb__
-        adr lr, 1f+1
-#else
-        adr lr, 1f
-#endif
-        ldr ip, =((((\func) & 0xFF) << 8) | ((\subfunc) & 0xFF))
-        bxj lr
-        pop {pc}
-
-        /* Old-style m5 pseudo instruction using CP1 accesses */
-1:
 #ifdef __thumb__
         .short 0xEE00 | \func
         .short 0x0110 | (\subfunc << 12)
 #else
-        .long (0xEE000110 | (\func << 16) | (\subfunc << 12))
+        .long 0xEE000110 | (\func << 16) | (\subfunc << 12)
 #endif
-        pop {pc}
+        mov pc,lr
 .endm
 
 #define SIMPLE_OP(name, func, subfunc) simple_op name, func, subfunc