diff options
Diffstat (limited to 'src/pkg/syscall/asm_freebsd_arm.s')
-rw-r--r-- | src/pkg/syscall/asm_freebsd_arm.s | 70 |
1 files changed, 36 insertions, 34 deletions
diff --git a/src/pkg/syscall/asm_freebsd_arm.s b/src/pkg/syscall/asm_freebsd_arm.s index ab08ab5f5..9283d079b 100644 --- a/src/pkg/syscall/asm_freebsd_arm.s +++ b/src/pkg/syscall/asm_freebsd_arm.s @@ -2,6 +2,8 @@ // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. +#include "../../cmd/ld/textflag.h" + // // System call support for ARM, FreeBSD // @@ -10,12 +12,12 @@ // func Syscall6(trap int32, a1, a2, a3, a4, a5, a6 int32) (r1, r2, err int32); // func Syscall9(trap int32, a1, a2, a3, a4, a5, a6, a7, a8, a9 int64) (r1, r2, err int32) -TEXT ·Syscall(SB),7,$0 +TEXT ·Syscall(SB),NOSPLIT,$0-28 BL runtime·entersyscall(SB) - MOVW 0(FP), R0 // sigcall num - MOVW 4(FP), R1 // a1 - MOVW 8(FP), R2 // a2 - MOVW 12(FP), R3 // a3 + MOVW 0(FP), R7 // sigcall num + MOVW 4(FP), R0 // a1 + MOVW 8(FP), R1 // a2 + MOVW 12(FP), R2 // a3 SWI $0 // syscall MOVW $0, R2 BCS error @@ -32,16 +34,16 @@ error: BL runtime·exitsyscall(SB) RET -TEXT ·Syscall6(SB),7,$0 +TEXT ·Syscall6(SB),NOSPLIT,$0-40 BL runtime·entersyscall(SB) - MOVW 0(FP), R0 // sigcall num - MOVW 4(FP), R1 // a1 - MOVW 8(FP), R2 // a2 - MOVW 12(FP), R3 // a3 - MOVW R13, R4 - MOVW $16(FP), R13 // a4 to a6 are passed on stack + MOVW 0(FP), R7 // sigcall num + MOVW 4(FP), R0 // a1 + MOVW 8(FP), R1 // a2 + MOVW 12(FP), R2 // a3 + MOVW 16(FP), R3 // a4 + ADD $24, R13 // a5 to a6 are passed on stack SWI $0 // syscall - MOVW R4, R13 + SUB $24, R13 MOVW $0, R2 BCS error6 MOVW R0, 28(FP) // r1 @@ -57,16 +59,16 @@ error6: BL runtime·exitsyscall(SB) RET -TEXT ·Syscall9(SB),7,$0 +TEXT ·Syscall9(SB),NOSPLIT,$0-52 BL runtime·entersyscall(SB) - MOVW 0(FP), R0 // sigcall num - MOVW 4(FP), R1 // a1 - MOVW 8(FP), R2 // a2 - MOVW 12(FP), R3 // a3 - MOVW R13, R4 - MOVW $16(FP), R13 // a4 to a9 are passed on stack + MOVW 0(FP), R7 // sigcall num + MOVW 4(FP), R0 // a1 + MOVW 8(FP), R1 // a2 + MOVW 12(FP), R2 // a3 + MOVW 16(FP), R3 // a4 + ADD $24, R13 // a5 to a9 are passed on stack SWI $0 // syscall - MOVW R4, R13 + SUB $24, R13 MOVW $0, R2 BCS error9 MOVW R0, 40(FP) // r1 @@ -82,11 +84,11 @@ error9: BL runtime·exitsyscall(SB) RET -TEXT ·RawSyscall(SB),7,$0 - MOVW 0(FP), R0 // sigcall num - MOVW 4(FP), R1 // a1 - MOVW 8(FP), R2 // a2 - MOVW 12(FP), R3 // a3 +TEXT ·RawSyscall(SB),NOSPLIT,$0-28 + MOVW 0(FP), R7 // sigcall num + MOVW 4(FP), R0 // a1 + MOVW 8(FP), R1 // a2 + MOVW 12(FP), R2 // a3 SWI $0 // syscall MOVW $0, R2 BCS errorr @@ -101,15 +103,15 @@ errorr: MOVW R0, 24(FP) // err RET -TEXT ·RawSyscall6(SB),7,$0 - MOVW 0(FP), R0 // sigcall num - MOVW 4(FP), R1 // a1 - MOVW 8(FP), R2 // a2 - MOVW 12(FP), R3 // a3 - MOVW R13, R4 - MOVW $16(FP), R13 // a4 to a9 are passed on stack +TEXT ·RawSyscall6(SB),NOSPLIT,$0-40 + MOVW 0(FP), R7 // sigcall num + MOVW 4(FP), R0 // a1 + MOVW 8(FP), R1 // a2 + MOVW 12(FP), R2 // a3 + MOVW 16(FP), R3 // a4 + ADD $24, R13 // a5 to a6 are passed on stack SWI $0 // syscall - MOVW R4, R13 + SUB $24, R13 MOVW $0, R2 BCS errorr6 MOVW R0, 28(FP) // r1 |