AArch64 EL2 hypervisor for QEMU virt that boots at EL2
1

Configure Feed

Select the types of activity you want to include in your feed.

ariel / arch / aarch64 / vectors.S
2.8 kB 123 lines
1.section .text.vectors, "ax" 2.align 11 3.global __vectors_el2 4__vectors_el2: 5 b vector_current_sync 6 .org __vectors_el2 + 0x080 7 b vector_current_irq 8 .org __vectors_el2 + 0x100 9 b vector_current_fiq 10 .org __vectors_el2 + 0x180 11 b vector_current_serror 12 .org __vectors_el2 + 0x200 13 b vector_current_sync 14 .org __vectors_el2 + 0x280 15 b vector_current_irq 16 .org __vectors_el2 + 0x300 17 b vector_current_fiq 18 .org __vectors_el2 + 0x380 19 b vector_current_serror 20 .org __vectors_el2 + 0x400 21 b vector_lower_sync 22 .org __vectors_el2 + 0x480 23 b vector_lower_irq 24 .org __vectors_el2 + 0x500 25 b vector_lower_fiq 26 .org __vectors_el2 + 0x580 27 b vector_lower_serror 28 .org __vectors_el2 + 0x600 29 b vector_lower_sync 30 .org __vectors_el2 + 0x680 31 b vector_lower_irq 32 .org __vectors_el2 + 0x700 33 b vector_lower_fiq 34 .org __vectors_el2 + 0x780 35 b vector_lower_serror 36 37.macro SAVE_FRAME 38 sub sp, sp, #304 39 stp x0, x1, [sp, #0] 40 stp x2, x3, [sp, #16] 41 stp x4, x5, [sp, #32] 42 stp x6, x7, [sp, #48] 43 stp x8, x9, [sp, #64] 44 stp x10, x11, [sp, #80] 45 stp x12, x13, [sp, #96] 46 stp x14, x15, [sp, #112] 47 stp x16, x17, [sp, #128] 48 stp x18, x19, [sp, #144] 49 stp x20, x21, [sp, #160] 50 stp x22, x23, [sp, #176] 51 stp x24, x25, [sp, #192] 52 stp x26, x27, [sp, #208] 53 stp x28, x29, [sp, #224] 54 str x30, [sp, #240] 55 mrs x1, sp_el0 56 str x1, [sp, #248] 57 mrs x1, sp_el1 58 str x1, [sp, #256] 59 mrs x1, elr_el2 60 str x1, [sp, #264] 61 mrs x1, spsr_el2 62 str x1, [sp, #272] 63 mrs x1, esr_el2 64 str x1, [sp, #280] 65 mrs x1, far_el2 66 str x1, [sp, #288] 67 mrs x1, hpfar_el2 68 str x1, [sp, #296] 69.endm 70 71.macro RESTORE_FRAME 72 ldr x1, [sp, #248] 73 msr sp_el0, x1 74 ldr x1, [sp, #256] 75 msr sp_el1, x1 76 ldr x1, [sp, #264] 77 msr elr_el2, x1 78 ldr x1, [sp, #272] 79 msr spsr_el2, x1 80 ldp x0, x1, [sp, #0] 81 ldp x2, x3, [sp, #16] 82 ldp x4, x5, [sp, #32] 83 ldp x6, x7, [sp, #48] 84 ldp x8, x9, [sp, #64] 85 ldp x10, x11, [sp, #80] 86 ldp x12, x13, [sp, #96] 87 ldp x14, x15, [sp, #112] 88 ldp x16, x17, [sp, #128] 89 ldp x18, x19, [sp, #144] 90 ldp x20, x21, [sp, #160] 91 ldp x22, x23, [sp, #176] 92 ldp x24, x25, [sp, #192] 93 ldp x26, x27, [sp, #208] 94 ldp x28, x29, [sp, #224] 95 ldr x30, [sp, #240] 96 add sp, sp, #304 97.endm 98 99vector_lower_sync: 100 SAVE_FRAME 101 mov x0, sp 102 bl trap_handle_lower_sync 103 RESTORE_FRAME 104 eret 105 106vector_lower_irq: 107vector_lower_fiq: 108vector_lower_serror: 109vector_current_irq: 110vector_current_fiq: 111vector_current_serror: 112 SAVE_FRAME 113 mov x0, sp 114 bl trap_handle_irq 115 RESTORE_FRAME 116 eret 117 118vector_current_sync: 119 SAVE_FRAME 120 mov x0, sp 121 bl trap_handle_current_sync 122 RESTORE_FRAME 123 eret