Эх сурвалжийг харах

x86: Tidy up global_data flags

These flags now overlap some global ones. Adjust the x86-specific flags to
avoid this. Since this requires a change to the start.S code, add a way for
tools to find the 32-bit cold reset entry point. Previously this was at a
fixed offset.

Signed-off-by: Simon Glass <sjg@chromium.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Simon Glass 9 жил өмнө
parent
commit
83ec7de3bc

+ 7 - 3
arch/x86/cpu/start.S

@@ -41,14 +41,18 @@ _x86boot_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	$GD_FLG_WARM_BOOT, %bx
+	movl	$GD_FLG_WARM_BOOT, %ebx
 	jmp	1f
 	jmp	1f
+
+	/* Add a way for tools to discover the _start entry point */
+	.align	4
+	.long	0x12345678
 _start:
 _start:
 	/*
 	/*
 	 * This is the 32-bit cold-reset entry point, coming from start16.
 	 * This is the 32-bit cold-reset entry point, coming from start16.
-	 * Set %bx to 0 to indicate this.
+	 * Set %ebx to GD_FLG_COLD_BOOT to indicate this.
 	 */
 	 */
-	movw	$GD_FLG_COLD_BOOT, %bx
+	movl	$GD_FLG_COLD_BOOT, %ebx
 1:
 1:
 	/* Save BIST */
 	/* Save BIST */
 	movl	%eax, %ebp
 	movl	%eax, %ebp

+ 4 - 4
arch/x86/include/asm/global_data.h

@@ -87,14 +87,14 @@ static inline __attribute__((no_instrument_function)) gd_t *get_fs_gd_ptr(void)
 
 
 #define gd	get_fs_gd_ptr()
 #define gd	get_fs_gd_ptr()
 
 
+#define DECLARE_GLOBAL_DATA_PTR
+
 #endif
 #endif
 
 
 /*
 /*
  * Our private Global Data Flags
  * Our private Global Data Flags
  */
  */
-#define GD_FLG_COLD_BOOT	0x00100	/* Cold Boot */
-#define GD_FLG_WARM_BOOT	0x00200	/* Warm Boot */
-
-#define DECLARE_GLOBAL_DATA_PTR
+#define GD_FLG_COLD_BOOT	0x10000	/* Cold Boot */
+#define GD_FLG_WARM_BOOT	0x20000	/* Warm Boot */
 
 
 #endif /* __ASM_GBL_DATA_H */
 #endif /* __ASM_GBL_DATA_H */