Commit 46339731 authored by danh-arm's avatar danh-arm
Browse files

Merge pull request #182 from soby-mathew/sm/stack_optimize

Reduce runtime stack size and add compilation macro for each BL stage
parents e08098c2 aa442d34
...@@ -300,7 +300,7 @@ $(eval PREREQUISITES := $(patsubst %.o,%.d,$(OBJ))) ...@@ -300,7 +300,7 @@ $(eval PREREQUISITES := $(patsubst %.o,%.d,$(OBJ)))
$(OBJ) : $(2) $(OBJ) : $(2)
@echo " CC $$<" @echo " CC $$<"
$$(Q)$$(CC) $$(CFLAGS) -c $$< -o $$@ $$(Q)$$(CC) $$(CFLAGS) -DIMAGE_BL$(3) -c $$< -o $$@
$(PREREQUISITES) : $(2) $(PREREQUISITES) : $(2)
...@@ -322,7 +322,7 @@ $(eval PREREQUISITES := $(patsubst %.o,%.d,$(OBJ))) ...@@ -322,7 +322,7 @@ $(eval PREREQUISITES := $(patsubst %.o,%.d,$(OBJ)))
$(OBJ) : $(2) $(OBJ) : $(2)
@echo " AS $$<" @echo " AS $$<"
$$(Q)$$(AS) $$(ASFLAGS) -c $$< -o $$@ $$(Q)$$(AS) $$(ASFLAGS) -DIMAGE_BL$(3) -c $$< -o $$@
$(PREREQUISITES) : $(2) $(PREREQUISITES) : $(2)
@echo " DEPS $$@" @echo " DEPS $$@"
...@@ -359,11 +359,11 @@ endef ...@@ -359,11 +359,11 @@ endef
define MAKE_OBJS define MAKE_OBJS
$(eval C_OBJS := $(filter %.c,$(2))) $(eval C_OBJS := $(filter %.c,$(2)))
$(eval REMAIN := $(filter-out %.c,$(2))) $(eval REMAIN := $(filter-out %.c,$(2)))
$(eval $(foreach obj,$(C_OBJS),$(call MAKE_C,$(1),$(obj)))) $(eval $(foreach obj,$(C_OBJS),$(call MAKE_C,$(1),$(obj),$(3))))
$(eval S_OBJS := $(filter %.S,$(REMAIN))) $(eval S_OBJS := $(filter %.S,$(REMAIN)))
$(eval REMAIN := $(filter-out %.S,$(REMAIN))) $(eval REMAIN := $(filter-out %.S,$(REMAIN)))
$(eval $(foreach obj,$(S_OBJS),$(call MAKE_S,$(1),$(obj)))) $(eval $(foreach obj,$(S_OBJS),$(call MAKE_S,$(1),$(obj),$(3))))
$(and $(REMAIN),$(error Unexpected source files present: $(REMAIN))) $(and $(REMAIN),$(error Unexpected source files present: $(REMAIN)))
endef endef
...@@ -387,7 +387,7 @@ define MAKE_BL ...@@ -387,7 +387,7 @@ define MAKE_BL
$(eval DUMP := $(BUILD_DIR)/bl$(1).dump) $(eval DUMP := $(BUILD_DIR)/bl$(1).dump)
$(eval BIN := $(BUILD_PLAT)/bl$(1).bin) $(eval BIN := $(BUILD_PLAT)/bl$(1).bin)
$(eval $(call MAKE_OBJS,$(BUILD_DIR),$(SOURCES))) $(eval $(call MAKE_OBJS,$(BUILD_DIR),$(SOURCES),$(1)))
$(eval $(call MAKE_LD,$(LINKERFILE),$(BL$(1)_LINKERFILE))) $(eval $(call MAKE_LD,$(LINKERFILE),$(BL$(1)_LINKERFILE)))
$(BUILD_DIR) : $(BUILD_DIR) :
......
...@@ -1226,6 +1226,11 @@ categories. Based upon the above, the code layout looks like this: ...@@ -1226,6 +1226,11 @@ categories. Based upon the above, the code layout looks like this:
lib Yes Yes Yes lib Yes Yes Yes
services No No Yes services No No Yes
The build system provides a non configurable build option IMAGE_BLx for each
boot loader stage (where x = BL stage). e.g. for BL1 , IMAGE_BL1 will be
defined by the build system. This enables the Trusted Firmware to compile
certain code only for specific boot loader stages
All assembler files have the `.S` extension. The linker source files for each All assembler files have the `.S` extension. The linker source files for each
boot stage have the extension `.ld.S`. These are processed by GCC to create the boot stage have the extension `.ld.S`. These are processed by GCC to create the
linker scripts which have the extension `.ld`. linker scripts which have the extension `.ld`.
......
...@@ -45,7 +45,17 @@ ...@@ -45,7 +45,17 @@
******************************************************************************/ ******************************************************************************/
/* Size of cacheable stacks */ /* Size of cacheable stacks */
#define PLATFORM_STACK_SIZE 0x800 #if DEBUG_XLAT_TABLE
#define PLATFORM_STACK_SIZE 0x800
#elif IMAGE_BL1
#define PLATFORM_STACK_SIZE 0x440
#elif IMAGE_BL2
#define PLATFORM_STACK_SIZE 0x400
#elif IMAGE_BL31
#define PLATFORM_STACK_SIZE 0x400
#elif IMAGE_BL32
#define PLATFORM_STACK_SIZE 0x440
#endif
#define FIRMWARE_WELCOME_STR "Booting trusted firmware boot loader stage 1\n\r" #define FIRMWARE_WELCOME_STR "Booting trusted firmware boot loader stage 1\n\r"
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment