mirror of
https://github.com/golang/go
synced 2024-11-11 22:40:22 -07:00
runtime: switch openbsd/386 locking to libc
Switch openbsd/386 to locking via libc, rather than performing direct system calls. Update #36435 Change-Id: I8198171e21f9acf28846ad723ea9ff48f7c8a69d Reviewed-on: https://go-review.googlesource.com/c/go/+/287652 Trust: Joel Sing <joel@sing.id.au> Reviewed-by: Cherry Zhang <cherryyz@google.com>
This commit is contained in:
parent
4893eee9dc
commit
c3b2b04156
@ -2,8 +2,8 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
//go:build openbsd && !amd64 && !arm64
|
//go:build openbsd && !386 && !amd64 && !arm64
|
||||||
// +build openbsd,!amd64,!arm64
|
// +build openbsd,!386,!amd64,!arm64
|
||||||
|
|
||||||
package runtime
|
package runtime
|
||||||
|
|
||||||
|
@ -2,8 +2,8 @@
|
|||||||
// Use of this source code is governed by a BSD-style
|
// Use of this source code is governed by a BSD-style
|
||||||
// license that can be found in the LICENSE file.
|
// license that can be found in the LICENSE file.
|
||||||
|
|
||||||
//go:build (openbsd && amd64) || (openbsd && arm64)
|
//go:build (openbsd && 386) || (openbsd && amd64) || (openbsd && arm64)
|
||||||
// +build openbsd,amd64 openbsd,arm64
|
// +build openbsd,386 openbsd,amd64 openbsd,arm64
|
||||||
|
|
||||||
package runtime
|
package runtime
|
||||||
|
|
||||||
|
@ -167,6 +167,48 @@ TEXT runtime·pthread_create_trampoline(SB),NOSPLIT,$0
|
|||||||
POPL BP
|
POPL BP
|
||||||
RET
|
RET
|
||||||
|
|
||||||
|
TEXT runtime·thrsleep_trampoline(SB),NOSPLIT,$0
|
||||||
|
PUSHL BP
|
||||||
|
MOVL SP, BP
|
||||||
|
SUBL $20, SP
|
||||||
|
MOVL 28(SP), DX // pointer to args
|
||||||
|
MOVL 0(DX), AX
|
||||||
|
MOVL 4(DX), BX
|
||||||
|
MOVL 8(DX), CX
|
||||||
|
MOVL AX, 0(SP) // arg 1 - id
|
||||||
|
MOVL BX, 4(SP) // arg 2 - clock_id
|
||||||
|
MOVL CX, 8(SP) // arg 3 - abstime
|
||||||
|
MOVL 12(DX), AX
|
||||||
|
MOVL 16(DX), BX
|
||||||
|
MOVL AX, 12(SP) // arg 4 - lock
|
||||||
|
MOVL BX, 16(SP) // arg 5 - abort
|
||||||
|
CALL libc_thrsleep(SB)
|
||||||
|
MOVL BP, SP
|
||||||
|
POPL BP
|
||||||
|
RET
|
||||||
|
|
||||||
|
TEXT runtime·thrwakeup_trampoline(SB),NOSPLIT,$0
|
||||||
|
PUSHL BP
|
||||||
|
MOVL SP, BP
|
||||||
|
SUBL $8, SP
|
||||||
|
MOVL 16(SP), DX // pointer to args
|
||||||
|
MOVL 0(DX), AX
|
||||||
|
MOVL 4(DX), BX
|
||||||
|
MOVL AX, 0(SP) // arg 1 - id
|
||||||
|
MOVL BX, 4(SP) // arg 2 - count
|
||||||
|
CALL libc_thrwakeup(SB)
|
||||||
|
MOVL BP, SP
|
||||||
|
POPL BP
|
||||||
|
RET
|
||||||
|
|
||||||
|
TEXT runtime·sched_yield_trampoline(SB),NOSPLIT,$0
|
||||||
|
PUSHL BP
|
||||||
|
MOVL SP, BP
|
||||||
|
CALL libc_sched_yield(SB)
|
||||||
|
MOVL BP, SP
|
||||||
|
POPL BP
|
||||||
|
RET
|
||||||
|
|
||||||
// Exit the entire program (like C exit)
|
// Exit the entire program (like C exit)
|
||||||
TEXT runtime·exit(SB),NOSPLIT,$-4
|
TEXT runtime·exit(SB),NOSPLIT,$-4
|
||||||
MOVL $1, AX
|
MOVL $1, AX
|
||||||
@ -403,23 +445,6 @@ TEXT set_tcb<>(SB),NOSPLIT,$8
|
|||||||
MOVL $0xf1, 0xf1 // crash
|
MOVL $0xf1, 0xf1 // crash
|
||||||
RET
|
RET
|
||||||
|
|
||||||
TEXT runtime·osyield(SB),NOSPLIT,$-4
|
|
||||||
MOVL $298, AX // sys_sched_yield
|
|
||||||
INT $0x80
|
|
||||||
RET
|
|
||||||
|
|
||||||
TEXT runtime·thrsleep(SB),NOSPLIT,$-4
|
|
||||||
MOVL $94, AX // sys___thrsleep
|
|
||||||
INT $0x80
|
|
||||||
MOVL AX, ret+20(FP)
|
|
||||||
RET
|
|
||||||
|
|
||||||
TEXT runtime·thrwakeup(SB),NOSPLIT,$-4
|
|
||||||
MOVL $301, AX // sys___thrwakeup
|
|
||||||
INT $0x80
|
|
||||||
MOVL AX, ret+8(FP)
|
|
||||||
RET
|
|
||||||
|
|
||||||
TEXT runtime·sysctl(SB),NOSPLIT,$28
|
TEXT runtime·sysctl(SB),NOSPLIT,$28
|
||||||
LEAL mib+0(FP), SI
|
LEAL mib+0(FP), SI
|
||||||
LEAL 4(SP), DI
|
LEAL 4(SP), DI
|
||||||
|
Loading…
Reference in New Issue
Block a user