runtime: Use atomic load for in entersyscall.

Reportedly fixes PPC64 deadlock.
    
    From a comment by Gabriel Russell.
    
    Fixes golang/go#15051.
    
    Reviewed-on: https://go-review.googlesource.com/21450

From-SVN: r234694
This commit is contained in:
Ian Lance Taylor 2016-04-02 00:47:53 +00:00
parent 2e816b993d
commit bb72703282
2 changed files with 2 additions and 2 deletions

View File

@ -1,4 +1,4 @@
3de822d11255d439fac9717897b017aae2de18c2
8edf085a94579bd819a10f50328233812ceeb950
The first line of this file holds the git revision number of the last
merge done from the gofrontend repository.

View File

@ -2042,7 +2042,7 @@ doentersyscall()
m->mcache = nil;
m->p->m = nil;
runtime_atomicstore(&m->p->status, Psyscall);
if(runtime_sched.gcwaiting) {
if(runtime_atomicload(&runtime_sched.gcwaiting)) {
runtime_lock(&runtime_sched);
if (runtime_sched.stopwait > 0 && runtime_cas(&m->p->status, Psyscall, Pgcstop)) {
if(--runtime_sched.stopwait == 0)