...

Text file src/syscall/asm_netbsd_arm.s

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

View as plain text