summaryrefslogtreecommitdiff
path: root/src/runtime
diff options
context:
space:
mode:
authorKen Thompson <ken@golang.org>2009-05-01 18:07:33 -0700
committerKen Thompson <ken@golang.org>2009-05-01 18:07:33 -0700
commitba8d8dc621d588f01851e354f3b7f2a450a6908b (patch)
tree072a40e16653b63b345251d6aabee3b3535032f3 /src/runtime
parente9de0e7b7cc7913c45cc47cc77166ddb79b5d5e6 (diff)
downloadgolang-ba8d8dc621d588f01851e354f3b7f2a450a6908b.tar.gz
code improvement
better calling of morestack R=r OCL=28179 CL=28179
Diffstat (limited to 'src/runtime')
-rw-r--r--src/runtime/amd64/asm.s24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/runtime/amd64/asm.s b/src/runtime/amd64/asm.s
index 4557527b9..5efcac50e 100644
--- a/src/runtime/amd64/asm.s
+++ b/src/runtime/amd64/asm.s
@@ -87,6 +87,30 @@ TEXT gosave(SB), 7, $0
* support for morestack
*/
+// morestack trampolines
+TEXT sys·morestack00+0(SB),7,$0
+ MOVQ $0, AX
+ MOVQ AX, 8(R14)
+ MOVQ $sys·morestack+0(SB), AX
+ JMP AX
+
+TEXT sys·morestack01+0(SB),7,$0
+ SHLQ $32, AX
+ MOVQ AX, 8(R14)
+ MOVQ $sys·morestack+0(SB), AX
+ JMP AX
+
+TEXT sys·morestack10+0(SB),7,$0
+ MOVLQZX AX, AX
+ MOVQ AX, 8(R14)
+ MOVQ $sys·morestack+0(SB), AX
+ JMP AX
+
+TEXT sys·morestack11+0(SB),7,$0
+ MOVQ AX, 8(R14)
+ MOVQ $sys·morestack+0(SB), AX
+ JMP AX
+
// return point when leaving new stack. save AX, jmp to lessstack to switch back
TEXT retfromnewstack(SB), 7, $0
MOVQ AX, 16(R14) // save AX in m->cret