]> git.kernelconcepts.de Git - karo-tx-uboot.git/commitdiff
x86: Remove GDR related magic numbers
authorGraeme Russ <graeme.russ@gmail.com>
Fri, 30 Dec 2011 23:24:36 +0000 (10:24 +1100)
committerGraeme Russ <graeme.russ@gmail.com>
Wed, 4 Jan 2012 10:05:09 +0000 (21:05 +1100)
--
Changes for v2:
 - Use an enum
 - Add defined for GDT size (previously added in patch 7)
 - Use X86_ namespace (as per Linux headers)

arch/x86/cpu/cpu.c
arch/x86/cpu/start.S
arch/x86/include/asm/processor.h

index 61d0b69416e1540b2914c5fe24782041481493a6..209ff2989bf8617f517599945096b903c7c60c96 100644 (file)
@@ -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;
 
index f87633b56121ca14aed1feb062c294643e428fd3..6027f54186bf711088a02256263715ae75776e58 100644 (file)
@@ -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
index 1e5dccd342c9a649ab6d86c13dc6d56c701d7244..aa8188e51a2f064827fac021ba62915276a34391 100644 (file)
 #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