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:
parent
a0102dee34
commit
6cc52efa13
@ -77,8 +77,8 @@ ENTRY(arm_smccc_1_2_\insn)
|
|||||||
stp x12, x13, [x19, #16 * 6]
|
stp x12, x13, [x19, #16 * 6]
|
||||||
stp x14, x15, [x19, #16 * 7]
|
stp x14, x15, [x19, #16 * 7]
|
||||||
stp x16, x17, [x19, #16 * 8]
|
stp x16, x17, [x19, #16 * 8]
|
||||||
ldp xzr, x19, [sp], #16
|
1: ldp xzr, x19, [sp], #16
|
||||||
1: ret
|
ret
|
||||||
END(arm_smccc_1_2\insn)
|
END(arm_smccc_1_2\insn)
|
||||||
.endm
|
.endm
|
||||||
/* int arm_smccc_1_2_*(const struct arm_smccc_1_2_regs *args,
|
/* int arm_smccc_1_2_*(const struct arm_smccc_1_2_regs *args,
|
||||||
|
Loading…
Reference in New Issue
Block a user