lab.nexedi.com will be down from Thursday, 20 March 2025, 07:30:00 UTC for a duration of approximately 2 hours

Commit d91219e4 authored by Dmitriy Vyukov's avatar Dmitriy Vyukov

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
parent ddc01d5b
...@@ -138,9 +138,11 @@ runtime·notesleep(Note *n) ...@@ -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) ...@@ -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) ...@@ -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;
} }
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment