for last = ctxt.Cursym.Text; last.Link != nil; last = last.Link {
}
+ spfix := obj.Appendp(ctxt, last)
+ spfix.As = obj.ANOP
+ spfix.Spadj = -framesize
+
// MOVW LR, R3
- movw := obj.Appendp(ctxt, last)
+ movw := obj.Appendp(ctxt, spfix)
movw.As = AMOVW
movw.From.Type = obj.TYPE_REG
movw.From.Reg = REGLINK
b.To.Type = obj.TYPE_BRANCH
b.Pcond = ctxt.Cursym.Text.Link
+ spfix = obj.Appendp(ctxt, b)
+ spfix.As = obj.ANOP
+ spfix.Spadj = +framesize
+
return bls
}
for last = ctxt.Cursym.Text; last.Link != nil; last = last.Link {
}
+ spfix := obj.Appendp(ctxt, last)
+ spfix.As = obj.ANOP
+ spfix.Spadj = -framesize
+
// MOV LR, R3
- movlr := obj.Appendp(ctxt, last)
+ movlr := obj.Appendp(ctxt, spfix)
movlr.As = AMOVD
movlr.From.Type = obj.TYPE_REG
movlr.From.Reg = REGLINK
jmp.To.Type = obj.TYPE_BRANCH
jmp.Pcond = ctxt.Cursym.Text.Link
+ spfix = obj.Appendp(ctxt, jmp)
+ spfix.As = obj.ANOP
+ spfix.Spadj = +framesize
+
// placeholder for bls's jump target
// p = obj.Appendp(ctxt, p)
// p.As = obj.ANOP
for last = ctxt.Cursym.Text; last.Link != nil; last = last.Link {
}
- call := obj.Appendp(ctxt, last)
+ // Explain to PC-line tables that there is no frame here.
+ spfix := obj.Appendp(ctxt, last)
+ spfix.As = obj.ANOP
+ spfix.Spadj = -framesize
+
+ call := obj.Appendp(ctxt, spfix)
call.Lineno = ctxt.Cursym.Text.Lineno
call.Mode = ctxt.Cursym.Text.Mode
call.As = obj.ACALL
jmp.To.Type = obj.TYPE_BRANCH
jmp.Pcond = ctxt.Cursym.Text.Link
+ spfix = obj.Appendp(ctxt, jmp)
+ spfix.As = obj.ANOP
+ spfix.Spadj = +framesize
+
jls.Pcond = call
if q1 != nil {
q1.Pcond = call