Commit 1ecaabed authored by Eric Auger's avatar Eric Auger Committed by Paolo Bonzini

selftests: KVM: Replace get_{gdt,idt}_base() by get_{gdt,idt}()

get_gdt_base() and get_idt_base() only return the base address
of the descriptor tables. Soon we will need to get the size as well.
Change the prototype of those functions so that they return
the whole desc_ptr struct instead of the address field.
Signed-off-by: default avatarEric Auger <eric.auger@redhat.com>
Reviewed-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
Reviewed-by: default avatarMiaohe Lin <linmiaohe@huawei.com>
Reviewed-by: default avatarWei Huang <wei.huang2@amd.com>
Reviewed-by: default avatarKrish Sadhukhan <krish.sadhukhan@oracle.com>
Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
parent a06230b6
...@@ -220,20 +220,20 @@ static inline void set_cr4(uint64_t val) ...@@ -220,20 +220,20 @@ static inline void set_cr4(uint64_t val)
__asm__ __volatile__("mov %0, %%cr4" : : "r" (val) : "memory"); __asm__ __volatile__("mov %0, %%cr4" : : "r" (val) : "memory");
} }
static inline uint64_t get_gdt_base(void) static inline struct desc_ptr get_gdt(void)
{ {
struct desc_ptr gdt; struct desc_ptr gdt;
__asm__ __volatile__("sgdt %[gdt]" __asm__ __volatile__("sgdt %[gdt]"
: /* output */ [gdt]"=m"(gdt)); : /* output */ [gdt]"=m"(gdt));
return gdt.address; return gdt;
} }
static inline uint64_t get_idt_base(void) static inline struct desc_ptr get_idt(void)
{ {
struct desc_ptr idt; struct desc_ptr idt;
__asm__ __volatile__("sidt %[idt]" __asm__ __volatile__("sidt %[idt]"
: /* output */ [idt]"=m"(idt)); : /* output */ [idt]"=m"(idt));
return idt.address; return idt;
} }
#define SET_XMM(__var, __xmm) \ #define SET_XMM(__var, __xmm) \
......
...@@ -288,9 +288,9 @@ static inline void init_vmcs_host_state(void) ...@@ -288,9 +288,9 @@ static inline void init_vmcs_host_state(void)
vmwrite(HOST_FS_BASE, rdmsr(MSR_FS_BASE)); vmwrite(HOST_FS_BASE, rdmsr(MSR_FS_BASE));
vmwrite(HOST_GS_BASE, rdmsr(MSR_GS_BASE)); vmwrite(HOST_GS_BASE, rdmsr(MSR_GS_BASE));
vmwrite(HOST_TR_BASE, vmwrite(HOST_TR_BASE,
get_desc64_base((struct desc64 *)(get_gdt_base() + get_tr()))); get_desc64_base((struct desc64 *)(get_gdt().address + get_tr())));
vmwrite(HOST_GDTR_BASE, get_gdt_base()); vmwrite(HOST_GDTR_BASE, get_gdt().address);
vmwrite(HOST_IDTR_BASE, get_idt_base()); vmwrite(HOST_IDTR_BASE, get_idt().address);
vmwrite(HOST_IA32_SYSENTER_ESP, rdmsr(MSR_IA32_SYSENTER_ESP)); vmwrite(HOST_IA32_SYSENTER_ESP, rdmsr(MSR_IA32_SYSENTER_ESP));
vmwrite(HOST_IA32_SYSENTER_EIP, rdmsr(MSR_IA32_SYSENTER_EIP)); vmwrite(HOST_IA32_SYSENTER_EIP, rdmsr(MSR_IA32_SYSENTER_EIP));
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment