]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: switch openbsd/386 locking to libc
authorJoel Sing <joel@sing.id.au>
Thu, 28 Jan 2021 12:06:56 +0000 (23:06 +1100)
committerJoel Sing <joel@sing.id.au>
Fri, 30 Apr 2021 18:34:40 +0000 (18:34 +0000)
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>
src/runtime/os_openbsd_syscall1.go
src/runtime/sys_openbsd1.go
src/runtime/sys_openbsd_386.s

index 0f3d5f0b73d0746b4546cb55b58e149b92b0be89..ecae67aa2fcbcd4fc440f35f7bbe932154423df0 100644 (file)
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-//go:build openbsd && !amd64 && !arm64
-// +build openbsd,!amd64,!arm64
+//go:build openbsd && !386 && !amd64 && !arm64
+// +build openbsd,!386,!amd64,!arm64
 
 package runtime
 
index 43e0058985fa2083b932a436b4e3404f18c72702..b007b6d3f59497e44a257798f7975e1b83847fee 100644 (file)
@@ -2,8 +2,8 @@
 // Use of this source code is governed by a BSD-style
 // license that can be found in the LICENSE file.
 
-//go:build (openbsd && amd64) || (openbsd && arm64)
-// +build openbsd,amd64 openbsd,arm64
+//go:build (openbsd && 386) || (openbsd && amd64) || (openbsd && arm64)
+// +build openbsd,386 openbsd,amd64 openbsd,arm64
 
 package runtime
 
index 8eb252904f01d2ebfe873c7ddf0ef7435429df6f..f1911a588de7642d8503d4161a9b3207f8bc2e48 100644 (file)
@@ -167,6 +167,48 @@ TEXT runtime·pthread_create_trampoline(SB),NOSPLIT,$0
        POPL    BP
        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)
 TEXT runtime·exit(SB),NOSPLIT,$-4
        MOVL    $1, AX
@@ -403,23 +445,6 @@ TEXT set_tcb<>(SB),NOSPLIT,$8
        MOVL    $0xf1, 0xf1             // crash
        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
        LEAL    mib+0(FP), SI
        LEAL    4(SP), DI