jmp early_board_init
early_board_init_ret:
- /* The __port80 entry-point should be usabe by now */
- /* so we try to indicate progress */
- movw $0x01, %ax
- movl $.progress0, %ebp
- jmp show_boot_progress_asm
-.progress0:
-
/* size memory */
mov $mem_init_ret, %ebp
jmp mem_init
/* Check we have enough memory for stack */
movl $CONFIG_SYS_STACK_SIZE, %ecx
cmpl %ecx, %eax
- jae mem_ok
-
- /* indicate (lack of) progress */
- movw $0x81, %ax
- movl $.progress0a, %ebp
- jmp show_boot_progress_asm
-.progress0a:
- jmp die
+ jb die
mem_ok:
/* Set stack pointer to upper memory limit*/
movl %eax, %esp
- /* indicate progress */
- movw $0x02, %ax
- movl $.progress1, %ebp
- jmp show_boot_progress_asm
-.progress1:
-
/* Test the stack */
pushl $0
popl %eax
push $0x55aa55aa
popl %ebx
cmpl $0x55aa55aa, %ebx
- je stack_ok
-
-no_stack:
- /* indicate (lack of) progress */
- movw $0x82, %ax
- movl $.progress1a, %ebp
- jmp show_boot_progress_asm
-.progress1a:
- jmp die
-
-
-stack_ok:
- /* indicate progress */
- movw $0x03, %ax
- movl $.progress2, %ebp
- jmp show_boot_progress_asm
-.progress2:
+ jne die
wbinvd
/* indicate (lack of) progress */
movw $0x85, %ax
- movl $.progress4a, %ebp
- jmp show_boot_progress_asm
-.progress4a:
-
die: hlt
jmp die
hlt
/* No 32-bit board specific initialisation */
jmp *%ebp /* return to caller */
-.globl show_boot_progress_asm
-show_boot_progress_asm:
-
- movb %al, %dl /* Create Working Copy */
- andb $0x80, %dl /* Mask in only Error bit */
- shrb $0x02, %dl /* Shift Error bit to Error LED */
- andb $0x0f, %al /* Mask out 'Error' bit */
- orb %dl, %al /* Mask in ERR LED */
- movw $LED_LATCH_ADDRESS, %dx
- outb %al, %dx
- jmp *%ebp /* return to caller */
-
.globl cpu_halt_asm
cpu_halt_asm:
movb $0x0f, %al