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
|
MOV A0, err+72(FP) // errno
|
||||||
RET
|
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
|
TEXT ·rawSyscallNoError(SB),NOSPLIT,$0-48
|
||||||
MOV a1+8(FP), A0
|
MOV a1+8(FP), A0
|
||||||
MOV a2+16(FP), A1
|
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.
|
// About to call fork.
|
||||||
// No more allocation or calls of non-assembly functions.
|
// No more allocation or calls of non-assembly functions.
|
||||||
|
|
|
||||||
|
|
@ -199,6 +199,4 @@ func Pause() error {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
func rawVforkSyscall(trap, a1 uintptr) (r1 uintptr, err Errno) {
|
func rawVforkSyscall(trap, a1 uintptr) (r1 uintptr, err Errno)
|
||||||
panic("not implemented")
|
|
||||||
}
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue