]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/vendor: cherry pick asm_linux_riscv64.s for x/sys/unix
authorJoel Sing <joel@sing.id.au>
Fri, 24 Jan 2020 15:32:52 +0000 (02:32 +1100)
committerJoel Sing <joel@sing.id.au>
Sat, 25 Jan 2020 05:11:20 +0000 (05:11 +0000)
Manually cherry pick asm_linux_riscv64.s from x/sys/unix rev 4c3a92842,
as needed for the linux/riscv64 port.

Normally this would be a vendor update, however this is significantly
more risky at this point in time - a full update can be done post release.

Updates #27532

Change-Id: I03bb191bc44dcd24b9a29243957b88d7a9091852
Reviewed-on: https://go-review.googlesource.com/c/go/+/216260
Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
src/cmd/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s [new file with mode: 0644]

diff --git a/src/cmd/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s b/src/cmd/vendor/golang.org/x/sys/unix/asm_linux_riscv64.s
new file mode 100644 (file)
index 0000000..6db717d
--- /dev/null
@@ -0,0 +1,54 @@
+// Copyright 2019 The Go Authors. All rights reserved.
+// Use of this source code is governed by a BSD-style
+// license that can be found in the LICENSE file.
+
+// +build riscv64,!gccgo
+
+#include "textflag.h"
+
+//
+// System calls for linux/riscv64.
+//
+// Where available, just jump to package syscall's implementation of
+// these functions.
+
+TEXT ·Syscall(SB),NOSPLIT,$0-56
+       JMP     syscall·Syscall(SB)
+
+TEXT ·Syscall6(SB),NOSPLIT,$0-80
+       JMP     syscall·Syscall6(SB)
+
+TEXT ·SyscallNoError(SB),NOSPLIT,$0-48
+       CALL    runtime·entersyscall(SB)
+       MOV     a1+8(FP), A0
+       MOV     a2+16(FP), A1
+       MOV     a3+24(FP), A2
+       MOV     $0, A3
+       MOV     $0, A4
+       MOV     $0, A5
+       MOV     $0, A6
+       MOV     trap+0(FP), A7  // syscall entry
+       ECALL
+       MOV     A0, r1+32(FP)   // r1
+       MOV     A1, r2+40(FP)   // r2
+       CALL    runtime·exitsyscall(SB)
+       RET
+
+TEXT ·RawSyscall(SB),NOSPLIT,$0-56
+       JMP     syscall·RawSyscall(SB)
+
+TEXT ·RawSyscall6(SB),NOSPLIT,$0-80
+       JMP     syscall·RawSyscall6(SB)
+
+TEXT ·RawSyscallNoError(SB),NOSPLIT,$0-48
+       MOV     a1+8(FP), A0
+       MOV     a2+16(FP), A1
+       MOV     a3+24(FP), A2
+       MOV     ZERO, A3
+       MOV     ZERO, A4
+       MOV     ZERO, A5
+       MOV     trap+0(FP), A7  // syscall entry
+       ECALL
+       MOV     A0, r1+32(FP)
+       MOV     A1, r2+40(FP)
+       RET