[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [Minios-devel] [UNIKRAFT PATCH 2/4] plat/kvm: remove 32-bit GDT entry
Since we spend almost no time in 32-bit mode, and never do any calls or returns, there's no reason to have a specific section in the GDT for 32-bit code. Just set up the bare essentials, then move on to long mode. Signed-off-by: Florian Schmidt <florian.schmidt@xxxxxxxxx> --- plat/kvm/include/kvm-x86/traps.h | 9 ++++----- plat/kvm/x86/entry64.S | 14 +++----------- 2 files changed, 7 insertions(+), 16 deletions(-) diff --git a/plat/kvm/include/kvm-x86/traps.h b/plat/kvm/include/kvm-x86/traps.h index c457bda5..39bf0386 100644 --- a/plat/kvm/include/kvm-x86/traps.h +++ b/plat/kvm/include/kvm-x86/traps.h @@ -29,14 +29,13 @@ */ #define GDT_DESC_NULL 0 #define GDT_DESC_CODE 1 -#define GDT_DESC_CODE32 2 /* Used by _libkvmplat_start32 */ -#define GDT_DESC_DATA 3 -#define GDT_DESC_TSS_LO 4 -#define GDT_DESC_TSS_HI 5 +#define GDT_DESC_DATA 2 +#define GDT_DESC_TSS_LO 3 +#define GDT_DESC_TSS_HI 4 #define GDT_DESC_TSS GDT_DESC_TSS_LO #define GDT_DESC_OFFSET(n) ((n) * 0x8) -#define GDT_NUM_ENTRIES 6 +#define GDT_NUM_ENTRIES 5 #define GDT_DESC_CODE_VAL 0x00af99000000ffff #define GDT_DESC_CODE32_VAL 0x00cf9b000000ffff diff --git a/plat/kvm/x86/entry64.S b/plat/kvm/x86/entry64.S index e15d41e2..7647446d 100644 --- a/plat/kvm/x86/entry64.S +++ b/plat/kvm/x86/entry64.S @@ -79,14 +79,8 @@ ENTRY(_libkvmplat_start32) jne nomultiboot lgdt (gdt64_ptr) - /* let lret jump just one instruction ahead, but set %cs - * to the correct GDT entry while doing that. - */ - pushl $(gdt64_32cs-gdt64) - pushl $1f - lret -1: movl $(gdt64_ds-gdt64), %eax + movl $(gdt64_ds-gdt64), %eax movl %eax, %ds movl %eax, %es movl %eax, %ss @@ -122,7 +116,7 @@ ENTRY(_libkvmplat_start32) /* 5: poetically longjump to longmode, * letting lret set %cs to the correct GDT entry on the way */ - pushl $(gdt64_64cs-gdt64) + pushl $(gdt64_cs-gdt64) pushl $_libkvmplat_start64 lret @@ -149,10 +143,8 @@ END(_libkvmplat_start32) .align 64 gdt64: .quad 0x0000000000000000 -gdt64_64cs: +gdt64_cs: .quad GDT_DESC_CODE_VAL /* 64bit CS */ -gdt64_32cs: - .quad GDT_DESC_CODE32_VAL /* 32bit CS */ gdt64_ds: .quad GDT_DESC_DATA_VAL /* DS */ .quad 0x0000000000000000 /* TSS part 1 (via C) */ -- 2.21.0 _______________________________________________ Minios-devel mailing list Minios-devel@xxxxxxxxxxxxxxxxxxxx https://lists.xenproject.org/mailman/listinfo/minios-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |