Changeset View
Changeset View
Standalone View
Standalone View
sys/arm64/arm64/exception.S
Show All 32 Lines | #include "assym.inc" | ||||
.text | .text | ||||
.macro save_registers el | .macro save_registers el | ||||
.if \el == 1 | .if \el == 1 | ||||
mov x18, sp | mov x18, sp | ||||
sub sp, sp, #128 | sub sp, sp, #128 | ||||
.endif | .endif | ||||
sub sp, sp, #(TF_SIZE + 16) | sub sp, sp, #(TF_SIZE) | ||||
stp x29, lr, [sp, #(TF_SIZE)] | |||||
jhb: So we stored x29 twice? | |||||
Done Inline ActionsYes, once to the trapframe and once to the normal stack frame. jrtc27: Yes, once to the trapframe and once to the normal stack frame. | |||||
stp x28, x29, [sp, #(TF_X + 28 * 8)] | stp x28, x29, [sp, #(TF_X + 28 * 8)] | ||||
stp x26, x27, [sp, #(TF_X + 26 * 8)] | stp x26, x27, [sp, #(TF_X + 26 * 8)] | ||||
stp x24, x25, [sp, #(TF_X + 24 * 8)] | stp x24, x25, [sp, #(TF_X + 24 * 8)] | ||||
stp x22, x23, [sp, #(TF_X + 22 * 8)] | stp x22, x23, [sp, #(TF_X + 22 * 8)] | ||||
stp x20, x21, [sp, #(TF_X + 20 * 8)] | stp x20, x21, [sp, #(TF_X + 20 * 8)] | ||||
stp x18, x19, [sp, #(TF_X + 18 * 8)] | stp x18, x19, [sp, #(TF_X + 18 * 8)] | ||||
stp x16, x17, [sp, #(TF_X + 16 * 8)] | stp x16, x17, [sp, #(TF_X + 16 * 8)] | ||||
stp x14, x15, [sp, #(TF_X + 14 * 8)] | stp x14, x15, [sp, #(TF_X + 14 * 8)] | ||||
▲ Show 20 Lines • Show All 76 Lines • ▼ Show 20 Lines | .if \el == 0 | ||||
ldp x22, x23, [sp, #(TF_X + 22 * 8)] | ldp x22, x23, [sp, #(TF_X + 22 * 8)] | ||||
ldp x24, x25, [sp, #(TF_X + 24 * 8)] | ldp x24, x25, [sp, #(TF_X + 24 * 8)] | ||||
ldp x26, x27, [sp, #(TF_X + 26 * 8)] | ldp x26, x27, [sp, #(TF_X + 26 * 8)] | ||||
ldp x28, x29, [sp, #(TF_X + 28 * 8)] | ldp x28, x29, [sp, #(TF_X + 28 * 8)] | ||||
.else | .else | ||||
ldr x29, [sp, #(TF_X + 29 * 8)] | ldr x29, [sp, #(TF_X + 29 * 8)] | ||||
.endif | .endif | ||||
.if \el == 0 | .if \el == 0 | ||||
add sp, sp, #(TF_SIZE + 16) | add sp, sp, #(TF_SIZE) | ||||
.else | .else | ||||
mov sp, x18 | mov sp, x18 | ||||
mrs x18, tpidr_el1 | mrs x18, tpidr_el1 | ||||
.endif | .endif | ||||
.endm | .endm | ||||
.macro do_ast | .macro do_ast | ||||
mrs x19, daif | mrs x19, daif | ||||
▲ Show 20 Lines • Show All 112 Lines • Show Last 20 Lines |
So we stored x29 twice?