aboutsummaryrefslogtreecommitdiff
path: root/src/runtime/sys_darwin_amd64.s
diff options
context:
space:
mode:
authorKeith Randall <khr@golang.org>2018-04-30 19:55:41 -0700
committerKeith Randall <khr@golang.org>2018-05-01 04:19:18 +0000
commit16d1a8e6e3701a8ed2e9b16f7c9b8e70a7b1fc8d (patch)
tree17deac1e9dce60c0e8d329865495bf97fcc3e3db /src/runtime/sys_darwin_amd64.s
parentce5c3871a461b0a2c8737b0d31215012d7a04d24 (diff)
downloadgo-16d1a8e6e3701a8ed2e9b16f7c9b8e70a7b1fc8d.tar.gz
go-16d1a8e6e3701a8ed2e9b16f7c9b8e70a7b1fc8d.zip
runtime: move open/close/read/write from syscall to libc on Darwin
Update #17490 Change-Id: Ia0bb0ba10dc0bbb299290a60b8228275d55125d7 Reviewed-on: https://go-review.googlesource.com/110438 Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Ian Lance Taylor <iant@golang.org>
Diffstat (limited to 'src/runtime/sys_darwin_amd64.s')
-rw-r--r--src/runtime/sys_darwin_amd64.s48
1 files changed, 28 insertions, 20 deletions
diff --git a/src/runtime/sys_darwin_amd64.s b/src/runtime/sys_darwin_amd64.s
index 1fbc5c52d6..bf5a34a15e 100644
--- a/src/runtime/sys_darwin_amd64.s
+++ b/src/runtime/sys_darwin_amd64.s
@@ -32,45 +32,53 @@ TEXT runtime·exitThread(SB),NOSPLIT,$0-8
MOVL $0xf1, 0xf1 // crash
RET
-TEXT runtime·open(SB),NOSPLIT,$0
+TEXT runtime·open(SB),NOSPLIT,$0-20
MOVQ name+0(FP), DI // arg 1 pathname
MOVL mode+8(FP), SI // arg 2 flags
MOVL perm+12(FP), DX // arg 3 mode
- MOVL $(0x2000000+5), AX // syscall entry
- SYSCALL
- JCC 2(PC)
- MOVL $-1, AX
+ PUSHQ BP
+ MOVQ SP, BP
+ ANDQ $~15, SP // align stack
+ CALL libc_open(SB)
+ MOVQ BP, SP
+ POPQ BP
MOVL AX, ret+16(FP)
RET
-TEXT runtime·closefd(SB),NOSPLIT,$0
+TEXT runtime·closefd(SB),NOSPLIT,$0-12
MOVL fd+0(FP), DI // arg 1 fd
- MOVL $(0x2000000+6), AX // syscall entry
- SYSCALL
- JCC 2(PC)
- MOVL $-1, AX
+ PUSHQ BP
+ MOVQ SP, BP
+ ANDQ $~15, SP // align stack
+ CALL libc_close(SB)
+ MOVQ BP, SP
+ POPQ BP
MOVL AX, ret+8(FP)
RET
-TEXT runtime·read(SB),NOSPLIT,$0
+TEXT runtime·read(SB),NOSPLIT,$0-28
MOVL fd+0(FP), DI // arg 1 fd
MOVQ p+8(FP), SI // arg 2 buf
MOVL n+16(FP), DX // arg 3 count
- MOVL $(0x2000000+3), AX // syscall entry
- SYSCALL
- JCC 2(PC)
- MOVL $-1, AX
+ PUSHQ BP
+ MOVQ SP, BP
+ ANDQ $~15, SP // align stack
+ CALL libc_read(SB)
+ MOVQ BP, SP
+ POPQ BP
MOVL AX, ret+24(FP)
RET
-TEXT runtime·write(SB),NOSPLIT,$0
+TEXT runtime·write(SB),NOSPLIT,$0-28
MOVQ fd+0(FP), DI // arg 1 fd
MOVQ p+8(FP), SI // arg 2 buf
MOVL n+16(FP), DX // arg 3 count
- MOVL $(0x2000000+4), AX // syscall entry
- SYSCALL
- JCC 2(PC)
- MOVL $-1, AX
+ PUSHQ BP
+ MOVQ SP, BP
+ ANDQ $~15, SP // align stack
+ CALL libc_write(SB)
+ MOVQ BP, SP
+ POPQ BP
MOVL AX, ret+24(FP)
RET