diff options
author | Oliver Morlok <MARQUARO@de.ibm.com> | 2018-02-14 20:51:35 +0100 |
---|---|---|
committer | Sachin Gupta <sgupta2m@in.ibm.com> | 2018-02-16 12:50:09 -0500 |
commit | 56e408e085ca612a5bdf708edbc313fae6e6815d (patch) | |
tree | 59f258bd3ea450a6f72bda3f97055a19f4c39930 /src | |
parent | cce76062ef2fc25aa421db4d98892b5ea5b5afae (diff) | |
download | talos-sbe-56e408e085ca612a5bdf708edbc313fae6e6815d.tar.gz talos-sbe-56e408e085ca612a5bdf708edbc313fae6e6815d.zip |
Get a z compile working
Change-Id: I8ca342778fb8fb5e8019f6f50c1b36c2b675d668
Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/54062
Tested-by: Jenkins Server <pfd-jenkins+hostboot@us.ibm.com>
Reviewed-by: Shakeeb A. Pasha B K <shakeebbk@in.ibm.com>
Tested-by: FSP CI Jenkins <fsp-CI-jenkins+hostboot@us.ibm.com>
Reviewed-by: Sachin Gupta <sgupta2m@in.ibm.com>
Diffstat (limited to 'src')
-rw-r--r-- | src/build/img_defs.mk | 6 | ||||
-rwxr-xr-x | src/build/linkerscripts/z/linkloader.cmd | 95 | ||||
-rw-r--r-- | src/build/linkerscripts/z/linkotprom.cmd | 43 | ||||
-rw-r--r-- | src/build/linkerscripts/z/linksbe.cmd | 104 | ||||
-rw-r--r-- | src/build/linkerscripts/z/linkseeprom.cmd | 203 | ||||
-rw-r--r-- | src/build/power_defs.mk | 2 | ||||
-rw-r--r-- | src/build/z_defs.mk | 94 | ||||
-rw-r--r-- | src/sbefw/app/z/Makefile | 63 | ||||
-rw-r--r-- | src/sbefw/app/z/appzfiles.mk | 41 | ||||
-rw-r--r-- | src/sbefw/app/z/chipop_table.C | 101 | ||||
-rw-r--r-- | src/sbefw/app/z/ipl_table.C | 357 | ||||
-rw-r--r-- | src/sbefw/app/z/sbecmdcntrldmt.C | 50 | ||||
-rw-r--r-- | src/sbefw/app/z/sbecmdcntrldmt.H | 40 | ||||
-rw-r--r-- | src/sbefw/app/z/sbecmdiplcontrol.C | 76 | ||||
-rw-r--r-- | src/sbefw/app/z/sbecmdiplcontrol.H | 58 | ||||
-rw-r--r-- | src/sbefw/core/sbeFFDC.C | 4 | ||||
-rw-r--r-- | src/sbefw/core/sbeHostUtils.C | 5 | ||||
-rw-r--r-- | src/sbefw/core/sbeMemAccessInterface.C | 7 |
18 files changed, 1348 insertions, 1 deletions
diff --git a/src/build/img_defs.mk b/src/build/img_defs.mk index aefe69ff..02839183 100644 --- a/src/build/img_defs.mk +++ b/src/build/img_defs.mk @@ -361,6 +361,7 @@ ifdef FAPI_TRACE_LEVEL_ENV FAPI_TRACE_LEVEL_DEF = $(FAPI_TRACE_LEVEL_ENV) endif + GCC-DEFS += -DIMAGE_NAME=$(IMAGE_SEEPROM_NAME) GCC-DEFS += -DPK_TIMER_SUPPORT=$(PK_TIMER_SUPPORT) GCC-DEFS += -DPK_THREAD_SUPPORT=$(PK_THREAD_SUPPORT) @@ -376,6 +377,7 @@ GCC-DEFS += -DSBE_TRACE_LEVEL=$(SBE_TRACE_LEVEL_DEF) GCC-DEFS += -DPLAT_NO_THREAD_LOCAL_STORAGE=1 # disable assert GCC-DEFS += -DNDEBUG +GCC-DEFS += -DHOST_INTERFACE_AVAILABLE=$(HOST_INTERFACE_AVAILABLE) # use the default settings in the code unless a size is defined ifdef PK_TRACE_SZ @@ -484,6 +486,10 @@ ifeq ($(project),power) include power_defs.mk endif +ifeq ($(project),z) +include z_defs.mk +endif + ############################################################################ #override the GNU Make implicit rule for going from a .C to a .o diff --git a/src/build/linkerscripts/z/linkloader.cmd b/src/build/linkerscripts/z/linkloader.cmd new file mode 100755 index 00000000..61e6eecb --- /dev/null +++ b/src/build/linkerscripts/z/linkloader.cmd @@ -0,0 +1,95 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/build/linkerscripts/z/linkloader.cmd $ */ +/* */ +/* OpenPOWER sbe Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2015,2018 */ +/* */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ +/* implied. See the License for the specific language governing */ +/* permissions and limitations under the License. */ +/* */ +/* IBM_PROLOG_END_TAG */ + +// Need to do this so that elf32-powerpc is not modified! +#undef powerpc + +#ifndef BASE_LOADER_STACK_SIZE +#define BASE_LOADER_STACK_SIZE 6144 +#endif +#include "sbe_link.H" + +OUTPUT_FORMAT(elf32-powerpc); + +MEMORY +{ + sram : ORIGIN = SBE_LOADER_BASE_ORIGIN, LENGTH = SBE_LOADER_BASE_LENGTH +} + +SECTIONS +{ + . = SBE_LOADER_BASE_ORIGIN; + + //////////////////////////////// + // Read-only Data + //////////////////////////////// + + . = ALIGN(8); + _RODATA_SECTION_BASE = .; + + .text . : { *(.text) } > sram + .data . : { *(.data) } > sram + + // 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 + + _BASE_LOADER_STACK_LIMIT = .; + _BASE_LOADER_STACK_LIMIT = . + BASE_LOADER_STACK_SIZE - 1; + + . = ALIGN(8); + _loader_end = . - 0; + +} diff --git a/src/build/linkerscripts/z/linkotprom.cmd b/src/build/linkerscripts/z/linkotprom.cmd new file mode 100644 index 00000000..f68267be --- /dev/null +++ b/src/build/linkerscripts/z/linkotprom.cmd @@ -0,0 +1,43 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/build/linkerscripts/z/linkotprom.cmd $ */ +/* */ +/* OpenPOWER sbe Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2016,2018 */ +/* */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ +/* implied. See the License for the specific language governing */ +/* permissions and limitations under the License. */ +/* */ +/* IBM_PROLOG_END_TAG */ + +// Need to do this so that elf32-powerpc is not modified! +#undef powerpc + +#include "sbe_link.H" + +OUTPUT_FORMAT(elf32-powerpc); + +MEMORY +{ + sram : ORIGIN = OTPROM_ORIGIN, LENGTH = OTPROM_BLOCK_SIZE +} + +SECTIONS +{ + . = OTPROM_ORIGIN; + .text . : { *(.text)} + . = OTPROM_FIXED_SIZE; + .fixed . : { *(.fixed)} +} diff --git a/src/build/linkerscripts/z/linksbe.cmd b/src/build/linkerscripts/z/linksbe.cmd new file mode 100644 index 00000000..e68f4688 --- /dev/null +++ b/src/build/linkerscripts/z/linksbe.cmd @@ -0,0 +1,104 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/build/linkerscripts/z/linksbe.cmd $ */ +/* */ +/* OpenPOWER sbe Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2015,2018 */ +/* */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ +/* implied. See the License for the specific language governing */ +/* permissions and limitations under the License. */ +/* */ +/* IBM_PROLOG_END_TAG */ + +// Need to do this so that elf32-powerpc is not modified! +#undef powerpc + +#ifndef INITIAL_STACK_SIZE +#define INITIAL_STACK_SIZE 256 +#endif +#include "sbe_link.H" + +OUTPUT_FORMAT(elf32-powerpc); + +MEMORY +{ + pibmem : ORIGIN = SBE_BASE_ORIGIN, LENGTH = SBE_BASE_LENGTH +} + +SECTIONS +{ + . = SBE_BASE_ORIGIN; + + .vectors : {. = ALIGN(512); *(.vectors)} > pibmem + .fixed . : {. = ALIGN(512); *(.fixed) } > pibmem + .text . : {. = ALIGN(512); *(.text)} > pibmem + + //////////////////////////////// + // 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*) } > pibmem + .sbss2 . : { *(.sbss2*) } > pibmem + + // Other read-only data. + + . = ALIGN(8); + .rodata . : { ctor_start_address = .; + *(.ctors) *(.ctors.*) + ctor_end_address = .; + *(rodata*) *(.got2) } > pibmem + + _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*) } > pibmem + _sbss_start = .; + .sbss . : { *(.sbss*) } > pibmem + _sbss_end = .; + + // Other read-write data + // It's not clear why boot.S is generating empty .glink,.iplt + + .rela . : { *(.rela*) } > pibmem + .rwdata . : { *(.data*) *(.bss*) } > pibmem + + . = ALIGN(8); + _PK_INITIAL_STACK_LIMIT = .; + . = . + INITIAL_STACK_SIZE; + _PK_INITIAL_STACK = . - 1; + + . = ALIGN(8); + _sbe_end = . - 0; + +} diff --git a/src/build/linkerscripts/z/linkseeprom.cmd b/src/build/linkerscripts/z/linkseeprom.cmd new file mode 100644 index 00000000..93d0c9e5 --- /dev/null +++ b/src/build/linkerscripts/z/linkseeprom.cmd @@ -0,0 +1,203 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/build/linkerscripts/z/linkseeprom.cmd $ */ +/* */ +/* OpenPOWER sbe Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2015,2018 */ +/* */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ +/* implied. See the License for the specific language governing */ +/* permissions and limitations under the License. */ +/* */ +/* IBM_PROLOG_END_TAG */ +// Need to do this so that elf32-powerpc is not modified! +#undef powerpc +#include "sbe_link.H" +OUTPUT_FORMAT(elf32-powerpc); + +#ifndef INITIAL_STACK_SIZE +#define INITIAL_STACK_SIZE 256 +#endif + +MEMORY +{ + pibmem : ORIGIN = SBE_BASE_ORIGIN, LENGTH = SBE_BASE_LENGTH + seeprom : ORIGIN = SBE_SEEPROM_BASE_ORIGIN, LENGTH = 0x40000 +} + +SECTIONS +{ + . = SBE_SEEPROM_BASE_ORIGIN; + _sbe_image_start_addr = . + SIZEOF_HEADERS; + + // TODO via RTC 149153 + // It seems first section in elf image is 8 byte aligned. + // We need to verify this assumption. + + // Get 8 byte alligned address + _sbe_image_start_addr = ( ( _sbe_image_start_addr % 8) == 0 ) ? _sbe_image_start_addr : ( _sbe_image_start_addr + ( 8 - ( _sbe_image_start_addr % 8))); + + // Get the image offset after elf header + _sbe_image_start_offset = _sbe_image_start_addr - .; + _seeprom_origin = . - 0; + _pibmem_origin = SBE_BASE_ORIGIN; + + //////////////////////////////// + // Header + //////////////////////////////// + .header : { + _header_origin = .; _header_offset = . - _seeprom_origin; *(.header); + } > seeprom + _header_size = . - _header_origin; + + // @TODO via RTC 136215 + // We have used allignment 0x200 so that it can be found + // at fixed location. once otprom loader support is enabled. + // alligment will not be required. + + //////////////////////////////// + // LOADER_TEXT + //////////////////////////////// + .loader_text ALIGN(0x200): { + _loader_text_origin = .; _loader_text_offset = . - _seeprom_origin; + *(.loader_text); + } > seeprom + _loader_text_size = . - _loader_text_origin; + + // @TODO via RTC 136215 + // loader_text section should come after fixed and related + // sections as we want fixed section at knowon offset. Currently we + // have shared SEEPROM start address ( IVPR register value ) with + // multiple teams. So keeping loader_text as first section. Once + // WE have otprom loader support, we will put loader_text at right + // position + + //////////////////////////////// + // FIXED + //////////////////////////////// + .fixed ALIGN(0x200) : { + _fixed_origin = .; _fixed_offset = . - _seeprom_origin; + *(.fixed) + } > seeprom + _fixed_size = . - _fixed_origin; + + //////////////////////////////// + // text + //////////////////////////////// + .text ALIGN(8): { + _text_origin = .; _text_offset = . - _seeprom_origin; + *\libistep2.a:(.text* ) *\libistep3.a:(.text* ) *\libistep4.a:(.text* ) *\libistepmpipl.a:(.text* ) *\libistep5.a:(.text* ) *\libsbecoreseeprom.a:(.text* ) *\libsbeapppowerseeprom.a:(.text* ) *\libsbeappcommonseeprom.a:(.text* ) } > seeprom + _text_size = . - _text_origin; + + //////////////////////////////// + // FIXED_TOC + //////////////////////////////// + .fixed_toc ALIGN(8) : { + _fixed_toc_origin = .; _fixed_toc_offset = . - _seeprom_origin; *(.fixed_toc); + } > seeprom + _fixed_toc_size = . - _fixed_toc_origin; + + //////////////////////////////// + // TOC + //////////////////////////////// + .toc ALIGN(4): { + _toc_origin = .; _toc_offset = . - _seeprom_origin; *(.toc); + } > seeprom + _toc_size = . - _toc_origin; + + //////////////////////////////// + // STRING + //////////////////////////////// + .strings : { + _strings_origin = .; _strings_offset = . - _seeprom_origin; *(.strings); + } > seeprom + _strings_size = . - _strings_origin; + + _seeprom_size = . - _seeprom_origin; + + // TODO via RTC 149153 + // It seems when we jump across memory region, elf creates 32 byte offset. + // We need to verify this assumption. + + _seeprom_size_with_elf_hdr = _seeprom_size + _sbe_image_start_offset; + _seeprom_size = ( ( _seeprom_size_with_elf_hdr % 32) == 0 ) ? _seeprom_size : ( _seeprom_size + ( 32 - (_seeprom_size_with_elf_hdr % 32))); + + + . = _pibmem_origin; + _base_origin = .; + _base_offset = . - _base_origin + _seeprom_size; + + .pkVectors ALIGN(32) : { + *(.vectors) + } > pibmem + + .base . : { + *(.text*) *(.eh_frame) *(.dtors*); + } > pibmem + + . = 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*) } > pibmem + .sbss2 . : { *(.sbss2*) } > pibmem + + . = ALIGN(8); + .rodata . : { + ctor_start_address = .; + *(.ctors) *(.ctors.*) + ctor_end_address = .; + *(.rodata*) *(.got2); + } > pibmem + _RODATA_SECTION_SIZE = . - _RODATA_SECTION_BASE; + + + . = ALIGN(8); _DATA_SECTION_BASE = .; + _SDA_BASE_ = .; + .data . : { + *(.data*) *(.comment) + } > pibmem + .sdata . : { *(.sdata*) } > pibmem + . = ALIGN(8); + + // We do not want to store bss section in sbe image as laoder will take + // care of it while loading image on PIBMEM. It will save us space in + // SEEPROM. So define XIP image related variables here so that SBE image + // finishes here. + + _base_size = . - _base_origin; + _pibmem_size = . - _pibmem_origin; + _sbe_image_size = _seeprom_size + ( . - _pibmem_origin ); + + _sbss_start = .; + .sbss . : { + *(.bss*) *(.sbss*); + . = ALIGN(8); + } > pibmem + _sbss_end = .; + + . = ALIGN(8); + _sbss_size = SIZEOF(.sbss); + + . = ALIGN(8); + _PK_INITIAL_STACK_LIMIT = .; + . = . + INITIAL_STACK_SIZE; + _PK_INITIAL_STACK = . - 1; + . = ALIGN(8); + +} diff --git a/src/build/power_defs.mk b/src/build/power_defs.mk index f4d4f751..ca676b80 100644 --- a/src/build/power_defs.mk +++ b/src/build/power_defs.mk @@ -32,6 +32,8 @@ SBE_TRACE_LEVEL_DEF = 2 FAPI_TRACE_LEVEL_DEF = 2 +HOST_INTERFACE_AVAILABLE = 1 + ISTEP2_INFRA_DIR = $(IMPORT_HWP_MK_DIR)/istep2 ISTEP3_INFRA_DIR = $(IMPORT_HWP_MK_DIR)/istep3 ISTEP4_INFRA_DIR = $(IMPORT_HWP_MK_DIR)/istep4 diff --git a/src/build/z_defs.mk b/src/build/z_defs.mk new file mode 100644 index 00000000..980f8f91 --- /dev/null +++ b/src/build/z_defs.mk @@ -0,0 +1,94 @@ +# IBM_PROLOG_BEGIN_TAG +# This is an automatically generated prolog. +# +# $Source: src/build/z_defs.mk $ +# +# OpenPOWER sbe Project +# +# Contributors Listed Below - COPYRIGHT 2017,2018 +# +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. See the License for the specific language governing +# permissions and limitations under the License. +# +# IBM_PROLOG_END_TAG +# Levels of SBE logging +# 0 - No tracing +# 1 - Error +# 2 - Error, info +# 3 - Error, info, entry/exit +# 4 - Error, info, entry/exit, debug +SBE_TRACE_LEVEL_DEF = 2 + +FAPI_TRACE_LEVEL_DEF = 2 + +#ISTEP2_INFRA_DIR = $(IMPORT_HWP_MK_DIR)/istep2 +#ISTEP3_INFRA_DIR = $(IMPORT_HWP_MK_DIR)/istep3 +#ISTEP4_INFRA_DIR = $(IMPORT_HWP_MK_DIR)/istep4 +#ISTEP5_INFRA_DIR = $(IMPORT_HWP_MK_DIR)/istep5 +#ISTEPMPIPL_INFRA_DIR = $(IMPORT_HWP_MK_DIR)/istepmpipl +#ISTEPCOMMON_INFRA_DIR = $(IMPORT_HWP_MK_DIR)/istepcommon +#ARRAYACCESS_INFRA_DIR = $(IMPORT_HWP_MK_DIR)/arrayaccess + +#OBJDIR-ISTEP2 = $(BASE_OBJDIR)/$(IMPORT_OBJDIR)/istep2 +#OBJDIR-ISTEP3 = $(BASE_OBJDIR)/$(IMPORT_OBJDIR)/istep3 +#OBJDIR-ISTEP4 = $(BASE_OBJDIR)/$(IMPORT_OBJDIR)/istep4 +#OBJDIR-ISTEP5 = $(BASE_OBJDIR)/$(IMPORT_OBJDIR)/istep5 +#OBJDIR-ISTEPMPIPL = $(BASE_OBJDIR)/$(IMPORT_OBJDIR)/istepmpipl +#OBJDIR-ISTEPCOMMON = $(BASE_OBJDIR)/$(IMPORT_OBJDIR)/istepcommon +#OBJDIR-ARRAYACCESS = $(BASE_OBJDIR)/arrayaccess + +#PROJ_SUBDIRS += $(ISTEP2_INFRA_DIR) +#PROJ_LIB_DIRS += -L$(OBJDIR-ISTEP2) +#PROJ_LLIBS += -listep2 + +#PROJ_SUBDIRS += $(ISTEP3_INFRA_DIR) +#PROJ_LIB_DIRS += -L$(OBJDIR-ISTEP3) +#PROJ_LLIBS += -listep3 + +#PROJ_SUBDIRS += $(ISTEP4_INFRA_DIR) +#PROJ_LIB_DIRS += -L$(OBJDIR-ISTEP4) +#PROJ_LLIBS += -listep4 + +#PROJ_SUBDIRS += $(ISTEP5_INFRA_DIR) +#PROJ_LIB_DIRS += -L$(OBJDIR-ISTEP5) +#PROJ_LLIBS += -listep5 + +#PROJ_SUBDIRS += $(ISTEPMPIPL_INFRA_DIR) +#PROJ_LIB_DIRS += -L$(OBJDIR-ISTEPMPIPL) +#PROJ_LLIBS += -listepmpipl + +#PROJ_SUBDIRS += $(ISTEPCOMMON_INFRA_DIR) +#PROJ_LIB_DIRS += -L$(OBJDIR-ISTEPCOMMON) +#PROJ_LLIBS += -listepcommon + +#PROJ_SUBDIRS += $(ARRAYACCESS_INFRA_DIR) +#PROJ_LIB_DIRS += -L$(OBJDIR-ARRAYACCESS) +#PROJ_LLIBS += -larrayaccess +######################################################### +# mandatory defines # +######################################################### +IMAGE_SUFFIX := DD1 +GCC-DEFS += -DDD1 +IMAGE_SEEPROM_NAME := sbe_seeprom_$(IMAGE_SUFFIX) +IMAGE_SBE_NAME := sbe_pibmem_$(IMAGE_SUFFIX) + +IMAGE_LOADER_NAME := sbe_loader +IMAGE_OTPROM_NAME := sbe_otprom_$(IMAGE_SUFFIX) +IMAGE_BASE_PPE_HEADER := base_ppe_header + +SBE_SYMBOLS_NAME := sbe_$(IMAGE_SUFFIX).syms +SBE_STRINGFILE_NAME := sbeStringFile_$(IMAGE_SUFFIX) + +PROJECT_APP_DIR := z +PROJECT_APP_PIBMEM_LIB := sbeappzpibmem +PROJECT_APP_SEEPROM_LIB := sbeappzseeprom diff --git a/src/sbefw/app/z/Makefile b/src/sbefw/app/z/Makefile new file mode 100644 index 00000000..4464817e --- /dev/null +++ b/src/sbefw/app/z/Makefile @@ -0,0 +1,63 @@ +# IBM_PROLOG_BEGIN_TAG +# This is an automatically generated prolog. +# +# $Source: src/sbefw/app/z/Makefile $ +# +# OpenPOWER sbe Project +# +# Contributors Listed Below - COPYRIGHT 2016,2018 +# +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. See the License for the specific language governing +# permissions and limitations under the License. +# +# IBM_PROLOG_END_TAG +#export P2P_ENABLE = 1 + +ifneq ($(img_mem), seeprom) +export SUB_OBJDIR = /sbefw/app/z_pibmem +OBJS = $(addprefix $(OBJDIR)/, $(APPPOWERPIBMEM_OBJECTS)) +LIBNAME = libsbeappzpibmem +else +export SUB_OBJDIR = /sbefw/app/z_seeprom +GCC-CFLAGS += -mlongcall +GCC-DEFS += -D__SBEFW_SEEPROM__=1 +OBJS = $(addprefix $(OBJDIR)/, $(APPPOWERSEEPROM_OBJECTS)) +LIBNAME = libsbeappzseeprom +endif + +include img_defs.mk +include appzfiles.mk + +$(LIBNAME).a: $(OBJS) + $(AR) crs $(OBJDIR)/$(LIBNAME).a $(OBJDIR)/*.o + +.PHONY: clean sbeapppower +sbeapppower: $(OBJS) + +$(OBJS) $(OBJS:.o=.d): | $(OBJDIR) + +$(OBJDIR): + mkdir -p $(OBJDIR) + +#clean the kernel directory first, then the application level clean +clean: + rm -fr $(OBJDIR) + +ifneq ($(MAKECMDGOALS),clean) +include $(OBJS:.o=.d) +endif + + + + + diff --git a/src/sbefw/app/z/appzfiles.mk b/src/sbefw/app/z/appzfiles.mk new file mode 100644 index 00000000..228bb22f --- /dev/null +++ b/src/sbefw/app/z/appzfiles.mk @@ -0,0 +1,41 @@ +# IBM_PROLOG_BEGIN_TAG +# This is an automatically generated prolog. +# +# $Source: src/sbefw/app/z/appzfiles.mk $ +# +# OpenPOWER sbe Project +# +# Contributors Listed Below - COPYRIGHT 2015,2018 +# +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or +# implied. See the License for the specific language governing +# permissions and limitations under the License. +# +# IBM_PROLOG_END_TAG + +APPPOWERPIBMEM-CPP-SOURCES = chipop_table.C +APPPOWERPIBMEM-CPP-SOURCES += ipl_table.C +APPPOWERPIBMEM-CPP-SOURCES += sbecmdiplcontrol.C +APPPOWERPIBMEM-CPP-SOURCES += sbecmdcntrldmt.C + +APPPOWERPIBMEM-C-SOURCES = +APPPOWERPIBMEM-S-SOURCES = + +APPPOWERPIBMEM_OBJECTS = $(APPPOWERPIBMEM-C-SOURCES:.c=.o) $(APPPOWERPIBMEM-CPP-SOURCES:.C=.o) $(APPPOWERPIBMEM-S-SOURCES:.S=.o) + +APPPOWERSEEPROM-CPP-SOURCES = ipl_table.C +APPPOWERSEEPROM-CPP-SOURCES += sbecmdiplcontrol.C + +APPPOWERSEEPROM-C-SOURCES = +APPPOWERSEEPROM-S-SOURCES = + +APPPOWERSEEPROM_OBJECTS = $(APPPOWERSEEPROM-C-SOURCES:.c=.o) $(APPPOWERSEEPROM-CPP-SOURCES:.C=.o) $(APPPOWERSEEPROM-S-SOURCES:.S=.o) diff --git a/src/sbefw/app/z/chipop_table.C b/src/sbefw/app/z/chipop_table.C new file mode 100644 index 00000000..805459b0 --- /dev/null +++ b/src/sbefw/app/z/chipop_table.C @@ -0,0 +1,101 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/sbefw/app/z/chipop_table.C $ */ +/* */ +/* OpenPOWER sbe Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2017,2018 */ +/* */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ +/* implied. See the License for the specific language governing */ +/* permissions and limitations under the License. */ +/* */ +/* IBM_PROLOG_END_TAG */ +#include "sbecmdscomaccess.H" +#include "sbecmdiplcontrol.H" +#include "sbecmdgeneric.H" +#include "sbecmdmemaccess.H" +#include "sbecmdregaccess.H" +#include "sbecmdcntrldmt.H" +#include "sbecmdringaccess.H" +#include "sbecmdsram.H" +#include "sbecmdcntlinst.H" +#include "sbecmdringaccess.H" +#include "sbetrace.H" +#include "sbe_sp_intf.H" +#include "sbeHostMsg.H" +#include "sbe_host_intf.H" +#include "sbestates.H" +#include "sberegaccess.H" +#include "sbecmdmpipl.H" +#include "sbecmdtracearray.H" +#include "sbecmdCntrlTimer.H" +#include "sbecmdfastarray.H" + +#include "core/chipop_handler.H" + +#include "power/istep.H" + +static const uint16_t HARDWARE_FENCED_STATE = + SBE_FENCE_AT_CONTINUOUS_IPL|SBE_FENCE_AT_DMT; + +static const uint16_t PUT_HARDWARE_FENCED_STATE = + HARDWARE_FENCED_STATE|SBE_FENCE_AT_MPIPL; + +//////////////////////////////////////////////////////////////// +// @brief g_sbeScomCmdArray +//////////////////////////////////////////////////////////////// +CMD_ARR( + A2, + {SBE_COMMON::sbeGetScom, + SBE_CMD_GETSCOM, + HARDWARE_FENCED_STATE, + }, + {SBE_COMMON::sbePutScom, + SBE_CMD_PUTSCOM, + HARDWARE_FENCED_STATE, + }, + {SBE_COMMON::sbeModifyScom, + SBE_CMD_MODIFYSCOM, + HARDWARE_FENCED_STATE, + }, + {SBE_COMMON::sbePutScomUnderMask, + SBE_CMD_PUTSCOM_MASK, + HARDWARE_FENCED_STATE, + }, + {SBE_COMMON::sbeMultiScom, + SBE_CMD_MULTISCOM, + HARDWARE_FENCED_STATE, + } +) + +//////////////////////////////////////////////////////////////// +// @brief g_sbeIplControlCmdArray +// +//////////////////////////////////////////////////////////////// +/*CMD_ARR( + A1, + {SBEAPP_POWER::sbeHandleIstep, + SBE_CMD_EXECUTE_ISTEP, + HARDWARE_FENCED_STATE|SBE_FENCE_AT_DUMPING, + }, + {sbeHandleSuspendIO, + SBE_CMD_SUSPEND_IO, + SBE_FENCE_AT_DUMPING, + } +)*/ + + + +// Mandatory macro inclusion +CMD_CLASS_DEFAULT_INTIALISATION diff --git a/src/sbefw/app/z/ipl_table.C b/src/sbefw/app/z/ipl_table.C new file mode 100644 index 00000000..cb859288 --- /dev/null +++ b/src/sbefw/app/z/ipl_table.C @@ -0,0 +1,357 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/sbefw/app/z/ipl_table.C $ */ +/* */ +/* OpenPOWER sbe Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2017,2018 */ +/* */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ +/* implied. See the License for the specific language governing */ +/* permissions and limitations under the License. */ +/* */ +/* IBM_PROLOG_END_TAG */ +#include "core/ipl.H" + +#include "sbecmdiplcontrol.H" +#include "sbefifo.H" +#include "sbetrace.H" +#include "sbe_sp_intf.H" +#include "sbeFifoMsgUtils.H" +#include "assert.h" +#include "sberegaccess.H" +#include "sbestates.H" +#include "sbecmdcntrldmt.H" +#include "sbeglobals.H" +// TODO Workaround +#include "plat_target_parms.H" + +#include "fapi2.H" + +#include "sbeXipUtils.H" // For getting hbbl offset +#include "sbeutil.H" // For getting SBE_TO_NEST_FREQ_FACTOR + +#include "sbeSecureMemRegionManager.H" + +// Forward declaration +using namespace fapi2; + +// constants +static const uint32_t SBE_ROLE_MASK = 0x00000002; +static const uint32_t SBE_SYSTEM_QUIESCE_TIMEOUT_LOOP = 20000; + +static const uint64_t SBE_LQA_DELAY_HW_US = 1000000ULL; // 1ms +static const uint64_t SBE_LQA_DELAY_SIM_CYCLES = 0x1ULL; + +// Bit-33 used to checkstop the system, Since this is directly getting inserted +// will have to use bit (63-33) = 30th bit +static const uint64_t N3_FIR_SYSTEM_CHECKSTOP_BIT = 30; // 63-33 = 30 + +// Externs + +//Utility function to mask special attention +extern ReturnCode maskSpecialAttn( const Target<TARGET_TYPE_CORE>& i_target ); + + + + +#ifndef __SBEFW_SEEPROM__ +/* + * --------------------------------------------- start PIBMEM CODE + */ + +istepTableEntry_t istepTableEntries[] = { + +}; + +REGISTER_ISTEP_TABLE(istepTableEntries) + +//---------------------------------------------------------------------------- + +ReturnCode istepAttrSetup( voidfuncptr_t i_hwp) +{ + return performAttrSetup(); +} +//---------------------------------------------------------------------------- + +ReturnCode istepWithProc( voidfuncptr_t i_hwp) +{ + ReturnCode rc = FAPI2_RC_SUCCESS; + return rc; +} +//---------------------------------------------------------------------------- + +ReturnCode istepHwpTpSwitchGears( voidfuncptr_t i_hwp) +{ + ReturnCode rc = FAPI2_RC_SUCCESS; + return rc; +} + +//---------------------------------------------------------------------------- + +ReturnCode istepNestFreq( voidfuncptr_t i_hwp) +{ + #define SBE_FUNC "istepNestFreq " + ReturnCode rc = FAPI2_RC_SUCCESS; + return rc; + #undef SBE_FUNC +} + +//---------------------------------------------------------------------------- + +ReturnCode istepSelectEx( voidfuncptr_t i_hwp) +{ + ReturnCode rc = FAPI2_RC_SUCCESS; + return rc; +} + +//---------------------------------------------------------------------------- +ReturnCode istepWithEq( voidfuncptr_t i_hwp) +{ + ReturnCode rc = FAPI2_RC_SUCCESS; + return rc; +} + +//---------------------------------------------------------------------------- +ReturnCode istepCacheInitf (voidfuncptr_t i_hwp ) +{ + #define SBE_FUNC "istepCacheInitf" + SBE_ENTER(SBE_FUNC); + ReturnCode l_rc = FAPI2_RC_SUCCESS; + SBE_EXIT(SBE_FUNC); + return l_rc; + #undef SBE_FUNC +} + +//---------------------------------------------------------------------------- +ReturnCode istepWithCore( voidfuncptr_t i_hwp) +{ + #define SBE_FUNC "istepWithCore" + ReturnCode rc = FAPI2_RC_SUCCESS; + return rc; + #undef SBE_FUNC +} +//---------------------------------------------------------------------------- + +ReturnCode istepWithEqConditional( voidfuncptr_t i_hwp) +{ + SBE_ENTER("istepWithEqCondtional"); + ReturnCode rc = FAPI2_RC_SUCCESS; + SBE_EXIT("istepWithEqCondtional"); + return rc; +} +//---------------------------------------------------------------------------- + +ReturnCode istepWithCoreConditional( voidfuncptr_t i_hwp) +{ + SBE_ENTER("istepWithCoreCondtional"); + fapi2::Target<fapi2::TARGET_TYPE_SYSTEM > sysTgt; + ReturnCode rc = FAPI2_RC_SUCCESS; + do + { + uint8_t iplPhase = ENUM_ATTR_SYSTEM_IPL_PHASE_HB_IPL; + FAPI_ATTR_GET(ATTR_SYSTEM_IPL_PHASE, sysTgt, iplPhase); + if( ENUM_ATTR_SYSTEM_IPL_PHASE_CACHE_CONTAINED == iplPhase ) + { + break; + } + rc = istepWithCore(i_hwp); + }while(0); + SBE_EXIT("istepWithCoreCondtional"); + return rc; +} + +//---------------------------------------------------------------------------- +constexpr uint32_t HB_MEM_WINDOW_SIZE = 10*1024*1024; //10 MB +ReturnCode istepLoadBootLoader( voidfuncptr_t i_hwp) +{ + ReturnCode rc = FAPI2_RC_SUCCESS; + return rc; +} + +//---------------------------------------------------------------------------- + +ReturnCode istepStartInstruction( voidfuncptr_t i_hwp) +{ + ReturnCode rc = FAPI2_RC_SUCCESS; + rc = istepWithCore(i_hwp); + if(rc == FAPI2_RC_SUCCESS) + { + (void)SbeRegAccess::theSbeRegAccess().stateTransition( + SBE_RUNTIME_EVENT); + } + return rc; +} + +//---------------------------------------------------------------------------- +ReturnCode istepCheckSbeMaster( voidfuncptr_t i_hwp) +{ + #define SBE_FUNC "istepCheckSbeMaster " + ReturnCode rc = FAPI2_RC_SUCCESS; + return rc; + #undef SBE_FUNC +} + +//---------------------------------------------------------------------------- +ReturnCode istepNoOp( voidfuncptr_t i_hwp) +{ + SBE_INFO("istepNoOp"); + return FAPI2_RC_SUCCESS ; +} + +//---------------------------------------------------------------------------- +ReturnCode istepLpcInit( voidfuncptr_t i_hwp) +{ + ReturnCode rc = FAPI2_RC_SUCCESS; + return rc; +} +/* + * end PIBMEMCODE ----------------------------------------------- + */ +#endif // #ifndef __SBEFW_SEEPROM__ + +#ifdef __SBEFW_SEEPROM__ +/* + * --------------------------------------------- start SEEPROM CODE + */ +//---------------------------------------------------------------------------- +ReturnCode istepWithCoreSetBlock( voidfuncptr_t i_hwp) +{ + #define SBE_FUNC "istepWithCoreSetBlock" + SBE_ENTER(SBE_FUNC); + ReturnCode l_rc = FAPI2_RC_SUCCESS; + SBE_EXIT(SBE_FUNC); + return l_rc; + #undef SBE_FUNC +} + +//---------------------------------------------------------------------------- +ReturnCode istepWithCoreState( voidfuncptr_t i_hwp) +{ + #define SBE_FUNC "istepWithCoreState" + SBE_ENTER(SBE_FUNC); + ReturnCode l_rc = FAPI2_RC_SUCCESS; + SBE_EXIT(SBE_FUNC); + return l_rc; + #undef SBE_FUNC +} + +//---------------------------------------------------------------------------- +ReturnCode istepMpiplRstClrTpmBits( voidfuncptr_t i_hwp) +{ + #define SBE_FUNC "istepMpiplRstClrTpmBits" + SBE_ENTER(SBE_FUNC); + + ReturnCode l_rc = performTpmReset(); + if( l_rc != FAPI2_RC_SUCCESS ) + { + SBE_ERROR(SBE_FUNC" performTpmReset failed"); + } + + SBE_EXIT(SBE_FUNC); + return l_rc; + #undef SBE_FUNC +} + +//---------------------------------------------------------------------------- +ReturnCode istepWithExL2Flush( voidfuncptr_t i_hwp) +{ + #define SBE_FUNC "istepWithExL2Flush" + SBE_ENTER(SBE_FUNC); + ReturnCode l_rc = FAPI2_RC_SUCCESS; + SBE_EXIT(SBE_FUNC); + return l_rc; + #undef SBE_FUNC +} + +//---------------------------------------------------------------------------- +ReturnCode istepWithExL3Flush( voidfuncptr_t i_hwp) +{ + #define SBE_FUNC "istepWithExL3Flush" + SBE_ENTER(SBE_FUNC); + ReturnCode l_rc = FAPI2_RC_SUCCESS; + SBE_EXIT(SBE_FUNC); + return l_rc; + #undef SBE_FUNC +} + +//---------------------------------------------------------------------------- +ReturnCode istepWithProcSequenceDrtm( voidfuncptr_t i_hwp) +{ + #define SBE_FUNC "istepWithProcSequenceDrtm" + SBE_ENTER(SBE_FUNC); + ReturnCode l_rc = FAPI2_RC_SUCCESS; + SBE_EXIT(SBE_FUNC); + return l_rc; + #undef SBE_FUNC +} + +//---------------------------------------------------------------------------- +ReturnCode istepStartMpipl( voidfuncptr_t i_hwp) +{ + #define SBE_FUNC "istepStartMpipl" + SBE_ENTER(SBE_FUNC); + ReturnCode rc = FAPI2_RC_SUCCESS; + SBE_EXIT(SBE_FUNC); + return rc; + #undef SBE_FUNC +} + +//---------------------------------------------------------------------------- +ReturnCode istepMpiplQuadPoweroff( voidfuncptr_t i_hwp) +{ + #define SBE_FUNC "istepMpiplQuadPoweroff" + SBE_ENTER(SBE_FUNC); + ReturnCode l_rc = FAPI2_RC_SUCCESS; + SBE_EXIT(SBE_FUNC); + return l_rc; + #undef SBE_FUNC +} + +//---------------------------------------------------------------------------- +ReturnCode istepWithProcQuiesceLQASet( voidfuncptr_t i_hwp ) +{ + #define SBE_FUNC "istepWithProcQuiesceLQASet" + SBE_ENTER(SBE_FUNC); + ReturnCode l_rc = FAPI2_RC_SUCCESS; + SBE_EXIT(SBE_FUNC); + return l_rc; + #undef SBE_FUNC +} + +//---------------------------------------------------------------------------- +ReturnCode istepMpiplSetFunctionalState( voidfuncptr_t i_hwp ) +{ + #define SBE_FUNC "istepMpiplSetFunctionalState" + SBE_ENTER(SBE_FUNC); + ReturnCode rc = FAPI2_RC_SUCCESS; + SBE_EXIT(SBE_FUNC); + return rc; + #undef SBE_FUNC +} + +//---------------------------------------------------------------------------- +ReturnCode istepStopClockMpipl( voidfuncptr_t i_hwp ) +{ + #define SBE_FUNC "istepStopClockMpipl" + SBE_ENTER(SBE_FUNC); + uint32_t l_fapiRc = FAPI2_RC_SUCCESS; + SBE_EXIT(SBE_FUNC); + return l_fapiRc; + #undef SBE_FUNC +} + +/* + * end SEEPROM CODE -------------------------------------------------- + */ +#endif // ifdef __SBEFW_SEEPROM__ diff --git a/src/sbefw/app/z/sbecmdcntrldmt.C b/src/sbefw/app/z/sbecmdcntrldmt.C new file mode 100644 index 00000000..d3b7e919 --- /dev/null +++ b/src/sbefw/app/z/sbecmdcntrldmt.C @@ -0,0 +1,50 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/sbefw/app/z/sbecmdcntrldmt.C $ */ +/* */ +/* OpenPOWER sbe Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2016,2018 */ +/* */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ +/* implied. See the License for the specific language governing */ +/* permissions and limitations under the License. */ +/* */ +/* IBM_PROLOG_END_TAG */ +/* + * @file: sbe/sbefw/sbecmdcntrldmt.C + * + * @brief This file contains the Core State Control Messages + * + */ + +#include "sbecmdcntrldmt.H" +#include "sbetrace.H" +#include "fapi2.H" +#include "sbeFFDC.H" + +using namespace fapi2; + + +///////////////////////////////////////////////////////////////////// +///////////////////////////////////////////////////////////////////// +uint32_t sbeCollectDeadmanFfdc (void) +{ + #define SBE_FUNC "sbeCollectDeadmanFfdc" + uint32_t rc = SBE_SEC_COMMAND_NOT_SUPPORTED; + + // trace the saved aync ffdc reason and SBE + + return rc; + #undef SBE_FUNC +} diff --git a/src/sbefw/app/z/sbecmdcntrldmt.H b/src/sbefw/app/z/sbecmdcntrldmt.H new file mode 100644 index 00000000..9949486c --- /dev/null +++ b/src/sbefw/app/z/sbecmdcntrldmt.H @@ -0,0 +1,40 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/sbefw/app/z/sbecmdcntrldmt.H $ */ +/* */ +/* OpenPOWER sbe Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2016,2018 */ +/* */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ +/* implied. See the License for the specific language governing */ +/* permissions and limitations under the License. */ +/* */ +/* IBM_PROLOG_END_TAG */ +/* + * @file: ppe/sbe/sbefw/sbecmdcntrldmt.H + * + * @brief This file contains the Core State Control Messages API header + * + */ + +#ifndef __SBEFW_SBECMDCNTRLDMT_H +#define __SBEFW_SBECMDCNTRLDMT_H + +#include <stdint.h> + + +uint32_t sbeCollectDeadmanFfdc (void); + + +#endif // __SBEFW_SBECMDCNTRLDMT_H diff --git a/src/sbefw/app/z/sbecmdiplcontrol.C b/src/sbefw/app/z/sbecmdiplcontrol.C new file mode 100644 index 00000000..bd37a845 --- /dev/null +++ b/src/sbefw/app/z/sbecmdiplcontrol.C @@ -0,0 +1,76 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/sbefw/app/z/sbecmdiplcontrol.C $ */ +/* */ +/* OpenPOWER sbe Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2015,2018 */ +/* */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ +/* implied. See the License for the specific language governing */ +/* permissions and limitations under the License. */ +/* */ +/* IBM_PROLOG_END_TAG */ +/* + * @file: ppe/sbe/sbefw/sbecmdiplcontrol.C + * + * @brief This file contains the SBE istep chipOps + * + */ +#include "sbecmdiplcontrol.H" +#include "sbefifo.H" +#include "sbetrace.H" +#include "sbe_sp_intf.H" +#include "sbeFifoMsgUtils.H" +#include "assert.h" +#include "sberegaccess.H" +#include "sbestates.H" +#include "sbecmdcntrldmt.H" +#include "sbeglobals.H" +// TODO Workaround +#include "plat_target_parms.H" + +using namespace fapi2; + +static const uint32_t PEC_PHB_IOVALID_BIT_SHIFT = 59; +static const uint64_t PEC_PHB_IOVALID_BIT_MASK = 0x1ULL; + +#ifdef __SBEFW_SEEPROM__ +/* ----------------------------------- start SEEPROM CODE */ +//Utility function to mask special attention +//---------------------------------------------------------------------------- +/* end SEEPROM CODE ----------------------------- */ +#endif // ifdef __SBEFW_SEEPROM__ + +#ifndef __SBEFW_SEEPROM__ +/* ----------------------------------- start PIBMEM CODE */ + + +//---------------------------------------------------------------------------- + +ReturnCode performAttrSetup( ) +{ + #define SBE_FUNC "performAttrSetup " + SBE_ENTER("performAttrSetup "); + ReturnCode rc = FAPI2_RC_SUCCESS; + do + { + + }while(0); + SBE_EXIT(SBE_FUNC); + return rc; + #undef SBE_FUNC +} + +/* end PIBMEM CODE ----------------------------- */ +#endif //#ifndef __SBEFW_SEEPROM__ diff --git a/src/sbefw/app/z/sbecmdiplcontrol.H b/src/sbefw/app/z/sbecmdiplcontrol.H new file mode 100644 index 00000000..b6a60334 --- /dev/null +++ b/src/sbefw/app/z/sbecmdiplcontrol.H @@ -0,0 +1,58 @@ +/* IBM_PROLOG_BEGIN_TAG */ +/* This is an automatically generated prolog. */ +/* */ +/* $Source: src/sbefw/app/z/sbecmdiplcontrol.H $ */ +/* */ +/* OpenPOWER sbe Project */ +/* */ +/* Contributors Listed Below - COPYRIGHT 2015,2018 */ +/* */ +/* */ +/* Licensed under the Apache License, Version 2.0 (the "License"); */ +/* you may not use this file except in compliance with the License. */ +/* You may obtain a copy of the License at */ +/* */ +/* http://www.apache.org/licenses/LICENSE-2.0 */ +/* */ +/* Unless required by applicable law or agreed to in writing, software */ +/* distributed under the License is distributed on an "AS IS" BASIS, */ +/* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or */ +/* implied. See the License for the specific language governing */ +/* permissions and limitations under the License. */ +/* */ +/* IBM_PROLOG_END_TAG */ +/* + * @file: ppe/sbe/sbefw/sbecmdiplcontrol.H + * + * @brief This file contains the SBE command details + * + */ + +#ifndef __SBEFW_SBECMDIPLCONTROL_H +#define __SBEFW_SBECMDIPLCONTROL_H + +#include <stdint.h> +#include "sbecmdgeneric.H" +#include "fapi2.H" + +/** + * @brief execute suspend IO chip-op (0xA102) + * + * @param[in] i_pArg Buffer to be passed to the function (not used as of now) + * + * @return Rc from the FIFO access utility + */ +uint32_t sbeHandleSuspendIO(uint8_t *i_pArg); + +// Utility function to do TPM reset +fapi2::ReturnCode performTpmReset(); + +//Utility function to update PHB functional State +fapi2::ReturnCode updatePhbFunctionalState( void ); + +//Utility function to clear crest error latch +fapi2::ReturnCode resetCrespErrLatch( void ); + +fapi2::ReturnCode performAttrSetup( void ); + +#endif // __SBEFW_SBECMDIPLCONTROL_H diff --git a/src/sbefw/core/sbeFFDC.C b/src/sbefw/core/sbeFFDC.C index b83b54dc..10c301f5 100644 --- a/src/sbefw/core/sbeFFDC.C +++ b/src/sbefw/core/sbeFFDC.C @@ -180,6 +180,7 @@ uint32_t SbeFFDCPackage::sendOverHostIntf(const uint32_t i_fieldsConfig, { #define SBE_FUNC "sendOverHostIntf" SBE_ENTER(SBE_FUNC); + #if HOST_INTERFACE_AVAILABLE uint32_t rc = SBE_SEC_OPERATION_SUCCESSFUL; uint32_t length = 0; bool isLastAccess = false; @@ -263,6 +264,9 @@ uint32_t SbeFFDCPackage::sendOverHostIntf(const uint32_t i_fieldsConfig, SBE_INFO(SBE_FUNC" [%d] bytes sent", SBE_GLOBAL->hostFFDCAddr.size - i_allocatedSize); + #else //HOST_INTERFACE_AVAILABLE + uint32_t rc = SBE_SEC_COMMAND_NOT_SUPPORTED; + #endif //HOST_INTERFACE_AVAILABLE SBE_EXIT(SBE_FUNC); return rc; #undef SBE_FUNC diff --git a/src/sbefw/core/sbeHostUtils.C b/src/sbefw/core/sbeHostUtils.C index a8c087ec..d936953c 100644 --- a/src/sbefw/core/sbeHostUtils.C +++ b/src/sbefw/core/sbeHostUtils.C @@ -201,8 +201,10 @@ void sbePSUSendResponse(sbeSbe2PsuRespHdr_t &i_sbe2PsuRespHdr, uint32_t &i_fapiRc, uint32_t &io_rc) { + #define SBE_FUNC "sbePSUSendResponse" SBE_ENTER(SBE_FUNC); + #if HOST_INTERFACE_AVAILABLE do { // Making sure the PSU access utility is functional @@ -319,5 +321,8 @@ void sbePSUSendResponse(sbeSbe2PsuRespHdr_t &i_sbe2PsuRespHdr, "SBE_HOST_PSU_MBOX_REG4"); } } while(0); + #else + io_rc = SBE_SEC_COMMAND_NOT_SUPPORTED; + #endif #undef SBE_FUNC } diff --git a/src/sbefw/core/sbeMemAccessInterface.C b/src/sbefw/core/sbeMemAccessInterface.C index bb341f38..8b42137e 100644 --- a/src/sbefw/core/sbeMemAccessInterface.C +++ b/src/sbefw/core/sbeMemAccessInterface.C @@ -5,7 +5,8 @@ /* */ /* OpenPOWER sbe Project */ /* */ -/* Contributors Listed Below - COPYRIGHT 2016,2017 */ +/* Contributors Listed Below - COPYRIGHT 2016,2018 */ +/* [+] International Business Machines Corp. */ /* */ /* */ /* Licensed under the Apache License, Version 2.0 (the "License"); */ @@ -23,6 +24,8 @@ /* IBM_PROLOG_END_TAG */ #include "sbeMemAccessInterface.H" +#ifdef HOST_INTERFACE_AVAILABLE + #ifdef SEEPROM_IMAGE // Using Function pointer to force long call p9_adu_access_FP_t p9_adu_access_hwp = &p9_adu_access; @@ -268,3 +271,5 @@ void sbeMemAccessInterface::alignAccessWithBuffer() } #undef SBE_FUNC } + +#endif |