|
|
|
|
@@ -51,8 +51,10 @@ cbfs-files-$(CONFIG_INTEL_MBI) += mbi.bin
|
|
|
|
|
mbi.bin-file := $(call strip_quotes,$(CONFIG_MBI_FILE))
|
|
|
|
|
mbi.bin-type := mbi
|
|
|
|
|
|
|
|
|
|
ifeq ($(CONFIG_ARCH_ROMSTAGE_X86_32),y)
|
|
|
|
|
CBFSTOOL_PRE1_OPTS = -m x86 -o $$(( $(CONFIG_ROM_SIZE) - $(CONFIG_CBFS_SIZE) ))
|
|
|
|
|
CBFSTOOL_PRE_OPTS = -b $(shell cat $(objcbfs)/base_xip.txt)
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
|
# i386 specific tools
|
|
|
|
|
@@ -71,6 +73,8 @@ $(obj)/cmos_layout.bin: $(NVRAMTOOL) $(top)/src/mainboard/$(MAINBOARDDIR)/cmos.l
|
|
|
|
|
# bootblock
|
|
|
|
|
###############################################################################
|
|
|
|
|
|
|
|
|
|
ifeq ($(CONFIG_ARCH_BOOTBLOCK_X86_32),y)
|
|
|
|
|
|
|
|
|
|
bootblock_lds = $(src)/arch/x86/init/ldscript_failover.lb
|
|
|
|
|
bootblock_lds += $(src)/cpu/x86/16bit/entry16.lds
|
|
|
|
|
bootblock_lds += $(src)/cpu/x86/16bit/reset16.lds
|
|
|
|
|
@@ -110,31 +114,36 @@ $(objgenerated)/bootblock_inc.S: $$(bootblock_inc)
|
|
|
|
|
printf '$(foreach crt0,$(bootblock_inc),#include "$(crt0)"\n)' > $@
|
|
|
|
|
|
|
|
|
|
$(objgenerated)/bootblock.o: $(objgenerated)/bootblock.s
|
|
|
|
|
@printf " CC $(subst $(obj)/,,$(@))\n"
|
|
|
|
|
$(CC) $(DISASSEMBLY) -c -o $@ $< > $(basename $@).disasm
|
|
|
|
|
@printf " CC $(subst $(obj)/,,$(@))\n"
|
|
|
|
|
$(CC_bootblock) $(DISASSEMBLY) -c -o $@ $< > $(basename $@).disasm
|
|
|
|
|
|
|
|
|
|
$(objgenerated)/bootblock.s: $(objgenerated)/bootblock_inc.S $(obj)/config.h $(obj)/build.h
|
|
|
|
|
@printf " CC $(subst $(obj)/,,$(@))\n"
|
|
|
|
|
$(CC) -MMD -x assembler-with-cpp -E -I$(src)/include -I$(src)/arch/x86/include -I$(obj) -include $(obj)/build.h -include $(obj)/config.h -I. -I$(src) $< -o $@
|
|
|
|
|
$(CC_bootblock) -MMD -x assembler-with-cpp -E -I$(src)/include -I$(src)/arch/x86/include -I$(obj) -include $(obj)/build.h -include $(obj)/config.h -I. -I$(src) $< -o $@
|
|
|
|
|
|
|
|
|
|
$(objgenerated)/bootblock.inc: $(src)/arch/x86/init/$(subst ",,$(CONFIG_BOOTBLOCK_SOURCE)) $(objutil)/romcc/romcc $(OPTION_TABLE_H)
|
|
|
|
|
@printf " ROMCC $(subst $(obj)/,,$(@))\n"
|
|
|
|
|
$(CC) $(INCLUDES) -MM -MT$(objgenerated)/bootblock.inc \
|
|
|
|
|
$(CC_bootblock) $(INCLUDES) $(INCLUDES_bootblock) -MM -MT$(objgenerated)/bootblock.inc \
|
|
|
|
|
$< > $(objgenerated)/bootblock.inc.d
|
|
|
|
|
$(ROMCC) -c -S $(bootblock_romccflags) -I. $(INCLUDES) $< -o $@
|
|
|
|
|
$(ROMCC) -c -S $(bootblock_romccflags) -I. $(INCLUDES) $(INCLUDES_bootblock) $< -o $@
|
|
|
|
|
|
|
|
|
|
$(objcbfs)/bootblock.debug: $(objgenerated)/bootblock.o $(objgenerated)/bootblock.ld
|
|
|
|
|
@printf " LINK $(subst $(obj)/,,$(@))\n"
|
|
|
|
|
ifeq ($(CONFIG_COMPILER_LLVM_CLANG),y)
|
|
|
|
|
$(LD) -m elf_i386 -static -o $@ -L$(obj) $< -T $(objgenerated)/bootblock.ld
|
|
|
|
|
$(LD_bootblock) -m elf_i386 -static -o $@ -L$(obj) $< -T $(objgenerated)/bootblock.ld
|
|
|
|
|
else
|
|
|
|
|
$(CC) -nostdlib -nostartfiles -static -o $@ -L$(obj) -T $(objgenerated)/bootblock.ld $<
|
|
|
|
|
$(CC_bootblock) -nostdlib -nostartfiles -static -o $@ -L$(obj) -T $(objgenerated)/bootblock.ld $<
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
endif # CONFIG_ARCH_BOOTBLOCK_X86_32
|
|
|
|
|
|
|
|
|
|
###############################################################################
|
|
|
|
|
# romstage
|
|
|
|
|
###############################################################################
|
|
|
|
|
|
|
|
|
|
ifeq ($(CONFIG_ARCH_ROMSTAGE_X86_32),y)
|
|
|
|
|
|
|
|
|
|
crt0s = $(src)/arch/x86/init/prologue.inc
|
|
|
|
|
ldscripts =
|
|
|
|
|
ldscripts += $(src)/arch/x86/init/romstage.ld
|
|
|
|
|
@@ -166,14 +175,25 @@ else
|
|
|
|
|
ROMCCFLAGS := -mcpu=i386 -O2 # !MMX, !SSE
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
$(objcbfs)/romstage_%.bin: $(objcbfs)/romstage_%.elf
|
|
|
|
|
@printf " OBJCOPY $(subst $(obj)/,,$(@))\n"
|
|
|
|
|
$(OBJCOPY_romstage) -O binary $< $@
|
|
|
|
|
|
|
|
|
|
$(objcbfs)/romstage_%.elf: $(objcbfs)/romstage_%.debug
|
|
|
|
|
@printf " OBJCOPY $(subst $(obj)/,,$(@))\n"
|
|
|
|
|
cp $< $@.tmp
|
|
|
|
|
$(OBJCOPY_romstage) --strip-debug $@.tmp
|
|
|
|
|
$(OBJCOPY_romstage) --add-gnu-debuglink=$< $@.tmp
|
|
|
|
|
mv $@.tmp $@
|
|
|
|
|
|
|
|
|
|
$(obj)/mainboard/$(MAINBOARDDIR)/romstage.inc: $(src)/mainboard/$(MAINBOARDDIR)/romstage.c $(objutil)/romcc/romcc $(OPTION_TABLE_H) $(obj)/build.h $(obj)/config.h
|
|
|
|
|
printf " ROMCC romstage.inc\n"
|
|
|
|
|
$(ROMCC) -c -S $(ROMCCFLAGS) -D__PRE_RAM__ -I. $(INCLUDES) $< -o $@
|
|
|
|
|
$(ROMCC) -c -S $(ROMCCFLAGS) -D__PRE_RAM__ -I. $(INCLUDES) $(INCLUDES_romstage) $< -o $@
|
|
|
|
|
else
|
|
|
|
|
|
|
|
|
|
$(obj)/mainboard/$(MAINBOARDDIR)/romstage.pre.inc: $(src)/mainboard/$(MAINBOARDDIR)/romstage.c $(OPTION_TABLE_H) $(obj)/build.h $(obj)/config.h
|
|
|
|
|
@printf " CC romstage.inc\n"
|
|
|
|
|
$(CC) -MMD $(CFLAGS) -D__PRE_RAM__ -I$(src) -I. -I$(obj) -c -S $< -o $@
|
|
|
|
|
$(CC_romstage) -MMD $(CFLAGS_romstage) -D__PRE_RAM__ -I$(src) -I. -I$(obj) -c -S $< -o $@
|
|
|
|
|
|
|
|
|
|
$(obj)/mainboard/$(MAINBOARDDIR)/romstage.inc: $(obj)/mainboard/$(MAINBOARDDIR)/romstage.pre.inc
|
|
|
|
|
@printf " POST romstage.inc\n"
|
|
|
|
|
@@ -189,21 +209,21 @@ romstage-libs ?=
|
|
|
|
|
$(objcbfs)/romstage_null.debug: $$(romstage-objs) $(objgenerated)/romstage_null.ld $$(romstage-libs)
|
|
|
|
|
@printf " LINK $(subst $(obj)/,,$(@))\n"
|
|
|
|
|
ifeq ($(CONFIG_COMPILER_LLVM_CLANG),y)
|
|
|
|
|
$(LD) -nostdlib -nostartfiles -static -o $@ -L$(obj) --wrap __divdi3 --wrap __udivdi3 --wrap __moddi3 --wrap __umoddi3 --start-group $(romstage-objs) $(romstage-libs) $(LIBGCC_FILE_NAME) --end-group -T $(objgenerated)/romstage_null.ld
|
|
|
|
|
$(LD_romstage) -nostdlib -nostartfiles -static -o $@ -L$(obj) --wrap __divdi3 --wrap __udivdi3 --wrap __moddi3 --wrap __umoddi3 --start-group $(romstage-objs) $(romstage-libs) $(LIBGCC_FILE_NAME_romstage) --end-group -T $(objgenerated)/romstage_null.ld
|
|
|
|
|
else
|
|
|
|
|
$(CC) -nostdlib -nostartfiles -static -o $@ -L$(obj) -T $(objgenerated)/romstage_null.ld -Wl,--wrap,__divdi3 -Wl,--wrap,__udivdi3 -Wl,--wrap,__moddi3 -Wl,--wrap,__umoddi3 -Wl,--start-group $(romstage-objs) $(romstage-libs) $(LIBGCC_FILE_NAME) -Wl,--end-group
|
|
|
|
|
$(CC_romstage) -nostdlib -nostartfiles -static -o $@ -L$(obj) -T $(objgenerated)/romstage_null.ld -Wl,--wrap,__divdi3 -Wl,--wrap,__udivdi3 -Wl,--wrap,__moddi3 -Wl,--wrap,__umoddi3 -Wl,--start-group $(romstage-objs) $(romstage-libs) $(LIBGCC_FILE_NAME_romstage) -Wl,--end-group
|
|
|
|
|
endif
|
|
|
|
|
$(NM) $@ | grep -q " [DdBb] "; if [ $$? -eq 0 ]; then \
|
|
|
|
|
$(NM_romstage) $@ | grep -q " [DdBb] "; if [ $$? -eq 0 ]; then \
|
|
|
|
|
echo "Forbidden global variables in romstage:"; \
|
|
|
|
|
$(NM) $@ | grep " [DdBb] "; test "$(CONFIG_CPU_AMD_AGESA)" = y; \
|
|
|
|
|
$(NM_romstage) $@ | grep " [DdBb] "; test "$(CONFIG_CPU_AMD_AGESA)" = y; \
|
|
|
|
|
else true; fi
|
|
|
|
|
|
|
|
|
|
$(objcbfs)/romstage_xip.debug: $$(romstage-objs) $(objgenerated)/romstage_xip.ld $$(romstage-libs)
|
|
|
|
|
@printf " LINK $(subst $(obj)/,,$(@))\n"
|
|
|
|
|
ifeq ($(CONFIG_COMPILER_LLVM_CLANG),y)
|
|
|
|
|
$(LD) -nostdlib -nostartfiles -static -o $@ -L$(obj) --wrap __divdi3 --wrap __udivdi3 --wrap __moddi3 --wrap __umoddi3 --start-group $(romstage-objs) $(romstage-libs) $(LIBGCC_FILE_NAME) --end-group -T $(objgenerated)/romstage_xip.ld
|
|
|
|
|
$(LD_romstage) -nostdlib -nostartfiles -static -o $@ -L$(obj) --wrap __divdi3 --wrap __udivdi3 --wrap __moddi3 --wrap __umoddi3 --start-group $(romstage-objs) $(romstage-libs) $(LIBGCC_FILE_NAME_romstage) --end-group -T $(objgenerated)/romstage_xip.ld
|
|
|
|
|
else
|
|
|
|
|
$(CC) -nostdlib -nostartfiles -static -o $@ -L$(obj) -T $(objgenerated)/romstage_xip.ld -Wl,--wrap,__divdi3 -Wl,--wrap,__udivdi3 -Wl,--wrap,__moddi3 -Wl,--wrap,__umoddi3 -Wl,--start-group $(romstage-objs) $(romstage-libs) $(LIBGCC_FILE_NAME) -Wl,--end-group
|
|
|
|
|
$(CC_romstage) -nostdlib -nostartfiles -static -o $@ -L$(obj) -T $(objgenerated)/romstage_xip.ld -Wl,--wrap,__divdi3 -Wl,--wrap,__udivdi3 -Wl,--wrap,__moddi3 -Wl,--wrap,__umoddi3 -Wl,--start-group $(romstage-objs) $(romstage-libs) $(LIBGCC_FILE_NAME_romstage) -Wl,--end-group
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
$(objgenerated)/romstage_null.ld: $$(ldscripts) $(obj)/ldoptions
|
|
|
|
|
@@ -232,16 +252,20 @@ $(objgenerated)/crt0.romstage.S: $$(crt0s)
|
|
|
|
|
|
|
|
|
|
$(objgenerated)/crt0.romstage.o: $(objgenerated)/crt0.s
|
|
|
|
|
@printf " CC $(subst $(obj)/,,$(@))\n"
|
|
|
|
|
$(CC) $(DISASSEMBLY) -c -o $@ $< > $(basename $@).disasm
|
|
|
|
|
$(CC_romstage) $(DISASSEMBLY) -c -o $@ $< > $(basename $@).disasm
|
|
|
|
|
|
|
|
|
|
$(objgenerated)/crt0.s: $(objgenerated)/crt0.romstage.S $(obj)/config.h $(obj)/build.h
|
|
|
|
|
@printf " CC $(subst $(obj)/,,$(@))\n"
|
|
|
|
|
$(CC) -MMD -x assembler-with-cpp -E -I$(src)/include -I$(src)/arch/x86/include -I$(obj) -include $(obj)/config.h -include $(obj)/build.h -I. -I$(src) $< -o $@
|
|
|
|
|
$(CC_romstage) $(INCLUDES) -MMD -x assembler-with-cpp -E -I$(src)/include -I$(src)/arch/x86/include -I$(obj) -include $(obj)/config.h -include $(obj)/build.h -I. -I$(src) $< -o $@
|
|
|
|
|
|
|
|
|
|
endif # CONFIG_ARCH_ROMSTAGE_X86_32
|
|
|
|
|
|
|
|
|
|
###############################################################################
|
|
|
|
|
# ramstage
|
|
|
|
|
###############################################################################
|
|
|
|
|
|
|
|
|
|
ifeq ($(CONFIG_ARCH_RAMSTAGE_X86_32),y)
|
|
|
|
|
|
|
|
|
|
ramstage-srcs += $(wildcard src/mainboard/$(MAINBOARDDIR)/mainboard.c)
|
|
|
|
|
ifeq ($(CONFIG_GENERATE_MP_TABLE),y)
|
|
|
|
|
ifneq ($(wildcard src/mainboard/$(MAINBOARDDIR)/mptable.c),)
|
|
|
|
|
@@ -284,6 +308,7 @@ endif
|
|
|
|
|
|
|
|
|
|
ramstage-libs ?=
|
|
|
|
|
|
|
|
|
|
$(eval $(call create_class_compiler,rmodules,x86_32))
|
|
|
|
|
ifeq ($(CONFIG_RELOCATABLE_RAMSTAGE),y)
|
|
|
|
|
|
|
|
|
|
$(eval $(call rmodule_link,$(objcbfs)/ramstage.debug, $(objgenerated)/ramstage.o, $(CONFIG_HEAP_SIZE)))
|
|
|
|
|
@@ -297,30 +322,31 @@ else
|
|
|
|
|
$(objcbfs)/ramstage.debug: $(objgenerated)/ramstage.o $(src)/arch/x86/ramstage.ld
|
|
|
|
|
@printf " CC $(subst $(obj)/,,$(@))\n"
|
|
|
|
|
ifeq ($(CONFIG_COMPILER_LLVM_CLANG),y)
|
|
|
|
|
$(LD) -m elf_i386 -o $@ -L$(obj) $< -T $(src)/arch/x86/ramstage.ld
|
|
|
|
|
$(LD_ramstage) -m elf_i386 -o $@ -L$(obj) $< -T $(src)/arch/x86/ramstage.ld
|
|
|
|
|
else
|
|
|
|
|
$(CC) -nostdlib -nostartfiles -static -o $@ -L$(obj) -T $(src)/arch/x86/ramstage.ld $<
|
|
|
|
|
$(CC_ramstage) -nostdlib -nostartfiles -static -o $@ -L$(obj) -T $(src)/arch/x86/ramstage.ld $<
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
$(objgenerated)/ramstage.o: $$(ramstage-objs) $(LIBGCC_FILE_NAME) $$(ramstage-libs)
|
|
|
|
|
$(objgenerated)/ramstage.o: $$(ramstage-objs) $(LIBGCC_FILE_NAME_ramstage) $$(ramstage-libs)
|
|
|
|
|
@printf " CC $(subst $(obj)/,,$(@))\n"
|
|
|
|
|
ifeq ($(CONFIG_COMPILER_LLVM_CLANG),y)
|
|
|
|
|
$(LD) -m elf_i386 -r -o $@ --wrap __divdi3 --wrap __udivdi3 --wrap __moddi3 --wrap __umoddi3 --start-group $(ramstage-objs) $(ramstage-libs) $(LIBGCC_FILE_NAME) --end-group
|
|
|
|
|
$(LD_ramstage) -m elf_i386 -r -o $@ --wrap __divdi3 --wrap __udivdi3 --wrap __moddi3 --wrap __umoddi3 --start-group $(ramstage-objs) $(ramstage-libs) $(LIBGCC_FILE_NAME_ramstage) --end-group
|
|
|
|
|
else
|
|
|
|
|
$(CC) $(CFLAGS) -nostdlib -r -o $@ -Wl,--wrap,__divdi3 -Wl,--wrap,__udivdi3 -Wl,--wrap,__moddi3 -Wl,--wrap,__umoddi3 -Wl,--start-group $(ramstage-objs) $(ramstage-libs) $(LIBGCC_FILE_NAME) -Wl,--end-group
|
|
|
|
|
$(CC_ramstage) $(CFLAGS_ramstage) -nostdlib -r -o $@ -Wl,--wrap,__divdi3 -Wl,--wrap,__udivdi3 -Wl,--wrap,__moddi3 -Wl,--wrap,__umoddi3 -Wl,--start-group $(ramstage-objs) $(ramstage-libs) $(LIBGCC_FILE_NAME_ramstage) -Wl,--end-group
|
|
|
|
|
endif
|
|
|
|
|
|
|
|
|
|
endif # CONFIG_ARCH_RAMSTAGE_X86_32
|
|
|
|
|
|
|
|
|
|
################################################################################
|
|
|
|
|
|
|
|
|
|
seabios:
|
|
|
|
|
$(MAKE) -C payloads/external/SeaBIOS -f Makefile.inc \
|
|
|
|
|
HOSTCC="$(HOSTCC)" \
|
|
|
|
|
CC="$(CC)" LD="$(LD)" OBJDUMP="$(OBJDUMP)" \
|
|
|
|
|
OBJCOPY="$(OBJCOPY)" STRIP="$(STRIP)" \
|
|
|
|
|
AS="$(AS)" CPP="$(CPP)" \
|
|
|
|
|
CC="$(CC_x86_32)" LD="$(LD_x86_32)" OBJDUMP="$(OBJDUMP_x86_32)" \
|
|
|
|
|
OBJCOPY="$(OBJCOPY_x86_32)" STRIP="$(STRIP_x86_32)" \
|
|
|
|
|
AS="$(AS_x86_32)" CPP="$(CPP)" \
|
|
|
|
|
CONFIG_SEABIOS_MASTER=$(CONFIG_SEABIOS_MASTER) \
|
|
|
|
|
CONFIG_SEABIOS_STABLE=$(CONFIG_SEABIOS_STABLE) \
|
|
|
|
|
CONFIG_SEABIOS_THREAD_OPTIONROMS=$(CONFIG_SEABIOS_THREAD_OPTIONROMS) \
|
|
|
|
|
@@ -329,8 +355,8 @@ seabios:
|
|
|
|
|
filo:
|
|
|
|
|
$(MAKE) -C payloads/external/FILO -f Makefile.inc \
|
|
|
|
|
HOSTCC="$(HOSTCC)" \
|
|
|
|
|
CC="$(CC)" LD="$(LD)" OBJDUMP="$(OBJDUMP)" \
|
|
|
|
|
OBJCOPY="$(OBJCOPY)" STRIP="$(STRIP)" \
|
|
|
|
|
CC="$(CC_x86_32)" LD="$(LD_x86_32)" OBJDUMP="$(OBJDUMP_x86_32)" \
|
|
|
|
|
OBJCOPY="$(OBJCOPY_x86_32)" STRIP="$(STRIP_x86_32)" \
|
|
|
|
|
CONFIG_FILO_MASTER=$(CONFIG_FILO_MASTER) \
|
|
|
|
|
CONFIG_FILO_STABLE=$(CONFIG_FILO_STABLE)
|
|
|
|
|
|
|
|
|
|
@@ -338,6 +364,6 @@ filo:
|
|
|
|
|
grub2:
|
|
|
|
|
$(MAKE) -C payloads/external/GRUB2 -f Makefile.inc \
|
|
|
|
|
HOSTCC="$(HOSTCC)" \
|
|
|
|
|
CC="$(CC)" LD="$(LD)" OBJDUMP="$(OBJDUMP)" \
|
|
|
|
|
OBJCOPY="$(OBJCOPY)" STRIP="$(STRIP)" \
|
|
|
|
|
CC="$(CC_x86_32)" LD="$(LD_x86_32)" OBJDUMP="$(OBJDUMP_x86_32)" \
|
|
|
|
|
OBJCOPY="$(OBJCOPY_x86_32)" STRIP="$(STRIP_x86_32)" \
|
|
|
|
|
CONFIG_GRUB2_MASTER=$(CONFIG_GRUB2_MASTER)
|
|
|
|
|
|