Commit e1364a6d authored by Keith Randall's avatar Keith Randall

runtime: fix cgo_topofstack to save clobbered registers

Fixes #8816

At least, I hope it does.

TBR=rsc
CC=golang-codereviews
https://golang.org/cl/153730043
parent f6fc1409
......@@ -1303,9 +1303,17 @@ yieldloop:
// Called from cgo wrappers, this function returns g->m->curg.stack.hi.
// Must obey the gcc calling convention.
TEXT _cgo_topofstack(SB),NOSPLIT,$0
TEXT _cgo_topofstack(SB),NOSPLIT,$8
// R11 and g register are clobbered by load_g. They are
// callee-save in the gcc calling convention, so save them here.
MOVW R11, saveR11-4(SP)
MOVW g, saveG-8(SP)
BL runtime·load_g(SB)
MOVW g_m(g), R0
MOVW m_curg(R0), R0
MOVW (g_stack+stack_hi)(R0), R0
MOVW saveG-8(SP), g
MOVW saveR11-4(SP), R11
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