summaryrefslogtreecommitdiffstats
path: root/sbe
diff options
context:
space:
mode:
authorDerk Rembold <rembold@de.ibm.com>2015-06-16 10:47:14 +0200
committerDerk Rembold <rembold@de.ibm.com>2015-06-16 03:52:34 -0500
commit063ea168bca40f9d288980000c3dd74b65433846 (patch)
treeac27d5e3f01b968fc7145b9c53928c1e7e2df182 /sbe
parent73e896d5293c9826824a97f4bd7400f6c48bf6e5 (diff)
downloadtalos-sbe-063ea168bca40f9d288980000c3dd74b65433846.tar.gz
talos-sbe-063ea168bca40f9d288980000c3dd74b65433846.zip
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 <rembold@de.ibm.com> Tested-by: Derk Rembold <rembold@de.ibm.com>
Diffstat (limited to 'sbe')
-rw-r--r--sbe/image/Makefile92
-rw-r--r--sbe/image/base_ppe_demo.c4
-rw-r--r--sbe/image/base_ppe_header.S2
-rw-r--r--sbe/image/img_defs.mk125
-rw-r--r--sbe/image/linksbe.cmd72
-rw-r--r--sbe/image/linkseeprom.cmd (renamed from sbe/image/link.cmd)28
-rw-r--r--sbe/image/topfiles.mk2
7 files changed, 209 insertions, 116 deletions
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/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/link.cmd b/sbe/image/linkseeprom.cmd
index 84e821b2..f127ea8a 100644
--- a/sbe/image/link.cmd
+++ b/sbe/image/linkseeprom.cmd
@@ -10,55 +10,55 @@ OUTPUT_FORMAT(elf32-powerpc);
SECTIONS
{
. = 0xfff00000;
- _sbe_base_origin = . - 0;
+ _seeprom_origin = . - 0;
////////////////////////////////
// Header
////////////////////////////////
- . = ALIGN(1); _header_origin = .; _header_offset = . - _sbe_base_origin; .header . : { *(.header) } _header_size = . - _header_origin;
+ . = ALIGN(1); _header_origin = .; _header_offset = . - _seeprom_origin; .header . : { *(.header) } _header_size = . - _header_origin;
////////////////////////////////
// FIXED
////////////////////////////////
- . = ALIGN(512); _fixed_origin = .; _fixed_offset = . - _sbe_base_origin; .fixed . : { *(.fixed) } _fixed_size = . - _fixed_origin;
+ . = ALIGN(512); _fixed_origin = .; _fixed_offset = . - _seeprom_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;
+ . = 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 = . - _sbe_base_origin; .ipl_text . : { *(.ipl_text) } _ipl_text_size = . - _ipl_text_origin;
+ . = 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 = . - _sbe_base_origin; .ipl_data . : { *(.ipl_data) } _ipl_data_size = . - _ipl_data_origin;
+ . = 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 = . - _sbe_base_origin; .text . : {. = ALIGN(512); *(.vectors) *(.text) *(.eh_frame) } _text_size = . - _text_origin;
+ . = 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 = . - _sbe_base_origin; .data . : { *(.data) *(.comment) *(.rodata*)} _data_size = . - _data_origin;
+ . = ALIGN(8); _data_origin = .; _data_offset = . - _seeprom_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;
+ . = ALIGN(4); _toc_origin = .; _toc_offset = . - _seeprom_origin; .toc . : { *(.toc) } _toc_size = . - _toc_origin;
////////////////////////////////
// STRING
////////////////////////////////
- . = ALIGN(1); _strings_origin = .; _strings_offset = . - _sbe_base_origin; .strings . : { *(.strings) } _strings_size = . - _strings_origin;
+ . = ALIGN(1); _strings_origin = .; _strings_offset = . - _seeprom_origin; .strings . : { *(.strings) } _strings_size = . - _strings_origin;
// . = ALIGN(8);
-// _sbe_base_size = . - _sbe_base_origin;
-// _sbe_base_end = . - 0;
+// _seeprom_size = . - _seeprom_origin;
+// _seeprom_end = . - 0;
_RODATA_SECTION_BASE = .;
@@ -84,8 +84,8 @@ SECTIONS
. = ALIGN(8);
- _sbe_base_size = . - _sbe_base_origin;
- _sbe_base_end = . - 0;
+ _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
OpenPOWER on IntegriCloud