diff options
Diffstat (limited to 'libgo/go')
-rw-r--r-- | libgo/go/runtime/os_gccgo.go | 1 | ||||
-rw-r--r-- | libgo/go/runtime/proc.go | 5 | ||||
-rw-r--r-- | libgo/go/runtime/signal_unix.go | 1 |
3 files changed, 7 insertions, 0 deletions
diff --git a/libgo/go/runtime/os_gccgo.go b/libgo/go/runtime/os_gccgo.go index 358a38b..db3ea48 100644 --- a/libgo/go/runtime/os_gccgo.go +++ b/libgo/go/runtime/os_gccgo.go @@ -32,6 +32,7 @@ func minit() { // Called from dropm to undo the effect of an minit. //go:nosplit +//go:nowritebarrierrec func unminit() { unminitSignals() } diff --git a/libgo/go/runtime/proc.go b/libgo/go/runtime/proc.go index bdf7144..77b624b 100644 --- a/libgo/go/runtime/proc.go +++ b/libgo/go/runtime/proc.go @@ -1447,6 +1447,9 @@ func oneNewExtraM() { // in which dropm happens on each cgo call, is still correct too. // We may have to keep the current version on systems with cgo // but without pthreads, like Windows. +// +// CgocallBackDone calls this after releasing p, so no write barriers. +//go:nowritebarrierrec func dropm() { // Clear m and g, and return m to the extra list. // After the call to setg we can only call nosplit functions @@ -1492,6 +1495,7 @@ var extraMWaiters uint32 // return a nil list head if that's what it finds. If nilokay is false, // lockextra will keep waiting until the list head is no longer nil. //go:nosplit +//go:nowritebarrierrec func lockextra(nilokay bool) *m { const locked = 1 @@ -1524,6 +1528,7 @@ func lockextra(nilokay bool) *m { } //go:nosplit +//go:nowritebarrierrec func unlockextra(mp *m) { atomic.Storeuintptr(&extram, uintptr(unsafe.Pointer(mp))) } diff --git a/libgo/go/runtime/signal_unix.go b/libgo/go/runtime/signal_unix.go index c8713b6..e2642ee 100644 --- a/libgo/go/runtime/signal_unix.go +++ b/libgo/go/runtime/signal_unix.go @@ -599,6 +599,7 @@ func minitSignalMask() { // unminitSignals is called from dropm, via unminit, to undo the // effect of calling minit on a non-Go thread. //go:nosplit +//go:nowritebarrierrec func unminitSignals() { if getg().m.newSigstack { signalstack(nil, 0) |