]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/go, runtime/cgo: explicitly target ARMv5T
authorCarl Shapiro <cshapiro@google.com>
Wed, 14 Aug 2013 22:21:53 +0000 (15:21 -0700)
committerCarl Shapiro <cshapiro@google.com>
Wed, 14 Aug 2013 22:21:53 +0000 (15:21 -0700)
The baseline architecture had been left to the GCC configured
default which can be more accomodating than the rest of the Go
toolchain.  This prevented instructions used by the 5g compiler,
like BLX, from being used in GCC compiled assembler code.

R=golang-dev, dave, rsc, elias.naur, cshapiro
CC=golang-dev
https://golang.org/cl/12954043

src/cmd/go/build.go
src/pkg/runtime/cgo/gcc_arm.S

index c4b4f6ca55ee2bb13bb94ef03613f85a6f894ecc..9c3693abb3c377febe6f9ff8c0f655abf4912c2c 100644 (file)
@@ -1837,7 +1837,7 @@ func (b *builder) gccArchArgs() []string {
        case "6":
                return []string{"-m64"}
        case "5":
-               return []string{"-marm"} // not thumb
+               return []string{"-marm", "-march=armv5t"} // not thumb
        }
        return nil
 }
index be504088253f33aa573191a45b701011b38be5a2..cfe899b1d287b529785789ef0695f8a2135a8ee0 100644 (file)
@@ -25,12 +25,8 @@ EXT(crosscall_arm2):
        mov r5, r1
        mov r0, r2
        mov r1, r3
-       // setmg(m, g)
-       mov lr, pc
-       mov pc, r5
-       // fn()
-       mov lr, pc
-       mov pc, r4
+       blx r5 // setmg(m, g) 
+       blx r4 // fn() 
        pop {r4, r5, r6, r7, r8, r9, r10, r11, ip, pc}
 
 .globl EXT(__stack_chk_fail_local)