This permits cgo callbacks to work when run in init code.
Otherwise cgocallback switches to the wrong stack address.
R=rsc
CC=golang-dev
https://golang.org/cl/
1123043
·entersyscall(void)
{
lock(&sched);
+ // Leave SP around for gc and traceback.
+ // Do before notewakeup so that gc
+ // never sees Gsyscall with wrong stack.
+ gosave(&g->sched);
if(sched.predawn) {
unlock(&sched);
return;
}
g->status = Gsyscall;
- // Leave SP around for gc and traceback.
- // Do before notewakeup so that gc
- // never sees Gsyscall with wrong stack.
- gosave(&g->sched);
sched.mcpu--;
sched.msyscall++;
if(sched.gwait != 0)