diff options
author | Keith Randall <khr@golang.org> | 2018-04-30 19:55:41 -0700 |
---|---|---|
committer | Keith Randall <khr@golang.org> | 2018-05-01 04:19:18 +0000 |
commit | 16d1a8e6e3701a8ed2e9b16f7c9b8e70a7b1fc8d (patch) | |
tree | 17deac1e9dce60c0e8d329865495bf97fcc3e3db /src/runtime/sys_darwin_amd64.s | |
parent | ce5c3871a461b0a2c8737b0d31215012d7a04d24 (diff) | |
download | go-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.s | 48 |
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 |