]> git.ipfire.org Git - thirdparty/grub.git/commitdiff
Remove -march=mips3 from TARGET_CCASFLAGS as it creates linking problem
authorVladimir Serbinenko <phcoder@gmail.com>
Fri, 22 Nov 2013 03:36:53 +0000 (04:36 +0100)
committerVladimir Serbinenko <phcoder@gmail.com>
Fri, 22 Nov 2013 03:36:53 +0000 (04:36 +0100)
when rest of GRUB is compiled for hisher stepping. Instead use
.set mips3/.set mips1 around cache and sync opcodes.

ChangeLog
conf/Makefile.common
grub-core/kern/mips/cache.S
grub-core/kern/mips/cache_flush.S

index b94054a5a1896707d3c01bfd2853658de1ed0868..6e2ceeb3e6accbabb8bd86c67e540abd52d45ea5 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2013-11-22  Vladimir Serbinenko  <phcoder@gmail.com>
+
+       Remove -march=mips3 from TARGET_CCASFLAGS as it creates linking problem
+       when rest of GRUB is compiled for hisher stepping. Instead use
+       .set mips3/.set mips1 around cache and sync opcodes.
+
 2013-11-21  Vladimir Serbinenko  <phcoder@gmail.com>
 
        Unify GOT/trampoline handling between PPC, MIPS and IA64 as they
index 39d2f4d604ff04c508e3ecbc8473ec38de955498..835aeeac5b914932a881bb8c5df92205bc08aae6 100644 (file)
@@ -12,7 +12,6 @@ if COND_mips_loongson
 endif
 if COND_mips
   CFLAGS_PLATFORM += -mflush-func=grub_red_herring
-  CCASFLAGS_PLATFORM = -march=mips3
 endif
 if COND_sparc64_ieee1275
   CFLAGS_PLATFORM += -mno-app-regs
index 141c030e97955ce62a78f3bd4b7c1ab3928bbd72..cca4b30fe38d8c3dbef337dc713160db3d107c9c 100644 (file)
@@ -20,11 +20,11 @@ FUNCTION (grub_arch_sync_dma_caches)
        move $t0, $t2
        subu $t1, $t3, $t2
 1:
-       cache 1, 0($t0)
+       cache_op 1, 0($t0)
 #ifdef GRUB_MACHINE_MIPS_LOONGSON
-       cache 1, 1($t0)
-       cache 1, 2($t0)
-       cache 1, 3($t0)
+       cache_op 1, 1($t0)
+       cache_op 1, 2($t0)
+       cache_op 1, 3($t0)
 
        addiu $t1, $t1, -0x20
        bne $t1, $zero, 1b
@@ -34,36 +34,36 @@ FUNCTION (grub_arch_sync_dma_caches)
        bne $t1, $zero, 1b
         addiu $t0, $t0, 0x4
 #endif
-       sync
+       sync_op
        move $t0, $t2
        subu $t1, $t3, $t2
 2:
 #ifdef GRUB_MACHINE_MIPS_LOONGSON
-       cache 0, 0($t0)
+       cache_op 0, 0($t0)
        addiu $t1, $t1, -0x20
        bne $t1, $zero, 2b
         addiu $t0, $t0, 0x20
 #else
-       cache 0, 0($t0)
+       cache_op 0, 0($t0)
        addiu $t1, $t1, -4
        bne $t1, $zero, 2b
         addiu $t0, $t0, 0x4
 #endif
-       sync
+       sync_op
        move $t0, $t2
        subu $t1, $t3, $t2
 2:
 #ifdef GRUB_MACHINE_MIPS_LOONGSON
-       cache 23, 0($t0)
+       cache_op 23, 0($t0)
        addiu $t1, $t1, -0x20
        bne $t1, $zero, 2b
         addiu $t0, $t0, 0x20
 #else
-       cache 23, 0($t0)
+       cache_op 23, 0($t0)
        addiu $t1, $t1, -0x4
        bne $t1, $zero, 2b
         addiu $t0, $t0, 0x4
 #endif
-       sync
+       sync_op
 
        jr $ra
\ No newline at end of file
index a5435cf51d55b789d1cb530acbd1c4d61fda4187..89961a0f7f6d12c73d068b50bd1f8a3ddac1e477 100644 (file)
@@ -1,3 +1,17 @@
+#ifndef CACHE_OP_DEFINED
+#define CACHE_OP_DEFINED 1
+       .macro cache_op op addr
+       .set mips3
+       cache \op, \addr
+       .set mips1
+       .endm
+       .macro sync_op
+       .set mips3
+       sync
+       .set mips1
+       .endm
+#endif
+
        move $t2, $a0
        addu $t3, $a0, $a1
        srl $t2, $t2, 5
        move $t0, $t2
        subu $t1, $t3, $t2
 1:
-       cache 1, 0($t0)
+       cache_op 1, 0($t0)
        /* All four ways.  */
 #ifdef GRUB_MACHINE_MIPS_LOONGSON
-       cache 1, 1($t0)
-       cache 1, 2($t0)
-       cache 1, 3($t0)
+       cache_op 1, 1($t0)
+       cache_op 1, 2($t0)
+       cache_op 1, 3($t0)
        addiu $t1, $t1, -0x20
        bne $t1, $zero, 1b
         addiu $t0, $t0, 0x20
        bne $t1, $zero, 1b
         addiu $t0, $t0, 0x4
 #endif
-       sync
+       sync_op
        move $t0, $t2
        subu $t1, $t3, $t2
 2:
-       cache 0, 0($t0)
+       cache_op 0, 0($t0)
 #ifdef GRUB_MACHINE_MIPS_LOONGSON
        addiu $t1, $t1, -0x20
        bne $t1, $zero, 2b
@@ -37,4 +51,4 @@
        bne $t1, $zero, 2b
         addiu $t0, $t0, 0x4
 #endif
-       sync
+       sync_op