summaryrefslogtreecommitdiff
path: root/arch/x86/cpu/start.S
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/cpu/start.S')
-rw-r--r--arch/x86/cpu/start.S30
1 files changed, 25 insertions, 5 deletions
diff --git a/arch/x86/cpu/start.S b/arch/x86/cpu/start.S
index 306fb49..f87633b 100644
--- a/arch/x86/cpu/start.S
+++ b/arch/x86/cpu/start.S
@@ -30,6 +30,7 @@
#include <version.h>
#include <asm/global_data.h>
#include <asm/processor-flags.h>
+#include <generated/asm-offsets.h>
.section .text
.code32
@@ -47,14 +48,12 @@ _x86boot_start:
cli
cld
- /* Turn of cache (this might require a 486-class CPU) */
+ /* Turn off cache (this might require a 486-class CPU) */
movl %cr0, %eax
orl $(X86_CR0_NW | X86_CR0_CD), %eax
movl %eax, %cr0
wbinvd
- /* Tell 32-bit code it is being entered from an in-RAM copy */
- movw $GD_FLG_WARM_BOOT, %bx
_start:
/* This is the 32-bit cold-reset entry point */
@@ -114,7 +113,7 @@ relocate_code:
/* Setup call address of in-RAM copy of board_init_r() */
movl $board_init_r, %ebp
- addl (GD_RELOC_OFF * 4)(%edx), %ebp
+ addl (GENERATED_GD_RELOC_OFF)(%edx), %ebp
/* Setup parameters to board_init_r() */
movl %edx, %eax
@@ -123,10 +122,31 @@ relocate_code:
/* Jump to in-RAM copy of board_init_r() */
call *%ebp
-die: hlt
+die:
+ hlt
jmp die
hlt
blank_idt_ptr:
.word 0 /* limit */
.long 0 /* base */
+
+ .p2align 2 /* force 4-byte alignment */
+
+multiboot_header:
+ /* magic */
+ .long 0x1BADB002
+ /* flags */
+ .long (1 << 16)
+ /* checksum */
+ .long -0x1BADB002 - (1 << 16)
+ /* header addr */
+ .long multiboot_header - _x86boot_start + CONFIG_SYS_TEXT_BASE
+ /* load addr */
+ .long CONFIG_SYS_TEXT_BASE
+ /* load end addr */
+ .long 0
+ /* bss end addr */
+ .long 0
+ /* entry addr */
+ .long CONFIG_SYS_TEXT_BASE