summaryrefslogtreecommitdiff
path: root/src/pkg/syscall/asm_freebsd_arm.s
diff options
context:
space:
mode:
Diffstat (limited to 'src/pkg/syscall/asm_freebsd_arm.s')
-rw-r--r--src/pkg/syscall/asm_freebsd_arm.s70
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