mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 02:15:45 +01:00 
			
		
		
		
	The full start-up sequence (TPL->SPL->U-Boot) can be a bit confusing since each phase has its own 'start' file. Add comments to explain this. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
		
			
				
	
	
		
			51 lines
		
	
	
		
			958 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
			
		
		
	
	
			51 lines
		
	
	
		
			958 B
		
	
	
	
		
			ArmAsm
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0+ */
 | |
| /*
 | |
|  * 32-bit x86 Startup Code when running from TPL. This is the startup code in
 | |
|  * SPL, when TPL is used.
 | |
|  *
 | |
|  * Copyright 2018 Google, Inc
 | |
|  * Written by Simon Glass <sjg@chromium.org>
 | |
|  */
 | |
| 
 | |
| #include <config.h>
 | |
| 
 | |
| .section .text.start
 | |
| .code32
 | |
| .globl _start
 | |
| .type _start, @function
 | |
| _start:
 | |
| 	/* Set up memory using the existing stack */
 | |
| 	mov	%esp, %eax
 | |
| 	call	board_init_f_alloc_reserve
 | |
| 	mov	%eax, %esp
 | |
| 
 | |
| 	call	board_init_f_init_reserve
 | |
| 
 | |
| 	xorl	%eax, %eax
 | |
| 	call	board_init_f
 | |
| 	call	board_init_f_r
 | |
| 
 | |
| 	/* Should not return here */
 | |
| 	jmp	.
 | |
| 
 | |
| .globl board_init_f_r_trampoline
 | |
| .type board_init_f_r_trampoline, @function
 | |
| board_init_f_r_trampoline:
 | |
| 	/*
 | |
| 	 * TPL has been executed: SDRAM has been initialised, BSS has been
 | |
| 	 * cleared.
 | |
| 	 *
 | |
| 	 * %eax = Address of top of new stack
 | |
| 	 */
 | |
| 
 | |
| 	/* Stack grows down from top of SDRAM */
 | |
| 	movl	%eax, %esp
 | |
| 
 | |
| 	/* Re-enter SPL by calling board_init_f_r() */
 | |
| 	call	board_init_f_r
 | |
| 
 | |
| die:
 | |
| 	hlt
 | |
| 	jmp	die
 | |
| 	hlt
 |