mirror of
https://github.com/golang/go
synced 2024-11-22 23:50:03 -07:00
runtime: fix linux/arm build
notetsleep: nosplit stack overflow 128 assumed on entry to notetsleep 80 after notetsleep uses 48 44 after runtime.futexsleep uses 36 -12 after runtime.timediv uses 56 R=golang-dev, rsc CC=golang-dev https://golang.org/cl/12049043
This commit is contained in:
parent
ddc01d5b06
commit
d91219e458
@ -138,9 +138,11 @@ runtime·notesleep(Note *n)
|
|||||||
|
|
||||||
#pragma textflag 7
|
#pragma textflag 7
|
||||||
static bool
|
static bool
|
||||||
notetsleep(Note *n, int64 ns)
|
notetsleep(Note *n, int64 ns, int64 deadline, int64 now)
|
||||||
{
|
{
|
||||||
int64 deadline, now;
|
// Conceptually, deadline and now are local variables.
|
||||||
|
// They are passed as arguments so that the space for them
|
||||||
|
// does not count against our nosplit stack sequence.
|
||||||
|
|
||||||
if(ns < 0) {
|
if(ns < 0) {
|
||||||
while(runtime·atomicload((uint32*)&n->key) == 0)
|
while(runtime·atomicload((uint32*)&n->key) == 0)
|
||||||
@ -174,7 +176,7 @@ runtime·notetsleep(Note *n, int64 ns)
|
|||||||
|
|
||||||
if(m->profilehz > 0)
|
if(m->profilehz > 0)
|
||||||
runtime·setprof(false);
|
runtime·setprof(false);
|
||||||
res = notetsleep(n, ns);
|
res = notetsleep(n, ns, 0, 0);
|
||||||
if(m->profilehz > 0)
|
if(m->profilehz > 0)
|
||||||
runtime·setprof(true);
|
runtime·setprof(true);
|
||||||
return res;
|
return res;
|
||||||
@ -192,7 +194,7 @@ runtime·notetsleepg(Note *n, int64 ns)
|
|||||||
runtime·throw("notetsleepg on g0");
|
runtime·throw("notetsleepg on g0");
|
||||||
|
|
||||||
runtime·entersyscallblock();
|
runtime·entersyscallblock();
|
||||||
res = notetsleep(n, ns);
|
res = notetsleep(n, ns, 0, 0);
|
||||||
runtime·exitsyscall();
|
runtime·exitsyscall();
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user