1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 3 /* 4 * Copyright (c) 2021, Microsoft Corporation. 5 * Pasha Tatashin <pasha.tatashin@soleen.com> 6 */ 7 8 #include <linux/linkage.h> 9 #include <asm/assembler.h> 10 #include <asm/kvm_asm.h> 11 12 .macro invalid_vector label 13 SYM_CODE_START_LOCAL(\label) 14 .align 7 15 b \label 16 SYM_CODE_END(\label) 17 .endm 18 19 .macro el1_sync_vector 20 SYM_CODE_START_LOCAL(el1_sync) 21 .align 7 22 cmp x0, #HVC_SET_VECTORS /* Cal 23 b.ne 1f 24 msr vbar_el2, x1 25 mov x0, xzr 26 eret 27 1: cmp x0, #HVC_SOFT_RESTART /* Cal 28 b.ne 2f 29 mov x0, x2 30 mov x2, x4 31 mov x4, x1 32 mov x1, x3 33 br x4 34 2: /* Unexpected argument, set an error * 35 mov_q x0, HVC_STUB_ERR 36 eret 37 SYM_CODE_END(el1_sync) 38 .endm 39 40 SYM_CODE_START(trans_pgd_stub_vectors) 41 invalid_vector hyp_stub_el2t_sync_inv 42 invalid_vector hyp_stub_el2t_irq_inva 43 invalid_vector hyp_stub_el2t_fiq_inva 44 invalid_vector hyp_stub_el2t_error_in 45 46 invalid_vector hyp_stub_el2h_sync_inv 47 invalid_vector hyp_stub_el2h_irq_inva 48 invalid_vector hyp_stub_el2h_fiq_inva 49 invalid_vector hyp_stub_el2h_error_in 50 51 el1_sync_vector 52 invalid_vector hyp_stub_el1_irq_inval 53 invalid_vector hyp_stub_el1_fiq_inval 54 invalid_vector hyp_stub_el1_error_inv 55 56 invalid_vector hyp_stub_32b_el1_sync_ 57 invalid_vector hyp_stub_32b_el1_irq_i 58 invalid_vector hyp_stub_32b_el1_fiq_i 59 invalid_vector hyp_stub_32b_el1_error 60 .align 11 61 SYM_INNER_LABEL(__trans_pgd_stub_vectors_end, 62 SYM_CODE_END(trans_pgd_stub_vectors) 63 64 # Check the trans_pgd_stub_vectors didn't over 65 .org . - (__trans_pgd_stub_vectors_end - trans
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.