1
0
mirror of https://github.com/golang/go synced 2024-11-24 22:47:58 -07:00

Fix issue with preemption on Windows ARM32

This commit is contained in:
wmjb 2024-11-06 21:57:03 +00:00 committed by GitHub
parent eb29beb0ad
commit b7b1296cd5
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -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":