diff options
| -rw-r--r-- | arch/x86/cpu/cpu.c | 8 | ||||
| -rw-r--r-- | arch/x86/cpu/start.S | 3 | ||||
| -rw-r--r-- | arch/x86/include/asm/processor.h | 23 | 
3 files changed, 25 insertions, 9 deletions
| diff --git a/arch/x86/cpu/cpu.c b/arch/x86/cpu/cpu.c index 61d0b6941..209ff2989 100644 --- a/arch/x86/cpu/cpu.c +++ b/arch/x86/cpu/cpu.c @@ -63,13 +63,13 @@ static void reload_gdt(void)  	 */  	static const u64 boot_gdt[] __attribute__((aligned(16))) = {  		/* CS: code, read/execute, 4 GB, base 0 */ -		[GDT_ENTRY_32BIT_CS] = GDT_ENTRY(0xc09b, 0, 0xfffff), +		[X86_GDT_ENTRY_32BIT_CS] = GDT_ENTRY(0xc09b, 0, 0xfffff),  		/* DS: data, read/write, 4 GB, base 0 */ -		[GDT_ENTRY_32BIT_DS] = GDT_ENTRY(0xc093, 0, 0xfffff), +		[X86_GDT_ENTRY_32BIT_DS] = GDT_ENTRY(0xc093, 0, 0xfffff),  		/* 16-bit CS: code, read/execute, 64 kB, base 0 */ -		[GDT_ENTRY_16BIT_CS] = GDT_ENTRY(0x109b, 0, 0x0ffff), +		[X86_GDT_ENTRY_16BIT_CS] = GDT_ENTRY(0x109b, 0, 0x0ffff),  		/* 16-bit DS: data, read/write, 64 kB, base 0 */ -		[GDT_ENTRY_16BIT_DS] = GDT_ENTRY(0x1093, 0, 0x0ffff), +		[X86_GDT_ENTRY_16BIT_DS] = GDT_ENTRY(0x1093, 0, 0x0ffff),  	};  	static struct gdt_ptr gdt; diff --git a/arch/x86/cpu/start.S b/arch/x86/cpu/start.S index f87633b56..6027f5418 100644 --- a/arch/x86/cpu/start.S +++ b/arch/x86/cpu/start.S @@ -29,6 +29,7 @@  #include <config.h>  #include <version.h>  #include <asm/global_data.h> +#include <asm/processor.h>  #include <asm/processor-flags.h>  #include <generated/asm-offsets.h> @@ -58,7 +59,7 @@ _start:  	/* This is the 32-bit cold-reset entry point */  	/* Load the segement registes to match the gdt loaded in start16.S */ -	movl	$0x18, %eax +	movl	$(X86_GDT_ENTRY_32BIT_DS * X86_GDT_ENTRY_SIZE), %eax  	movw	%ax, %fs  	movw	%ax, %ds  	movw	%ax, %gs diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h index 1e5dccd34..aa8188e51 100644 --- a/arch/x86/include/asm/processor.h +++ b/arch/x86/include/asm/processor.h @@ -24,9 +24,24 @@  #ifndef __ASM_PROCESSOR_H_  #define __ASM_PROCESSOR_H_ 1 -#define GDT_ENTRY_32BIT_CS	2 -#define GDT_ENTRY_32BIT_DS	(GDT_ENTRY_32BIT_CS + 1) -#define GDT_ENTRY_16BIT_CS	(GDT_ENTRY_32BIT_DS + 1) -#define GDT_ENTRY_16BIT_DS	(GDT_ENTRY_16BIT_CS + 1) +#define X86_GDT_ENTRY_SIZE	8 + +#ifndef __ASSEMBLY__ + +enum { +	X86_GDT_ENTRY_NULL = 0, +	X86_GDT_ENTRY_UNUSED, +	X86_GDT_ENTRY_32BIT_CS, +	X86_GDT_ENTRY_32BIT_DS, +	X86_GDT_ENTRY_16BIT_CS, +	X86_GDT_ENTRY_16BIT_DS, +	X86_GDT_NUM_ENTRIES +}; +#else +/* NOTE: If the above enum is modified, this define must be checked */ +#define X86_GDT_ENTRY_32BIT_DS	3 +#endif + +#define X86_GDT_SIZE		(X86_GDT_NUM_ENTRIES * X86_GDT_ENTRY_SIZE)  #endif |