diff options
| author | Russ Cox <rsc@golang.org> | 2008-11-25 16:48:10 -0800 |
|---|---|---|
| committer | Russ Cox <rsc@golang.org> | 2008-11-25 16:48:10 -0800 |
| commit | 95b81617d4543ba7562d721c6fe7db5e5c419816 (patch) | |
| tree | 743804e70a46a7102c893ee7aa4e1684b477f272 /src/lib/syscall/asm_amd64_linux.s | |
| parent | 7dfdd037d7730b30552db8fea7739e346f02770e (diff) | |
| download | golang-95b81617d4543ba7562d721c6fe7db5e5c419816.tar.gz | |
change meaning of $GOMAXPROCS to number of cpus to use,
not number of threads. can still starve all the other threads,
but only by looping, not by waiting in a system call.
fix darwin syscall.Syscall6 bug.
fix chanclient bug.
delete $GOMAXPROCS from network tests.
add stripped down printf, sys.printhex to runtime.
R=r
DELTA=355 (217 added, 36 deleted, 102 changed)
OCL=20017
CL=20019
Diffstat (limited to 'src/lib/syscall/asm_amd64_linux.s')
| -rw-r--r-- | src/lib/syscall/asm_amd64_linux.s | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/src/lib/syscall/asm_amd64_linux.s b/src/lib/syscall/asm_amd64_linux.s index 48630337a..e0c115387 100644 --- a/src/lib/syscall/asm_amd64_linux.s +++ b/src/lib/syscall/asm_amd64_linux.s @@ -11,25 +11,30 @@ // Note that this differs from "standard" ABI convention, which // would pass 4th arg in CX, not R10. -TEXT syscall·Syscall(SB),7,$-8 +TEXT syscall·Syscall(SB),7,$0 + CALL sys·entersyscall(SB) MOVQ 16(SP), DI MOVQ 24(SP), SI MOVQ 32(SP), DX MOVQ 8(SP), AX // syscall entry SYSCALL CMPQ AX, $0xfffffffffffff001 - JLS 6(PC) + JLS ok MOVQ $-1, 40(SP) // r1 MOVQ $0, 48(SP) // r2 NEGQ AX MOVQ AX, 56(SP) // errno + CALL sys·exitsyscall(SB) RET +ok: MOVQ AX, 40(SP) // r1 MOVQ DX, 48(SP) // r2 MOVQ $0, 56(SP) // errno + CALL sys·exitsyscall(SB) RET -TEXT syscall·Syscall6(SB),7,$-8 +TEXT syscall·Syscall6(SB),7,$0 + CALL sys·entersyscall(SB) MOVQ 16(SP), DI MOVQ 24(SP), SI MOVQ 32(SP), DX @@ -38,13 +43,17 @@ TEXT syscall·Syscall6(SB),7,$-8 MOVQ 56(SP), R9 MOVQ 8(SP), AX // syscall entry SYSCALL - JLS 6(PC) + CMPQ AX, $0xfffffffffffff001 + JLS ok6 MOVQ $-1, 64(SP) // r1 MOVQ $0, 72(SP) // r2 NEGQ AX MOVQ AX, 80(SP) // errno + CALL sys·exitsyscall(SB) RET +ok6: MOVQ AX, 64(SP) // r1 MOVQ DX, 72(SP) // r2 MOVQ $0, 80(SP) // errno + CALL sys·exitsyscall(SB) RET |
