arm_smcc_1_2_*: Don't trash SP and X19 if no return value structure.

Jumping direct to ret was not restoring the saved value of x19 and was
also not adjusting sp to discard the two saved registers.

Reviewed by:	andrew
Sponsored by:	DARPA
Differential Revision:	https://reviews.freebsd.org/D37922
This commit is contained in:
John Baldwin 2023-02-01 13:54:09 -08:00
parent a0102dee34
commit 6cc52efa13

View File

@ -77,8 +77,8 @@ ENTRY(arm_smccc_1_2_\insn)
stp x12, x13, [x19, #16 * 6]
stp x14, x15, [x19, #16 * 7]
stp x16, x17, [x19, #16 * 8]
ldp xzr, x19, [sp], #16
1: ret
1: ldp xzr, x19, [sp], #16
ret
END(arm_smccc_1_2\insn)
.endm
/* int arm_smccc_1_2_*(const struct arm_smccc_1_2_regs *args,