asm_arm64.s (go1.19.src) | : | asm_arm64.s (go1.19.1.src) | ||
---|---|---|---|---|
skipping to change at line 322 | skipping to change at line 322 | |||
MOVD R0, RSP | MOVD R0, RSP | |||
MOVD (g_sched+gobuf_bp)(g), R29 | MOVD (g_sched+gobuf_bp)(g), R29 | |||
MOVD.W $0, -16(RSP) // create a call frame on g0 (saved LR; keep 16-a ligned) | MOVD.W $0, -16(RSP) // create a call frame on g0 (saved LR; keep 16-a ligned) | |||
BL runtime·newstack(SB) | BL runtime·newstack(SB) | |||
// Not reached, but make sure the return PC from the call to newstack | // Not reached, but make sure the return PC from the call to newstack | |||
// is still in this function, and not the beginning of the next. | // is still in this function, and not the beginning of the next. | |||
UNDEF | UNDEF | |||
TEXT runtime·morestack_noctxt(SB),NOSPLIT|NOFRAME,$0-0 | TEXT runtime·morestack_noctxt(SB),NOSPLIT|NOFRAME,$0-0 | |||
// Force SPWRITE. This function doesn't actually write SP, | ||||
// but it is called with a special calling convention where | ||||
// the caller doesn't save LR on stack but passes it as a | ||||
// register (R3), and the unwinder currently doesn't understand. | ||||
// Make it SPWRITE to stop unwinding. (See issue 54332) | ||||
MOVD RSP, RSP | ||||
MOVW $0, R26 | MOVW $0, R26 | |||
B runtime·morestack(SB) | B runtime·morestack(SB) | |||
// spillArgs stores return values from registers to a *internal/abi.RegArgs in R 20. | // spillArgs stores return values from registers to a *internal/abi.RegArgs in R 20. | |||
TEXT ·spillArgs(SB),NOSPLIT,$0-0 | TEXT ·spillArgs(SB),NOSPLIT,$0-0 | |||
STP (R0, R1), (0*8)(R20) | STP (R0, R1), (0*8)(R20) | |||
STP (R2, R3), (2*8)(R20) | STP (R2, R3), (2*8)(R20) | |||
STP (R4, R5), (4*8)(R20) | STP (R4, R5), (4*8)(R20) | |||
STP (R6, R7), (6*8)(R20) | STP (R6, R7), (6*8)(R20) | |||
STP (R8, R9), (8*8)(R20) | STP (R8, R9), (8*8)(R20) | |||
End of changes. 1 change blocks. | ||||
0 lines changed or deleted | 7 lines changed or added |