diff --git a/hypervisor/arch/x86/guest/guest_memory.c b/hypervisor/arch/x86/guest/guest_memory.c index 06a52d5ef..fe1363213 100644 --- a/hypervisor/arch/x86/guest/guest_memory.c +++ b/hypervisor/arch/x86/guest/guest_memory.c @@ -424,3 +424,14 @@ int32_t copy_to_gva(struct acrn_vcpu *vcpu, void *h_ptr, uint64_t gva, { return copy_gva(vcpu, h_ptr, gva, size, err_code, fault_addr, 0); } + +/* gpa --> hpa -->hva */ +void *gpa2hva(struct acrn_vm *vm, uint64_t x) +{ + return hpa2hva(gpa2hpa(vm, x)); +} + +uint64_t hva2gpa(struct acrn_vm *vm, void *x) +{ + return (is_sos_vm(vm)) ? sos_vm_hpa2gpa(hva2hpa(x)) : INVALID_GPA; +} diff --git a/hypervisor/include/arch/x86/guest/guest_memory.h b/hypervisor/include/arch/x86/guest/guest_memory.h index 1112aff3b..bea62eb81 100644 --- a/hypervisor/include/arch/x86/guest/guest_memory.h +++ b/hypervisor/include/arch/x86/guest/guest_memory.h @@ -31,6 +31,11 @@ int32_t gva2gpa(struct acrn_vcpu *vcpu, uint64_t gva, uint64_t *gpa, uint32_t *e enum vm_paging_mode get_vcpu_paging_mode(struct acrn_vcpu *vcpu); +/* gpa --> hpa -->hva */ +void *gpa2hva(struct acrn_vm *vm, uint64_t x); + +uint64_t hva2gpa(struct acrn_vm *vm, void *x); + /** * @brief Data transfering between hypervisor and VM * diff --git a/hypervisor/include/hypervisor.h b/hypervisor/include/hypervisor.h index 00695147d..621b69624 100644 --- a/hypervisor/include/hypervisor.h +++ b/hypervisor/include/hypervisor.h @@ -36,18 +36,4 @@ #include #include -#ifndef ASSEMBLER -/* gpa --> hpa -->hva */ -static inline void *gpa2hva(struct acrn_vm *vm, uint64_t x) -{ - return hpa2hva(gpa2hpa(vm, x)); -} - -static inline uint64_t hva2gpa(struct acrn_vm *vm, void *x) -{ - return (is_sos_vm(vm)) ? sos_vm_hpa2gpa(hva2hpa(x)) : INVALID_GPA; -} - -#endif /* !ASSEMBLER */ - #endif /* HYPERVISOR_H */