From 25a68ad9643b83001dbe80120f854221e65e9585 Mon Sep 17 00:00:00 2001 From: Doug Gilbert Date: Wed, 18 Sep 2013 16:15:48 -0500 Subject: Hostboot runtime errl support RTC: 79415 Change-Id: I2fd60b48046425692fb3921b46ac21b57e1dba96 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/6349 Tested-by: Jenkins Server Reviewed-by: Daniel M. Crowell Reviewed-by: A. Patrick Williams III --- src/usr/errl/errlsrc.C | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) (limited to 'src/usr/errl/errlsrc.C') diff --git a/src/usr/errl/errlsrc.C b/src/usr/errl/errlsrc.C index 69d29e18a..41df75b27 100644 --- a/src/usr/errl/errlsrc.C +++ b/src/usr/errl/errlsrc.C @@ -168,6 +168,33 @@ uint64_t ErrlSrc::flatten( void * o_pBuffer, const uint64_t i_cbBuffer ) return l_rc; } +uint64_t ErrlSrc::unflatten( const void * i_buf) +{ + const pelSRCSection_t * p = + static_cast(i_buf); + + iv_header.unflatten(&(p->sectionheader)); + + iv_srcType = (srcType_t)((16 * aschex2bin(p->srcString[0])) + + aschex2bin(p->srcString[1])); + iv_modId = p->moduleId; + iv_reasonCode = p->reserved1; + iv_ssid = (epubSubSystem_t)((16 * aschex2bin(p->srcString[2])) + + aschex2bin(p->srcString[3])); + iv_user1 = p->word6; + iv_user2 = p->word8; + + return flatSize(); +} + +uint64_t ErrlSrc::aschex2bin(char c) +{ + if(c >= 'a') c = c + 10 - 'a'; + else if (c >= 'A') c = c + 10 - 'A'; + else c -= '0'; + + return c; +} } // namespace -- cgit v1.2.1