]> Cypherpunks repositories - gostls13.git/commitdiff
syscall: add missing Syscall9 for darwin/amd64
authorMikio Hara <mikioh.mikioh@gmail.com>
Tue, 3 Mar 2015 03:15:53 +0000 (12:15 +0900)
committerMikio Hara <mikioh.mikioh@gmail.com>
Sat, 14 Mar 2015 00:21:11 +0000 (00:21 +0000)
Fixes #10068.

Change-Id: I1f12225ee16b0090b87403931c0bc0157f068309
Reviewed-on: https://go-review.googlesource.com/6555
Reviewed-by: Minux Ma <minux@golang.org>
src/syscall/asm_darwin_amd64.s
src/syscall/syscall_darwin_amd64.go

index 9cf9bcb63ae14fd4fedfd81eab7b381eae799314..01f461b8b091fb3ba9b7b881662e6091a60666c6 100644 (file)
@@ -9,10 +9,9 @@
 // System call support for AMD64, Darwin
 //
 
-// func Syscall(trap int64, a1, a2, a3 int64) (r1, r2, err int64);
-// func Syscall6(trap int64, a1, a2, a3, a4, a5, a6 int64) (r1, r2, err int64);
 // Trap # in AX, args in DI SI DX, return in AX DX
 
+// func Syscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno);
 TEXT   ·Syscall(SB),NOSPLIT,$0-56
        CALL    runtime·entersyscall(SB)
        MOVQ    a1+8(FP), DI
@@ -37,6 +36,7 @@ ok:
        CALL    runtime·exitsyscall(SB)
        RET
 
+// func Syscall6(trap, a1, a2, a3, a4, a5, a6 uintptr) (r1, r2 uintptr, err Errno);
 TEXT   ·Syscall6(SB),NOSPLIT,$0-80
        CALL    runtime·entersyscall(SB)
        MOVQ    a1+8(FP), DI
@@ -61,6 +61,41 @@ ok6:
        CALL    runtime·exitsyscall(SB)
        RET
 
+// func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno)
+TEXT   ·Syscall9(SB),NOSPLIT,$0-104
+       CALL    runtime·entersyscall(SB)
+       MOVQ    trap+0(FP), AX  // syscall entry
+       MOVQ    a1+8(FP), DI
+       MOVQ    a2+16(FP), SI
+       MOVQ    a3+24(FP), DX
+       MOVQ    a4+32(FP), R10
+       MOVQ    a5+40(FP), R8
+       MOVQ    a6+48(FP), R9
+       MOVQ    a7+56(FP), R11
+       MOVQ    a8+64(FP), R12
+       MOVQ    a9+72(FP), R13
+       SUBQ    $32, SP
+       MOVQ    R11, 8(SP)
+       MOVQ    R12, 16(SP)
+       MOVQ    R13, 24(SP)
+       ADDQ    $0x2000000, AX
+       SYSCALL
+       JCC     ok9
+       ADDQ    $32, SP
+       MOVQ    $-1, r1+80(FP)
+       MOVQ    $0, r2+88(FP)
+       MOVQ    AX, err+96(FP)
+       CALL    runtime·exitsyscall(SB)
+       RET
+ok9:
+       ADDQ    $32, SP
+       MOVQ    AX, r1+80(FP)
+       MOVQ    DX, r2+88(FP)
+       MOVQ    $0, err+96(FP)
+       CALL    runtime·exitsyscall(SB)
+       RET
+
+// func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)
 TEXT ·RawSyscall(SB),NOSPLIT,$0-56
        MOVQ    a1+8(FP), DI
        MOVQ    a2+16(FP), SI
@@ -82,6 +117,7 @@ ok1:
        MOVQ    $0, err+48(FP)
        RET
 
+// func RawSyscall(trap, a1, a2, a3 uintptr) (r1, r2 uintptr, err Errno)
 TEXT   ·RawSyscall6(SB),NOSPLIT,$0-80
        MOVQ    a1+8(FP), DI
        MOVQ    a2+16(FP), SI
index 81b1fd3d2bc6744bfed1858867371cd7b016d169..70b53b87f4e38b53453148df7f95eedb8816b314 100644 (file)
@@ -67,4 +67,4 @@ func sendfile(outfd int, infd int, offset *int64, count int) (written int, err e
        return
 }
 
-func Syscall9(num, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno) // sic
+func Syscall9(trap, a1, a2, a3, a4, a5, a6, a7, a8, a9 uintptr) (r1, r2 uintptr, err Errno)