Changeset View
Changeset View
Standalone View
Standalone View
sys/dev/psci/smccc_arm64.S
Show First 20 Lines • Show All 45 Lines • ▼ Show 20 Lines | |||||
/* | /* | ||||
* int arm_smccc_*(register_t, register_t, register_t, register_t, | * int arm_smccc_*(register_t, register_t, register_t, register_t, | ||||
* register_t, register_t, register_t, register_t, | * register_t, register_t, register_t, register_t, | ||||
* struct arm_smccc_res *res) | * struct arm_smccc_res *res) | ||||
*/ | */ | ||||
arm_smccc_1_0 hvc | arm_smccc_1_0 hvc | ||||
arm_smccc_1_0 smc | arm_smccc_1_0 smc | ||||
.macro arm_smccc_1_2 insn | |||||
andrew: You can remove this comment & replace it with a newline to seperate the above from the 1.2… | |||||
ENTRY(arm_smccc_1_2_\insn) | |||||
stp x1, x19, [sp, #-16]! | |||||
mov x19, x0 | |||||
ldp x0, x1, [x19, #16 * 0] | |||||
ldp x2, x3, [x19, #16 * 1] | |||||
ldp x4, x5, [x19, #16 * 2] | |||||
ldp x6, x7, [x19, #16 * 3] | |||||
ldp x8, x9, [x19, #16 * 4] | |||||
ldp x10, x11, [x19, #16 * 5] | |||||
Done Inline ActionsCan you rebase this past R10:48a7e53db78293ba2723cecfb3a3d5d23ea8e44d & update to be a macro so we can also add smc support. andrew: Can you rebase this past R10:48a7e53db78293ba2723cecfb3a3d5d23ea8e44d & update to be a macro so… | |||||
ldp x12, x13, [x19, #16 * 6] | |||||
ldp x14, x15, [x19, #16 * 7] | |||||
ldp x16, x17, [x19, #16 * 8] | |||||
\insn #0 | |||||
ldr x19, [sp] | |||||
Done Inline Actions\insn #0 andrew: `\insn #0` | |||||
cbz x19, 1f | |||||
stp x0, x1, [x19, #16 * 0] | |||||
stp x2, x3, [x19, #16 * 1] | |||||
stp x4, x5, [x19, #16 * 2] | |||||
Done Inline ActionsWhy two spaces between , and [? for those 3 lines? lwhsu: Why two spaces between `,` and `[`? for those 3 lines? | |||||
stp x6, x7, [x19, #16 * 3] | |||||
stp x8, x9, [x19, #16 * 4] | |||||
stp x10, x11, [x19, #16 * 5] | |||||
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 | |||||
END(arm_smccc_1_2\insn) | |||||
.endm | |||||
/* int arm_smccc_1_2_*(const struct arm_smccc_1_2_regs *args, | |||||
* struct arm_smccc_1_2_regs *res) | |||||
Done Inline ActionsAlso those 3 lines. lwhsu: Also those 3 lines. | |||||
Not Done Inline ActionsSmall nit: trailing white space. lwhsu: Small nit: trailing white space. | |||||
*/ | |||||
arm_smccc_1_2 hvc | |||||
arm_smccc_1_2 smc |
You can remove this comment & replace it with a newline to seperate the above from the 1.2 macro.