mirror of
https://github.com/golang/go
synced 2024-11-19 21:34:45 -07:00
fix calling convention and make memmove restore the g and m
registers. R=rsc https://golang.org/cl/166049
This commit is contained in:
parent
76f7803a2a
commit
d08d33f389
@ -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:
|
|||||||
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
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user