1// Copyright 2014 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// +build linux 6// +build mips64 mips64le 7 8#include "textflag.h" 9 10// 11// System calls for mips64, Linux 12// 13 14// func Syscall(trap int64, a1, a2, a3 int64) (r1, r2, err int64); 15TEXT ·Syscall(SB),NOSPLIT,$0-56 16 JAL runtime·entersyscall(SB) 17 MOVV a1+8(FP), R4 18 MOVV a2+16(FP), R5 19 MOVV a3+24(FP), R6 20 MOVV R0, R7 21 MOVV R0, R8 22 MOVV R0, R9 23 MOVV trap+0(FP), R2 // syscall entry 24 SYSCALL 25 BEQ R7, ok 26 MOVV $-1, R1 27 MOVV R1, r1+32(FP) // r1 28 MOVV R0, r2+40(FP) // r2 29 MOVV R2, err+48(FP) // errno 30 JAL runtime·exitsyscall(SB) 31 RET 32ok: 33 MOVV R2, r1+32(FP) // r1 34 MOVV R3, r2+40(FP) // r2 35 MOVV R0, err+48(FP) // errno 36 JAL runtime·exitsyscall(SB) 37 RET 38 39TEXT ·Syscall6(SB),NOSPLIT,$0-80 40 JAL runtime·entersyscall(SB) 41 MOVV a1+8(FP), R4 42 MOVV a2+16(FP), R5 43 MOVV a3+24(FP), R6 44 MOVV a4+32(FP), R7 45 MOVV a5+40(FP), R8 46 MOVV a6+48(FP), R9 47 MOVV trap+0(FP), R2 // syscall entry 48 SYSCALL 49 BEQ R7, ok6 50 MOVV $-1, R1 51 MOVV R1, r1+56(FP) // r1 52 MOVV R0, r2+64(FP) // r2 53 MOVV R2, err+72(FP) // errno 54 JAL runtime·exitsyscall(SB) 55 RET 56ok6: 57 MOVV R2, r1+56(FP) // r1 58 MOVV R3, r2+64(FP) // r2 59 MOVV R0, err+72(FP) // errno 60 JAL runtime·exitsyscall(SB) 61 RET 62 63TEXT ·RawSyscall(SB),NOSPLIT,$0-56 64 MOVV a1+8(FP), R4 65 MOVV a2+16(FP), R5 66 MOVV a3+24(FP), R6 67 MOVV R0, R7 68 MOVV R0, R8 69 MOVV R0, R9 70 MOVV trap+0(FP), R2 // syscall entry 71 SYSCALL 72 BEQ R7, ok1 73 MOVV $-1, R1 74 MOVV R1, r1+32(FP) // r1 75 MOVV R0, r2+40(FP) // r2 76 MOVV R2, err+48(FP) // errno 77 RET 78ok1: 79 MOVV R2, r1+32(FP) // r1 80 MOVV R3, r2+40(FP) // r2 81 MOVV R0, err+48(FP) // errno 82 RET 83 84TEXT ·RawSyscall6(SB),NOSPLIT,$0-80 85 MOVV a1+8(FP), R4 86 MOVV a2+16(FP), R5 87 MOVV a3+24(FP), R6 88 MOVV a4+32(FP), R7 89 MOVV a5+40(FP), R8 90 MOVV a6+48(FP), R9 91 MOVV trap+0(FP), R2 // syscall entry 92 SYSCALL 93 BEQ R7, ok2 94 MOVV $-1, R1 95 MOVV R1, r1+56(FP) // r1 96 MOVV R0, r2+64(FP) // r2 97 MOVV R2, err+72(FP) // errno 98 RET 99ok2: 100 MOVV R2, r1+56(FP) // r1 101 MOVV R3, r2+64(FP) // r2 102 MOVV R0, err+72(FP) // errno 103 RET 104 105TEXT ·rawSyscallNoError(SB),NOSPLIT,$0-48 106 MOVV a1+8(FP), R4 107 MOVV a2+16(FP), R5 108 MOVV a3+24(FP), R6 109 MOVV R0, R7 110 MOVV R0, R8 111 MOVV R0, R9 112 MOVV trap+0(FP), R2 // syscall entry 113 SYSCALL 114 MOVV R2, r1+32(FP) 115 MOVV R3, r2+40(FP) 116 RET 117