mirror of
https://github.com/golang/go
synced 2024-11-24 14:50:13 -07:00
Fix issue with preemption on Windows ARM32
This commit is contained in:
parent
eb29beb0ad
commit
b7b1296cd5
@ -1320,13 +1320,12 @@ func preemptM(mp *m) {
|
|||||||
// Push LR. The injected call is responsible
|
// Push LR. The injected call is responsible
|
||||||
// for restoring LR. gentraceback is aware of
|
// for restoring LR. gentraceback is aware of
|
||||||
// this extra slot. See sigctxt.pushCall in
|
// this extra slot. See sigctxt.pushCall in
|
||||||
// signal_arm.go, which is similar except we
|
// signal_arm.go.
|
||||||
// subtract 1 from IP here.
|
|
||||||
sp := c.sp()
|
sp := c.sp()
|
||||||
sp -= goarch.PtrSize
|
sp -= goarch.PtrSize
|
||||||
c.set_sp(sp)
|
c.set_sp(sp)
|
||||||
*(*uint32)(unsafe.Pointer(sp)) = uint32(c.lr())
|
*(*uint32)(unsafe.Pointer(sp)) = uint32(c.lr())
|
||||||
c.set_lr(newpc - 1)
|
c.set_lr(newpc)
|
||||||
c.set_ip(targetPC)
|
c.set_ip(targetPC)
|
||||||
|
|
||||||
case "arm64":
|
case "arm64":
|
||||||
|
Loading…
Reference in New Issue
Block a user