summaryrefslogtreecommitdiffstats
path: root/src/include/bootloader
diff options
context:
space:
mode:
authorMarty Gloff <mgloff@us.ibm.com>2015-12-17 10:10:47 -0600
committerStephen Cprek <smcprek@us.ibm.com>2016-02-19 17:06:42 -0600
commitb742fd9b5b3c07129abfa3c099655346f6b1e6a6 (patch)
treef3e3bd027ac048911296cd75b66e06efa0ea2519 /src/include/bootloader
parent6b3144d3d653cfb3d14cb74598b003cc7c653c73 (diff)
downloadtalos-hostboot-b742fd9b5b3c07129abfa3c099655346f6b1e6a6.tar.gz
talos-hostboot-b742fd9b5b3c07129abfa3c099655346f6b1e6a6.zip
Hostboot Bootloader Infrastructure
New and changed code to provide bootloader infrastructure. Changes to build bootloader and create the image file. Change-Id: Ie400f0ca6954b86e275fd68c9462f8d18eeec98a RTC:127211 Reviewed-on: http://gfw160.aus.stglabs.ibm.com:8080/gerrit/22856 Tested-by: Jenkins Server Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com>
Diffstat (limited to 'src/include/bootloader')
-rw-r--r--src/include/bootloader/bootloader.H93
-rw-r--r--src/include/bootloader/bootloader_trace.H183
2 files changed, 276 insertions, 0 deletions
diff --git a/src/include/bootloader/bootloader.H b/src/include/bootloader/bootloader.H
new file mode 100644
index 000000000..89b4bd761
--- /dev/null
+++ b/src/include/bootloader/bootloader.H
@@ -0,0 +1,93 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/include/bootloader/bootloader.H $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2015,2016 */
+/* [+] 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 */
+
+#ifndef __BOOT_LOADER_H
+#define __BOOT_LOADER_H
+
+/**
+ * @file bootloader.H
+ *
+ * TaskInfo structs for each task that will run.
+ */
+
+#include <builtins.h>
+#include <arch/ppc.H>
+
+extern "C" void task_end_stub();
+
+#define assert(expr) \
+{\
+ if (unlikely(!(expr)))\
+ {\
+ MAGIC_INSTRUCTION(MAGIC_BREAK); /* @TODO RTC:133821 temp bringup */ \
+ task_end_stub();\
+ }\
+}
+
+#define printk(format...)
+
+namespace Bootloader{
+ /** @enum MMIOLoadStoreSizes
+ * @brief List of MMIO Load and Store Sizes.
+ *
+ * These are the sizes (in bytes) for the load and store commands used
+ * to read and write data when handling an MMIO.
+ */
+ enum MMIOLoadStoreSizes
+ {
+ /** BYTESIZE */
+ BYTESIZE = 1,
+ /** WORDSIZE */
+ WORDSIZE = 4,
+ /** DBLWORDSIZE */
+ DBLWORDSIZE = 8
+ };
+
+ /**
+ * @brief Handle MMIO to copy code/data from one location to another
+ *
+ * @param[in] i_srcAddr MMIO address to copy from
+ * @param[in] i_destAddr address to copy to
+ * @param[in] i_size number of bytes to copy
+ * @param[in] i_ld_st_size size of data in ld and st instructions
+ * BYTESIZE => copy 1 byte at a time
+ * WORDSIZE => copy 4 bytes at a time
+ * DBLWORDSIZE => copy 8 bytes at a time
+ */
+ extern void handleMMIO(uint64_t i_srcAddr,
+ uint64_t i_destAddr,
+ uint32_t i_size,
+ MMIOLoadStoreSizes i_ld_st_size);
+
+ /**
+ * @brief Pointer to bootloader scratch space
+ *
+ * Pointer to location in main storage which bootloader uses as
+ * scratch space
+ */
+ extern uint8_t *g_blScratchSpace;
+} // end namespace Bootloader
+
+#endif
diff --git a/src/include/bootloader/bootloader_trace.H b/src/include/bootloader/bootloader_trace.H
new file mode 100644
index 000000000..234bb782c
--- /dev/null
+++ b/src/include/bootloader/bootloader_trace.H
@@ -0,0 +1,183 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/include/bootloader/bootloader_trace.H $ */
+/* */
+/* OpenPOWER HostBoot Project */
+/* */
+/* Contributors Listed Below - COPYRIGHT 2015,2016 */
+/* [+] 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 */
+
+#ifndef __BOOT_LOADER_TRACE_H
+#define __BOOT_LOADER_TRACE_H
+
+#include <arch/ppc.H>
+
+/**
+ * @file bootloader_trace.H
+ *
+ * TaskInfo structs for each task that will run.
+ */
+
+#ifndef BOOTLOADER_TRACE_SIZE
+#define BOOTLOADER_TRACE_SIZE 64
+#endif
+
+extern uint8_t bootloader_trace_index;
+extern uint8_t bootloader_trace[BOOTLOADER_TRACE_SIZE];
+
+/** @enum BootloaderTraces
+ * @brief List of Hostboot Bootloader Trace values.
+ *
+ * These are used as trace values for the Hostboot Bootloader code.
+ */
+enum BootloaderTraces
+{
+ /** Bootloader main started */
+ BTLDR_TRC_MAIN_START = 0x10,
+
+ /** Bootloader main getHBBSection returned */
+ BTLDR_TRC_MAIN_GETHBBSECTION_RTN = 0x11,
+
+ /** Bootloader main handleMMIO to working location returned */
+ BTLDR_TRC_MAIN_WORKING_HANDLEMMIO_RTN = 0x12,
+
+ /** Bootloader main removeECC returned */
+ BTLDR_TRC_MAIN_REMOVEECC_RTN = 0x13,
+
+ /** Bootloader main applySecureSignatureValidation returned */
+ BTLDR_TRC_MAIN_APPLYSECSIGVAL_RTN = 0x14,
+
+ /** Bootloader main copy HBB to running location done */
+ BTLDR_TRC_MAIN_COPY_HBB_DONE = 0x15,
+
+ /** Bootloader handleMMIO started */
+ BTLDR_TRC_HANDLEMMIO_START = 0x20,
+
+ /** Bootloader PNOR Access getHBBSection started */
+ BTLDR_TRC_PA_GETHBBSECTION_START = 0x30,
+
+ /** Bootloader PNOR Access findTOC handleMMIO to copy TOC ONE returned */
+ BTLDR_TRC_PA_FINDTOC_TOC1_HANDLEMMIO_RTN = 0x31,
+
+ /** Bootloader PNOR Access findTOC readTOC for TOC ONE returned */
+ BTLDR_TRC_PA_FINDTOC_TOC1_READTOC_RTN = 0x32,
+
+ /** Bootloader PNOR Access findTOC handleMMIO to copy TOC TWO returned */
+ BTLDR_TRC_PA_FINDTOC_TOC2_HANDLEMMIO_RTN = 0x33,
+
+ /** Bootloader PNOR Access findTOC readTOC for TOC TWO returned */
+ BTLDR_TRC_PA_FINDTOC_TOC2_READTOC_RTN = 0x34,
+
+ /** Bootloader PNOR Access getHBBSection findTOC returned */
+ BTLDR_TRC_PA_GETHBBSECTION_FINDTOC_RTN = 0x35,
+
+ /** Bootloader PNOR Access readTOC zeroSection returned */
+ BTLDR_TRC_PA_READTOC_ZEROSECTION_RTN = 0x41,
+
+ /** Bootloader PNOR Access readTOC checkForNullBuffer returned */
+ BTLDR_TRC_PA_READTOC_CHECKNULLBUFFER_RTN = 0x42,
+
+ /** Bootloader PNOR Access readTOC performHdrChecksum returned */
+ BTLDR_TRC_PA_READTOC_HDRCHECKSUM_RTN = 0x43,
+
+ /** Bootloader PNOR Access readTOC checkHeader returned */
+ BTLDR_TRC_PA_READTOC_CHECKHEADER_RTN = 0x44,
+
+ /** Bootloader PNOR Access readTOC parseEntries returned */
+ BTLDR_TRC_PA_READTOC_PARSEENTRIES_RTN = 0x45,
+
+ /** Bootloader main removeECC returned corrected ECC rc */
+ BTLDR_TRC_MAIN_REMOVEECC_CORRECTED = 0xD0,
+
+ /** Bootloader Utils checkHeader magic invalid */
+ BTLDR_TRC_UTILS_CHECKHEADER_MAGIC = 0xE0,
+
+ /** Bootloader Utils checkHeader version invalid */
+ BTLDR_TRC_UTILS_CHECKHEADER_VERSION = 0xE1,
+
+ /** Bootloader Utils checkHeader entry size invalid */
+ BTLDR_TRC_UTILS_CHECKHEADER_ENTRYSIZE = 0xE2,
+
+ /** Bootloader Utils checkHeader entry count invalid */
+ BTLDR_TRC_UTILS_CHECKHEADER_ENTRYCNT = 0xE3,
+
+ /** Bootloader Utils checkHeader block size invalid */
+ BTLDR_TRC_UTILS_CHECKHEADER_BLOCKSIZE = 0xE4,
+
+ /** Bootloader Utils checkHeader block count invalid */
+ BTLDR_TRC_UTILS_CHECKHEADER_BLOCKCNT = 0xE5,
+
+ /** Bootloader Utils checkHeader header size invalid */
+ BTLDR_TRC_UTILS_CHECKHEADER_HDRSIZE = 0xE6,
+
+ /** Bootloader Utils parseEntries invalid section */
+ BTLDR_TRC_UTILS_PARSE_INVALID_SECTION = 0xE7,
+
+ /** Bootloader main getHBBSection returned */
+ BTLDR_TRC_MAIN_GETHBBSECTION_FAIL = 0xF0,
+
+ /** Bootloader main removeECC returned */
+ BTLDR_TRC_MAIN_REMOVEECC_FAIL = 0xF1,
+
+ /** Bootloader PNOR Access readTOC checkForNullBuffer null buffer */
+ BTLDR_TRC_PA_READTOC_CHKNULLBUFFER_NULL = 0xF2,
+
+ /** Bootloader PNOR Access readTOC performHdrChecksum checksum error */
+ BTLDR_TRC_PA_READTOC_HDRCHECKSUM_ERR = 0xF3,
+
+ /** Bootloader PNOR Access readTOC checkHeader header error */
+ BTLDR_TRC_PA_READTOC_CHECKHEADER_ERR = 0xF4,
+
+ /** Bootloader PNOR Access readTOC parseEntries entry error */
+ BTLDR_TRC_PA_READTOC_PARSEENTRIES_ERR = 0xF5,
+
+ /** Bootloader PNOR Access findTOC readTOC errors */
+ BTLDR_TRC_PA_FINDTOC_READTOC_ERR = 0xF6,
+
+ /** Bootloader Utils parseEntries checksum error */
+ BTLDR_TRC_UTILS_PARSE_CHECKSUM_ERROR = 0xF7,
+
+ /** Bootloader Utils parseEntries size extends beyond Flash */
+ BTLDR_TRC_UTILS_PARSE_EXCEEDS_FLASH = 0xF8,
+
+ /** Bootloader PNOR Access getHBBSection findTOC error */
+ BTLDR_TRC_PA_GETHBBSECTION_FINDTOC_ERR = 0xF9,
+
+ /** Bootloader PNOR Access getHBBSection findTOC no HBB section */
+ BTLDR_TRC_PA_GETHBBSECTION_FINDTOC_NOHBB = 0xFA,
+};
+
+#ifndef BOOTLOADER_TRACE
+#define BOOTLOADER_TRACE(trace_value) \
+{ \
+ bootloader_trace[bootloader_trace_index++] = trace_value; \
+ bootloader_trace_index %= BOOTLOADER_TRACE_SIZE; \
+ lwsync(); \
+}
+#endif
+
+#ifndef BOOTLOADER_TRACE_W_BRK
+#define BOOTLOADER_TRACE_W_BRK(trace_value) \
+{ \
+ BOOTLOADER_TRACE(trace_value); \
+ /* MAGIC_INSTRUCTION(MAGIC_BREAK); */ \
+}
+#endif
+
+#endif
OpenPOWER on IntegriCloud