summaryrefslogtreecommitdiffstats
path: root/src/build
diff options
context:
space:
mode:
authorShakeeb <shakeebbk@in.ibm.com>2016-09-16 11:56:24 -0500
committerAMIT J. TENDOLKAR <amit.tendolkar@in.ibm.com>2016-09-29 13:18:55 -0400
commit903d03d03e658837d0ef5944b36f2b100232cd62 (patch)
tree7565c50ca1062c68b398d717ac7be0d09d1dc145 /src/build
parent7ebc5456f9cd6efe03d9d17139f2f1a4aa3c5f77 (diff)
downloadtalos-sbe-903d03d03e658837d0ef5944b36f2b100232cd62.tar.gz
talos-sbe-903d03d03e658837d0ef5944b36f2b100232cd62.zip
PIBMEM Image support
Change-Id: I0a88f8963b28905791ddfe92ad649b1584a0b943 RTC:158600 Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/29852 Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com> Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com> Reviewed-by: RAJA DAS <rajadas2@in.ibm.com> Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com> Reviewed-by: AMIT J. TENDOLKAR <amit.tendolkar@in.ibm.com>
Diffstat (limited to 'src/build')
-rw-r--r--src/build/Makefile25
-rw-r--r--src/build/img_defs.mk18
-rw-r--r--src/build/linkerscripts/linksbe.cmd28
3 files changed, 48 insertions, 23 deletions
diff --git a/src/build/Makefile b/src/build/Makefile
index 11413045..f83fab18 100644
--- a/src/build/Makefile
+++ b/src/build/Makefile
@@ -98,15 +98,14 @@ LIB_DIRS += -L$(OBJDIR)/pm
PMLIB := $(OBJDIR)/pm/libpm.a
LLIBS += -lpm
-SIMICS_PPE_TAR_FILES += $(IMG_DIR)/$(IMAGE_SBE_NAME).out
-SIMICS_PPE_TAR_FILES += $(IMG_DIR)/$(IMAGE_SBE_NAME).map
-SIMICS_PPE_TAR_FILES += $(IMG_DIR)/$(IMAGE_SBE_NAME).dis
SIMICS_PPE_TAR_FILES += $(BOOT_OBJDIR)/$(IMAGE_LOADER_NAME).out
SIMICS_PPE_TAR_FILES += $(BOOT_OBJDIR)/$(IMAGE_LOADER_NAME).map
SIMICS_PPE_TAR_FILES += $(BOOT_OBJDIR)/$(IMAGE_LOADER_NAME).dis
+ifeq ($(img), seeprom)
SIMICS_PPE_TAR_FILES += $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).out
SIMICS_PPE_TAR_FILES += $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).map
SIMICS_PPE_TAR_FILES += $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).dis
+endif
SIMICS_PPE_TAR_FILES += $(IMG_DIR)/sbe.syms
SIMICS_PPE_TAR_FILES += $(TEST_SRCDIR)/*.xml
SIMICS_PPE_TAR_FILES += $(TEST_SRCDIR)/*.py
@@ -154,6 +153,7 @@ $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).out: ppe_trace_bin buildInfo $(SUBDIRS) $(LINK_
$(LINK_SCRIPT_SEEPROM): $(LINKER_DIR)/linkseeprom.cmd
$(CPP) -I $(INCLUDES) -E -x c++ -P $(DEFS) $(LINKER_DIR)/linkseeprom.cmd -o $(LINK_SCRIPT_SEEPROM)
+ifeq ($(img), pibmem)
# ---- PIBMEM Image ------
#This removes all unecessary headers from the ELF executable
$(IMG_DIR)/$(IMAGE_SBE_NAME).bin $(IMG_DIR)/$(IMAGE_SBE_NAME).dis: $(IMG_DIR)/$(IMAGE_SBE_NAME).out
@@ -161,7 +161,6 @@ $(IMG_DIR)/$(IMAGE_SBE_NAME).bin $(IMG_DIR)/$(IMAGE_SBE_NAME).dis: $(IMG_DIR)/$(
0x`/usr/bin/nm $(IMG_DIR)/$(IMAGE_SBE_NAME).out | grep "A _sbe_end" \
| cut -d " " -f 1`
$(OBJDUMP) -S $< > $(IMG_DIR)/$(IMAGE_SBE_NAME).dis
- $(NM) $< > $(IMG_DIR)/$(IMAGE_SBE_NAME).syms
# create a linked ELF executable
$(IMG_DIR)/$(IMAGE_SBE_NAME).out: ppe_trace_bin buildInfo $(SUBDIRS) $(LINK_OBJS) $(LINK_SCRIPT_SBE)
@@ -170,10 +169,18 @@ $(IMG_DIR)/$(IMAGE_SBE_NAME).out: ppe_trace_bin buildInfo $(SUBDIRS) $(LINK_OBJ
# pass the link command file through the C preprocessor to evaluate macros and remove comments
$(LINK_SCRIPT_SBE): $(LINKER_DIR)/linksbe.cmd
$(CPP) -E -x c++ -I $(INCLUDES) -P $(DEFS) $(LINKER_DIR)/linksbe.cmd -o $(LINK_SCRIPT_SBE)
+endif
-all: $(OBJDIR) xml $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).bin $(IMG_DIR)/$(IMAGE_SBE_NAME).bin \
+ifeq ($(img), pibmem)
+all: $(OBJDIR) xml \
+ $(IMG_DIR)/$(IMAGE_SBE_NAME).bin \
+ symbols tracehash
+endif
+ifeq ($(img), seeprom)
+all: $(OBJDIR) xml $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).bin \
$(SBE_TOOLS) normalize defaultset $(IMG_DIR)/fixed.bin appendloader \
appendoverrides add_LoaderAddr symbols tracehash buildinfo report
+endif
install: all
@echo "Installing simics.tar"
@@ -203,9 +210,15 @@ add_LoaderAddr: $(P9_XIP_TOOL) $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).out
$(P9_XIP_TOOL) $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).bin set L2_LoaderAddr 0x`nm $(BOOT_OBJDIR)/$(IMAGE_LOADER_NAME).out | grep __l2_loader_setup | cut -f 1 -d " "`
$(P9_XIP_TOOL) $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).bin set kernelAddr 0x`nm $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).out | grep __pk_boot | cut -f 1 -d " "`
-symbols: $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).out $(BOOT_OBJDIR)/$(IMAGE_LOADER_NAME).out $(IMG_DIR)/$(IMAGE_SBE_NAME).out
+ifeq ($(img), seeprom)
+symbols: $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).out $(BOOT_OBJDIR)/$(IMAGE_LOADER_NAME).out
$(NM) $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).out > $(IMG_DIR)/$(SBE_SYMBOLS_NAME)
$(NM) $(BOOT_OBJDIR)/$(IMAGE_LOADER_NAME).out >> $(IMG_DIR)/$(SBE_SYMBOLS_NAME)
+endif
+ifeq ($(img), pibmem)
+symbols: $(IMG_DIR)/$(IMAGE_SBE_NAME).out
+ $(NM) $(IMG_DIR)/$(IMAGE_SBE_NAME).out > $(IMG_DIR)/$(SBE_SYMBOLS_NAME)
+endif
report: $(P9_XIP_TOOL) $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).bin
$(P9_XIP_TOOL) $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).bin report > $(IMG_DIR)/$(IMAGE_SEEPROM_NAME).rpt
diff --git a/src/build/img_defs.mk b/src/build/img_defs.mk
index ad8f3a9c..999d7105 100644
--- a/src/build/img_defs.mk
+++ b/src/build/img_defs.mk
@@ -433,6 +433,23 @@ GCC-CFLAGS += -mcpu=ppe42
GCC-CFLAGS += -ffunction-sections
GCC-CFLAGS += -fdata-sections
endif
+############################################################################
+# Image settings
+# pass argument img=seeprom/pibmem
+# By default seeprom image is built
+ifndef img
+img = seeprom
+endif
+
+ifeq ($(img), seeprom)
+GCC-DEFS += -DSEEPROM_IMAGE
+endif
+ifeq ($(img), pibmem)
+GCC-DEFS += -DPIBMEM_ONLY_IMAGE
+endif
+
+###########################################################################
+
CFLAGS =
PPE-CFLAGS = $(CFLAGS) -c $(GCC-CFLAGS) $(PIPE-CFLAGS) $(GCC-O-LEVEL) $(INCLUDES)
@@ -446,7 +463,6 @@ ifdef P2P_ENABLE
#use this to disable optimizations (fused compare/branch etc.)
PCP-FLAG = -b
endif
-
############################################################################
#override the GNU Make implicit rule for going from a .C to a .o
diff --git a/src/build/linkerscripts/linksbe.cmd b/src/build/linkerscripts/linksbe.cmd
index 12250a9d..7a5cc5bf 100644
--- a/src/build/linkerscripts/linksbe.cmd
+++ b/src/build/linkerscripts/linksbe.cmd
@@ -35,20 +35,16 @@ OUTPUT_FORMAT(elf32-powerpc);
MEMORY
{
- // increasing ram size as workaround so that pibmem image compilation
- // doe not fail.
- // TODO: Reducing the SBE_BASE_ORIGIN by 0x1F000 to reduce the size of
- // generated sbe_pibmem.bin. Just a workaround to use pibmem for poweron
- sram : ORIGIN = SBE_BASE_ORIGIN - 0x1F000, LENGTH = SBE_BASE_LENGTH + 0x1F000
+ pibmem : ORIGIN = SBE_BASE_ORIGIN, LENGTH = SBE_BASE_LENGTH
}
SECTIONS
{
- . = SBE_BASE_ORIGIN - 0x1F000;
+ . = SBE_BASE_ORIGIN;
- .vectors : {. = ALIGN(512); *(.vectors)} > sram
- .fixed . : {. = ALIGN(512); *(.fixed) } > sram
- .text . : {. = ALIGN(512); *(.text)} > sram
+ .vectors : {. = ALIGN(512); *(.vectors)} > pibmem
+ .fixed . : {. = ALIGN(512); *(.fixed) } > pibmem
+ .text . : {. = ALIGN(512); *(.text)} > pibmem
////////////////////////////////
// Read-only Data
@@ -62,8 +58,8 @@ SECTIONS
// offsets.
_SDA2_BASE_ = .;
- .sdata2 . : { *(.sdata2*) } > sram
- .sbss2 . : { *(.sbss2*) } > sram
+ .sdata2 . : { *(.sdata2*) } > pibmem
+ .sbss2 . : { *(.sbss2*) } > pibmem
// Other read-only data.
@@ -71,7 +67,7 @@ SECTIONS
.rodata . : { ctor_start_address = .;
*(.ctors) *(.ctors.*)
ctor_end_address = .;
- *(rodata*) *(.got2) } > sram
+ *(rodata*) *(.got2) } > pibmem
_RODATA_SECTION_SIZE = . - _RODATA_SECTION_BASE;
@@ -87,16 +83,16 @@ SECTIONS
// offsets.
_SDA_BASE_ = .;
- .sdata . : { *(.sdata*) } > sram
+ .sdata . : { *(.sdata*) } > pibmem
_sbss_start = .;
- .sbss . : { *(.sbss*) } > sram
+ .sbss . : { *(.sbss*) } > pibmem
_sbss_end = .;
// Other read-write data
// It's not clear why boot.S is generating empty .glink,.iplt
- .rela . : { *(.rela*) } > sram
- .rwdata . : { *(.data*) *(.bss*) } > sram
+ .rela . : { *(.rela*) } > pibmem
+ .rwdata . : { *(.data*) *(.bss*) } > pibmem
. = ALIGN(8);
_PK_INITIAL_STACK_LIMIT = .;
OpenPOWER on IntegriCloud