mirror of
https://github.com/Fishwaldo/u-boot.git
synced 2025-03-22 15:11:33 +00:00
x86: Remove GDR related magic numbers
-- Changes for v2: - Use an enum - Add defined for GDT size (previously added in patch 7) - Use X86_ namespace (as per Linux headers)
This commit is contained in:
parent
1176a7067a
commit
109ad143f8
3 changed files with 25 additions and 9 deletions
|
@ -63,13 +63,13 @@ static void reload_gdt(void)
|
||||||
*/
|
*/
|
||||||
static const u64 boot_gdt[] __attribute__((aligned(16))) = {
|
static const u64 boot_gdt[] __attribute__((aligned(16))) = {
|
||||||
/* CS: code, read/execute, 4 GB, base 0 */
|
/* 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 */
|
/* 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 */
|
/* 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 */
|
/* 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;
|
static struct gdt_ptr gdt;
|
||||||
|
|
||||||
|
|
|
@ -29,6 +29,7 @@
|
||||||
#include <config.h>
|
#include <config.h>
|
||||||
#include <version.h>
|
#include <version.h>
|
||||||
#include <asm/global_data.h>
|
#include <asm/global_data.h>
|
||||||
|
#include <asm/processor.h>
|
||||||
#include <asm/processor-flags.h>
|
#include <asm/processor-flags.h>
|
||||||
#include <generated/asm-offsets.h>
|
#include <generated/asm-offsets.h>
|
||||||
|
|
||||||
|
@ -58,7 +59,7 @@ _start:
|
||||||
/* This is the 32-bit cold-reset entry point */
|
/* This is the 32-bit cold-reset entry point */
|
||||||
|
|
||||||
/* Load the segement registes to match the gdt loaded in start16.S */
|
/* 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, %fs
|
||||||
movw %ax, %ds
|
movw %ax, %ds
|
||||||
movw %ax, %gs
|
movw %ax, %gs
|
||||||
|
|
|
@ -24,9 +24,24 @@
|
||||||
#ifndef __ASM_PROCESSOR_H_
|
#ifndef __ASM_PROCESSOR_H_
|
||||||
#define __ASM_PROCESSOR_H_ 1
|
#define __ASM_PROCESSOR_H_ 1
|
||||||
|
|
||||||
#define GDT_ENTRY_32BIT_CS 2
|
#define X86_GDT_ENTRY_SIZE 8
|
||||||
#define GDT_ENTRY_32BIT_DS (GDT_ENTRY_32BIT_CS + 1)
|
|
||||||
#define GDT_ENTRY_16BIT_CS (GDT_ENTRY_32BIT_DS + 1)
|
#ifndef __ASSEMBLY__
|
||||||
#define GDT_ENTRY_16BIT_DS (GDT_ENTRY_16BIT_CS + 1)
|
|
||||||
|
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
|
#endif
|
||||||
|
|
Loading…
Add table
Reference in a new issue