aboutsummaryrefslogtreecommitdiffstats
path: root/roms/skiboot/libpore/p10_stop_data_struct.H
diff options
context:
space:
mode:
authorAngelos Mouzakitis <a.mouzakitis@virtualopensystems.com>2023-10-10 14:33:42 +0000
committerAngelos Mouzakitis <a.mouzakitis@virtualopensystems.com>2023-10-10 14:33:42 +0000
commitaf1a266670d040d2f4083ff309d732d648afba2a (patch)
tree2fc46203448ddcc6f81546d379abfaeb323575e9 /roms/skiboot/libpore/p10_stop_data_struct.H
parente02cda008591317b1625707ff8e115a4841aa889 (diff)
Add submodule dependency filesHEADmaster
Change-Id: Iaf8d18082d3991dec7c0ebbea540f092188eb4ec
Diffstat (limited to 'roms/skiboot/libpore/p10_stop_data_struct.H')
-rw-r--r--roms/skiboot/libpore/p10_stop_data_struct.H162
1 files changed, 162 insertions, 0 deletions
diff --git a/roms/skiboot/libpore/p10_stop_data_struct.H b/roms/skiboot/libpore/p10_stop_data_struct.H
new file mode 100644
index 000000000..3a16fcda9
--- /dev/null
+++ b/roms/skiboot/libpore/p10_stop_data_struct.H
@@ -0,0 +1,162 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: chips/p10/procedures/utils/stopreg/p10_stop_data_struct.H $ */
+/* */
+/* IBM CONFIDENTIAL */
+/* */
+/* EKB Project */
+/* */
+/* COPYRIGHT 2015,2020 */
+/* [+] International Business Machines Corp. */
+/* */
+/* */
+/* The source code for this program is not published or otherwise */
+/* divested of its trade secrets, irrespective of what has been */
+/* deposited with the U.S. Copyright Office. */
+/* */
+/* IBM_PROLOG_END_TAG */
+
+///
+/// @file p10_stop_data_struct.H
+/// @brief describes data structures internal to STOP API.
+///
+// *HWP HW Owner : Greg Still <stillgs@us.ibm.com>
+// *HWP FW Owner : Prem Shanker Jha <premjha2@in.ibm.com>
+// *HWP Team : PM
+// *HWP Level : 2
+// *HWP Consumed by : HB:HYP
+#ifndef __STOP_DATA_STRUCT_
+#define __STOP_DATA_STRUCT_
+
+#include "p10_hcd_memmap_base.H"
+
+#ifdef __SKIBOOT__
+ #include <skiboot.h>
+#endif
+
+#ifdef __FAPI_2_
+ #include <fapi2.H>
+#endif
+
+#ifdef PPC_HYP
+
+ #define STATIC
+
+#else
+
+ #define STATIC static
+
+#endif
+
+
+#ifdef __DEBUG_
+ #include<stdio.h>
+#endif
+
+#ifdef __cplusplus
+extern "C" {
+namespace stopImageSection
+{
+#endif
+
+/**
+ * @brief Misc constants pertaining to instruction opcodes.
+ */
+enum
+{
+ MAX_SPR_RESTORE_INST = 0x08,
+ SIZE_PER_SPR_RESTORE_INST = ((4 * sizeof(uint8_t)) / sizeof(uint32_t)),
+ MAX_THREAD_LEVEL_SPRS = 11,
+ MAX_CORE_LEVEL_SPRS = 6,
+ MAX_SPR_BIT_POS = 30,
+ SPR_BIT_POS_8 = 8,
+ SPR_BIT_POS_20 = 20,
+ SPR_BIT_POS_25 = 25,
+ SPR_BIT_POS_27 = 27,
+};
+
+/**
+ * @brief various operations supported on SPR restore entry.
+ */
+enum SprEntryUpdateMode
+{
+ INIT_SPR_REGION = 0x01,
+ UPDATE_SPR_ENTRY = 0x02,
+};
+
+/**
+ * @brief models an individual SCOM restore entry.
+ */
+typedef struct
+{
+ uint32_t iv_scomAddress;
+ uint64_t iv_scomData;
+} __attribute__((packed)) ScomEntry_t;
+
+/**
+ * @brief describes details pertaining to SCOM entry
+ */
+typedef struct
+{
+ uint32_t iv_subRegionBaseOffset;
+ uint32_t iv_subRegionLength;
+ uint8_t iv_slotFound;
+ uint8_t iv_lastEntryOffset;
+ uint16_t iv_entryOffset;
+ uint8_t iv_entryMatchOffset;
+ uint8_t iv_matchFound;
+ uint8_t iv_entryLimit;
+ uint8_t iv_reserved;
+} ScomEntryDat_t;
+
+/**
+ * @brief summarizes attributes associated with a SPR register.
+ */
+typedef struct
+{
+ uint32_t iv_sprId;
+ bool iv_isThreadScope;
+ uint32_t iv_saveMaskPos;
+} StopSprReg_t;
+
+/**
+ * @brief Misc constants.
+ */
+enum
+{
+ SIZE_SCOM_ENTRY = sizeof( ScomEntry_t ),
+ SCOM_ENTRY_START = 0xDEADDEAD,
+ BAD_SAVE_MASK = 0x007FF000,
+ MAX_SPR_INDEX = 31,
+ TEST_BIT_PATTERN = 0x80000000,
+ EP_SELECT_MASK = 0x000F0000,
+ CORE_REGION_MASK = 0x0000F000,
+ SCOM_ENTRY_VALID = 0x80000000,
+ LAST_SCOM_ENTRY = 0x40000000,
+ SWIZZLE_LAST_SCOM_ENTRY = 0x00000040,
+ SCOM_ADDR_MASK = 0x0000FFFF,
+ SCOM_ADDR_CHIPLET_MASK = 0x000FFFFF,
+ SCOM_ENTRY_VER = 0x10000000, //Ver 1.0
+ CORE_SECTION_ID_CODE = 0x00000000, //Core Section Id 0
+ L3_SECTION_ID_CODE = 0x03000000, //L3 Section Id 3 b4:b7
+ MAX_SCOM_ENTRY_POS = 0x10,
+ MIN_SUPERCHIPLET_ID = 0x20,
+
+};
+
+#ifdef __DEBUG_
+ #define MY_ERR( _fmt_, _args_...) printf( "\n"); printf( _fmt_, ##_args_)
+ #define MY_INF(_fmt_, _args_...) printf( "\n"); printf( _fmt_, ##_args_)
+#else
+ #define MY_ERR( _fmt_, _args_...)
+ #define MY_INF(_fmt_, _args_...)
+#endif
+
+#ifdef __cplusplus
+} // extern "C"
+
+} //namespace stopImageSection ends
+#endif //__cplusplus
+
+#endif