...

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

View as plain text