From 063ea168bca40f9d288980000c3dd74b65433846 Mon Sep 17 00:00:00 2001 From: Derk Rembold Date: Tue, 16 Jun 2015 10:47:14 +0200 Subject: method to compile pibmem and seeprom image (second try) Change-Id: I8f0e7acafd2f956eedc043691647d5d8ed432202 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/18488 Reviewed-by: Derk Rembold Tested-by: Derk Rembold --- sbe/image/Makefile | 92 ++++++++++++++++++++------------ sbe/image/base_ppe_demo.c | 4 +- sbe/image/base_ppe_header.S | 2 +- sbe/image/img_defs.mk | 125 ++++++++++++++++++++------------------------ sbe/image/link.cmd | 91 -------------------------------- sbe/image/linksbe.cmd | 72 +++++++++++++++++++++++++ sbe/image/linkseeprom.cmd | 91 ++++++++++++++++++++++++++++++++ sbe/image/topfiles.mk | 2 +- 8 files changed, 286 insertions(+), 193 deletions(-) delete mode 100644 sbe/image/link.cmd create mode 100644 sbe/image/linksbe.cmd create mode 100644 sbe/image/linkseeprom.cmd (limited to 'sbe') diff --git a/sbe/image/Makefile b/sbe/image/Makefile index 9274e0bd..0526a1be 100644 --- a/sbe/image/Makefile +++ b/sbe/image/Makefile @@ -1,3 +1,4 @@ + #remove this once we have a real compiler export P2P_ENABLE = 1 @@ -29,7 +30,7 @@ LLIBS += -lpk SBEFW_MAKE_DIR := ../sbefw LIB_DIRS += -L$(OBJDIR)/sbefw SBEFWLIB := $(OBJDIR)/sbefw/libsbefw.a -LLIBS += -lsbefw +#LLIBS += -lsbefw SAMPLE_MAKE_DIR := ../sample LIB_DIRS += -L$(OBJDIR)/sample @@ -74,44 +75,61 @@ LIB_DIRS += -L$(OBJDIR)/perv PERVLIB := $(OBJDIR)/perv/libperv.a LLIBS += -lperv -LINK_OBJS = $(OBJS) $(PKLIB) $(SBEFWLIB) $(FAPI2LIB) $(CACHELIB) $(CORELIB) $(HWPLIB) $(P2PLIB) $(PERVLIB) +LINK_OBJS = $(OBJS) $(SBEFWLIB) $(PKLIB) $(FAPI2LIB) $(CACHELIB) $(CORELIB) $(HWPLIB) $(P2PLIB) $(PERVLIB) # Define the objects OBJS := $(addprefix $(OBJDIR)/, $(TOP_OBJECTS)) LINK_OBJS += $(OBJS) $(GCCLIBS) #LINK_OBJS += $(OBJS) $(PKLIB) $(CPPLIB) $(PPELIB) -LINK_SCRIPT = $(addprefix $(OBJDIR)/, linkscript) - +LINK_SCRIPT_SEEPROM = $(addprefix $(OBJDIR)/, linkscriptseeprom) +LINK_SCRIPT_SBE = $(addprefix $(OBJDIR)/, linkscriptsbe) #default target is to make a binary application image #This removes all unecessary headers from the ELF executable -$(OBJDIR)/$(IMAGE_NAME).bin $(OBJDIR)/$(IMAGE_NAME).dis: $(OBJDIR)/$(IMAGE_NAME).out - $(OBJCOPY) -O binary $< $(OBJDIR)/$(IMAGE_NAME).bin --pad-to 0x`/usr/bin/nm $(OBJDIR)/$(IMAGE_NAME).out | grep "A _sbe_base_end" | cut -d " " -f 1` - $(OBJDUMP) -S $< > $(OBJDIR)/$(IMAGE_NAME).dis +$(OBJDIR)/$(IMAGE_SEEPROM_NAME).bin $(OBJDIR)/$(IMAGE_SEEPROM_NAME).dis: $(OBJDIR)/$(IMAGE_SEEPROM_NAME).out + $(OBJCOPY) -O binary $< $(OBJDIR)/$(IMAGE_SEEPROM_NAME).bin --pad-to 0x`/usr/bin/nm $(OBJDIR)/$(IMAGE_SEEPROM_NAME).out | grep "A _seeprom_end" | cut -d " " -f 1` + $(OBJDUMP) -S $< > $(OBJDIR)/$(IMAGE_SEEPROM_NAME).dis #create a linked ELF executable -$(OBJDIR)/$(IMAGE_NAME).out: $(LINK_OBJS) $(LINK_SCRIPT) - $(LD) -e __system_reset -T$(LINK_SCRIPT) -Map $(OBJDIR)/$(IMAGE_NAME).map -Bstatic -o $(OBJDIR)/$(IMAGE_NAME).out $(LIB_DIRS) $(OBJS) --start-group $(LLIBS) --end-group -# $(LD) -e __system_reset -T$(LINK_SCRIPT) -Map $(OBJDIR)/$(IMAGE_NAME).map -Bstatic -o $(OBJDIR)/$(IMAGE_NAME).out $(LIB_DIRS) $(OBJS) -lpk -lp2p #-lcommon -# $(LD) -e __system_reset -T$(LINK_SCRIPT) -Map $(OBJDIR)/$(IMAGE_NAME).map -Bstatic -o $(OBJDIR)/$(IMAGE_NAME).out $(LIB_DIRS) $(OBJS) $(LLIBS) +$(OBJDIR)/$(IMAGE_SEEPROM_NAME).out: $(LINK_OBJS) $(LINK_SCRIPT_SEEPROM) + $(LD) -e __system_reset -T$(LINK_SCRIPT_SEEPROM) -Map $(OBJDIR)/$(IMAGE_SEEPROM_NAME).map -Bstatic -o $(OBJDIR)/$(IMAGE_SEEPROM_NAME).out $(LIB_DIRS) $(OBJS) --start-group $(LLIBS) --end-group + +#pass the link command file through the C preprocessor to evaluate macros and remove comments +$(LINK_SCRIPT_SEEPROM): linkseeprom.cmd + $(CPP) -E -x c++ -P $(DEFS) linkseeprom.cmd -o $(LINK_SCRIPT_SEEPROM) + + + +#default target is to make a binary pibmem image +#This removes all unecessary headers from the ELF executable +$(OBJDIR)/$(IMAGE_SBE_NAME).bin $(OBJDIR)/$(IMAGE_SBE_NAME).dis: $(OBJDIR)/$(IMAGE_SBE_NAME).out + $(OBJCOPY) -O binary $< $(OBJDIR)/$(IMAGE_SBE_NAME).bin --pad-to 0x`/usr/bin/nm $(OBJDIR)/$(IMAGE_SBE_NAME).out | grep "A _sbe_end" | cut -d " " -f 1` + $(OBJDUMP) -S $< > $(OBJDIR)/$(IMAGE_SBE_NAME).dis +#create a linked ELF executable +$(OBJDIR)/$(IMAGE_SBE_NAME).out: $(LINK_OBJS) $(LINK_SCRIPT_SBE) + $(LD) -e __system_reset -T$(LINK_SCRIPT_SBE) -Map $(OBJDIR)/$(IMAGE_SBE_NAME).map -Bstatic -o $(OBJDIR)/$(IMAGE_SBE_NAME).out $(LIB_DIRS) --start-group $(SBEFWLIB) $(LLIBS) --end-group #pass the link command file through the C preprocessor to evaluate macros and remove comments -$(LINK_SCRIPT): link.cmd - $(CPP) -E -x c++ -P $(DEFS) link.cmd -o $(LINK_SCRIPT) +$(LINK_SCRIPT_SBE): linksbe.cmd + $(CPP) -E -x c++ -P $(DEFS) linksbe.cmd -o $(LINK_SCRIPT_SBE) + + +all: $(OBJDIR)/$(IMAGE_SEEPROM_NAME).bin $(OBJDIR)/$(IMAGE_SBE_NAME).bin + #Create an obj directory if needed $(LINK_OBJS) $(OBJS) $(OBJS:.o=.d): | $(OBJDIR) $(OBJDIR): - $(BASE_FAPI2_DIR)/tools/ppeParseProcSbeFixed.pl . $(TOOLS_ATTR_DIR)/p9_ppe_attributes1.xml $(ATTRFILES) - $(BASE_FAPI2_DIR)/tools/ppeParseAttributeInfo.pl $(PPE_FAPI2_DIR)/include $(TOOLS_ATTR_DIR)/p9_ppe_attributes1.xml $(ATTRFILES) - $(BASE_FAPI2_DIR)/tools/ppeCreateAttrGetSetMacros.pl -path $(BASE_FAPI2_DIR)/tools -inc $(PPE_FAPI2_DIR)/include -src $(PPE_FAPI2_DIR)/src - $(BASE_FAPI2_DIR)/tools/ppeCreateIfAttrService.pl $(PPE_FAPI2_DIR)/include $(TOOLS_ATTR_DIR)/p9_ppe_attributes1.xml $(ATTRFILES) + $(TOOLS_ATTR_DIR)/ppeParseProcSbeFixed.pl . $(TOOLS_ATTR_DIR)/p9_ppe_attributes1.xml $(ATTRFILES) + $(TOOLS_ATTR_DIR)/ppeParseAttributeInfo.pl $(PPE_FAPI2_DIR)/include $(TOOLS_ATTR_DIR)/p9_ppe_attributes1.xml $(ATTRFILES) + $(TOOLS_ATTR_DIR)/ppeCreateAttrGetSetMacros.pl -path $(TOOLS_ATTR_DIR)/src -inc $(PPE_FAPI2_DIR)/include -src $(PPE_FAPI2_DIR)/src + $(TOOLS_ATTR_DIR)/ppeCreateIfAttrService.pl $(PPE_FAPI2_DIR)/include $(TOOLS_ATTR_DIR)/p9_ppe_attributes1.xml $(ATTRFILES) mkdir -p $(OBJDIR) -.PHONY: clean topfixedheaders $(PKLIB) $(P2PLIB) $(SBEFWLIB) $(PPELIB) $(FAPI2LIB) $(CACHELIB) $(CORELIB) $(PERVLIB) $(HWPLIB) +.PHONY: clean topfixedheaders $(PKLIB) $(P2PLIB) $(PPELIB) $(FAPI2LIB) $(CACHELIB) $(CORELIB) $(PERVLIB) $(HWPLIB) ATTRFILES += $(TOOLS_ATTR_DIR)/perv_attributes.xml ATTRFILES += $(TOOLS_ATTR_DIR)/proc_attributes.xml @@ -120,60 +138,63 @@ ATTRFILES += $(TOOLS_ATTR_DIR)/eq_attributes.xml ATTRFILES += $(TOOLS_ATTR_DIR)/core_attributes.xml topfixedheaders: - $(BASE_FAPI2_DIR)/tools/ppeParseProcSbeFixed.pl . $(TOOLS_ATTR_DIR)/p9_ppe_attributes1.xml $(ATTRFILES) + $(TOOLS_ATTR_DIR)/ppeParseProcSbeFixed.pl . $(TOOLS_ATTR_DIR)/p9_ppe_attributes1.xml $(ATTRFILES) attrids: - $(BASE_FAPI2_DIR)/tools/ppeParseAttributeInfo.pl $(PPE_FAPI2_DIR)/include $(TOOLS_ATTR_DIR)/p9_ppe_attributes1.xml $(ATTRFILES) + $(TOOLS_ATTR_DIR)/ppeParseAttributeInfo.pl $(PPE_FAPI2_DIR)/include $(TOOLS_ATTR_DIR)/p9_ppe_attributes1.xml $(ATTRFILES) platattr: - $(BASE_FAPI2_DIR)/tools/ppeCreateAttrGetSetMacros.pl --path $(BASE_FAPI2_DIR)/tools --inc $(PPE_FAPI2_DIR)/include --src $(PPE_FAPI2_DIR)/src + $(TOOLS_ATTR_DIR)/ppeCreateAttrGetSetMacros.pl --path $(TOOLS_ATTR_DIR)/src --inc $(PPE_FAPI2_DIR)/include --src $(PPE_FAPI2_DIR)/src attrserv: - $(BASE_FAPI2_DIR)/tools/ppeCreateIfAttrService.pl $(PPE_FAPI2_DIR)/include $(TOOLS_ATTR_DIR)/p9_ppe_attributes1.xml $(ATTRFILES) + $(TOOLS_ATTR_DIR)/ppeCreateIfAttrService.pl $(PPE_FAPI2_DIR)/include $(TOOLS_ATTR_DIR)/p9_ppe_attributes1.xml $(ATTRFILES) #Build macro-specific kernel code $(PKLIB): - $(MAKE) -I $(IMAGE_SRCDIR) -C $(PK_MAKE_DIR) + $(MAKE) -I $(IMAGE_SRCDIR) -C $(PK_MAKE_DIR) -f Makefile #Build macro-specific kernel code $(SBEFWLIB): - $(MAKE) -I $(IMAGE_SRCDIR) -C $(SBEFW_MAKE_DIR) + $(MAKE) -I $(IMAGE_SRCDIR) -C $(SBEFW_MAKE_DIR) -f Makefile + +sbefw: + $(MAKE) -I $(IMAGE_SRCDIR) -C $(SBEFW_MAKE_DIR) -f Makefile #Build the code that is common for all processors (PPEs and 405) $(PPELIB): @echo "Processing ppelibmakefile" - $(MAKE) -I $(IMAGE_SRCDIR) -C $(LIB_MAKE_DIR) + $(MAKE) -I $(IMAGE_SRCDIR) -C $(LIB_MAKE_DIR) -f Makefile #Build the cache exit code shared with the SBE $(CACHELIB): @echo "Processing cache makefile" - $(MAKE) -I $(IMAGE_SRCDIR) -C $(CACHE_MAKE_DIR) + $(MAKE) -I $(IMAGE_SRCDIR) -C $(CACHE_MAKE_DIR) -f Makefile #Build the core exit code shared with the SBE $(CORELIB): @echo "Processing core makefile" - $(MAKE) -I $(IMAGE_SRCDIR) -C $(CORE_MAKE_DIR) + $(MAKE) -I $(IMAGE_SRCDIR) -C $(CORE_MAKE_DIR) -f Makefile #Build the perv code $(PERVLIB): @echo "Processing perv makefile" - $(MAKE) -I $(IMAGE_SRCDIR) -C $(PERV_MAKE_DIR) + $(MAKE) -I $(IMAGE_SRCDIR) -C $(PERV_MAKE_DIR) -f Makefile #Build the comming HWP lib procedures $(HWPLIB): @echo "Processing HWP lib makefile" - $(MAKE) -I $(IMAGE_SRCDIR) -C $(HWPLIB_MAKE_DIR) + $(MAKE) -I $(IMAGE_SRCDIR) -C $(HWPLIB_MAKE_DIR) -f Makefile #Build the FAPI2 library $(FAPI2LIB): @echo "Processing fapi2 makefile" - $(MAKE) -I $(IMAGE_SRCDIR) -C $(FAPI2_MAKE_DIR)/src + $(MAKE) -I $(IMAGE_SRCDIR) -C $(FAPI2_MAKE_DIR)/src -f Makefile ifdef P2P_ENABLE $(P2PLIB): - $(MAKE) -I $(IMAGE_SRCDIR) -C $(P2P_SRCDIR) + $(MAKE) -I $(IMAGE_SRCDIR) -C $(P2P_SRCDIR) -f Makefile endif # collect all of the trace hash files for this image into a single trexStringFile @@ -190,7 +211,14 @@ clean: dump: - objdump -s $(OBJDIR)/$(IMAGE_NAME).out > $(IMAGE_NAME).dump + objdump -s $(OBJDIR)/$(IMAGE_SEEPROM_NAME).out > $(IMAGE_SEEPROM_NAME).dump + +# load and run the SBE image in a GPE simics environment +run: $(OBJDIR)/$(IMAGE_SEEPROM_NAME).out + $(SIMICS_WS)/simics \ + -e '$$occ_gpe0_binary_to_load=$(OBJDIR)/$(IMAGE_SEEPROM_NAME).out' modelsetup.simics + + #Add dependencies to header files ifneq ($(MAKECMDGOALS),clean) diff --git a/sbe/image/base_ppe_demo.c b/sbe/image/base_ppe_demo.c index 95a4c7ad..088943e1 100644 --- a/sbe/image/base_ppe_demo.c +++ b/sbe/image/base_ppe_demo.c @@ -14,7 +14,9 @@ #include "pk.h" #include "pk_trace.h" -void base_ppe_demo_func(const char* str) + +//void base_ppe_demo_func(const char* str) +void main() { PK_TRACE("TESTFUNCTION"); } diff --git a/sbe/image/base_ppe_header.S b/sbe/image/base_ppe_header.S index 877167d5..0d0d3a0d 100644 --- a/sbe/image/base_ppe_header.S +++ b/sbe/image/base_ppe_header.S @@ -186,7 +186,7 @@ __header_string_reserved: .section .strings, "aS", @progbits ..set_default_space PORE_SPACE_SEEPROM - SbeXipHeader SBE_SEEPROM_MAGIC, 0xFFF00000, 0xFFF00C78, _sbe_base_size + SbeXipHeader SBE_SEEPROM_MAGIC, 0xFFF00000, 0xFFF00C78, _seeprom_size // Create the .fixed section .proc_sbe_fixed_proc_chip diff --git a/sbe/image/img_defs.mk b/sbe/image/img_defs.mk index f62c8960..0b48a9dc 100644 --- a/sbe/image/img_defs.mk +++ b/sbe/image/img_defs.mk @@ -32,7 +32,8 @@ # # OBJDIR : target directory for all generated files -IMAGE_NAME := sbe_main +IMAGE_SEEPROM_NAME := seeprom_main +IMAGE_SBE_NAME := sbe_main PPE_TYPE := std @@ -54,22 +55,16 @@ endif ifndef HWPLIB_SRCDIR export HWPLIB_SRCDIR = $(abspath ../../hwp/lib) - endif ifndef IMG_INCLUDES -export IMG_INCLUDES = -I$(IMAGE_SRCDIR) -I$(CACHE_SRCDIR) -I$(CORE_SRCDIR) - -endif - -ifndef IMG_INCLUDES -export IMG_INCLUDES = -I$(IMAGE_SRCDIR) -I$(CACHE_SRCDIR) -I$(CORE_SRCDIR) +export IMG_INCLUDES = -I$(IMAGE_SRCDIR) -I$(CACHE_SRCDIR) -I$(CORE_SRCDIR) -I$(PERV_SRCDIR) endif ifndef BASE_OBJDIR export BASE_OBJDIR = $(abspath ../obj) endif -export IMG_OBJDIR = $(BASE_OBJDIR)/$(IMAGE_NAME) +export IMG_OBJDIR = $(BASE_OBJDIR)/$(IMAGE_SEEPROM_NAME) ifndef PK_SRCDIR export PK_SRCDIR = $(abspath ../../pk) @@ -79,13 +74,6 @@ ifndef TOOLS_ATTR_DIR export TOOLS_ATTR_DIR = $(abspath ../../tools/scripts) endif - - -ifndef GCC-TOOL-PREFIX -GCC-TOOL-PREFIX = $(CTEPATH)/tools/gcc405lin/prod/usr/bin/powerpc-linux- -endif - - ifndef P2P_SRCDIR export P2P_SRCDIR = $(abspath ../../tools/PowerPCtoPPE) endif @@ -104,15 +92,13 @@ export PPE_FAPI2_DIR = $(abspath ../../hwpf/plat) endif ifndef BASE_FAPI2_DIR -export BASE_FAPI2_DIR = $(abspath /afs/awd/projects/eclipz/lab/p8/u/rembold/ekbgit/hwpf/fapi2) +export BASE_FAPI2_DIR = $(abspath /afs/apd/u/rembold/ekb/hwpf/fapi2) endif - ifndef CC_ROOT export CC_ROOT = ${CTEPATH}/tools/gcc405lin/prod endif - ifndef GCC-TOOL-PREFIX GCC-TOOL-PREFIX = ${CC_ROOT}/usr/bin/powerpc-linux- endif @@ -160,7 +146,7 @@ endif # Generate a 16bit trace string hash prefix value based on the name of this image. This will form # the upper 16 bits of the 32 bit trace hash values. ifndef PK_TRACE_HASH_PREFIX -PK_TRACE_HASH_PREFIX := $(shell echo $(IMAGE_NAME) | md5sum | cut -c1-4 | xargs -i printf "%d" 0x{}) +PK_TRACE_HASH_PREFIX := $(shell echo $(IMAGE_SEEPROM_NAME) | md5sum | cut -c1-4 | xargs -i printf "%d" 0x{}) endif @@ -170,68 +156,73 @@ ifndef GCC-O-LEVEL GCC-O-LEVEL = -O endif -GCC-DEFS += -DIMAGE_NAME=$(IMAGE_NAME) +GCC-DEFS += -DIMAGE_NAME=$(IMAGE_SEEPROM_NAME) GCC-DEFS += -DPK_TIMER_SUPPORT=$(PK_TIMER_SUPPORT) GCC-DEFS += -DPK_THREAD_SUPPORT=$(PK_THREAD_SUPPORT) GCC-DEFS += -DPK_TRACE_SUPPORT=$(PK_TRACE_SUPPORT) GCC-DEFS += -DPK_TRACE_HASH_PREFIX=$(PK_TRACE_HASH_PREFIX) GCC-DEFS += -D__PK__=1 GCC-DEFS += -D__SBE__=1 +GCC-DEFS += -D__PPE__=1 +GCC-DEFS += -DFAPI2_NO_FFDC=1 DEFS += $(GCC-DEFS) export LD_LIBRARY_PATH = /afs/awd.austin.ibm.com/proj/p3/cte/tools/gcc405lin/vol1/usr/lib ############################################################################ -INCLUDES += $(IMG_INCLUDES) \ - -I$(IMAGE_SRCDIR)/../../../include \ - -I$(PLAT_FAPI2_DIR)/include \ - -I$(PPE_FAPI2_DIR)/include \ - -I$(BASE_FAPI2_DIR)/include \ - -I$(PK_SRCDIR)/../include \ - -I$(PK_SRCDIR)/$(PPE_TYPE) \ - -I$(PK_SRCDIR)/../include \ - -I$(PK_SRCDIR)/kernel \ - -I$(PK_SRCDIR)/ppe \ - -I$(PK_SRCDIR)/ppe42 \ - -I$(PK_SRCDIR)/trace +INCLUDES += $(IMG_INCLUDES) +INCLUDES += -I$(IMAGE_SRCDIR)/../../../include +INCLUDES += -I$(PLAT_FAPI2_DIR)/include +INCLUDES += -I$(PPE_FAPI2_DIR)/include +INCLUDES += -I$(BASE_FAPI2_DIR)/include +INCLUDES += -I$(PK_SRCDIR)/../include +INCLUDES += -I$(PK_SRCDIR)/$(PPE_TYPE) +INCLUDES += -I$(PK_SRCDIR)/../include +INCLUDES += -I$(PK_SRCDIR)/kernel +INCLUDES += -I$(PK_SRCDIR)/ppe +INCLUDES += -I$(PK_SRCDIR)/ppe42 +INCLUDES += -I$(PK_SRCDIR)/../sbe/sbefw +INCLUDES += -I$(PK_SRCDIR)/trace +INCLUDES += -I$(PK_SRCDIR)/../tools/ppetracepp PIPE-CFLAGS = -pipe -Wa,-m405 -GCC-CFLAGS += -g -Wall -Werror -Wno-error=unused-label \ - -msoft-float -mcpu=405 -mmulhw \ - -meabi -msdata=eabi \ - -ffreestanding \ - -fno-common \ - -fsigned-char \ - -fno-inline-functions-called-once \ - -ffixed-r11 \ - -ffixed-r12 \ - -ffixed-r14 \ - -ffixed-r15 \ - -ffixed-r16 \ - -ffixed-r17 \ - -ffixed-r18 \ - -ffixed-r19 \ - -ffixed-r20 \ - -ffixed-r21 \ - -ffixed-r22 \ - -ffixed-r23 \ - -ffixed-r24 \ - -ffixed-r25 \ - -ffixed-r26 \ - -ffixed-r27 \ - -ffixed-cr1 \ - -ffixed-cr2 \ - -ffixed-cr3 \ - -ffixed-cr4 \ - -ffixed-cr5 \ - -ffixed-cr6 \ - -ffixed-cr7 - - -CFLAGS = -c $(GCC-CFLAGS) $(PIPE-CFLAGS) $(GCC-O-LEVEL) $(INCLUDES) - +# -Wno-error=unused-label , needs to be in. + +GCC-CFLAGS += -Wall -Werror -Wno-unused-label +GCC-CFLAGS += -msoft-float -mcpu=405 -mmulhw +GCC-CFLAGS += -meabi -msdata=eabi +GCC-CFLAGS += -ffreestanding +GCC-CFLAGS += -fno-common +GCC-CFLAGS += -fsigned-char +GCC-CFLAGS += -fno-inline-functions-called-once +GCC-CFLAGS += -ffixed-r11 +GCC-CFLAGS += -ffixed-r12 +GCC-CFLAGS += -ffixed-r14 +GCC-CFLAGS += -ffixed-r15 +GCC-CFLAGS += -ffixed-r16 +GCC-CFLAGS += -ffixed-r17 +GCC-CFLAGS += -ffixed-r18 +GCC-CFLAGS += -ffixed-r19 +GCC-CFLAGS += -ffixed-r20 +GCC-CFLAGS += -ffixed-r21 +GCC-CFLAGS += -ffixed-r22 +GCC-CFLAGS += -ffixed-r23 +GCC-CFLAGS += -ffixed-r24 +GCC-CFLAGS += -ffixed-r25 +GCC-CFLAGS += -ffixed-r26 +GCC-CFLAGS += -ffixed-r27 +GCC-CFLAGS += -ffixed-cr1 +GCC-CFLAGS += -ffixed-cr2 +GCC-CFLAGS += -ffixed-cr3 +GCC-CFLAGS += -ffixed-cr4 +GCC-CFLAGS += -ffixed-cr5 +GCC-CFLAGS += -ffixed-cr6 +GCC-CFLAGS += -ffixed-cr7 + +CFLAGS = +PPE-CFLAGS = $(CFLAGS) -c $(GCC-CFLAGS) $(PIPE-CFLAGS) $(GCC-O-LEVEL) $(INCLUDES) CPPFLAGS = -E -std=c++11 #CPPFLAGS = -E diff --git a/sbe/image/link.cmd b/sbe/image/link.cmd deleted file mode 100644 index 84e821b2..00000000 --- a/sbe/image/link.cmd +++ /dev/null @@ -1,91 +0,0 @@ -// Need to do this so that elf32-powerpc is not modified! -#undef powerpc - -#ifndef INITIAL_STACK_SIZE -#define INITIAL_STACK_SIZE 256 -#endif - -OUTPUT_FORMAT(elf32-powerpc); - -SECTIONS -{ - . = 0xfff00000; - _sbe_base_origin = . - 0; - //////////////////////////////// - // Header - //////////////////////////////// - . = ALIGN(1); _header_origin = .; _header_offset = . - _sbe_base_origin; .header . : { *(.header) } _header_size = . - _header_origin; - - //////////////////////////////// - // FIXED - //////////////////////////////// - . = ALIGN(512); _fixed_origin = .; _fixed_offset = . - _sbe_base_origin; .fixed . : { *(.fixed) } _fixed_size = . - _fixed_origin; - - //////////////////////////////// - // FIXED_TOC - //////////////////////////////// - . = ALIGN(8); _fixed_toc_origin = .; _fixed_toc_offset = . - _sbe_base_origin; .fixed_toc . : { *(.fixed_toc) } _fixed_toc_size = . - _fixed_toc_origin; - - //////////////////////////////// - // IPL_TEXT - //////////////////////////////// - . = ALIGN(4); _ipl_text_origin = .; _ipl_text_offset = . - _sbe_base_origin; .ipl_text . : { *(.ipl_text) } _ipl_text_size = . - _ipl_text_origin; - - //////////////////////////////// - // IPL_DATA - //////////////////////////////// - . = ALIGN(8); _ipl_data_origin = .; _ipl_data_offset = . - _sbe_base_origin; .ipl_data . : { *(.ipl_data) } _ipl_data_size = . - _ipl_data_origin; - - //////////////////////////////// - // TEXT - //////////////////////////////// - . = ALIGN(4); _text_origin = .; _text_offset = . - _sbe_base_origin; .text . : {. = ALIGN(512); *(.vectors) *(.text) *(.eh_frame) } _text_size = . - _text_origin; - - //////////////////////////////// - // DATA - //////////////////////////////// - . = ALIGN(8); _data_origin = .; _data_offset = . - _sbe_base_origin; .data . : { *(.data) *(.comment) *(.rodata*)} _data_size = . - _data_origin; - - //////////////////////////////// - // TOC - //////////////////////////////// - . = ALIGN(4); _toc_origin = .; _toc_offset = . - _sbe_base_origin; .toc . : { *(.toc) } _toc_size = . - _toc_origin; - - //////////////////////////////// - // STRING - //////////////////////////////// - . = ALIGN(1); _strings_origin = .; _strings_offset = . - _sbe_base_origin; .strings . : { *(.strings) } _strings_size = . - _strings_origin; - -// . = ALIGN(8); -// _sbe_base_size = . - _sbe_base_origin; -// _sbe_base_end = . - 0; - - - _RODATA_SECTION_BASE = .; - - - _SDA2_BASE_ = .; - - _RODATA_SECTION_SIZE = . - _RODATA_SECTION_BASE; - - // SDA sections .sdata and .sbss must be adjacent to each - // other. Our SDATA sections are small so we'll use strictly positive - // offsets. - - _SDA_BASE_ = .; - - .sbss . : { *(.sbss) } - .sdata . : { *(.sdata) } - - - _PK_INITIAL_STACK_LIMIT = .; - . = . + INITIAL_STACK_SIZE; - _PK_INITIAL_STACK = . - 1; - - - . = ALIGN(8); - _sbe_base_size = . - _sbe_base_origin; - _sbe_base_end = . - 0; - - -} diff --git a/sbe/image/linksbe.cmd b/sbe/image/linksbe.cmd new file mode 100644 index 00000000..21957f8e --- /dev/null +++ b/sbe/image/linksbe.cmd @@ -0,0 +1,72 @@ + +// Need to do this so that elf32-powerpc is not modified! +#undef powerpc + +#ifndef INITIAL_STACK_SIZE +#define INITIAL_STACK_SIZE 256 +#endif + +OUTPUT_FORMAT(elf32-powerpc); + +MEMORY +{ +// sram : ORIGIN = 0xFFF40000, LENGTH = 0xc0000 + sram : ORIGIN = 0xffff0000, LENGTH = 0x10000 +} + +SECTIONS +{ + . = 0xffff0000; + .text : {. = ALIGN(512); *(.vectors) *(.text)} > sram + + //////////////////////////////// + // Read-only Data + //////////////////////////////// + + . = ALIGN(8); + _RODATA_SECTION_BASE = .; + + // SDA2 constant sections .sdata2 and .sbss2 must be adjacent to each + // other. Our SDATA sections are small so we'll use strictly positive + // offsets. + + _SDA2_BASE_ = .; + .sdata2 . : { *(.sdata2) } > sram + .sbss2 . : { *(.sbss2) } > sram + + // Other read-only data. + + .rodata . : { *(.rodata*) *(.got2) } > sram + + _RODATA_SECTION_SIZE = . - _RODATA_SECTION_BASE; + + //////////////////////////////// + // Read-write Data + //////////////////////////////// + + . = ALIGN(8); + _DATA_SECTION_BASE = .; + + // SDA sections .sdata and .sbss must be adjacent to each + // other. Our SDATA sections are small so we'll use strictly positive + // offsets. + + _SDA_BASE_ = .; + .sdata . : { *(.sdata) } > sram + .sbss . : { *(.sbss) } > sram + + // Other read-write data + // It's not clear why boot.S is generating empty .glink,.iplt + + .rela . : { *(.rela*) } > sram + .rwdata . : { *(.data) *(.bss) } > sram +// .iplt . : { *(.iplt) } > sram + + _PK_INITIAL_STACK_LIMIT = .; + . = . + INITIAL_STACK_SIZE; + _PK_INITIAL_STACK = . - 1; + + . = ALIGN(8); + _sbe_end = . - 0; + +} diff --git a/sbe/image/linkseeprom.cmd b/sbe/image/linkseeprom.cmd new file mode 100644 index 00000000..f127ea8a --- /dev/null +++ b/sbe/image/linkseeprom.cmd @@ -0,0 +1,91 @@ +// Need to do this so that elf32-powerpc is not modified! +#undef powerpc + +#ifndef INITIAL_STACK_SIZE +#define INITIAL_STACK_SIZE 256 +#endif + +OUTPUT_FORMAT(elf32-powerpc); + +SECTIONS +{ + . = 0xfff00000; + _seeprom_origin = . - 0; + //////////////////////////////// + // Header + //////////////////////////////// + . = ALIGN(1); _header_origin = .; _header_offset = . - _seeprom_origin; .header . : { *(.header) } _header_size = . - _header_origin; + + //////////////////////////////// + // FIXED + //////////////////////////////// + . = ALIGN(512); _fixed_origin = .; _fixed_offset = . - _seeprom_origin; .fixed . : { *(.fixed) } _fixed_size = . - _fixed_origin; + + //////////////////////////////// + // FIXED_TOC + //////////////////////////////// + . = ALIGN(8); _fixed_toc_origin = .; _fixed_toc_offset = . - _seeprom_origin; .fixed_toc . : { *(.fixed_toc) } _fixed_toc_size = . - _fixed_toc_origin; + + //////////////////////////////// + // IPL_TEXT + //////////////////////////////// + . = ALIGN(4); _ipl_text_origin = .; _ipl_text_offset = . - _seeprom_origin; .ipl_text . : { *(.ipl_text) } _ipl_text_size = . - _ipl_text_origin; + + //////////////////////////////// + // IPL_DATA + //////////////////////////////// + . = ALIGN(8); _ipl_data_origin = .; _ipl_data_offset = . - _seeprom_origin; .ipl_data . : { *(.ipl_data) } _ipl_data_size = . - _ipl_data_origin; + + //////////////////////////////// + // TEXT + //////////////////////////////// + . = ALIGN(4); _text_origin = .; _text_offset = . - _seeprom_origin; .text . : {. = ALIGN(512); *(.vectors) *(.text) *(.eh_frame) } _text_size = . - _text_origin; + + //////////////////////////////// + // DATA + //////////////////////////////// + . = ALIGN(8); _data_origin = .; _data_offset = . - _seeprom_origin; .data . : { *(.data) *(.comment) *(.rodata*)} _data_size = . - _data_origin; + + //////////////////////////////// + // TOC + //////////////////////////////// + . = ALIGN(4); _toc_origin = .; _toc_offset = . - _seeprom_origin; .toc . : { *(.toc) } _toc_size = . - _toc_origin; + + //////////////////////////////// + // STRING + //////////////////////////////// + . = ALIGN(1); _strings_origin = .; _strings_offset = . - _seeprom_origin; .strings . : { *(.strings) } _strings_size = . - _strings_origin; + +// . = ALIGN(8); +// _seeprom_size = . - _seeprom_origin; +// _seeprom_end = . - 0; + + + _RODATA_SECTION_BASE = .; + + + _SDA2_BASE_ = .; + + _RODATA_SECTION_SIZE = . - _RODATA_SECTION_BASE; + + // SDA sections .sdata and .sbss must be adjacent to each + // other. Our SDATA sections are small so we'll use strictly positive + // offsets. + + _SDA_BASE_ = .; + + .sbss . : { *(.sbss) } + .sdata . : { *(.sdata) } + + + _PK_INITIAL_STACK_LIMIT = .; + . = . + INITIAL_STACK_SIZE; + _PK_INITIAL_STACK = . - 1; + + + . = ALIGN(8); + _seeprom_size = . - _seeprom_origin; + _seeprom_end = . - 0; + + +} diff --git a/sbe/image/topfiles.mk b/sbe/image/topfiles.mk index 79b0ff92..4e378d4f 100644 --- a/sbe/image/topfiles.mk +++ b/sbe/image/topfiles.mk @@ -1,5 +1,5 @@ TOP-C-SOURCES = base_ppe_demo.c -TOP-CPP-SOURCES = +TOP-CPP-SOURCES = TOP-S-SOURCES = base_ppe_header.S TOP-FIXED-HEADERS += $(IMAGE_SRCDIR)/proc_sbe_fixed_perv.H -- cgit v1.2.1