]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: implement runtime usleep for openbsd
authorJoel Sing <jsing@google.com>
Sat, 1 Oct 2011 18:58:36 +0000 (11:58 -0700)
committerBrad Fitzpatrick <bradfitz@golang.org>
Sat, 1 Oct 2011 18:58:36 +0000 (11:58 -0700)
R=golang-dev, mikioh.mikioh, hectorchu
CC=golang-dev
https://golang.org/cl/5173043

src/pkg/runtime/openbsd/386/sys.s
src/pkg/runtime/openbsd/amd64/sys.s

index 3a78679bc43e774631543b8d226857473edb757d..3e7c01f8de8a4f4c1ce8a8807e4dee00d2c760f1 100644 (file)
@@ -27,6 +27,24 @@ TEXT runtime·write(SB),7,$-4
        INT     $0x80
        RET
 
+TEXT runtime·usleep(SB),7,$20
+       MOVL    $0, DX
+       MOVL    usec+0(FP), AX
+       MOVL    $1000000, CX
+       DIVL    CX
+       MOVL    AX, 12(SP)              // tv_sec
+       MOVL    $1000, AX
+       MULL    DX
+       MOVL    AX, 16(SP)              // tv_nsec
+
+       MOVL    $0, 0(SP)
+       LEAL    12(SP), AX
+       MOVL    AX, 4(SP)               // arg 1 - rqtp
+       MOVL    $0, 8(SP)               // arg 2 - rmtp
+       MOVL    $240, AX                // sys_nanosleep
+       INT     $0x80
+       RET
+
 TEXT runtime·raisesigpipe(SB),7,$12
        MOVL    $299, AX                // sys_getthrid
        INT     $0x80
index 38b3dbc9c0d50e30caf83c0975e29bd3a667481d..f1442efcf4d6015c887ad672266bde82b93c2be1 100644 (file)
@@ -100,6 +100,22 @@ TEXT runtime·write(SB),7,$-8
        SYSCALL
        RET
 
+TEXT runtime·usleep(SB),7,$16
+       MOVL    $0, DX
+       MOVL    usec+0(FP), AX
+       MOVL    $1000000, CX
+       DIVL    CX
+       MOVQ    AX, 0(SP)               // tv_sec
+       MOVL    $1000, AX
+       MULL    DX
+       MOVQ    AX, 8(SP)               // tv_nsec
+
+       MOVQ    SP, DI                  // arg 1 - rqtp
+       MOVQ    $0, SI                  // arg 2 - rmtp
+       MOVL    $240, AX                // sys_nanosleep
+       SYSCALL
+       RET
+
 TEXT runtime·raisesigpipe(SB),7,$16
        MOVL    $299, AX                // sys_getthrid
        SYSCALL