x86: Allow 16-bit init to be in TPL
At present we support having 16-bit init be in SPL or U-Boot proper, but not TPL. Add support for this so that TPL can boot. Signed-off-by: Simon Glass <sjg@chromium.org> Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
This commit is contained in:
		
							parent
							
								
									051c31b7a4
								
							
						
					
					
						commit
						d68574a72d
					
				
							
								
								
									
										1
									
								
								Makefile
								
								
								
								
							
							
						
						
									
										1
									
								
								Makefile
								
								
								
								
							|  | @ -1380,6 +1380,7 @@ cmd_ldr = $(LD) $(LDFLAGS_$(@F)) \ | ||||||
| 
 | 
 | ||||||
| u-boot.rom: u-boot-x86-16bit.bin u-boot.bin \ | u-boot.rom: u-boot-x86-16bit.bin u-boot.bin \ | ||||||
| 		$(if $(CONFIG_SPL_X86_16BIT_INIT),spl/u-boot-spl.bin) \
 | 		$(if $(CONFIG_SPL_X86_16BIT_INIT),spl/u-boot-spl.bin) \
 | ||||||
|  | 		$(if $(CONFIG_TPL_X86_16BIT_INIT),tpl/u-boot-tpl.bin) \
 | ||||||
| 		$(if $(CONFIG_HAVE_REFCODE),refcode.bin) FORCE | 		$(if $(CONFIG_HAVE_REFCODE),refcode.bin) FORCE | ||||||
| 	$(call if_changed,binman) | 	$(call if_changed,binman) | ||||||
| 
 | 
 | ||||||
|  |  | ||||||
|  | @ -20,8 +20,8 @@ endif | ||||||
| endif | endif | ||||||
| endif # EFI
 | endif # EFI
 | ||||||
| 
 | 
 | ||||||
| head-$(CONFIG_$(SPL_)X86_16BIT_INIT) += arch/x86/cpu/start16.o | head-$(CONFIG_$(SPL_TPL_)X86_16BIT_INIT) += arch/x86/cpu/start16.o | ||||||
| head-$(CONFIG_$(SPL_)X86_16BIT_INIT) += arch/x86/cpu/resetvec.o | head-$(CONFIG_$(SPL_TPL_)X86_16BIT_INIT) += arch/x86/cpu/resetvec.o | ||||||
| 
 | 
 | ||||||
| libs-y += arch/x86/cpu/ | libs-y += arch/x86/cpu/ | ||||||
| libs-y += arch/x86/lib/ | libs-y += arch/x86/lib/ | ||||||
|  |  | ||||||
|  | @ -3,7 +3,7 @@ | ||||||
| # Copyright (c) 2016 Google, Inc
 | # Copyright (c) 2016 Google, Inc
 | ||||||
| 
 | 
 | ||||||
| ifdef CONFIG_HAVE_MRC | ifdef CONFIG_HAVE_MRC | ||||||
| obj-$(CONFIG_$(SPL_)X86_32BIT_INIT) += car.o | obj-$(CONFIG_$(SPL_TPL_)X86_16BIT_INIT) += car.o | ||||||
| obj-$(CONFIG_$(SPL_)X86_32BIT_INIT) += me_status.o | obj-$(CONFIG_$(SPL_)X86_32BIT_INIT) += me_status.o | ||||||
| obj-$(CONFIG_$(SPL_)X86_32BIT_INIT) += report_platform.o | obj-$(CONFIG_$(SPL_)X86_32BIT_INIT) += report_platform.o | ||||||
| obj-$(CONFIG_$(SPL_)X86_32BIT_INIT) += mrc.o | obj-$(CONFIG_$(SPL_)X86_32BIT_INIT) += mrc.o | ||||||
|  |  | ||||||
|  | @ -54,7 +54,7 @@ SECTIONS | ||||||
| 	/DISCARD/ : { *(.interp*) } | 	/DISCARD/ : { *(.interp*) } | ||||||
| 	/DISCARD/ : { *(.gnu*) } | 	/DISCARD/ : { *(.gnu*) } | ||||||
| 
 | 
 | ||||||
| #ifdef CONFIG_SPL_X86_16BIT_INIT | #if defined(CONFIG_SPL_X86_16BIT_INIT) || defined(CONFIG_TPL_X86_16BIT_INIT) | ||||||
| 	/* | 	/* | ||||||
| 	 * The following expressions place the 16-bit Real-Mode code and | 	 * The following expressions place the 16-bit Real-Mode code and | ||||||
| 	 * Reset Vector at the end of the Flash ROM | 	 * Reset Vector at the end of the Flash ROM | ||||||
|  |  | ||||||
|  | @ -228,7 +228,11 @@ ifeq ($(CONFIG_SYS_SOC),"at91") | ||||||
| ALL-y	+= $(obj)/boot.bin | ALL-y	+= $(obj)/boot.bin | ||||||
| endif | endif | ||||||
| 
 | 
 | ||||||
|  | ifdef CONFIG_TPL_BUILD | ||||||
|  | ALL-$(CONFIG_TPL_X86_16BIT_INIT) += $(obj)/u-boot-x86-16bit-tpl.bin | ||||||
|  | else | ||||||
| ALL-$(CONFIG_SPL_X86_16BIT_INIT) += $(obj)/u-boot-x86-16bit-spl.bin | ALL-$(CONFIG_SPL_X86_16BIT_INIT) += $(obj)/u-boot-x86-16bit-spl.bin | ||||||
|  | endif | ||||||
| 
 | 
 | ||||||
| ALL-$(CONFIG_ARCH_ZYNQ)		+= $(obj)/boot.bin | ALL-$(CONFIG_ARCH_ZYNQ)		+= $(obj)/boot.bin | ||||||
| ALL-$(CONFIG_ARCH_ZYNQMP)	+= $(obj)/boot.bin | ALL-$(CONFIG_ARCH_ZYNQMP)	+= $(obj)/boot.bin | ||||||
|  | @ -328,7 +332,7 @@ quiet_cmd_objcopy = OBJCOPY $@ | ||||||
| cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS_$(@F)) $< $@ | cmd_objcopy = $(OBJCOPY) $(OBJCOPYFLAGS) $(OBJCOPYFLAGS_$(@F)) $< $@ | ||||||
| 
 | 
 | ||||||
| OBJCOPYFLAGS_$(SPL_BIN)-nodtb.bin = $(SPL_OBJCFLAGS) -O binary \
 | OBJCOPYFLAGS_$(SPL_BIN)-nodtb.bin = $(SPL_OBJCFLAGS) -O binary \
 | ||||||
| 		$(if $(CONFIG_SPL_X86_16BIT_INIT),-R .start16 -R .resetvec) | 		$(if $(CONFIG_$(SPL_TPL_)X86_16BIT_INIT),-R .start16 -R .resetvec) | ||||||
| 
 | 
 | ||||||
| $(obj)/$(SPL_BIN)-nodtb.bin: $(obj)/$(SPL_BIN) FORCE | $(obj)/$(SPL_BIN)-nodtb.bin: $(obj)/$(SPL_BIN) FORCE | ||||||
| 	$(call if_changed,objcopy) | 	$(call if_changed,objcopy) | ||||||
|  | @ -337,6 +341,10 @@ OBJCOPYFLAGS_u-boot-x86-16bit-spl.bin := -O binary -j .start16 -j .resetvec | ||||||
| $(obj)/u-boot-x86-16bit-spl.bin: $(obj)/u-boot-spl FORCE | $(obj)/u-boot-x86-16bit-spl.bin: $(obj)/u-boot-spl FORCE | ||||||
| 	$(call if_changed,objcopy) | 	$(call if_changed,objcopy) | ||||||
| 
 | 
 | ||||||
|  | OBJCOPYFLAGS_u-boot-x86-16bit-tpl.bin := -O binary -j .start16 -j .resetvec | ||||||
|  | $(obj)/u-boot-x86-16bit-tpl.bin: $(obj)/u-boot-tpl FORCE | ||||||
|  | 	$(call if_changed,objcopy) | ||||||
|  | 
 | ||||||
| LDFLAGS_$(SPL_BIN) += -T u-boot-spl.lds $(LDFLAGS_FINAL) | LDFLAGS_$(SPL_BIN) += -T u-boot-spl.lds $(LDFLAGS_FINAL) | ||||||
| 
 | 
 | ||||||
| # Avoid 'Not enough room for program headers' error on binutils 2.28 onwards.
 | # Avoid 'Not enough room for program headers' error on binutils 2.28 onwards.
 | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue