1
0
mirror of https://github.com/golang/go synced 2024-11-22 08:44:41 -07:00

runtime, misc/cgo/test: fix build for Linux/ARM

1. In CL 5989057, I made a mistake in the last minute change.
"MOVW.W R4, -4(SP)" should really be "MOVW.W R4, -4(R13)",
as 5l will rewrite offset for SP.
2. misc/cgo/test/issue1560.go tests for parallel sleep of 1s,
but on ARM, the deadline is frequently missed, so change sleep
time to 2s on ARM.

R=golang-dev, dave, rsc
CC=golang-dev
https://golang.org/cl/6202043
This commit is contained in:
Shenghou Ma 2012-05-05 01:35:13 +08:00
parent 018c60bd8f
commit 018bcc3535
2 changed files with 12 additions and 5 deletions

View File

@ -15,6 +15,7 @@ void twoSleep(int);
import "C"
import (
"runtime"
"testing"
"time"
)
@ -35,11 +36,17 @@ func BackgroundSleep(n int) {
}
func testParallelSleep(t *testing.T) {
sleepSec := 1
if runtime.GOARCH == "arm" {
// on ARM, the 1.3s deadline is frequently missed,
// so increase sleep time to 2s
sleepSec = 2
}
start := time.Now()
parallelSleep(1)
parallelSleep(sleepSec)
dt := time.Now().Sub(start)
// bug used to run sleeps in serial, producing a 2-second delay.
if dt >= 1300*time.Millisecond {
t.Fatalf("parallel 1-second sleeps slept for %f seconds", dt.Seconds())
// bug used to run sleeps in serial, producing a 2*sleepSec-second delay.
if dt >= time.Duration(sleepSec)*1300*time.Millisecond {
t.Fatalf("parallel %d-second sleeps slept for %f seconds", sleepSec, dt.Seconds())
}
}

View File

@ -289,7 +289,7 @@ TEXT runtime·cgocallback(SB),7,$16
// Save current m->g0->sched.sp on stack and then set it to SP.
MOVW m_g0(m), R3
MOVW (g_sched+gobuf_sp)(R3), R4
MOVW.W R4, -4(SP)
MOVW.W R4, -4(R13)
MOVW R13, (g_sched+gobuf_sp)(R3)
// Switch to m->curg stack and call runtime.cgocallbackg