Renamed a few files copied from the Hostboot project

Signed-off-by: Zane Shelley <zshelle@us.ibm.com>
Change-Id: If365e59014d28b5da00f6f163a21c2cf992b95fd
diff --git a/src/register/hei_register.cpp b/src/register/hei_register.cpp
new file mode 100755
index 0000000..3e28a86
--- /dev/null
+++ b/src/register/hei_register.cpp
@@ -0,0 +1,247 @@
+
+/* Module Description *************************************************/
+/*                                                                    */
+/*  Description:  This module contains the implementation for the     */
+/*   Processor Runtime Diagnostics Scan Communication                 */
+/*   Register class.                                                  */
+/*                                                                    */
+/*  Notes:  Unless stated otherwise, assume that each function        */
+/*   specification has no side-effects, no dependencies, and          */
+/*   constant time complexity.                                        */
+/*                                                                    */
+/* End Module Description *********************************************/
+
+/*--------------------------------------------------------------------*/
+/*  Includes                                                          */
+/*--------------------------------------------------------------------*/
+
+#include <iipbits.h>
+#include <iipscr.h>
+#include <iipconst.h>
+
+#include <prdfAssert.h>
+
+namespace libhei
+{
+
+/*--------------------------------------------------------------------*/
+/*  User Types                                                        */
+/*--------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------*/
+/*  Constants                                                         */
+/*--------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------*/
+/*  Macros                                                            */
+/*--------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------*/
+/*  Internal Function Prototypes                                      */
+/*--------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------*/
+/*  Global Variables                                                  */
+/*--------------------------------------------------------------------*/
+
+/*--------------------------------------------------------------------*/
+/*  Static Variables                                                  */
+/*--------------------------------------------------------------------*/
+
+// Function Specification //////////////////////////////////////////
+//
+// Title:  ~SCAN_COMM_REGISTER_CLASS (Virtual destructor)
+//
+// Purpose:  This destructor deallocates the Bit String.
+//
+// Side-effects:  Memory is deallocated.
+//
+// Dependencies:  None.
+//
+// End Function Specification //////////////////////////////////////
+
+SCAN_COMM_REGISTER_CLASS::~SCAN_COMM_REGISTER_CLASS
+(
+ void
+ /*!i No parameters                                               */
+ )
+/*!o No value returned                                           */
+{
+}
+
+// Function Specification ///////////////////////////////////////////
+//
+// Title:  Read
+//
+// Purpose:  This function reads the actual hardware register and
+//           sets the Bit String data member values.  The specified
+//           Bit String is then used to mask the Bit String data
+//           member.  If an error occur, then the error is reported
+//           and the Bit String values are undefined.
+//
+// Side-effects:  Hardware register is read.
+//                Bit String data member is modified.
+//                Memory is reallocated.
+//
+// End Function Specification //////////////////////////////////////
+
+uint32_t SCAN_COMM_REGISTER_CLASS::Read
+(
+ BitString & mask
+ /*!i Reference to Bit String mask                                */
+ )
+/*!o Error return code                                           */
+{
+  uint32_t rc = Read();
+
+  if(rc == SUCCESS)
+  {
+    BitString & bitString = AccessBitString();
+    bitString.maskString(mask);
+  }
+
+  return(rc);
+}
+// Function Specification //////////////////////////////////////////
+//
+//  Title:  Set Bit
+//
+//  Purpose:  This function sets(1) the specified bit position in
+//            the Bit String.  If the Bit String is NULL, then a
+//            new Bit String is allocated and cleared to all zero
+//            before setting the bit.
+//
+//  Side-effects:  Bit String is modified.
+//                 Memory may be allocated.
+//
+//  Dependencies:  bit_position must be in the string
+//
+// End Function Specification //////////////////////////////////////
+
+void SCAN_COMM_REGISTER_CLASS::SetBit
+(
+ uint32_t bit_position
+ /*!i Bit position in string                                      */
+ )
+/*!o No value returned                                           */
+{
+
+  BitString & bitString = AccessBitString();
+  bitString.setBit(bit_position);
+}
+
+// Function Specification //////////////////////////////////////////
+//
+//  Title:  Clear Bit
+//
+//  Purpose:  This function clears(0) the specified bit position in
+//            the Bit String.  If the Bit String is NULL, then a
+//            new Bit String is allocated and cleared to all zeros.
+//
+//  Side-effects:  Bit String is modified.
+//                 Memory may be allocated.
+//
+//  Dependencies:  bit_position must be in the string
+//
+// End Function Specification //////////////////////////////////////
+
+void SCAN_COMM_REGISTER_CLASS::ClearBit
+(
+ uint32_t bit_position
+ /*!i Bit position in string                                      */
+ )
+/*!o No value returned                                           */
+{
+  BitString & bitString = AccessBitString();
+  bitString.clearBit(bit_position);
+}
+
+
+
+// Function Specification ///////////////////////////////////////////
+//
+// Title:  Clear Bit String
+//
+// Purpose:  This function clears the Bit String.  If the data
+//           member is NULL, then a new Bit String is allocated.
+//           Upon return, the state of the Bit String is all zero.
+//
+// Side-effects:  Bit String data member is modified.
+//                Memory is allocated or reallocated.
+//
+// End Function Specification //////////////////////////////////////
+
+void SCAN_COMM_REGISTER_CLASS::clearAllBits()
+{
+    BitString & bitString = AccessBitString();
+    bitString.clearAll();
+}
+
+void SCAN_COMM_REGISTER_CLASS::setAllBits()
+{
+    BitString & bitString = AccessBitString();
+    bitString.setAll();
+}
+
+//------------------------------------------------------------------------------
+
+uint64_t SCAN_COMM_REGISTER_CLASS::GetBitFieldJustified( uint32_t i_pos,
+                                                         uint32_t i_len ) const
+{
+    uint64_t o_value = 0;
+
+    const uint32_t len_cpu_word = sizeof(CPU_WORD) * 8;
+    const uint32_t len_uint64   = sizeof(uint64_t) * 8;
+    const uint32_t pos_end      = i_pos + i_len;
+
+    PRDF_ASSERT( pos_end <= len_uint64 );
+
+    const BitString * bs = GetBitString();
+
+    for ( uint32_t pos = i_pos; pos < pos_end; pos += len_cpu_word )
+    {
+        // Calculate chunk length.
+        uint32_t len_chunk = len_cpu_word;
+        if ( len_chunk > pos_end - pos )
+            len_chunk = pos_end - pos;
+
+        o_value <<= len_chunk; // Make room for new chunk.
+
+        // Get chunk.
+        o_value |= static_cast<uint64_t>(bs->getFieldJustify(pos, len_chunk));
+    }
+
+    return o_value;
+}
+
+//------------------------------------------------------------------------------
+
+void SCAN_COMM_REGISTER_CLASS::SetBitFieldJustified( uint32_t i_pos,
+                                                     uint32_t i_len,
+                                                     uint64_t i_value )
+{
+    const uint32_t len_cpu_word = sizeof(CPU_WORD) * 8;
+    const uint32_t len_uint64   = sizeof(uint64_t) * 8;
+
+    PRDF_ASSERT( i_pos + i_len <= len_uint64 );
+
+    BitString & bs = AccessBitString();
+
+    for ( uint32_t offset = 0; offset < i_len; offset += len_cpu_word )
+    {
+        // Calculate chunk length.
+        uint32_t len_chunk = len_cpu_word;
+        if ( len_chunk > i_len - offset )
+            len_chunk = i_len - offset;
+
+        uint64_t value = i_value;
+        value >>= i_len - (offset + len_chunk); // right justify
+
+        // Set chunk.
+        bs.setFieldJustify( i_pos + offset, len_chunk,
+                            static_cast<CPU_WORD>(value) );
+    }
+}
+
+} // end namespace libhei
+