diff options
Diffstat (limited to 'src/syscall/asm_unix_386.s')
| -rw-r--r-- | src/syscall/asm_unix_386.s | 73 |
1 files changed, 35 insertions, 38 deletions
diff --git a/src/syscall/asm_unix_386.s b/src/syscall/asm_unix_386.s index df7a07d732..263355c493 100644 --- a/src/syscall/asm_unix_386.s +++ b/src/syscall/asm_unix_386.s @@ -4,9 +4,6 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. -// TODO(rsc): Rewrite all nn(SP) references into name+(nn-8)(FP) -// so that go vet can check that they are correct. - #include "textflag.h" #include "funcdata.h" @@ -20,7 +17,7 @@ TEXT ·Syscall(SB),NOSPLIT,$0-28 CALL runtime·entersyscall(SB) - MOVL 4(SP), AX // syscall entry + MOVL trap+0(FP), AX // syscall entry // slide args down on top of system call number LEAL 8(SP), SI LEAL 4(SP), DI @@ -30,21 +27,21 @@ TEXT ·Syscall(SB),NOSPLIT,$0-28 MOVSL INT $0x80 JAE ok - MOVL $-1, 20(SP) // r1 - MOVL $-1, 24(SP) // r2 - MOVL AX, 28(SP) // errno + MOVL $-1, r1+16(FP) // r1 + MOVL $-1, r2+20(FP) // r2 + MOVL AX, err+24(FP) // errno CALL runtime·exitsyscall(SB) RET ok: - MOVL AX, 20(SP) // r1 - MOVL DX, 24(SP) // r2 - MOVL $0, 28(SP) // errno + MOVL AX, r1+16(FP) // r1 + MOVL DX, r2+20(FP) // r2 + MOVL $0, err+24(FP) // errno CALL runtime·exitsyscall(SB) RET TEXT ·Syscall6(SB),NOSPLIT,$0-40 CALL runtime·entersyscall(SB) - MOVL 4(SP), AX // syscall entry + MOVL trap+0(FP), AX // syscall entry // slide args down on top of system call number LEAL 8(SP), SI LEAL 4(SP), DI @@ -57,21 +54,21 @@ TEXT ·Syscall6(SB),NOSPLIT,$0-40 MOVSL INT $0x80 JAE ok6 - MOVL $-1, 32(SP) // r1 - MOVL $-1, 36(SP) // r2 - MOVL AX, 40(SP) // errno + MOVL $-1, r1+28(FP) // r1 + MOVL $-1, r2+32(FP) // r2 + MOVL AX, err+36(FP) // errno CALL runtime·exitsyscall(SB) RET ok6: - MOVL AX, 32(SP) // r1 - MOVL DX, 36(SP) // r2 - MOVL $0, 40(SP) // errno + MOVL AX, r1+28(FP) // r1 + MOVL DX, r2+32(FP) // r2 + MOVL $0, err+36(FP) // errno CALL runtime·exitsyscall(SB) RET TEXT ·Syscall9(SB),NOSPLIT,$0-52 CALL runtime·entersyscall(SB) - MOVL 4(SP), AX // syscall entry + MOVL num+0(FP), AX // syscall entry // slide args down on top of system call number LEAL 8(SP), SI LEAL 4(SP), DI @@ -87,20 +84,20 @@ TEXT ·Syscall9(SB),NOSPLIT,$0-52 MOVSL INT $0x80 JAE ok9 - MOVL $-1, 44(SP) // r1 - MOVL $-1, 48(SP) // r2 - MOVL AX, 52(SP) // errno + MOVL $-1, r1+40(FP) // r1 + MOVL $-1, r2+44(FP) // r2 + MOVL AX, err+48(FP) // errno CALL runtime·exitsyscall(SB) RET ok9: - MOVL AX, 44(SP) // r1 - MOVL DX, 48(SP) // r2 - MOVL $0, 52(SP) // errno + MOVL AX, r1+40(FP) // r1 + MOVL DX, r2+44(FP) // r2 + MOVL $0, err+48(FP) // errno CALL runtime·exitsyscall(SB) RET TEXT ·RawSyscall(SB),NOSPLIT,$0-28 - MOVL 4(SP), AX // syscall entry + MOVL trap+0(FP), AX // syscall entry // slide args down on top of system call number LEAL 8(SP), SI LEAL 4(SP), DI @@ -110,18 +107,18 @@ TEXT ·RawSyscall(SB),NOSPLIT,$0-28 MOVSL INT $0x80 JAE ok1 - MOVL $-1, 20(SP) // r1 - MOVL $-1, 24(SP) // r2 - MOVL AX, 28(SP) // errno + MOVL $-1, r1+16(FP) // r1 + MOVL $-1, r2+20(FP) // r2 + MOVL AX, err+24(FP) // errno RET ok1: - MOVL AX, 20(SP) // r1 - MOVL DX, 24(SP) // r2 - MOVL $0, 28(SP) // errno + MOVL AX, r1+16(FP) // r1 + MOVL DX, r2+20(FP) // r2 + MOVL $0, err+24(FP) // errno RET TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 - MOVL 4(SP), AX // syscall entry + MOVL trap+0(FP), AX // syscall entry // slide args down on top of system call number LEAL 8(SP), SI LEAL 4(SP), DI @@ -134,12 +131,12 @@ TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 MOVSL INT $0x80 JAE ok2 - MOVL $-1, 32(SP) // r1 - MOVL $-1, 36(SP) // r2 - MOVL AX, 40(SP) // errno + MOVL $-1, r1+28(FP) // r1 + MOVL $-1, r2+32(FP) // r2 + MOVL AX, err+36(FP) // errno RET ok2: - MOVL AX, 32(SP) // r1 - MOVL DX, 36(SP) // r2 - MOVL $0, 40(SP) // errno + MOVL AX, r1+28(FP) // r1 + MOVL DX, r2+32(FP) // r2 + MOVL $0, err+36(FP) // errno RET |
