#include <linux/linkage.h>
#include <asm/assembler.h>
#include <asm/kvm_asm.h>
.macro invalid_vector label
SYM_CODE_START_LOCAL(\label)
.align 7
b \label
SYM_CODE_END(\label)
.endm
.macro el1_sync_vector
SYM_CODE_START_LOCAL(el1_sync)
.align 7
cmp x0, #HVC_SET_VECTORS
b.ne 1f
msr vbar_el2, x1
mov x0, xzr
eret
1: cmp x0, #HVC_SOFT_RESTART
b.ne 2f
mov x0, x2
mov x2, x4
mov x4, x1
mov x1, x3
br x4
2:
mov_q x0, HVC_STUB_ERR
eret
SYM_CODE_END(el1_sync)
.endm
SYM_CODE_START(trans_pgd_stub_vectors)
invalid_vector hyp_stub_el2t_sync_invalid
invalid_vector hyp_stub_el2t_irq_invalid
invalid_vector hyp_stub_el2t_fiq_invalid
invalid_vector hyp_stub_el2t_error_invalid
invalid_vector hyp_stub_el2h_sync_invalid
invalid_vector hyp_stub_el2h_irq_invalid
invalid_vector hyp_stub_el2h_fiq_invalid
invalid_vector hyp_stub_el2h_error_invalid
el1_sync_vector
invalid_vector hyp_stub_el1_irq_invalid
invalid_vector hyp_stub_el1_fiq_invalid
invalid_vector hyp_stub_el1_error_invalid
invalid_vector hyp_stub_32b_el1_sync_invalid
invalid_vector hyp_stub_32b_el1_irq_invalid
invalid_vector hyp_stub_32b_el1_fiq_invalid
invalid_vector hyp_stub_32b_el1_error_invalid
.align 11
SYM_INNER_LABEL(__trans_pgd_stub_vectors_end, SYM_L_LOCAL)
SYM_CODE_END(trans_pgd_stub_vectors)
.org . - (__trans_pgd_stub_vectors_end - trans_pgd_stub_vectors) + SZ_2K