diff options
author | William Bryan <wilbryan@us.ibm.com> | 2016-07-26 15:02:15 -0500 |
---|---|---|
committer | William A. Bryan <wilbryan@us.ibm.com> | 2016-07-29 15:05:27 -0400 |
commit | 9ad0d6f666fcd2392a5d6d3634df82264a5729eb (patch) | |
tree | 97a99d6aa273436c55a30ce5db064f59b141b0c8 /src/occ_gpe1 | |
parent | a545aa59ce8788c4bfe6fd9bb2f64413bff47189 (diff) | |
download | talos-occ-9ad0d6f666fcd2392a5d6d3634df82264a5729eb.tar.gz talos-occ-9ad0d6f666fcd2392a5d6d3634df82264a5729eb.zip |
Delete unused files, update PK, and use new compilers
Change-Id: I9e4951a2cebd204d1ea752c63e3f2b532ad3a2db
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/27465
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Martha Broyles <mbroyles@us.ibm.com>
Reviewed-by: Wael El-Essawy <welessa@us.ibm.com>
Diffstat (limited to 'src/occ_gpe1')
-rw-r--r-- | src/occ_gpe1/Makefile | 14 | ||||
-rw-r--r-- | src/occ_gpe1/img_defs.mk | 95 | ||||
-rw-r--r-- | src/occ_gpe1/link.cmd | 14 |
3 files changed, 77 insertions, 46 deletions
diff --git a/src/occ_gpe1/Makefile b/src/occ_gpe1/Makefile index 3479842..30aad60 100644 --- a/src/occ_gpe1/Makefile +++ b/src/occ_gpe1/Makefile @@ -22,8 +22,6 @@ # permissions and limitations under the License. # # IBM_PROLOG_END_TAG -#remove this once we have a real compiler -export P2P_ENABLE = 1 #Pull in the definitions that affect all makefiles for this image include img_defs.mk @@ -40,7 +38,7 @@ OBJS := $(addprefix $(OBJDIR)/, $(TOP_OBJECTS)) PKLIB := $(OBJDIR)/pk/libpk.a COMMONLIB := $(OBJDIR)/commonlib/libcommon.a OCCLIB := $(OBJDIR)/occlib/libocc.a -LIB_DIRS = -L$(OBJDIR)/pk -L$(OBJDIR)/commonlib -L$(OBJDIR)/occlib +LIB_DIRS += -L$(OBJDIR)/pk -L$(OBJDIR)/commonlib -L$(OBJDIR)/occlib LINK_OBJS = $(OBJS) $(PKLIB) $(COMMONLIB) $(OCCLIB) LINK_SCRIPT = $(addprefix $(OBJDIR)/, linkscript) @@ -51,6 +49,8 @@ LINK_OBJS += $(P2PLIB) endif #default target is to make a binary application image +all: $(PPETOOLS_OBJDIR)/ppetracepp $(OBJDIR)/$(IMAGE_NAME).bin $(OBJDIR)/$(IMAGE_NAME).dis + #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 @@ -58,7 +58,7 @@ $(OBJDIR)/$(IMAGE_NAME).bin $(OBJDIR)/$(IMAGE_NAME).dis: $(OBJDIR)/$(IMAGE_NAME) #create a linked ELF executable $(OBJDIR)/$(IMAGE_NAME).out: $(LINK_OBJS) $(LINK_SCRIPT) - $(LD) -e __system_reset -N -T$(LINK_SCRIPT) -Map $(OBJDIR)/$(IMAGE_NAME).map -Bstatic -o $(OBJDIR)/$(IMAGE_NAME).out $(LIB_DIRS) $(OBJS) -locc -lcommon -lpk -lp2p + $(LD) -e __system_reset -N -T$(LINK_SCRIPT) -Map $(OBJDIR)/$(IMAGE_NAME).map -Bstatic -o $(OBJDIR)/$(IMAGE_NAME).out $(LIB_DIRS) $(OBJS) -locc -lcommon -lpk -leabi -lmath -lc #pass the link command file through the C preprocessor to evaluate macros and remove comments $(LINK_SCRIPT): link.cmd @@ -70,6 +70,12 @@ $(LINK_OBJS) $(OBJS) $(OBJS:.o=.d): | $(OBJDIR) $(OBJDIR): mkdir -p $(OBJDIR) +$(PPETOOLS_OBJDIR)/ppetracepp: $(PPETOOLS_OBJDIR) + g++ -m32 -O3 -w -g -I$(PPETRACEPP_DIR)/ $(PPETRACEPP_DIR)/ppetracepp.C -o $(PPETOOLS_OBJDIR)/ppetracepp + +$(PPETOOLS_OBJDIR): + mkdir -p $(PPETOOLS_OBJDIR) + .PHONY: clean $(PKLIB) $(P2PLIB) #Build macro-specific kernel code diff --git a/src/occ_gpe1/img_defs.mk b/src/occ_gpe1/img_defs.mk index 51a027c..63a226c 100644 --- a/src/occ_gpe1/img_defs.mk +++ b/src/occ_gpe1/img_defs.mk @@ -86,6 +86,10 @@ endif export IMG_OBJDIR = $(BASE_OBJDIR)/$(IMAGE_NAME) +ifndef PPETOOLS_OBJDIR +export PPETOOLS_OBJDIR = $(abspath ../../obj/ppetools) +endif + ifndef PK_SRCDIR export PK_SRCDIR = $(abspath ../ppe/pk) endif @@ -94,12 +98,34 @@ ifndef COMMONLIB_SRCDIR export COMMONLIB_SRCDIR = $(abspath ../lib/common) endif +ifndef OCC_COMMON_TYPES_DIR +export OCC_COMMON_TYPES_DIR = $(abspath ../occ_405/incl/) +endif + ifndef OCCLIB_SRCDIR export OCCLIB_SRCDIR = $(abspath ../lib/occlib) endif +ifndef CTEPATH +$(warning The CTEPATH variable is not defined; Defaulting to /afs/awd) +export CTEPATH = /afs/awd/projects/cte +endif + +ifdef P2P_ENABLE +# TODO +else +PPE_TOOL_PATH = $(CTEPATH)/tools/ppetools/prod + ifndef GCC-TOOL-PREFIX -GCC-TOOL-PREFIX = $(CTEPATH)/tools/ppcgcc/prod/bin/powerpc-linux- +GCC-TOOL-PREFIX = $(PPE_TOOL_PATH)/bin/powerpc-eabi- +endif + +# libs needed by compiler +LD_LIBRARY_PATH += :$(PPE_TOOL_PATH)/lib: +export LD_LIBRARY_PATH + +# libs needed by compiled code +LIB_DIRS += -L$(PPE_TOOL_PATH)/libgcc endif ifndef BINUTILS-TOOL-PREFIX @@ -107,7 +133,7 @@ BINUTILS-TOOL-PREFIX = $(CTEPATH)/tools/ppetools/prod/powerpc-eabi/bin/ endif ifndef P2P_SRCDIR -export P2P_SRCDIR = $(abspath ../ppe/tools/PowerPCtoPPE) +export P2P_SRCDIR $(abspath ../ppe/tools/PowerPCtoPPE) endif ifndef PPETRACEPP_DIR @@ -126,27 +152,23 @@ OBJDIR = $(IMG_OBJDIR)$(SUB_OBJDIR) CC_ASM = $(GCC-TOOL-PREFIX)gcc -TCC = $(PPETRACEPP_DIR)/ppetracepp $(GCC-TOOL-PREFIX)gcc +TCC = $(PPETOOLS_OBJDIR)/ppetracepp $(GCC-TOOL-PREFIX)gcc CC = $(GCC-TOOL-PREFIX)gcc AS = $(BINUTILS-TOOL-PREFIX)as AR = $(BINUTILS-TOOL-PREFIX)ar LD = $(BINUTILS-TOOL-PREFIX)ld OBJDUMP = $(BINUTILS-TOOL-PREFIX)objdump OBJCOPY = $(BINUTILS-TOOL-PREFIX)objcopy -TCPP = $(PPETRACEPP_DIR)/ppetracepp $(GCC-TOOL-PREFIX)gcc +TCPP = $(PPETOOLS_OBJDIR)/ppetracepp $(GCC-TOOL-PREFIX)gcc THASH = $(PPETRACEPP_DIR)/tracehash.pl CPP = $(GCC-TOOL-PREFIX)gcc +TCXX = $(PPETRACEPP_DIR)/ppetracepp $(GCC-TOOL-PREFIX)g++ +CXX = $(GCC-TOOL-PREFIX)g++ ifdef P2P_ENABLE PCP = $(P2P_SRCDIR)/ppc-ppe-pcp.py endif - -ifndef CTEPATH -$(warning The CTEPATH variable is not defined; Defaulting to /afs/awd) -export CTEPATH = /afs/awd/projects/cte -endif - ifeq "$(PK_TIMER_SUPPORT)" "" PK_TIMER_SUPPORT = 1 endif @@ -167,8 +189,11 @@ endif ifndef GCC-O-LEVEL -#GCC-O-LEVEL = -Os +ifdef P2P_ENABLE GCC-O-LEVEL = -O -g +else +GCC-O-LEVEL = -Os +endif endif GCC-DEFS += -DIMAGE_NAME=$(IMAGE_NAME) @@ -185,8 +210,10 @@ DEFS += $(GCC-DEFS) INCLUDES += $(IMG_INCLUDES) $(GLOBAL_INCLUDES) \ -I$(PK_SRCDIR)/kernel -I$(PK_SRCDIR)/ppe42 -I$(PK_SRCDIR)/trace \ -I$(PK_SRCDIR)/$(PPE_TYPE) -I$(PK_SRCDIR)/../../include \ - -I$(PK_SRCDIR)/../../include/registers -I$(OCCLIB_SRCDIR) -I$(COMMONLIB_SRCDIR) + -I$(PK_SRCDIR)/../../include/registers -I$(OCCLIB_SRCDIR) -I$(COMMONLIB_SRCDIR) \ + -I$(OCC_COMMON_TYPES_DIR) +ifdef P2P_ENABLE PIPE-CFLAGS = -pipe -Wa,-m405 GCC-CFLAGS += -Wall -fsigned-char -msoft-float \ @@ -201,7 +228,25 @@ GCC-CFLAGS += -Wall -fsigned-char -msoft-float \ -ffixed-cr1 -ffixed-cr2 -ffixed-cr3 -ffixed-cr4 \ -ffixed-cr5 -ffixed-cr6 -ffixed-cr7 -Werror -CFLAGS = -c $(GCC-CFLAGS) $(PIPE-CFLAGS) $(GCC-O-LEVEL) $(INCLUDES) +else +PIPE-CFLAGS = -pipe + +GCC-CFLAGS += -g -gpubnames -gdwarf-3 +GCC-CFLAGS += -Wall -Werror +GCC-CFLAGS += -fsigned-char +GCC-CFLAGS += -ffunction-sections +GCC-CFLAGS += -fdata-sections +GCC-CFLAGS += -msoft-float +GCC-CFLAGS += -mcpu=ppe42 +GCC-CFLAGS += -meabi +GCC-CFLAGS += -ffreestanding +GCC-CFLAGS += -fno-common +GCC-CFLAGS += -fno-inline-functions-called-once +endif + +CFLAGS = -c $(GCC-CFLAGS) $(PIPE-CFLAGS) $(GCC-O-LEVEL) $(INCLUDES) + +CXXFLAGS = -nostdinc++ -fno-rtti -fno-exceptions $(CFLAGS) CPPFLAGS = -E @@ -209,8 +254,8 @@ ASFLAGS = -mppe42 ifdef P2P_ENABLE #use this to disable sda optimizations -#PCP-FLAG = - +#PCP-FLAG = +else #use this to enable sda optimizations PCP-FLAG = -e endif @@ -244,23 +289,3 @@ $(OBJDIR)/%.o: $(OBJDIR)/%.es $(AS) $(ASFLAGS) -o $@ $< endif - -# From the GNU 'Make' manual - these scripts uses the preprocessor to -# create dependency files (*.d), then mungs them slightly to make them -# work as Make targets. The *.d files are include-ed in the -# subdirectory Makefiles. - -#$(OBJDIR)/%.d: %.c -# @set -e; rm -f $@; \ -# echo -n "$(OBJDIR)/" > $@.$$$$; \ -# $(CC_ASM) -MM $(INCLUDES) $(CPPFLAGS) $(DEFS) $< >> $@.$$$$; \ -# sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \ -# rm -f $@.$$$$ - -#$(OBJDIR)/%.d: %.S -# @set -e; rm -f $@; \ -# echo -n "$(OBJDIR)/" > $@.$$$$; \ -# $(CC_ASM) -MM $(INCLUDES) $(CPPFLAGS) $(DEFS) $< >> $@.$$$$; \ -# sed 's,\($*\)\.o[ :]*,\1.o $@ : ,g' < $@.$$$$ > $@; \ -# rm -f $@.$$$$ - diff --git a/src/occ_gpe1/link.cmd b/src/occ_gpe1/link.cmd index cd243ec..ae41e28 100644 --- a/src/occ_gpe1/link.cmd +++ b/src/occ_gpe1/link.cmd @@ -70,7 +70,7 @@ SECTIONS //////////////////////////////// // All non-vector code goes here //////////////////////////////// - .text : { *(.text) . = ALIGN(128); } > sram + .text : { *(.text*) . = ALIGN(128); } > sram //////////////////////////////// // Read-only Data @@ -84,12 +84,12 @@ SECTIONS // offsets. _SDA2_BASE_ = .; - .sdata2 . : { *(.sdata2) . = ALIGN(128); } > sram - .sbss2 . : { *(.sbss2) . = ALIGN(128); } > sram + .sdata2 . : { *(.sdata2*) . = ALIGN(128); } > sram + .sbss2 . : { *(.sbss2*) . = ALIGN(128); } > sram // Other read-only data. - .rodata . : { *(.rodata*) *(.got2) . = ALIGN(128); } > sram + .rodata . : { *(.rodata*) *(.got2*) . = ALIGN(128); } > sram _RODATA_SECTION_SIZE = . - _RODATA_SECTION_BASE; @@ -105,14 +105,14 @@ SECTIONS // offsets. _SDA_BASE_ = .; - .sdata . : { *(.sdata) . = ALIGN(128); } > sram - .sbss . : { *(.sbss) . = ALIGN(128); } > sram + .sdata . : { *(.sdata*) . = ALIGN(128); } > sram + .sbss . : { *(.sbss*) . = ALIGN(128); } > sram // Other read-write data // It's not clear why boot.S is generating empty .glink,.iplt .rela . : { *(.rela*) . = ALIGN(128); } > sram - .rwdata . : { *(.data) *(.bss) . = ALIGN(128); } > sram + .rwdata . : { *(.data*) *(.bss*) . = ALIGN(128); } > sram // .iplt . : { *(.iplt) . = ALIGN(128); } > sram _PK_INITIAL_STACK_LIMIT = .; |