summaryrefslogtreecommitdiffstats
path: root/src/include/usr
diff options
context:
space:
mode:
Diffstat (limited to 'src/include/usr')
-rw-r--r--src/include/usr/sbe/sbe_update.H15
-rw-r--r--src/include/usr/util/utilxipimage.H65
2 files changed, 78 insertions, 2 deletions
diff --git a/src/include/usr/sbe/sbe_update.H b/src/include/usr/sbe/sbe_update.H
index 1d5a6a784..02cebeedb 100644
--- a/src/include/usr/sbe/sbe_update.H
+++ b/src/include/usr/sbe/sbe_update.H
@@ -31,6 +31,7 @@
#include <errl/errlentry.H>
#include <pnor/pnorif.H>
#include <pnor/ecc.H>
+#include <util/utilxipimage.H>
#include <vmmconst.h>
#include <targeting/common/targetservice.H>
#include <i2c/eepromif.H>
@@ -266,12 +267,21 @@ namespace SBE
uint32_t seeprom_1_data_crc;
uint8_t seeprom_1_short_version[SBE_MVPD_SHORT_IMAGE_VERSION_SIZE];
+
+ Util::imageBuild_t seeprom_0_build;
+
+ Util::imageBuild_t seeprom_1_build;
+
uint8_t mvpdSbPad[MVPD_SB_RECORD_SIZE - sizeof(flags)
- sizeof(seeprom_0_data_crc)
- sizeof(seeprom_1_data_crc)
- - (SBE_MVPD_SHORT_IMAGE_VERSION_SIZE * 2)];
+ - (SBE_MVPD_SHORT_IMAGE_VERSION_SIZE * 2)
+ - (sizeof(Util::imageBuild_t) * 2)];
} PACKED;
+ // This line forces a compile fail if struct is too large
+ static_assert(sizeof(mvpdSbKeyword_t) <= MVPD_SB_RECORD_SIZE,
+ "mvpdSbKeyword_t is too large");
/**
* @brief Contains the SBE state for a given target
@@ -308,6 +318,7 @@ namespace SBE
sbeSeepromVersionInfo_t new_seeprom_ver;
bool new_readBack_check;
+ Util::imageBuild_t new_imageBuild;
uint32_t err_plid;
uint32_t err_eid;
@@ -442,7 +453,7 @@ namespace SBE
/**
* @brief Determines which Seeprom was used to boot the SBE
*
- * @param[in] i_target Target processor to customize
+ * @param[in] i_target Target processor to customize.
*
* @param[out] o_bootSide The Seeprom the SBE booted from
*
diff --git a/src/include/usr/util/utilxipimage.H b/src/include/usr/util/utilxipimage.H
new file mode 100644
index 000000000..54aa77d03
--- /dev/null
+++ b/src/include/usr/util/utilxipimage.H
@@ -0,0 +1,65 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/include/usr/util/utilxipimage.H $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2017 */
+/* [+] International Business Machines Corp. */
+/* */
+/* */
+/* 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 util/utilxipimage.H
+ *
+ * @brief Provides utility functions for XIP images.
+ */
+#ifndef __UTIL_XIP_IMAGE_H
+#define __UTIL_XIP_IMAGE_H
+
+//******************************************************************************
+// Includes
+//******************************************************************************
+#include <trace/interface.H>
+
+namespace Util
+{
+
+ /**
+ * @brief Structure for XIP image build information
+ */
+ struct imageBuild_t
+ {
+ uint32_t buildDate; // Generated by `date +%Y%m%d`, eg, 20110630
+ uint32_t buildTime; // Generated by `date +%H%M`, eg, 0756
+ char buildTag[20]; // Generated when releasing image to fw
+ } PACKED;
+
+ /**
+ * @brief Pull build information from XIP header and trace it.
+ * @param[in] i_imagePtr Pointer to image with XIP header.
+ *
+ * @param[out] o_imageBuild Build information for input image.
+ *
+ * @param[in] i_traceDesc Trace descriptor for trace buffer to use.
+ * Defaults to nullptr and not tracing.
+ */
+ void pullTraceBuildInfo(void* i_imagePtr,
+ imageBuild_t& o_imageBuild,
+ trace_desc_t* i_traceDesc = nullptr);
+}
+
+#endif \ No newline at end of file
OpenPOWER on IntegriCloud