Message ID | 1397655591-2761-16-git-send-email-marc.zyngier@arm.com |
---|---|
State | Superseded |
Headers | show |
On Wed, Apr 16, 2014 at 02:39:47PM +0100, Marc Zyngier wrote: > We already have __hyp_text_{start,end} to express the boundaries > of the HYP text section, and __kvm_hyp_code_{start,end} are getting > in the way of a more modular world switch code. > > Just turn __kvm_hyp_code_{start,end} into #defines mapping the > linker-emited symbols. > > Acked-by: Catalin Marinas <catalin.marinas@arm.com> > Signed-off-by: Marc Zyngier <marc.zyngier@arm.com> > --- > arch/arm64/include/asm/kvm_asm.h | 6 ++++-- > arch/arm64/include/asm/virt.h | 4 ++++ > arch/arm64/kvm/hyp.S | 6 ------ > 3 files changed, 8 insertions(+), 8 deletions(-) > > diff --git a/arch/arm64/include/asm/kvm_asm.h b/arch/arm64/include/asm/kvm_asm.h > index b25763b..dddb345 100644 > --- a/arch/arm64/include/asm/kvm_asm.h > +++ b/arch/arm64/include/asm/kvm_asm.h > @@ -18,6 +18,8 @@ > #ifndef __ARM_KVM_ASM_H__ > #define __ARM_KVM_ASM_H__ > > +#include <asm/virt.h> > + > /* > * 0 is reserved as an invalid value. > * Order *must* be kept in sync with the hyp switch code. > @@ -95,8 +97,8 @@ extern char __kvm_hyp_init_end[]; > > extern char __kvm_hyp_vector[]; > > -extern char __kvm_hyp_code_start[]; > -extern char __kvm_hyp_code_end[]; > +#define __kvm_hyp_code_start __hyp_text_start > +#define __kvm_hyp_code_end __hyp_text_end > > extern void __kvm_flush_vm_context(void); > extern void __kvm_tlb_flush_vmid_ipa(struct kvm *kvm, phys_addr_t ipa); > diff --git a/arch/arm64/include/asm/virt.h b/arch/arm64/include/asm/virt.h > index 130e2be..290fb66 100644 > --- a/arch/arm64/include/asm/virt.h > +++ b/arch/arm64/include/asm/virt.h > @@ -63,6 +63,10 @@ static inline bool is_hyp_mode_mismatched(void) > return __boot_cpu_mode[0] != __boot_cpu_mode[1]; > } > > +/* The section containing the hypervisor text */ > +extern char __hyp_text_start[]; > +extern char __hyp_text_end[]; > + > #endif /* __ASSEMBLY__ */ > > #endif /* ! __ASM__VIRT_H */ > diff --git a/arch/arm64/kvm/hyp.S b/arch/arm64/kvm/hyp.S > index cc1b471..9e3364b 100644 > --- a/arch/arm64/kvm/hyp.S > +++ b/arch/arm64/kvm/hyp.S > @@ -36,9 +36,6 @@ > .pushsection .hyp.text, "ax" > .align PAGE_SHIFT > > -__kvm_hyp_code_start: > - .globl __kvm_hyp_code_start > - > .macro save_common_regs > // x2: base address for cpu context > // x3: tmp register > @@ -874,7 +871,4 @@ ENTRY(__kvm_hyp_vector) > ventry el1_error_invalid // Error 32-bit EL1 > ENDPROC(__kvm_hyp_vector) > > -__kvm_hyp_code_end: > - .globl __kvm_hyp_code_end > - > .popsection > -- > 1.8.3.4 > Reviewed-by: Christoffer Dall <christoffer.dall@linaro.org>
diff --git a/arch/arm64/include/asm/kvm_asm.h b/arch/arm64/include/asm/kvm_asm.h index b25763b..dddb345 100644 --- a/arch/arm64/include/asm/kvm_asm.h +++ b/arch/arm64/include/asm/kvm_asm.h @@ -18,6 +18,8 @@ #ifndef __ARM_KVM_ASM_H__ #define __ARM_KVM_ASM_H__ +#include <asm/virt.h> + /* * 0 is reserved as an invalid value. * Order *must* be kept in sync with the hyp switch code. @@ -95,8 +97,8 @@ extern char __kvm_hyp_init_end[]; extern char __kvm_hyp_vector[]; -extern char __kvm_hyp_code_start[]; -extern char __kvm_hyp_code_end[]; +#define __kvm_hyp_code_start __hyp_text_start +#define __kvm_hyp_code_end __hyp_text_end extern void __kvm_flush_vm_context(void); extern void __kvm_tlb_flush_vmid_ipa(struct kvm *kvm, phys_addr_t ipa); diff --git a/arch/arm64/include/asm/virt.h b/arch/arm64/include/asm/virt.h index 130e2be..290fb66 100644 --- a/arch/arm64/include/asm/virt.h +++ b/arch/arm64/include/asm/virt.h @@ -63,6 +63,10 @@ static inline bool is_hyp_mode_mismatched(void) return __boot_cpu_mode[0] != __boot_cpu_mode[1]; } +/* The section containing the hypervisor text */ +extern char __hyp_text_start[]; +extern char __hyp_text_end[]; + #endif /* __ASSEMBLY__ */ #endif /* ! __ASM__VIRT_H */ diff --git a/arch/arm64/kvm/hyp.S b/arch/arm64/kvm/hyp.S index cc1b471..9e3364b 100644 --- a/arch/arm64/kvm/hyp.S +++ b/arch/arm64/kvm/hyp.S @@ -36,9 +36,6 @@ .pushsection .hyp.text, "ax" .align PAGE_SHIFT -__kvm_hyp_code_start: - .globl __kvm_hyp_code_start - .macro save_common_regs // x2: base address for cpu context // x3: tmp register @@ -874,7 +871,4 @@ ENTRY(__kvm_hyp_vector) ventry el1_error_invalid // Error 32-bit EL1 ENDPROC(__kvm_hyp_vector) -__kvm_hyp_code_end: - .globl __kvm_hyp_code_end - .popsection