mirror of
				https://xff.cz/git/u-boot/
				synced 2025-10-31 02:15:45 +01:00 
			
		
		
		
	x86: Set cold/warm boot flag
This commit is contained in:
		| @@ -51,7 +51,7 @@ _i386boot_start: | ||||
| 	wbinvd | ||||
|  | ||||
| 	/* Tell 32-bit code it is being entered from an in-RAM copy */ | ||||
| 	movw	$0x0000, %bx | ||||
| 	movw	$GD_FLG_WARM_BOOT, %bx | ||||
| _start: | ||||
| 	/* This is the 32-bit cold-reset entry point */ | ||||
|  | ||||
| @@ -66,18 +66,10 @@ _start: | ||||
| 	/* Clear the interupt vectors */ | ||||
| 	lidt	blank_idt_ptr | ||||
|  | ||||
| 	/* | ||||
| 	 * Skip low-level board and memory initialization if not starting | ||||
| 	 * from cold-reset. This allows us to do a fail safe boot-strap | ||||
| 	 * into a new build of U-Boot from a known-good boot flash | ||||
| 	 */ | ||||
| 	movw	$0x0001, %ax | ||||
| 	cmpw	%ax, %bx | ||||
| 	jne	mem_init_ret | ||||
|  | ||||
| 	/* We call a few functions in the board support package | ||||
| 	 * since we have no stack yet we'll have to use %ebp | ||||
| 	 * to store the return address */ | ||||
| 	/* Skip low-level initialization if not starting from cold-reset */ | ||||
| 	movl	%ebx, %ecx | ||||
| 	andl	$GD_FLG_COLD_BOOT, %ecx | ||||
| 	jz	skip_mem_init | ||||
|  | ||||
| 	/* Early platform init (setup gpio, etc ) */ | ||||
| 	jmp	early_board_init | ||||
| @@ -89,6 +81,7 @@ early_board_init_ret: | ||||
| .globl mem_init_ret | ||||
| mem_init_ret: | ||||
|  | ||||
| skip_mem_init: | ||||
| 	/* fetch memory size (into %eax) */ | ||||
| 	jmp	get_mem_size | ||||
| .globl get_mem_size_ret | ||||
|   | ||||
| @@ -22,6 +22,7 @@ | ||||
|  * MA 02111-1307 USA | ||||
|  */ | ||||
|  | ||||
| #include <asm/global_data.h> | ||||
|  | ||||
| #define BOOT_SEG	0xffff0000	/* linear segment of boot code */ | ||||
| #define a32		.byte 0x67; | ||||
| @@ -31,6 +32,9 @@ | ||||
| .code16 | ||||
| .globl start16 | ||||
| start16: | ||||
| 	/* Set the Cold Boot / Hard Reset flag */ | ||||
| 	movl	$GD_FLG_COLD_BOOT, %ebx | ||||
|  | ||||
| 	/* | ||||
| 	 * First we let the BSP do some early initialization | ||||
| 	 * this code have to map the flash to its final position | ||||
| @@ -57,9 +61,6 @@ o32 cs	lgdt	gdt_ptr | ||||
| 	/* Flush the prefetch queue */ | ||||
| 	jmp	ff | ||||
| ff: | ||||
| 	/* Tell 32-bit code it is being entered from hard-reset */ | ||||
| 	movw	$0x0001, %bx | ||||
|  | ||||
| 	/* Finally jump to the 32bit initialization code */ | ||||
| 	movw	$code32start, %ax | ||||
| 	movw	%ax, %bp | ||||
|   | ||||
| @@ -82,6 +82,9 @@ extern gd_t *gd; | ||||
| #define	GD_FLG_LOGINIT		0x00020	/* Log Buffer has been initialized	*/ | ||||
| #define GD_FLG_DISABLE_CONSOLE	0x00040	/* Disable console (in & out)		*/ | ||||
| #define GD_FLG_ENV_READY	0x00080	/* Environment imported into hash table	*/ | ||||
| #define GD_FLG_COLD_BOOT	0x00100	/* Cold Boot */ | ||||
| #define GD_FLG_WARM_BOOT	0x00200	/* Warm Boot */ | ||||
|  | ||||
|  | ||||
| #define DECLARE_GLOBAL_DATA_PTR | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user