summaryrefslogtreecommitdiffstats
path: root/sbe
diff options
context:
space:
mode:
authorGreg Still <stillgs@us.ibm.com>2015-07-20 07:27:48 -0500
committerAmit J. Tendolkar <amit.tendolkar@in.ibm.com>2015-08-19 11:07:29 -0500
commitf3c18a2e5d3af5d66100b502091f636d219c3655 (patch)
treea5467166a2032e474059d1b3fcb4658d6c29f131 /sbe
parent316f046100d70f6d8f0e1eda0174f49a797c1264 (diff)
downloadtalos-sbe-f3c18a2e5d3af5d66100b502091f636d219c3655.tar.gz
talos-sbe-f3c18a2e5d3af5d66100b502091f636d219c3655.zip
Honor PPE partial good attributes to intialize targets
- Addressed internal Gerrit comments - Addressed compilation issues with real procedures - Fix image tool "clean" function (updated) (deals with missing tools/image/bin) - make "clean" fixup - Get vector of attribute values properly into the image - Fix FAPI_ATTR_* signature from target pointer to target reference - ATTR_CHIP_UNIT_POS support for non-core/cache chiplets - Require FAPI_ATTR_GET/SET invocation to be in the form of fapi2::ATTR_.... - Fix tools bin directory creation issue - Address plat_PervPGTargets error case - Add FAPI_EXEC_HW support to deal with recently merged functions - Update libcommonerrors.mk to deal with recently merged compilation issue Change-Id: I31485ff05731e7fbaa0453d8ed9985b9ca56b8b3 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/19342 Tested-by: Jenkins Server Reviewed-by: Gregory S. Still <stillgs@us.ibm.com> Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com> Reviewed-by: Amit J. Tendolkar <amit.tendolkar@in.ibm.com>
Diffstat (limited to 'sbe')
-rw-r--r--sbe/image/Makefile19
-rw-r--r--sbe/image/img_defs.mk5
-rw-r--r--sbe/image/sbe_common.H216
-rw-r--r--sbe/image/sbe_main.C95
-rw-r--r--sbe/image/sbe_xip_image.c41
-rw-r--r--sbe/image/sbe_xip_image.h40
-rw-r--r--sbe/image/topfiles.mk4
7 files changed, 266 insertions, 154 deletions
diff --git a/sbe/image/Makefile b/sbe/image/Makefile
index 1bc7aa8c..6d54fa35 100644
--- a/sbe/image/Makefile
+++ b/sbe/image/Makefile
@@ -1,4 +1,5 @@
+
#remove this once we have a real compiler
export P2P_ENABLE = 1
@@ -102,7 +103,7 @@ LINK_SCRIPT_LOADER = $(addprefix $(OBJDIR)/, linkscriptloader)
$(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_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
@@ -131,7 +132,7 @@ $(LINK_SCRIPT_SBE): linksbe.cmd
$(OBJDIR)/$(IMAGE_LOADER_NAME).bin $(OBJDIR)/$(IMAGE_LOADER_NAME).dis: $(OBJDIR)/$(IMAGE_LOADER_NAME).out
$(OBJCOPY) -O binary $< $(OBJDIR)/$(IMAGE_LOADER_NAME).bin --pad-to 0x`/usr/bin/nm $(OBJDIR)/$(IMAGE_LOADER_NAME).out | grep "A _loader_end" | cut -d " " -f 1`
$(OBJDUMP) -S $< > $(OBJDIR)/$(IMAGE_LOADER_NAME).dis
-
+
#create a linked ELF executable
$(OBJDIR)/$(IMAGE_LOADER_NAME).out: $(OBJDIR)/base_loader.o $(LINK_OBJS) $(LINK_SCRIPT_LOADER)
$(LD) -e base_loader -T$(LINK_SCRIPT_LOADER) -Map $(OBJDIR)/$(IMAGE_LOADER_NAME).map -Bstatic -o $(OBJDIR)/$(IMAGE_LOADER_NAME).out $(LIB_DIRS) $(OBJDIR)/base_loader.o --start-group $(SBEFWLIB) $(LLIBS) --end-group
@@ -144,13 +145,16 @@ $(LINK_SCRIPT_LOADER): linkloader.cmd
all: $(OBJDIR)/$(IMAGE_SEEPROM_NAME).bin $(OBJDIR)/$(IMAGE_SBE_NAME).bin $(OBJDIR)/$(IMAGE_LOADER_NAME).bin $(SBE_TOOLS) normalize defaultset $(OBJDIR)/fixed.bin appendbase appendloader
+ $(TOOLS_IMAGE_DIR)/sbe_xip_tool $(OBJDIR)/$(IMAGE_SEEPROM_NAME).bin report > $(OBJDIR)/$(IMAGE_SEEPROM_NAME).rpt
generic: $(OBJDIR)/$(IMAGE_SEEPROM_NAME).bin $(SBE_TOOLS) normalize defaultset $(OBJDIR)/fixed.bin
+ $(TOOLS_IMAGE_DIR)/sbe_xip_tool $(OBJDIR)/$(IMAGE_SEEPROM_NAME).bin report > $(OBJDIR)/$(IMAGE_SEEPROM_NAME).rpt
#Create an obj directory if needed
$(LINK_OBJS) $(OBJS) $(OBJS:.o=.d) $(OBJDIR)/base_sbe_fixed.o $(OBJDIR)/base_sbe_fixed.d: | $(OBJDIR)
ATTRFILES += $(IMPORT_XML_DIR)/attribute_info/perv_attributes.xml
+ATTRFILES += $(IMPORT_XML_DIR)/attribute_info/pervasive_attributes.xml
ATTRFILES += $(IMPORT_XML_DIR)/attribute_info/proc_attributes.xml
ATTRFILES += $(IMPORT_XML_DIR)/attribute_info/ex_attributes.xml
ATTRFILES += $(IMPORT_XML_DIR)/attribute_info/eq_attributes.xml
@@ -285,7 +289,7 @@ tracehash:
clean:
rm -fr $(OBJDIR)
rm -f $(TOP-FIXED-HEADERS)
- rm -fr $(TOOLS_IMAGE_DIR)/bin/*
+ $(MAKE) -C $(TOOLS_IMAGE_DIR) -f Makefile clean
rm -f *.dump
rm -f hwp_return_codes.H hwp_error_info.H hwp_ffdc_classes.H collect_reg_ffdc.C set_sbe_error.H
@@ -295,14 +299,17 @@ dump:
.PHONY : run_spgpe run_pmgpe
# load and run the SBE SeeProm image in a GPE simics environment
-run_spgpe: $(OBJDIR)/$(IMAGE_SEEPROM_NAME).out
+#run_spgpe: $(OBJDIR)/$(IMAGE_SEEPROM_NAME).out
+run_spgpe: generic
$(SIMICS_WS)/simics \
- -e '$$occ_gpe0_binary_to_load=$(OBJDIR)/$(IMAGE_SEEPROM_NAME).out' modelsetup.simics
+ -e '$$occ_gpe0_binary_to_load=$(OBJDIR)/$(IMAGE_SEEPROM_NAME).bin;$$occ_gpe0_sym_tbl_file=$(OBJDIR)/$(IMAGE_SEEPROM_NAME).out' \
+ modelsetup.simics
# load and run the SBE PibMem image in a GPE simics environment
run_pmgpe: $(OBJDIR)/$(IMAGE_NAME).out
$(SIMICS_WS)/simics \
- -e '$$occ_gpe0_binary_to_load=$(OBJDIR)/$(IMAGE_SBE_NAME).out' modelsetup.simics
+ -e '$$occ_gpe0_binary_to_load=$(OBJDIR)/$(IMAGE_SBE_NAME).bin;$$occ_gpe0_binary_to_load=$(OBJDIR)/$(IMAGE_SBE_NAME).bin' \
+ modelsetup.simics
diff --git a/sbe/image/img_defs.mk b/sbe/image/img_defs.mk
index 522562ad..c1214c80 100644
--- a/sbe/image/img_defs.mk
+++ b/sbe/image/img_defs.mk
@@ -191,7 +191,10 @@ GCC-DEFS += -D__PK__=1
GCC-DEFS += -D__SBE__=1
GCC-DEFS += -D__PPE__=1
GCC-DEFS += -DFAPI2_NO_FFDC=1
-GCC-DEFS += -DPK_TRACE_SZ=512
+# use the default settings in the code unless a size is defined
+ifdef PK_TRACE_SZ
+GCC-DEFS += -DPK_TRACE_SZ=$(PK_TRACE_SZ)
+endif
DEFS += $(GCC-DEFS)
export LD_LIBRARY_PATH = /afs/awd.austin.ibm.com/proj/p3/cte/tools/gcc405lin/vol1/usr/lib
diff --git a/sbe/image/sbe_common.H b/sbe/image/sbe_common.H
index db7c114f..4e48339b 100644
--- a/sbe/image/sbe_common.H
+++ b/sbe/image/sbe_common.H
@@ -38,8 +38,8 @@
.rept ((\tnumber)*(\elements))
.byte 0
.endr
-
- .xip_toc \symbol, SBE_XIP_UINT8, \symbol, (\elements)
+
+ .xip_toc \symbol, SBE_XIP_UINT8, \symbol, ((\tnumber)*(\elements))
.pushsection .fixed_toc
.space 8
@@ -53,8 +53,8 @@
.rept ((\tnumber)*(\elements))
.byte 0
.endr
-
- .xip_toc \symbol, SBE_XIP_INT8, \symbol, (\elements)
+
+ .xip_toc \symbol, SBE_XIP_INT8, \symbol, ((\tnumber)*(\elements))
.pushsection .fixed_toc
.space 8
@@ -68,10 +68,10 @@
\symbol\():
.rept ((\tnumber)*(\elements))
- .long 0
+ .byte 0,0
.endr
-
- .xip_toc \symbol, SBE_XIP_UINT16, \symbol, (\elements)
+
+ .xip_toc \symbol, SBE_XIP_UINT16, \symbol, ((\tnumber)*(\elements))
.pushsection .fixed_toc
.space 8
@@ -85,10 +85,10 @@
\symbol\():
.rept ((\tnumber)*(\elements))
- .long 0
+ .byte 0,0
.endr
-
- .xip_toc \symbol, SBE_XIP_INT16, \symbol, (\elements)
+
+ .xip_toc \symbol, SBE_XIP_INT16, \symbol, ((\tnumber)*(\elements))
.pushsection .fixed_toc
.space 8
@@ -104,8 +104,8 @@
.rept ((\tnumber)*(\elements))
.long 0
.endr
-
- .xip_toc \symbol, SBE_XIP_UINT32, \symbol, (\elements)
+
+ .xip_toc \symbol, SBE_XIP_UINT32, \symbol, ((\tnumber)*(\elements))
.pushsection .fixed_toc
.space 8
@@ -121,8 +121,8 @@
.rept ((\tnumber)*(\elements))
.long 0
.endr
-
- .xip_toc \symbol, SBE_XIP_INT32, \symbol, (\elements)
+
+ .xip_toc \symbol, SBE_XIP_INT32, \symbol, ((\tnumber)*(\elements))
.pushsection .fixed_toc
.space 8
@@ -137,8 +137,8 @@
.rept ((\tnumber)*(\elements))
.quad 0
.endr
-
- .xip_toc \symbol, SBE_XIP_UINT64, \symbol, (\elements)
+
+ .xip_toc \symbol, SBE_XIP_UINT64, \symbol, ((\tnumber)*(\elements))
.pushsection .fixed_toc
.space 8
@@ -153,8 +153,8 @@
.rept ((\tnumber)*(\elements))
.quad 0
.endr
-
- .xip_toc \symbol, SBE_XIP_INT64, \symbol, (\elements)
+
+ .xip_toc \symbol, SBE_XIP_INT64, \symbol, ((\tnumber)*(\elements))
.pushsection .fixed_toc
.space 8
@@ -166,7 +166,7 @@
.global \symbol
\symbol\():
.quadia (\space), (\address)
-
+
.xip_toc \symbol, SBE_XIP_UINT64, \symbol
.pushsection .fixed_toc
@@ -201,79 +201,79 @@
proc_sbe_fixed_int64 symbol
#define PROC_SBE_FIXED_UINT8_VECTOR(symbol, elements) \
- proc_sbe_fixed_uint8 symbol, elements
+ proc_sbe_fixed_uint8 symbol, 1, elements
#define PROC_SBE_FIXED_INT8_VECTOR(symbol, elements) \
- proc_sbe_fixed_int8 symbol, elements
-
+ proc_sbe_fixed_int8 symbol, 1, elements
+
#define PROC_SBE_FIXED_UINT16_VECTOR(symbol, elements) \
- proc_sbe_fixed_uint16 symbol, elements
+ proc_sbe_fixed_uint16 symbol, 1, elements
#define PROC_SBE_FIXED_INT16_VECTOR(symbol, elements) \
- proc_sbe_fixed_int16 symbol, elements
-
+ proc_sbe_fixed_int16 symbol, 1, elements
+
#define PROC_SBE_FIXED_UINT32_VECTOR(symbol, elements) \
- proc_sbe_fixed_uint32 symbol, elements
+ proc_sbe_fixed_uint32 symbol, 1, elements
#define PROC_SBE_FIXED_INT32_VECTOR(symbol, elements) \
- proc_sbe_fixed_int32 symbol, elements
+ proc_sbe_fixed_int32 symbol, 1, elements
#define PROC_SBE_FIXED_UINT64_VECTOR(symbol, elements) \
- proc_sbe_fixed_uint64 symbol, elements
+ proc_sbe_fixed_uint64 symbol, 1, elements
#define PROC_SBE_FIXED_INT64_VECTOR(symbol, elements) \
- proc_sbe_fixed_int64 symbol, elements
+ proc_sbe_fixed_int64 symbol, 1, elements
#define PROC_SBE_FIXED_UINT8_VECTOR_2(symbol, dim1, dim2 ) \
- proc_sbe_fixed_uint8 symbol, dim1 * dim2
+ proc_sbe_fixed_uint8 symbol, 1, dim1 * dim2
#define PROC_SBE_FIXED_INT8_VECTOR_2(symbol, dim1, dim2 ) \
- proc_sbe_fixed_int8 symbol, dim1 * dim2
+ proc_sbe_fixed_int8 symbol, 1, dim1 * dim2
#define PROC_SBE_FIXED_UINT16_VECTOR_2(symbol, dim1, dim2 ) \
- proc_sbe_fixed_uint16 symbol, dim1 * dim2
+ proc_sbe_fixed_uint16 symbol, 1, dim1 * dim2
#define PROC_SBE_FIXED_INT16_VECTOR_2(symbol, dim1, dim2 ) \
- proc_sbe_fixed_int16 symbol, dim1 * dim2
+ proc_sbe_fixed_int16 symbol, 1, dim1 * dim2
#define PROC_SBE_FIXED_UINT32_VECTOR_2(symbol, dim1, dim2 ) \
- proc_sbe_fixed_uint32 symbol, dim1 * dim2
+ proc_sbe_fixed_uint32 symbol, 1, dim1 * dim2
#define PROC_SBE_FIXED_INT32_VECTOR_2(symbol, dim1, dim2 ) \
- proc_sbe_fixed_int32 symbol, dim1 * dim2
-
+ proc_sbe_fixed_int32 symbol, 1, dim1 * dim2
+
#define PROC_SBE_FIXED_UINT64_VECTOR_2(symbol, dim1, dim2 ) \
- proc_sbe_fixed_uint64 symbol, dim1 * dim2
+ proc_sbe_fixed_uint64 symbol, 1, dim1 * dim2
#define PROC_SBE_FIXED_INT64_VECTOR_2(symbol, dim1, dim2 ) \
- proc_sbe_fixed_int64 symbol, dim1 * dim2
+ proc_sbe_fixed_int64 symbol, 1, dim1 * dim2
#define PROC_SBE_FIXED_UINT8_VECTOR_3(symbol, dim1, dim2, dim3 ) \
- proc_sbe_fixed_uint8 symbol, dim1 * dim2 * dim3
-
+ proc_sbe_fixed_uint8 symbol, 1, dim1 * dim2 * dim3
+
#define PROC_SBE_FIXED_INT8_VECTOR_3(symbol, dim1, dim2, dim3 ) \
- proc_sbe_fixed_uint8 symbol, dim1 * dim2 * dim3
+ proc_sbe_fixed_uint8 symbol, 1, dim1 * dim2 * dim3
#define PROC_SBE_FIXED_UINT16_VECTOR_3(symbol, dim1, dim2, dim3 ) \
- proc_sbe_fixed_uint16 symbol, dim1 * dim2 * dim3
-
+ proc_sbe_fixed_uint16 symbol, 1, dim1 * dim2 * dim3
+
#define PROC_SBE_FIXED_INT16_VECTOR_3(symbol, dim1, dim2, dim3 ) \
- proc_sbe_fixed_uint16 symbol, dim1 * dim2 * dim3
+ proc_sbe_fixed_uint16 symbol, 1, dim1 * dim2 * dim3
#define PROC_SBE_FIXED_UINT32_VECTOR_3(symbol, dim1, dim2, dim3 ) \
- proc_sbe_fixed_uint32 symbol, dim1 * dim2 * dim3
-
+ proc_sbe_fixed_uint32 symbol, 1, dim1 * dim2 * dim3
+
#define PROC_SBE_FIXED_INT32_VECTOR_3(symbol, dim1, dim2, dim3 ) \
- proc_sbe_fixed_uint32 symbol, dim1 * dim2 * dim3
+ proc_sbe_fixed_uint32 symbol, 1, dim1 * dim2 * dim3
#define PROC_SBE_FIXED_UINT64_VECTOR_3(symbol, dim1, dim2, dim3 ) \
- proc_sbe_fixed_uint64 symbol, dim1 * dim2 * dim3
-
+ proc_sbe_fixed_uint64 symbol, 1, dim1 * dim2 * dim3
+
#define PROC_SBE_FIXED_INT64_VECTOR_3(symbol, dim1, dim2, dim3 ) \
- proc_sbe_fixed_uint64 symbol, dim1 * dim2 * dim3
-
+ proc_sbe_fixed_uint64 symbol, 1, dim1 * dim2 * dim3
+
// Non-Chip Target Attributes
-
+
#define PROC_SBE_FIXED_TARGET_UINT8(symbol, tnumber) \
proc_sbe_fixed_uint8 symbol, tnumber
@@ -299,80 +299,80 @@
proc_sbe_fixed_int64 symbol, tnumber
#define PROC_SBE_FIXED_TARGET_UINT8_VECTOR(symbol, tnumber, elements) \
- proc_sbe_fixed_uint8 symbol, tnumber * elements
+ proc_sbe_fixed_uint8 symbol, tnumber, elements
#define PROC_SBE_FIXED_TARGET_INT8_VECTOR(symbol, tnumber, elements) \
- proc_sbe_fixed_int8 symbol, tnumber * elements
-
+ proc_sbe_fixed_int8 symbol, tnumber, elements
+
#define PROC_SBE_FIXED_TARGET_UINT16_VECTOR(symbol, tnumber, elements) \
- proc_sbe_fixed_uint16 symbol, tnumber * elements
+ proc_sbe_fixed_uint16 symbol, tnumber, elements
#define PROC_SBE_FIXED_TARGET_INT16_VECTOR(symbol, tnumber, elements) \
- proc_sbe_fixed_int16 symbol, tnumber * elements
-
+ proc_sbe_fixed_int16 symbol, tnumber, elements
+
#define PROC_SBE_FIXED_TARGET_UINT32_VECTOR(symbol, tnumber, elements) \
- proc_sbe_fixed_uint32 symbol, tnumber * elements
+ proc_sbe_fixed_uint32 symbol, tnumber, elements
#define PROC_SBE_FIXED_TARGET_INT32_VECTOR(symbol, tnumber, elements) \
- proc_sbe_fixed_int32 symbol, tnumber * elements
+ proc_sbe_fixed_int32 symbol, tnumber, elements
#define PROC_SBE_FIXED_TARGET_UINT64_VECTOR(symbol, tnumber, elements) \
- proc_sbe_fixed_uint64 symbol, tnumber * elements
+ proc_sbe_fixed_uint64 symbol, tnumber, elements
#define PROC_SBE_FIXED_TARGET_INT64_VECTOR(symbol, tnumber, elements) \
- proc_sbe_fixed_int64 symbol, tnumber * elements
+ proc_sbe_fixed_int64 symbol, tnumber, elements
#define PROC_SBE_FIXED_TARGET_UINT8_VECTOR_2(symbol, tnumber, dim1, dim2 ) \
- proc_sbe_fixed_uint8 symbol, tnumber * dim1 * dim2
+ proc_sbe_fixed_uint8 symbol, tnumber, dim1 * dim2
#define PROC_SBE_FIXED_TARGET_INT8_VECTOR_2(symbol, tnumber, dim1, dim2 ) \
- proc_sbe_fixed_int8 symbol, tnumber * dim1 * dim2
+ proc_sbe_fixed_int8 symbol, tnumber, dim1 * dim2
#define PROC_SBE_FIXED_TARGET_UINT16_VECTOR_2(symbol, tnumber, dim1, dim2 ) \
- proc_sbe_fixed_uint16 symbol, tnumber * dim1 * dim2
+ proc_sbe_fixed_uint16 symbol, tnumber, dim1 * dim2
#define PROC_SBE_FIXED_TARGET_INT16_VECTOR_2(symbol, tnumber, dim1, dim2 ) \
- proc_sbe_fixed_int16 symbol, tnumber * dim1 * dim2
+ proc_sbe_fixed_int16 symbol, tnumber, dim1 * dim2
#define PROC_SBE_FIXED_TARGET_UINT32_VECTOR_2(symbol, tnumber, dim1, dim2 ) \
- proc_sbe_fixed_uint32 symbol, tnumber * dim1 * dim2
+ proc_sbe_fixed_uint32 symbol, tnumber, dim1 * dim2
#define PROC_SBE_FIXED_TARGET_INT32_VECTOR_2(symbol, tnumber, dim1, dim2 ) \
- proc_sbe_fixed_int32 symbol, tnumber * dim1 * dim2
-
+ proc_sbe_fixed_int32 symbol, tnumber, dim1 * dim2
+
#define PROC_SBE_FIXED_TARGET_UINT64_VECTOR_2(symbol, tnumber, dim1, dim2 ) \
- proc_sbe_fixed_uint64 symbol, tnumber * dim1 * dim2
+ proc_sbe_fixed_uint64 symbol, tnumber, dim1 * dim2
#define PROC_SBE_FIXED_TARGET_INT64_VECTOR_2(symbol, tnumber, dim1, dim2 ) \
- proc_sbe_fixed_int64 symbol, tnumber * dim1 * dim2
+ proc_sbe_fixed_int64 symbol, tnumber, dim1 * dim2
#define PROC_SBE_FIXED_TARGET_UINT8_VECTOR_3(symbol, tnumber, dim1, dim2, dim3 ) \
- proc_sbe_fixed_uint8 symbol, tnumber * dim1 * dim2 * dim3
-
+ proc_sbe_fixed_uint8 symbol, tnumber, dim1 * dim2 * dim3
+
#define PROC_SBE_FIXED_TARGET_INT8_VECTOR_3(symbol, tnumber, dim1, dim2, dim3 ) \
- proc_sbe_fixed_uint8 symbol, tnumber * dim1 * dim2 * dim3
+ proc_sbe_fixed_uint8 symbol, tnumber, dim1 * dim2 * dim3
#define PROC_SBE_FIXED_TARGET_UINT16_VECTOR_3(symbol, tnumber, dim1, dim2, dim3 ) \
- proc_sbe_fixed_uint16 symbol, tnumber * dim1 * dim2 * dim3
-
+ proc_sbe_fixed_uint16 symbol, tnumber, dim1 * dim2 * dim3
+
#define PROC_SBE_FIXED_TARGET_INT16_VECTOR_3(symbol, tnumber, dim1, dim2, dim3 ) \
- proc_sbe_fixed_uint16 symbol, tnumber * dim1 * dim2 * dim3
+ proc_sbe_fixed_uint16 symbol, tnumber, dim1 * dim2 * dim3
#define PROC_SBE_FIXED_TARGET_UINT32_VECTOR_3(symbol, tnumber, dim1, dim2, dim3 ) \
- proc_sbe_fixed_uint32 symbol, tnumber * dim1 * dim2 * dim3
-
+ proc_sbe_fixed_uint32 symbol, tnumber, dim1 * dim2 * dim3
+
#define PROC_SBE_FIXED_TARGET_INT32_VECTOR_3(symbol, tnumber, dim1, dim2, dim3 ) \
- proc_sbe_fixed_uint32 symbol, tnumber * dim1 * dim2 * dim3
+ proc_sbe_fixed_uint32 symbol, tnumber, dim1 * dim2 * dim3
#define PROC_SBE_FIXED_TARGET_UINT64_VECTOR_3(symbol, tnumber, dim1, dim2, dim3 ) \
- proc_sbe_fixed_uint64 symbol, tnumber * dim1 * dim2 * dim3
-
+ proc_sbe_fixed_uint64 symbol, tnumber, dim1 * dim2 * dim3
+
#define PROC_SBE_FIXED_TARGET_INT64_VECTOR_3(symbol, tnumber, dim1, dim2, dim3 ) \
- proc_sbe_fixed_uint64 symbol, tnumber * dim1 * dim2 * dim3
+ proc_sbe_fixed_uint64 symbol, tnumber, dim1 * dim2 * dim3
#define PROC_SBE_FIXED_QUADIA(symbol, space, address) \
proc_sbe_fixed_quadia symbol, (space), (address)
-
+
#else // __ASSEMBLER__ (eg the C portion)
@@ -399,19 +399,19 @@
#define PROC_SBE_FIXED_INT64(symbol) \
int64_t symbol
-
+
#define PROC_SBE_FIXED_UINT8_VECTOR(symbol, elements) \
uint8_t symbol[elements]
#define PROC_SBE_FIXED_INT8_VECTOR(symbol, elements) \
int8_t symbol[elements]
-
+
#define PROC_SBE_FIXED_UINT16_VECTOR(symbol, elements) \
uint16_t symbol[elements]
#define PROC_SBE_FIXED_INT16_VECTOR(symbol, elements) \
int16_t symbol[elements]
-
+
#define PROC_SBE_FIXED_UINT32_VECTOR(symbol, elements) \
uint32_t symbol[elements]
@@ -422,29 +422,29 @@
uint64_t symbol[elements]
#define PROC_SBE_FIXED_INT64_VECTOR(symbol, elements) \
- int64_t symbol[elements]
-
+ int64_t symbol[elements]
+
#define PROC_SBE_FIXED_UINT8_VECTOR_2(symbol, dim1, dim2 ) \
uint8_t symbol[dim1][dim2]
-
+
#define PROC_SBE_FIXED_INT8_VECTOR_2(symbol, dim1, dim2 ) \
int8_t symbol[dim1][dim2]
#define PROC_SBE_FIXED_UINT16_VECTOR_2(symbol, dim1, dim2 ) \
uint16_t symbol[dim1][dim2]
-
+
#define PROC_SBE_FIXED_INT16_VECTOR_2(symbol, dim1, dim2 ) \
int16_t symbol[dim1][dim2]
-
+
#define PROC_SBE_FIXED_UINT32_VECTOR_2(symbol, dim1, dim2 ) \
uint32_t symbol[dim1][dim2]
-
+
#define PROC_SBE_FIXED_INT32_VECTOR_2(symbol, dim1, dim2 ) \
int32_t symbol[dim1][dim2]
-
+
#define PROC_SBE_FIXED_UINT64_VECTOR_2(symbol, dim1, dim2 ) \
uint64_t symbol[dim1][dim2]
-
+
#define PROC_SBE_FIXED_INT64_VECTOR_2(symbol, dim1, dim2 ) \
int64_t symbol[dim1][dim2]
@@ -453,7 +453,7 @@
#define PROC_SBE_FIXED_INT8_VECTOR_3(symbol, dim1, dim2, dim3 ) \
int8_t symbol[dim1][dim2][dim3]
-
+
#define PROC_SBE_FIXED_UINT16_VECTOR_3(symbol, dim1, dim2, dim3 ) \
uint16_t symbol[dim1][dim2][dim3]
@@ -497,19 +497,19 @@
#define PROC_SBE_FIXED_TARGET_INT64(symbol, tnumber) \
int64_t symbol[tnumber]
-
+
#define PROC_SBE_FIXED_TARGET_UINT8_VECTOR(symbol, tnumber, elements) \
uint8_t symbol[tnumber][elements]
#define PROC_SBE_FIXED_TARGET_INT8_VECTOR(symbol, tnumber, elements) \
int8_t symbol[tnumber][elements]
-
+
#define PROC_SBE_FIXED_TARGET_UINT16_VECTOR(symbol, tnumber, elements) \
uint16_t symbol[tnumber][elements]
#define PROC_SBE_FIXED_TARGET_INT16_VECTOR(symbol, tnumber, elements) \
int16_t symbol[tnumber][elements]
-
+
#define PROC_SBE_FIXED_TARGET_UINT32_VECTOR(symbol, tnumber, elements) \
uint32_t symbol[tnumber][elements]
@@ -520,29 +520,29 @@
uint64_t symbol[tnumber][elements]
#define PROC_SBE_FIXED_TARGET_INT64_VECTOR(symbol, tnumber, elements) \
- int64_t symbol[tnumber][elements]
-
+ int64_t symbol[tnumber][elements]
+
#define PROC_SBE_FIXED_TARGET_UINT8_VECTOR_2(symbol, tnumber, dim1, dim2 ) \
uint8_t symbol[tnumber][dim1][dim2]
-
+
#define PROC_SBE_FIXED_TARGET_INT8_VECTOR_2(symbol, tnumber, dim1, dim2 ) \
int8_t symbol[tnumber][dim1][dim2]
#define PROC_SBE_FIXED_TARGET_UINT16_VECTOR_2(symbol, tnumber, dim1, dim2 ) \
uint16_t symbol[tnumber][dim1][dim2]
-
+
#define PROC_SBE_FIXED_TARGET_INT16_VECTOR_2(symbol, tnumber, dim1, dim2 ) \
int16_t symbol[tnumber][dim1][dim2]
-
+
#define PROC_SBE_FIXED_TARGET_UINT32_VECTOR_2(symbol, tnumber, dim1, dim2 ) \
uint32_t symbol[tnumber][dim1][dim2]
-
+
#define PROC_SBE_FIXED_TARGET_INT32_VECTOR_2(symbol, tnumber, dim1, dim2 ) \
int32_t symbol[tnumber][dim1][dim2]
-
+
#define PROC_SBE_FIXED_TARGET_UINT64_VECTOR_2(symbol, tnumber, dim1, dim2 ) \
uint64_t symbol[tnumber][dim1][dim2]
-
+
#define PROC_SBE_FIXED_TARGET_INT64_VECTOR_2(symbol, tnumber, dim1, dim2 ) \
int64_t symbol[tnumber][dim1][dim2]
@@ -551,7 +551,7 @@
#define PROC_SBE_FIXED_TARGET_INT8_VECTOR_3(symbol, tnumber, dim1, dim2, dim3 ) \
int8_t symbol[tnumber][dim1][dim2][dim3]
-
+
#define PROC_SBE_FIXED_TARGET_UINT16_VECTOR_3(symbol, tnumber, dim1, dim2, dim3 ) \
uint16_t symbol[tnumber][dim1][dim2][dim3]
diff --git a/sbe/image/sbe_main.C b/sbe/image/sbe_main.C
index 3f859e86..54d4fdc6 100644
--- a/sbe/image/sbe_main.C
+++ b/sbe/image/sbe_main.C
@@ -35,11 +35,12 @@ extern "C"
namespace fapi2attr
{
-extern ProcChipAttributes_t* G_proc_chip_attributes asm("G_proc_chip_attributes") __attribute__ ((section (".fixed")));
-extern PervAttributes_t* G_perv_attributes asm("G_perv_attributes") __attribute__ ((section (".fixed")));
-extern CoreAttributes_t* G_core_attributes asm("G_core_attributes") __attribute__ ((section (".fixed")));
-extern EQAttributes_t* G_eq_attributes asm("G_eq_attributes") __attribute__ ((section (".fixed")));
-extern EXAttributes_t* G_ex_attributes asm("G_ex_attributes") __attribute__ ((section (".fixed")));
+extern ProcChipAttributes_t G_proc_chip_attributes asm("G_proc_chip_attributes") __attribute__ ((section (".fixed")));
+extern PervAttributes_t G_perv_attributes asm("G_perv_attributes") __attribute__ ((section (".fixed")));
+extern CoreAttributes_t G_core_attributes asm("G_core_attributes") __attribute__ ((section (".fixed")));
+extern EQAttributes_t G_eq_attributes asm("G_eq_attributes") __attribute__ ((section (".fixed")));
+extern EXAttributes_t G_ex_attributes asm("G_ex_attributes") __attribute__ ((section (".fixed")));
+
}
@@ -55,8 +56,20 @@ uint8_t G_main_thread_stack[MAIN_THREAD_STACK_SIZE];
PkThread G_main_thread;
+fapi2attr::ProcChipAttributes_t* G_proc_chip_attributes_ptr ;
+fapi2attr::PervAttributes_t* G_perv_attributes_ptr;
+fapi2attr::CoreAttributes_t* G_core_attributes_ptr;
+fapi2attr::EQAttributes_t* G_eq_attributes_ptr;
+fapi2attr::EXAttributes_t* G_ex_attributes_ptr;
+
+
+
fapi2::ReturnCode
-hwp_chip(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP> & i_target);
+hwp_chip_present(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP> & i_target);
+
+fapi2::ReturnCode
+hwp_chip_functional(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP> & i_target);
+
fapi2::ReturnCode
hwp_chip2(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP> & i_target);
@@ -85,6 +98,9 @@ void main_thread(void* arg)
std::vector<fapi2::plat_target_handle_t> targets1;
G_vec_targets = std::move(targets1);
+ // Establish the pointer to the global attributes
+ G_proc_chip_attributes_ptr = &G_proc_chip_attributes;
+
// Intialize the targets
fapi2::plat_TargetsInit();
@@ -94,7 +110,8 @@ void main_thread(void* arg)
FAPI_DBG("chip_target_new = 0x%08X", (uint32_t)(chip_target_new.get()>>32));
- FAPI_TRY(hwp_chip(chip_target_new));
+// FAPI_TRY(hwp_chip_present(chip_target_new));
+ FAPI_TRY(hwp_chip_functional(chip_target_new));
FAPI_TRY(hwp_chip2(chip_target_new));
@@ -123,21 +140,21 @@ fapi_try_exit:
// A Chip try
fapi2::ReturnCode
-hwp_chip(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP> & i_target)
+hwp_chip_present(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP> & i_target)
{
FAPI_DBG("i_target = 0x%08X", (uint32_t)(i_target.get()>>32));
- auto l_perv_functional_vector =
+ auto l_perv_present_vector =
i_target.getChildren<fapi2::TARGET_TYPE_PERV>
(fapi2::TARGET_STATE_PRESENT);
// Get the TPChiplet target
uint32_t i = 0;
- for (auto it: l_perv_functional_vector)
+ for (auto it: l_perv_present_vector)
{
- FAPI_DBG("Perv Functional Target %u value=%08X chiplet %02X",
+ FAPI_DBG("Perv Present Target %u value=%08X chiplet %02X",
i,
(uint32_t)(it.get()>>32),
(uint32_t)(it.getChipletNumber()));
@@ -145,16 +162,16 @@ hwp_chip(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP> & i_target)
++i;
}
- auto l_core_functional_vector =
+ auto l_core_present_vector =
i_target.getChildren<fapi2::TARGET_TYPE_CORE>
(fapi2::TARGET_STATE_PRESENT);
// Get the Core Chiplet targets
uint32_t j = 0;
- for (auto it: l_core_functional_vector)
+ for (auto it: l_core_present_vector)
{
- FAPI_DBG("Core Functional Target %u value=%08X chiplet %02X",
+ FAPI_DBG("Core Present Target %u value=%08X chiplet %02X",
j,
(uint32_t)(it.get()>>32),
(uint32_t)(it.getChipletNumber()));
@@ -180,7 +197,7 @@ hwp_chip(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP> & i_target)
FAPI_TRY(fapi2::getScom(i_target, address, data));
- FAPI_DBG("First getSCOM: data = %016llX", revle64(data));
+// FAPI_DBG("The First getSCOM: data = %016llX", revle64(data));
data.setBit<0, 16>();
FAPI_TRY(fapi2::putScom(i_target, 0x0006d010, data));
@@ -193,6 +210,54 @@ fapi_try_exit:
// A Chip try
fapi2::ReturnCode
+hwp_chip_functional(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP> & i_target)
+{
+
+ FAPI_DBG("i_target = 0x%08X", (uint32_t)(i_target.get()>>32));
+
+ auto l_perv_functional_vector =
+ i_target.getChildren<fapi2::TARGET_TYPE_PERV>
+ (fapi2::TARGET_STATE_FUNCTIONAL);
+
+ // Get the TPChiplet target
+ uint32_t i = 0;
+ for (auto it: l_perv_functional_vector)
+ {
+
+ FAPI_DBG("Perv Functional Target %u value=%08X chiplet %02X",
+ i,
+ (uint32_t)(it.get()>>32),
+ (uint32_t)(it.getChipletNumber()));
+
+ ++i;
+ }
+
+ auto l_core_functional_vector =
+ i_target.getChildren<fapi2::TARGET_TYPE_CORE>
+ (fapi2::TARGET_STATE_FUNCTIONAL);
+
+ // Get the Core Chiplet targets
+ uint32_t j = 0;
+ for (auto it: l_core_functional_vector)
+ {
+
+ FAPI_DBG("Core Functional Target %u value=%08X chiplet %02X",
+ j,
+ (uint32_t)(it.get()>>32),
+ (uint32_t)(it.getChipletNumber()));
+
+ ++j;
+ }
+
+ return fapi2::FAPI2_RC_SUCCESS;
+
+fapi_try_exit:
+ return fapi2::FAPI2_RC_PLAT_ERR_SEE_DATA;
+}
+
+
+// A Chip try
+fapi2::ReturnCode
hwp_chip2(const fapi2::Target<fapi2::TARGET_TYPE_PROC_CHIP> & i_target)
{
diff --git a/sbe/image/sbe_xip_image.c b/sbe/image/sbe_xip_image.c
index 270b450d..d800650b 100644
--- a/sbe/image/sbe_xip_image.c
+++ b/sbe/image/sbe_xip_image.c
@@ -30,28 +30,6 @@
// Local Functions
////////////////////////////////////////////////////////////////////////////
-// PHYP has their own way of implementing the <string.h> functions. PHYP also
-// does not allow static functions or data, so all of the XIP_STATIC functions
-// defined here are global to PHYP.
-
-#ifdef PPC_HYP
-
-#ifdef PLIC_MODULE
-
-#define strcpy(dest, src) hvstrcpy(dest, src)
-#define strlen(s) hvstrlen(s)
-#define strcmp(s1, s2) hvstrcmp(s1, s2)
-#endif //PLIC_MODULE
-
-#define XIP_STATIC
-
-#else // PPC_HYP
-
-#define XIP_STATIC static
-
-#endif // PPC_HYP
-
-
#ifdef DEBUG_SBE_XIP_IMAGE
// Debugging support, normally disabled. All of the formatted I/O you see in
@@ -1947,6 +1925,10 @@ sbe_xip_set_element(void *i_image,
case SBE_XIP_UINT8:
((uint8_t*)(item.iv_imageData))[i_index] = (uint8_t)i_data;
break;
+ case SBE_XIP_UINT16:
+ ((uint16_t*)(item.iv_imageData))[i_index] =
+ xipRevLe16((uint16_t)i_data);
+ break;
case SBE_XIP_UINT32:
((uint32_t*)(item.iv_imageData))[i_index] =
xipRevLe32((uint32_t)i_data);
@@ -1955,6 +1937,21 @@ sbe_xip_set_element(void *i_image,
((uint64_t*)(item.iv_imageData))[i_index] =
xipRevLe64((uint64_t)i_data);
break;
+ case SBE_XIP_INT8:
+ ((int8_t*)(item.iv_imageData))[i_index] = (int8_t)i_data;
+ break;
+ case SBE_XIP_INT16:
+ ((int16_t*)(item.iv_imageData))[i_index] =
+ xipRevLe16((uint16_t)i_data);
+ break;
+ case SBE_XIP_INT32:
+ ((int32_t*)(item.iv_imageData))[i_index] =
+ xipRevLe32((uint32_t)i_data);
+ break;
+ case SBE_XIP_INT64:
+ ((int64_t*)(item.iv_imageData))[i_index] =
+ xipRevLe64((uint64_t)i_data);
+ break;
default:
rc = TRACE_ERROR(SBE_XIP_TYPE_ERROR);
break;
diff --git a/sbe/image/sbe_xip_image.h b/sbe/image/sbe_xip_image.h
index fc1bf47c..41b83311 100644
--- a/sbe/image/sbe_xip_image.h
+++ b/sbe/image/sbe_xip_image.h
@@ -1250,6 +1250,46 @@ sbe_xip_host2image(const void* i_image,
uint64_t* o_imageAddress);
+
+// PHYP has their own way of implementing the <string.h> functions. PHYP also
+// does not allow static functions or data, so all of the XIP_STATIC functions
+// defined here are global to PHYP.
+
+#ifdef PPC_HYP
+
+#ifdef PLIC_MODULE
+
+#define strcpy(dest, src) hvstrcpy(dest, src)
+#define strlen(s) hvstrlen(s)
+#define strcmp(s1, s2) hvstrcmp(s1, s2)
+#endif //PLIC_MODULE
+
+#define XIP_STATIC
+
+#else // PPC_HYP
+
+// #define XIP_STATIC static
+#define XIP_STATIC
+
+#endif // PPC_HYP
+
+// Note: For maximum flexibility we provide private versions of
+// endian-conversion routines rather than counting on a system-specific header
+// to provide these.
+
+/// Byte-reverse a 16-bit integer if on a little-endian machine
+XIP_STATIC uint16_t
+xipRevLe16(const uint16_t i_x);
+
+/// Byte-reverse a 32-bit integer if on a little-endian machine
+XIP_STATIC uint32_t
+xipRevLe32(const uint32_t i_x);
+
+
+/// Byte-reverse a 64-bit integer if on a little-endian machine
+XIP_STATIC uint64_t
+xipRevLe64(const uint64_t i_x);
+
/// \defgroup sbe_xip_image_errors Error codes from SBE-XIP image APIs
///
/// @{
diff --git a/sbe/image/topfiles.mk b/sbe/image/topfiles.mk
index 37af6c2b..88c11bee 100644
--- a/sbe/image/topfiles.mk
+++ b/sbe/image/topfiles.mk
@@ -1,5 +1,5 @@
-TOP-C-SOURCES = sbe_loader.c
-TOP-CPP-SOURCES = sbe_main.C
+TOP-C-SOURCES = base_ppe_demo.c sbe_loader.c
+TOP-CPP-SOURCES =
TOP-S-SOURCES = base_ppe_header.S
TOP-FIXED-HEADERS += $(IMAGE_SRCDIR)/proc_sbe_fixed_perv.H
OpenPOWER on IntegriCloud