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:
parent
018c60bd8f
commit
018bcc3535
@ -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())
|
||||
}
|
||||
}
|
||||
|
@ -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
|
||||
|
Loading…
Reference in New Issue
Block a user