github.com/varialus/godfly@v0.0.0-20130904042352-1934f9f095ab/src/pkg/syscall/asm_netbsd_arm.s (about)

     1  // Copyright 2013 The Go Authors. All rights reserved.
     2  // Use of this source code is governed by a BSD-style
     3  // license that can be found in the LICENSE file.
     4  
     5  #include "../../cmd/ld/textflag.h"
     6  
     7  //
     8  // System call support for ARM, NetBSD
     9  //
    10  
    11  // func Syscall(trap int32, a1, a2, a3 int32) (r1, r2, err int32);
    12  // func Syscall6(trap int32, a1, a2, a3, a4, a5, a6 int32) (r1, r2, err int32);
    13  // func Syscall9(trap int32, a1, a2, a3, a4, a5, a6, a7, a8, a9 int64) (r1, r2, err int32)
    14  
    15  TEXT	·Syscall(SB),NOSPLIT,$0-28
    16  	BL runtime·entersyscall(SB)
    17  	MOVW 0(FP), R0 // sigcall num
    18  	MOVW 4(FP), R1 // a1
    19  	MOVW 8(FP), R2 // a2
    20  	MOVW 12(FP), R3 // a3
    21  	SWI $0 // syscall
    22  	MOVW $0, R2
    23  	BCS error
    24  	MOVW R0, 16(FP) // r1
    25  	MOVW R1, 20(FP) // r2
    26  	MOVW R2, 24(FP) // err
    27  	BL runtime·exitsyscall(SB)
    28  	RET
    29  error:
    30  	MOVW $-1, R3
    31  	MOVW R3, 16(FP) // r1
    32  	MOVW R2, 20(FP) // r2
    33  	MOVW R0, 24(FP) // err
    34  	BL runtime·exitsyscall(SB)
    35  	RET
    36  
    37  TEXT	·Syscall6(SB),NOSPLIT,$0-40
    38  	BL runtime·entersyscall(SB)
    39  	MOVW 0(FP), R0 // sigcall num
    40  	MOVW 4(FP), R1 // a1
    41  	MOVW 8(FP), R2 // a2
    42  	MOVW 12(FP), R3 // a3
    43  	MOVW R13, R4
    44  	MOVW $16(FP), R13 // a4 to a6 are passed on stack
    45  	SWI $0 // syscall
    46  	MOVW R4, R13
    47  	MOVW $0, R2
    48  	BCS error6
    49  	MOVW R0, 28(FP) // r1
    50  	MOVW R1, 32(FP) // r2
    51  	MOVW R2, 36(FP) // err
    52  	BL runtime·exitsyscall(SB)
    53  	RET
    54  error6:
    55  	MOVW $-1, R3
    56  	MOVW R3, 28(FP) // r1
    57  	MOVW R2, 32(FP) // r2
    58  	MOVW R0, 36(FP) // err
    59  	BL runtime·exitsyscall(SB)
    60  	RET
    61  
    62  TEXT	·Syscall9(SB),NOSPLIT,$0-52
    63  	BL runtime·entersyscall(SB)
    64  	MOVW 0(FP), R0 // sigcall num
    65  	MOVW 4(FP), R1 // a1
    66  	MOVW 8(FP), R2 // a2
    67  	MOVW 12(FP), R3 // a3
    68  	MOVW R13, R4
    69  	MOVW $16(FP), R13 // a4 to a9 are passed on stack
    70  	SWI $0 // syscall
    71  	MOVW R4, R13
    72  	MOVW $0, R2
    73  	BCS error9
    74  	MOVW R0, 40(FP) // r1
    75  	MOVW R1, 44(FP) // r2
    76  	MOVW R2, 48(FP) // err
    77  	BL runtime·exitsyscall(SB)
    78  	RET
    79  error9:
    80  	MOVW $-1, R3
    81  	MOVW R3, 40(FP) // r1
    82  	MOVW R2, 44(FP) // r2
    83  	MOVW R0, 48(FP) // err
    84  	BL runtime·exitsyscall(SB)
    85  	RET
    86  
    87  TEXT	·RawSyscall(SB),NOSPLIT,$0-28
    88  	MOVW 0(FP), R0 // sigcall num
    89  	MOVW 4(FP), R1 // a1
    90  	MOVW 8(FP), R2 // a2
    91  	MOVW 12(FP), R3 // a3
    92  	SWI $0 // syscall
    93  	MOVW $0, R2
    94  	BCS errorr
    95  	MOVW R0, 16(FP) // r1
    96  	MOVW R1, 20(FP) // r2
    97  	MOVW R2, 24(FP) // err
    98  	RET
    99  errorr:
   100  	MOVW $-1, R3
   101  	MOVW R3, 16(FP) // r1
   102  	MOVW R2, 20(FP) // r2
   103  	MOVW R0, 24(FP) // err
   104  	RET
   105  
   106  TEXT	·RawSyscall6(SB),NOSPLIT,$0-40
   107  	MOVW 0(FP), R0 // sigcall num
   108  	MOVW 4(FP), R1 // a1
   109  	MOVW 8(FP), R2 // a2
   110  	MOVW 12(FP), R3 // a3
   111  	MOVW R13, R4
   112  	MOVW $16(FP), R13 // a4 to a9 are passed on stack
   113  	SWI $0 // syscall
   114  	MOVW R4, R13
   115  	MOVW $0, R2
   116  	BCS errorr6
   117  	MOVW R0, 28(FP) // r1
   118  	MOVW R1, 32(FP) // r2
   119  	MOVW R2, 36(FP) // err
   120  	RET
   121  errorr6:
   122  	MOVW $-1, R3
   123  	MOVW R3, 28(FP) // r1
   124  	MOVW R2, 32(FP) // r2
   125  	MOVW R0, 36(FP) // err
   126  	RET