aboutsummaryrefslogtreecommitdiff
path: root/src/pkg/runtime/linux/amd64
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2009-06-17 15:12:16 -0700
committerRuss Cox <rsc@golang.org>2009-06-17 15:12:16 -0700
commit7343e03c433ebb0c302ed97bf832ad3bd3170de6 (patch)
tree26899cbde2c38fd1275b590dcdd6bf92ab0f80c9 /src/pkg/runtime/linux/amd64
parent3b576a770413e799d487e861e3a75027f59ee81c (diff)
downloadgo-7343e03c433ebb0c302ed97bf832ad3bd3170de6.tar.xz
runtime: stack growth adjustments, cleanup
* keep coherent SP/PC in gobuf (i.e., SP that would be in use at that PC) * gogocall replaces setspgoto, should work better in presence of link registers * delete unused system calls only amd64; 386 is now broken R=r DELTA=548 (183 added, 183 deleted, 182 changed) OCL=30381 CL=30442
Diffstat (limited to 'src/pkg/runtime/linux/amd64')
-rw-r--r--src/pkg/runtime/linux/amd64/sys.s41
1 files changed, 11 insertions, 30 deletions
diff --git a/src/pkg/runtime/linux/amd64/sys.s b/src/pkg/runtime/linux/amd64/sys.s
index f90c704faf..8ee0ed2f90 100644
--- a/src/pkg/runtime/linux/amd64/sys.s
+++ b/src/pkg/runtime/linux/amd64/sys.s
@@ -6,6 +6,8 @@
// System calls and other sys.stuff for AMD64, Linux
//
+#include "amd64/asm.h"
+
TEXT exit(SB),7,$0-8
MOVL 8(SP), DI
MOVL $231, AX // exitgroup - force all os threads to exi
@@ -26,27 +28,6 @@ TEXT open(SB),7,$0-16
SYSCALL
RET
-TEXT close(SB),7,$0-8
- MOVL 8(SP), DI
- MOVL $3, AX // syscall entry
- SYSCALL
- RET
-
-TEXT fstat(SB),7,$0-16
- MOVL 8(SP), DI
- MOVQ 16(SP), SI
- MOVL $5, AX // syscall entry
- SYSCALL
- RET
-
-TEXT read(SB),7,$0-24
- MOVL 8(SP), DI
- MOVQ 16(SP), SI
- MOVL 24(SP), DX
- MOVL $0, AX // syscall entry
- SYSCALL
- RET
-
TEXT write(SB),7,$0-24
MOVL 8(SP), DI
MOVQ 16(SP), SI
@@ -73,10 +54,10 @@ TEXT rt_sigaction(SB),7,$0-32
RET
TEXT sigtramp(SB),7,$24-16
- MOVQ 32(R14), R15 // g = m->gsignal
- MOVQ DI,0(SP)
- MOVQ SI,8(SP)
- MOVQ DX,16(SP)
+ MOVQ m_gsignal(m), g
+ MOVQ DI, 0(SP)
+ MOVQ SI, 8(SP)
+ MOVQ DX, 16(SP)
CALL sighandler(SB)
RET
@@ -151,8 +132,8 @@ TEXT clone(SB),7,$0
// Copy m, g, fn off parent stack for use by child.
// Careful: Linux system call clobbers CX and R11.
- MOVQ m+24(SP), R8
- MOVQ g+32(SP), R9
+ MOVQ mm+24(SP), R8
+ MOVQ gg+32(SP), R9
MOVQ fn+40(SP), R12
MOVL $56, AX
@@ -165,13 +146,13 @@ TEXT clone(SB),7,$0
// In child, set up new stack
MOVQ SI, SP
- MOVQ R8, R14 // m
- MOVQ R9, R15 // g
+ MOVQ R8, m
+ MOVQ R9, g
// Initialize m->procid to Linux tid
MOVL $186, AX // gettid
SYSCALL
- MOVQ AX, 24(R14)
+ MOVQ AX, m_procid(m)
// Call fn
CALL R12