mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
syscall: support rawVforkSyscall on linux/riscv64
Updates #31936 Change-Id: I7dcb8987d4c306ccc97704b9c1b12313ba8bf242 Reviewed-on: https://go-review.googlesource.com/c/go/+/234960 Reviewed-by: Cherry Zhang <cherryyz@google.com> Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Gobot Gobot <gobot@golang.org>
This commit is contained in:
parent
cf9b4f63a5
commit
d303630622
3 changed files with 28 additions and 4 deletions
|
|
@ -104,6 +104,28 @@ err:
|
|||
MOV A0, err+72(FP) // errno
|
||||
RET
|
||||
|
||||
// func rawVforkSyscall(trap, a1 uintptr) (r1, err uintptr)
|
||||
TEXT ·rawVforkSyscall(SB),NOSPLIT|NOFRAME,$0-32
|
||||
MOV a1+8(FP), A0
|
||||
MOV ZERO, A1
|
||||
MOV ZERO, A2
|
||||
MOV ZERO, A3
|
||||
MOV ZERO, A4
|
||||
MOV ZERO, A5
|
||||
MOV trap+0(FP), A7 // syscall entry
|
||||
ECALL
|
||||
MOV $-4096, T0
|
||||
BLTU T0, A0, err
|
||||
MOV A0, r1+16(FP) // r1
|
||||
MOV ZERO, err+24(FP) // errno
|
||||
RET
|
||||
err:
|
||||
MOV $-1, T0
|
||||
MOV T0, r1+16(FP) // r1
|
||||
SUB A0, ZERO, A0
|
||||
MOV A0, err+24(FP) // errno
|
||||
RET
|
||||
|
||||
TEXT ·rawSyscallNoError(SB),NOSPLIT,$0-48
|
||||
MOV a1+8(FP), A0
|
||||
MOV a2+16(FP), A1
|
||||
|
|
|
|||
|
|
@ -207,7 +207,11 @@ func forkAndExecInChild1(argv0 *byte, argv, envv []*byte, chroot, dir *byte, att
|
|||
}
|
||||
}
|
||||
|
||||
hasRawVforkSyscall := runtime.GOARCH == "amd64" || runtime.GOARCH == "ppc64" || runtime.GOARCH == "s390x" || runtime.GOARCH == "arm64"
|
||||
var hasRawVforkSyscall bool
|
||||
switch runtime.GOARCH {
|
||||
case "amd64", "arm64", "ppc64", "riscv64", "s390x":
|
||||
hasRawVforkSyscall = true
|
||||
}
|
||||
|
||||
// About to call fork.
|
||||
// No more allocation or calls of non-assembly functions.
|
||||
|
|
|
|||
|
|
@ -199,6 +199,4 @@ func Pause() error {
|
|||
return err
|
||||
}
|
||||
|
||||
func rawVforkSyscall(trap, a1 uintptr) (r1 uintptr, err Errno) {
|
||||
panic("not implemented")
|
||||
}
|
||||
func rawVforkSyscall(trap, a1 uintptr) (r1 uintptr, err Errno)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue