aboutsummaryrefslogtreecommitdiff
path: root/src/pkg/runtime
diff options
context:
space:
mode:
authorDave Cheney <dave@cheney.net>2014-08-28 12:41:32 +1000
committerDave Cheney <dave@cheney.net>2014-08-28 12:41:32 +1000
commit433d64373241634af93ca35f229c1cb26caf9180 (patch)
tree5d58914f2a4ebf00652006e81ba36232ad13f8a6 /src/pkg/runtime
parent45c819b2daf914a98b15b726c805bbed5ebe30df (diff)
downloadgo-433d64373241634af93ca35f229c1cb26caf9180.tar.xz
runtime: fix arm5 softfloat build
runtime._sfloat2 now returns the lr value on the stack, not R0. Credit to Russ Cox for the fix. LGTM=rsc R=rsc CC=golang-codereviews https://golang.org/cl/133120045
Diffstat (limited to 'src/pkg/runtime')
-rw-r--r--src/pkg/runtime/vlop_arm.s5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/pkg/runtime/vlop_arm.s b/src/pkg/runtime/vlop_arm.s
index 3b5243c3d2..9dfb295e87 100644
--- a/src/pkg/runtime/vlop_arm.s
+++ b/src/pkg/runtime/vlop_arm.s
@@ -47,12 +47,12 @@ TEXT _mulv(SB), NOSPLIT, $0
// trampoline for _sfloat2. passes LR as arg0 and
// saves registers R0-R13 and CPSR on the stack. R0-R12 and CPSR flags can
// be changed by _sfloat2.
-TEXT _sfloat(SB), NOSPLIT, $64-0 // 4 arg + 14*4 saved regs + cpsr
+TEXT _sfloat(SB), NOSPLIT, $68-0 // 4 arg + 14*4 saved regs + cpsr + return value
MOVW R14, 4(R13)
MOVW R0, 8(R13)
MOVW $12(R13), R0
MOVM.IA.W [R1-R12], (R0)
- MOVW $68(R13), R1 // correct for frame size
+ MOVW $72(R13), R1 // correct for frame size
MOVW R1, 60(R13)
WORD $0xe10f1000 // mrs r1, cpsr
MOVW R1, 64(R13)
@@ -78,6 +78,7 @@ TEXT _sfloat(SB), NOSPLIT, $64-0 // 4 arg + 14*4 saved regs + cpsr
MOVW $1, R1
MOVW R1, m_softfloat(R8)
BL runtimeĀ·_sfloat2(SB)
+ MOVW 68(R13), R0
MOVW g_m(g), R8
MOVW m_locks(R8), R1
SUB $1, R1