summaryrefslogtreecommitdiffstats
path: root/src/occ_gpe1
diff options
context:
space:
mode:
authorWilliam Bryan <wilbryan@us.ibm.com>2016-07-26 15:02:15 -0500
committerWilliam A. Bryan <wilbryan@us.ibm.com>2016-07-29 15:05:27 -0400
commit9ad0d6f666fcd2392a5d6d3634df82264a5729eb (patch)
tree97a99d6aa273436c55a30ce5db064f59b141b0c8 /src/occ_gpe1
parenta545aa59ce8788c4bfe6fd9bb2f64413bff47189 (diff)
downloadtalos-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/Makefile14
-rw-r--r--src/occ_gpe1/img_defs.mk95
-rw-r--r--src/occ_gpe1/link.cmd14
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 = .;
OpenPOWER on IntegriCloud