summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorMike Baiocchi <baiocchi@us.ibm.com>2013-09-20 14:47:15 -0500
committerA. Patrick Williams III <iawillia@us.ibm.com>2013-10-28 12:21:53 -0500
commita094332bbe8807c8f24aeb79f34be063845cea10 (patch)
tree7b05b516287bd27d971ee8404a980bfad311ac2b /src/lib
parent7b8d4a482ca2d110f3bf67b7a8e1bed758318420 (diff)
downloadtalos-hostboot-a094332bbe8807c8f24aeb79f34be063845cea10.tar.gz
talos-hostboot-a094332bbe8807c8f24aeb79f34be063845cea10.zip
Initial Support for Updating SBE SEEPROM
This initial commit will be used to create the new SBE directories and files. It also supports the usr functions to find and copy SBE PNOR images. NOTE: It will not enable Updating SBE SEEPROMs in the IPL. Change-Id: I3f545a134493c7595ce50fd885478bbe606de472 RTC: 47032 Reviewed-on: http://gfw160.austin.ibm.com:8080/gerrit/6311 Tested-by: Jenkins Server Reviewed-by: ADAM R. MUHLE <armuhle@us.ibm.com> Reviewed-by: Daniel M. Crowell <dcrowell@us.ibm.com> Reviewed-by: A. Patrick Williams III <iawillia@us.ibm.com>
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/crc32.C67
-rw-r--r--src/lib/makefile2
2 files changed, 68 insertions, 1 deletions
diff --git a/src/lib/crc32.C b/src/lib/crc32.C
new file mode 100644
index 000000000..0c06c62c5
--- /dev/null
+++ b/src/lib/crc32.C
@@ -0,0 +1,67 @@
+/* IBM_PROLOG_BEGIN_TAG */
+/* This is an automatically generated prolog. */
+/* */
+/* $Source: src/lib/crc32.C $ */
+/* */
+/* IBM CONFIDENTIAL */
+/* */
+/* COPYRIGHT International Business Machines Corp. 2013 */
+/* */
+/* p1 */
+/* */
+/* Object Code Only (OCO) source materials */
+/* Licensed Internal Code Source Materials */
+/* IBM HostBoot Licensed Internal Code */
+/* */
+/* 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. */
+/* */
+/* Origin: 30 */
+/* */
+/* IBM_PROLOG_END_TAG */
+#include <stdint.h>
+#include <util/crc32.H>
+
+namespace Util
+{
+ static const uint64_t CRC32_POLY = 0x104C11DB7ull;
+
+ uint32_t crc32_calc(const void* ptr, size_t size)
+ {
+ const uint8_t* _ptr = (const uint8_t*)ptr;
+ uint64_t crc = 0;
+ while(size)
+ {
+ uint64_t data = 0;
+ for (int i = 0; i < 4; ++i)
+ {
+ data <<= 8;
+ if (size)
+ {
+ data |= *(_ptr++);
+ --size;
+ }
+ }
+
+ crc <<= 32;
+ crc ^= (data << 32);
+
+
+ int idx = 0;
+ do
+ {
+ idx = __builtin_clzl(crc);
+ if (idx < 32)
+ {
+ crc ^= (CRC32_POLY << (31 - idx));
+ }
+
+ } while (idx < 32);
+ }
+
+ return crc;
+ }
+
+};
+
diff --git a/src/lib/makefile b/src/lib/makefile
index e8b648c6c..42571c341 100644
--- a/src/lib/makefile
+++ b/src/lib/makefile
@@ -25,7 +25,7 @@ ROOTPATH = ../..
OBJS = string.o string_ext.o stdlib.o ctype.o assert.o stdio.o math.o sprintf.o
OBJS += syscall_stub.o syscall_task.o syscall_msg.o
OBJS += syscall_mmio.o syscall_time.o sync.o syscall_misc.o
-OBJS += syscall_mm.o splaytree.o cxxtest_data.o
+OBJS += syscall_mm.o splaytree.o cxxtest_data.o crc32.o
ifdef HOSTBOOT_MEMORY_LEAKS
COMMONFLAGS += -DHOSTBOOT_MEMORY_LEAKS=1
OpenPOWER on IntegriCloud