Commit d08d33f3 authored by Kai Backman's avatar Kai Backman

fix calling convention and make memmove restore the g and m

registers.

R=rsc
https://golang.org/cl/166049
parent 76f7803a
...@@ -30,9 +30,14 @@ N = 3 ...@@ -30,9 +30,14 @@ N = 3
TMP = 3 /* N and TMP don't overlap */ TMP = 3 /* N and TMP don't overlap */
TMP1 = 4 TMP1 = 4
TEXT memmove(SB), 7, $-4 // TODO(kaib): This can be done with the existing registers of LR is re-used. Same for memset.
TEXT memmove(SB), 7, $8
// save g and m
MOVW R9, 4(R13)
MOVW R10, 8(R13)
_memmove: _memmove:
MOVW R(TS), to+0(FP) /* need to save for return value */ MOVW to+0(FP), R(TS)
MOVW from+4(FP), R(FROM) MOVW from+4(FP), R(FROM)
MOVW n+8(FP), R(N) MOVW n+8(FP), R(N)
...@@ -129,6 +134,9 @@ _f1tail: ...@@ -129,6 +134,9 @@ _f1tail:
B _f1tail B _f1tail
_return: _return:
// restore g and m
MOVW 4(R13), R9
MOVW 8(R13), R10
MOVW to+0(FP), R0 MOVW to+0(FP), R0
RET RET
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment