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