]> Cypherpunks repositories - gostls13.git/commitdiff
runtime: runtime.usleep() bugfix on darwin/amd64 and linux/arm
authorShenghou Ma <minux.ma@gmail.com>
Wed, 11 Jan 2012 04:48:02 +0000 (20:48 -0800)
committerRuss Cox <rsc@golang.org>
Wed, 11 Jan 2012 04:48:02 +0000 (20:48 -0800)
pkg/runtime/sys_darwin_amd64.s: fixes syscall select nr
pkg/runtime/sys_linux_arm.s: uses newselect instead of the now unimplemented
        (old) select, also fixes the wrong div/mod statements in runtime.usleep.
Fixes #2633

R=golang-dev, dave, rsc
CC=golang-dev
https://golang.org/cl/5504096

src/pkg/runtime/sys_darwin_amd64.s
src/pkg/runtime/sys_linux_arm.s

index 86f99366148206b6429576b064b5a60809d17763..e0dbdb7c169f6532b5711ebebbf1e1877d553d32 100644 (file)
@@ -175,7 +175,7 @@ TEXT runtimeĀ·usleep(SB),7,$16
        MOVL    $0, DX
        MOVL    $0, R10
        MOVQ    SP, R8
-       MOVL    $(0x2000000+23), AX
+       MOVL    $(0x2000000+93), AX
        SYSCALL
        RET
 
index e0e4135b54cce3a58ae6fd63f2860496b3ac83da..c3a828a92478a83276b2d8499bcf19c0da3d23ba 100644 (file)
@@ -34,7 +34,7 @@
 #define SYS_gettid (SYS_BASE + 224)
 #define SYS_tkill (SYS_BASE + 238)
 #define SYS_sched_yield (SYS_BASE + 158)
-#define SYS_select (SYS_BASE + 82)
+#define SYS_select (SYS_BASE + 142) // newselect
 
 #define ARM_BASE (SYS_BASE + 0x0f0000)
 #define SYS_ARM_cacheflush (ARM_BASE + 2)
@@ -313,10 +313,10 @@ TEXT runtimeĀ·usleep(SB),7,$12
        MOVW    usec+0(FP), R0
        MOVW    R0, R1
        MOVW    $1000000, R2
-       DIV     R1, R0
-       MOD     R2, R0
-       MOVW    R1, 4(SP)
-       MOVW    R2, 8(SP)
+       DIV     R2, R0
+       MOD     R2, R1
+       MOVW    R0, 4(SP)
+       MOVW    R1, 8(SP)
        MOVW    $0, R0
        MOVW    $0, R1
        MOVW    $0, R2