summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C3
-rw-r--r--src/import/chips/p9/procedures/hwp/memory/lib/utils/swizzle.H21
-rw-r--r--src/import/hwpf/fapi2/include/utils.H27
3 files changed, 28 insertions, 23 deletions
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C
index 9b3243609..8446c6838 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/dimm/eff_dimm.C
@@ -48,7 +48,6 @@
#include <lib/shared/mss_kind.H>
#include <lib/phy/dp16.H>
#include <lib/mss_attribute_accessors_manual.H>
-#include <endian.h>
namespace mss
{
@@ -826,7 +825,7 @@ fapi2::ReturnCode eff_dimm::dram_mfg_id()
FAPI_TRY( iv_spd_decoder.dram_manufacturer_id_code(l_decoder_val), "Failed getting dram id code from SPD %s",
mss::c_str(iv_dimm) );
- endian_swap(l_decoder_val);
+ fapi2::endian_swap(l_decoder_val);
switch (l_decoder_val)
{
diff --git a/src/import/chips/p9/procedures/hwp/memory/lib/utils/swizzle.H b/src/import/chips/p9/procedures/hwp/memory/lib/utils/swizzle.H
index 57523f5bd..74449540b 100644
--- a/src/import/chips/p9/procedures/hwp/memory/lib/utils/swizzle.H
+++ b/src/import/chips/p9/procedures/hwp/memory/lib/utils/swizzle.H
@@ -42,27 +42,6 @@ namespace mss
{
///
-/// @brief Endian swapping
-/// @tparam T input type
-/// @param[in,out] io_input integral input
-/// @note https://stackoverflow.com/questions/105252/how-do-i-convert-between-big-endian-and-little-endian-values-in-c
-///
-template < typename T >
-void endian_swap(T& io_input)
-{
- constexpr size_t MIN_BYTES = 2;
- static_assert(sizeof(T) >= MIN_BYTES, "Byte swapping requires at least 2 bytes of data");
-
- uint8_t* l_varArray = reinterpret_cast<uint8_t*>(&io_input);
-
- for(size_t i = 0; i < sizeof(io_input) / 2; i++)
- {
- const size_t BYTE_SWAP_INDEX = sizeof(io_input) - 1 - i;
- std::swap(l_varArray[BYTE_SWAP_INDEX], l_varArray[i]);
- }
-}
-
-///
/// @brief Swap two bits in a buffer
/// @tparam TB the bit in the buffer to move to SB
/// @tparam SB the bit in the buffer to move to TB
diff --git a/src/import/hwpf/fapi2/include/utils.H b/src/import/hwpf/fapi2/include/utils.H
index 8534d3bdb..174d9e2dd 100644
--- a/src/import/hwpf/fapi2/include/utils.H
+++ b/src/import/hwpf/fapi2/include/utils.H
@@ -38,6 +38,33 @@
namespace fapi2
{
+
+///
+/// @brief Endian swapping
+/// @tparam T input type
+/// @param[in,out] io_input integral input
+/// @note https://stackoverflow.com/questions/105252/how-do-i-convert-between-big-endian-and-little-endian-values-in-c
+/// This function does not take into account the system's endianness, but just does the endian swap
+///
+template < typename T >
+void endian_swap(T& io_input)
+{
+ constexpr size_t MIN_BYTES = 2;
+ static_assert(sizeof(T) >= MIN_BYTES, "Byte swapping requires at least 2 bytes of data");
+
+ uint8_t* l_varArray = reinterpret_cast<uint8_t*>(&io_input);
+
+ for(size_t i = 0; i < sizeof(io_input) / 2; i++)
+ {
+ const size_t BYTE_SWAP_INDEX = sizeof(io_input) - 1 - i;
+
+ // Rolling our own swap as certain downstream libraries do not have std::swap enabled
+ const auto l_temp = l_varArray[BYTE_SWAP_INDEX];
+ l_varArray[BYTE_SWAP_INDEX] = l_varArray[i];
+ l_varArray[i] = l_temp;
+ }
+}
+
#ifndef __PPE__
///
/// @brief Enable/Disable special wakeup on processor chip core(s)
OpenPOWER on IntegriCloud