2 #include <asm/aa64_msrs.h>
3 #include "hart_field.inc"
7 .globl _aa64_evec_prehandle
8 .globl _aa64_switch_task
11 stp xzr, elr, [sp, #-16]! # push {xzr , elr}
12 stp spsr, xzr, [sp, #-16]! # push {spsr, xzr}
14 stp lr, fp, [sp, #-16]! # push {x31-x1}
15 stp x28, x27, [sp, #-16]!
16 stp x26, x25, [sp, #-16]!
17 stp x24, x23, [sp, #-16]!
18 stp x22, x21, [sp, #-16]!
19 stp x20, x19, [sp, #-16]!
20 stp x18, x17, [sp, #-16]!
21 stp x16, x15, [sp, #-16]!
22 stp x14, x13, [sp, #-16]!
23 stp x12, x11, [sp, #-16]!
24 stp x10, x9, [sp, #-16]!
25 stp x8, x7, [sp, #-16]!
26 stp x6, x5, [sp, #-16]!
27 stp x4, x3, [sp, #-16]!
28 stp x2, x1, [sp, #-16]!
29 stp x0, xzr, [sp, #-16]! # push {x0, xzr}
31 add x1, sp, #hart_execp
34 str x0, [x1, #execp_spel0_saved]
37 str x0, [x1, #execp_spel1_saved]
45 add x1, x0, #hart_execp
47 ldr x0, [x1, #execp_spsr]
50 ldr x0, [x1, #execp_link]
53 ldr x0, [x1, #execp_spel0_saved]
56 add sp, sp, #hart_regs
59 ldp x1, x2, [sp, #16]!
60 ldp x3, x4, [sp, #16]!
61 ldp x5, x6, [sp, #16]!
62 ldp x7, x8, [sp, #16]!
63 ldp x9, x10, [sp, #16]!
64 ldp x11, x12, [sp, #16]!
65 ldp x13, x14, [sp, #16]!
66 ldp x15, x16, [sp, #16]!
67 ldp x17, x18, [sp, #16]!
68 ldp x19, x20, [sp, #16]!
69 ldp x21, x22, [sp, #16]!
70 ldp x23, x24, [sp, #16]!
71 ldp x25, x26, [sp, #16]!
72 ldp x27, x28, [sp, #16]!
73 ldp fp, lr, [sp, #16]!
75 # sp now point to the start of exec_param
77 ldr sp, [sp, #execp_spel1_saved]