}
}
-const pushCallSupported = true
-
func (c *sigctxt) pushCall(targetPC uintptr) {
// Make it look like the signaled instruction called target.
pc := uintptr(c.eip())
}
}
-// TODO: Remove pushCallSupported once all platforms support it.
-const pushCallSupported = true
-
func (c *sigctxt) pushCall(targetPC uintptr) {
// Make it look like the signaled instruction called target.
pc := uintptr(c.rip())
c.set_pc(uint32(funcPC(sigpanic)))
}
-const pushCallSupported = true
-
func (c *sigctxt) pushCall(targetPC uintptr) {
// Push the LR to stack, as we'll clobber it in order to
// push the call. The function being pushed is responsible
c.set_pc(uint64(funcPC(sigpanic)))
}
-const pushCallSupported = true
-
func (c *sigctxt) pushCall(targetPC uintptr) {
// Push the LR to stack, as we'll clobber it in order to
// push the call. The function being pushed is responsible
c.set_pc(uint64(funcPC(sigpanic)))
}
-const pushCallSupported = true
-
func (c *sigctxt) pushCall(targetPC uintptr) {
// Push the LR to stack, as we'll clobber it in order to
// push the call. The function being pushed is responsible
c.set_pc(sigpanicPC)
}
-const pushCallSupported = true
-
func (c *sigctxt) pushCall(targetPC uintptr) {
// Push the LR to stack, as we'll clobber it in order to
// push the call. The function being pushed is responsible
c.set_pc(uint32(funcPC(sigpanic)))
}
-const pushCallSupported = true
-
func (c *sigctxt) pushCall(targetPC uintptr) {
// Push the LR to stack, as we'll clobber it in order to
// push the call. The function being pushed is responsible
c.set_pc(uint64(funcPC(sigpanic)))
}
-const pushCallSupported = true
-
func (c *sigctxt) pushCall(targetPC uintptr) {
// Push the LR to stack, as we'll clobber it in order to
// push the call. The function being pushed is responsible
c.set_pc(uint64(funcPC(sigpanic)))
}
-const pushCallSupported = true
-
func (c *sigctxt) pushCall(targetPC uintptr) {
// Push the LR to stack, as we'll clobber it in order to
// push the call. The function being pushed is responsible
atomic.Store(&gp.m.signalPending, 0)
}
-const preemptMSupported = pushCallSupported
+const preemptMSupported = true
// preemptM sends a preemption request to mp. This request may be
// handled asynchronously and may be coalesced with other requests to
// safe-point, it will preempt the goroutine. It always atomically
// increments mp.preemptGen after handling a preemption request.
func preemptM(mp *m) {
- if !pushCallSupported {
- // This architecture doesn't support ctxt.pushCall
- // yet, so doSigPreempt won't work.
- return
- }
if GOOS == "darwin" && GOARCH == "arm64" && !iscgo {
// On darwin, we use libc calls, and cgo is required on ARM64
// so we have TLS set up to save/restore G during C calls. If cgo is