summaryrefslogtreecommitdiffstats
path: root/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/ecc/exp_mbs_error_vector_trap.H
diff options
context:
space:
mode:
Diffstat (limited to 'src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/ecc/exp_mbs_error_vector_trap.H')
-rw-r--r--src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/ecc/exp_mbs_error_vector_trap.H181
1 files changed, 181 insertions, 0 deletions
diff --git a/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/ecc/exp_mbs_error_vector_trap.H b/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/ecc/exp_mbs_error_vector_trap.H
index fd7bddef3..cf0665d32 100644
--- a/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/ecc/exp_mbs_error_vector_trap.H
+++ b/src/import/chips/ocmb/explorer/procedures/hwp/memory/lib/ecc/exp_mbs_error_vector_trap.H
@@ -22,3 +22,184 @@
/* permissions and limitations under the License. */
/* */
/* IBM_PROLOG_END_TAG */
+
+///
+/// @file exp_mbs_error_vector_trap.H
+/// @brief Subroutines for the MC MBS error vector trap registers (MBSEVR*Q)
+///
+// *HWP HWP Owner: Matt Hickman <Matthew.Hickman@ibm.com>
+// *HWP HWP Backup: Stephen Glancy <sglancy@us.ibm.com>
+// *HWP Team: Memory
+// *HWP Level: 3
+// *HWP Consumed by: FSP:HB
+
+#ifndef _EXP_MSS_MBS_ERROR_VECTOR_TRAP_H_
+#define _EXP_MSS_MBS_ERROR_VECTOR_TRAP_H_
+
+#include <fapi2.H>
+#include <generic/memory/lib/utils/scom.H>
+#include <generic/memory/lib/utils/find.H>
+#include <generic/memory/lib/utils/shared/mss_generic_consts.H>
+#include <generic/memory/lib/ecc/ecc_traits.H>
+#include <generic/memory/lib/ecc/mbs_error_vector_trap.H>
+
+namespace mss
+{
+
+namespace ecc
+{
+
+namespace mbs_error_vector_trap
+{
+
+///
+/// @brief set_nce_galois
+/// @tparam T fapi2 Target Type - derived from i_target's type
+/// @tparam TT traits type defaults to eccTraits<mc_type::EXPLORER, T>
+/// @param[in] i_target the fapi2 target of the mc
+/// @param[in, out] io_data the register value
+/// @param[in] i_value the value of the field
+///
+template< fapi2::TargetType T, typename TT = eccTraits<mc_type::EXPLORER, T> >
+inline void set_nce_galois( const fapi2::Target<T>& i_target,
+ fapi2::buffer<uint64_t>& io_data,
+ const uint64_t i_value)
+{
+ io_data.insertFromRight<TT::P0_NCE_GALOIS, TT::P0_NCE_GALOIS_LEN>(i_value);
+
+ FAPI_INF("%s set_nce_galois: 0x%016lx", mss::c_str(i_target), i_value);
+}
+
+///
+/// @brief get_nce_galois
+/// @tparam T fapi2 Target Type - derived from i_target's type
+/// @tparam TT traits type defaults to eccTraits<mc_type::EXPLORER, T>
+/// @param[in] i_target the fapi2 target of the mc
+/// @param[in] i_data the register value
+/// @param[out] i_value the value of the field
+///
+template< fapi2::TargetType T, typename TT = eccTraits<mc_type::EXPLORER, T> >
+inline void get_nce_galois( const fapi2::Target<T>& i_target,
+ const fapi2::buffer<uint64_t>& i_data,
+ uint64_t& o_value)
+{
+ i_data.extractToRight<TT::P0_NCE_GALOIS, TT::P0_NCE_GALOIS_LEN>(o_value);
+
+ FAPI_INF("%s get_nce_galois: 0x%016lx", mss::c_str(i_target), o_value);
+}
+
+///
+/// @brief set_nce_magnitude
+/// @tparam T fapi2 Target Type - derived from i_target's type
+/// @tparam TT traits type defaults to eccTraits<mc_type::EXPLORER, T>
+/// @param[in] i_target the fapi2 target of the mc
+/// @param[in, out] io_data the register value
+/// @param[in] i_value the value of the field
+///
+template< fapi2::TargetType T, typename TT = eccTraits<mc_type::EXPLORER, T> >
+inline void set_nce_magnitude( const fapi2::Target<T>& i_target,
+ fapi2::buffer<uint64_t>& io_data,
+ const uint64_t i_value)
+{
+ io_data.insertFromRight<TT::P0_NCE_MAGNITUDE, TT::P0_NCE_MAGNITUDE_LEN>(i_value);
+
+ FAPI_INF("%s set_nce_magnitude: 0x%016lx", mss::c_str(i_target), i_value);
+}
+
+///
+/// @brief get_nce_magnitude
+/// @tparam T fapi2 Target Type - derived from i_target's type
+/// @tparam TT traits type defaults to eccTraits<mc_type::EXPLORER, T>
+/// @param[in] i_target the fapi2 target of the mc
+/// @param[in] i_data the register value
+/// @param[out] i_value the value of the field
+///
+template< fapi2::TargetType T, typename TT = eccTraits<mc_type::EXPLORER, T> >
+inline void get_nce_magnitude( const fapi2::Target<T>& i_target,
+ const fapi2::buffer<uint64_t>& i_data,
+ uint64_t& o_value)
+{
+ i_data.extractToRight<TT::P0_NCE_MAGNITUDE, TT::P0_NCE_MAGNITUDE_LEN>(o_value);
+
+ FAPI_INF("%s get_nce_magnitude: 0x%016lx", mss::c_str(i_target), o_value);
+}
+
+///
+/// @brief set_tce_galois
+/// @tparam T fapi2 Target Type - derived from i_target's type
+/// @tparam TT traits type defaults to eccTraits<mc_type::EXPLORER, T>
+/// @param[in] i_target the fapi2 target of the mc
+/// @param[in, out] io_data the register value
+/// @param[in] i_value the value of the field
+///
+template< fapi2::TargetType T, typename TT = eccTraits<mc_type::EXPLORER, T> >
+inline void set_tce_galois( const fapi2::Target<T>& i_target,
+ fapi2::buffer<uint64_t>& io_data,
+ const uint64_t i_value)
+{
+ io_data.insertFromRight<TT::P0_TCE_GALOIS, TT::P0_TCE_GALOIS_LEN>(i_value);
+
+ FAPI_INF("%s set_tce_galois: 0x%016lx", mss::c_str(i_target), i_value);
+}
+
+///
+/// @brief get_tce_galois
+/// @tparam T fapi2 Target Type - derived from i_target's type
+/// @tparam TT traits type defaults to eccTraits<mc_type::EXPLORER, T>
+/// @param[in] i_target the fapi2 target of the mc
+/// @param[in] i_data the register value
+/// @param[out] i_value the value of the field
+///
+template< fapi2::TargetType T, typename TT = eccTraits<mc_type::EXPLORER, T> >
+inline void get_tce_galois( const fapi2::Target<T>& i_target,
+ const fapi2::buffer<uint64_t>& i_data,
+ uint64_t& o_value)
+{
+ i_data.extractToRight<TT::P0_TCE_GALOIS, TT::P0_TCE_GALOIS_LEN>(o_value);
+
+ FAPI_INF("%s get_tce_galois: 0x%016lx", mss::c_str(i_target), o_value);
+}
+
+///
+/// @brief set_tce_magnitude
+/// @tparam T fapi2 Target Type - derived from i_target's type
+/// @tparam TT traits type defaults to eccTraits<mc_type::EXPLORER, T>
+/// @param[in] i_target the fapi2 target of the mc
+/// @param[in, out] io_data the register value
+/// @param[in] i_value the value of the field
+///
+template< fapi2::TargetType T, typename TT = eccTraits<mc_type::EXPLORER, T> >
+inline void set_tce_magnitude( const fapi2::Target<T>& i_target,
+ fapi2::buffer<uint64_t>& io_data,
+ const uint64_t i_value)
+{
+ io_data.insertFromRight<TT::P0_TCE_MAGNITUDE, TT::P0_TCE_MAGNITUDE_LEN>(i_value);
+
+ FAPI_INF("%s set_tce_magnitude: 0x%016lx", mss::c_str(i_target), i_value);
+}
+
+///
+/// @brief get_tce_magnitude
+/// @tparam T fapi2 Target Type - derived from i_target's type
+/// @tparam TT traits type defaults to eccTraits<mc_type::EXPLORER, T>
+/// @param[in] i_target the fapi2 target of the mc
+/// @param[in] i_data the register value
+/// @param[out] i_value the value of the field
+///
+template< fapi2::TargetType T, typename TT = eccTraits<mc_type::EXPLORER, T> >
+inline void get_tce_magnitude( const fapi2::Target<T>& i_target,
+ const fapi2::buffer<uint64_t>& i_data,
+ uint64_t& o_value)
+{
+ i_data.extractToRight<TT::P0_TCE_MAGNITUDE, TT::P0_TCE_MAGNITUDE_LEN>(o_value);
+
+ FAPI_INF("%s get_tce_magnitude: 0x%016lx", mss::c_str(i_target), o_value);
+}
+
+} // close namespace mbs_error_vector_trap
+
+} // close namespace ecc
+
+} // close namespace mss
+
+#endif
OpenPOWER on IntegriCloud