Index: firmware/lib/utility.c |
diff --git a/firmware/lib/utility.c b/firmware/lib/utility.c |
new file mode 100644 |
index 0000000000000000000000000000000000000000..0ed9712e529ebec6042fd09e8ae656d8088cb31b |
--- /dev/null |
+++ b/firmware/lib/utility.c |
@@ -0,0 +1,31 @@ |
+/* Copyright (c) 2010 The Chromium OS Authors. All rights reserved. |
+ * Use of this source code is governed by a BSD-style license that can be |
+ * found in the LICENSE file. |
+ * |
+ * Utility functions that need to be built as part of the firmware. |
+ */ |
+ |
+#include "utility.h" |
+ |
+void* Memset(void* d, const uint8_t c, uint64_t n) { |
+ uint8_t* dest = d; /* the only way to keep both cl and gcc happy */ |
+ while (n--) { |
+ *dest++ = c; |
+ } |
+ return dest; |
+} |
+ |
+int SafeMemcmp(const void* s1, const void* s2, size_t n) { |
+ int result = 0; |
+ if (0 == n) |
+ return 1; |
+ |
+ const unsigned char* us1 = s1; |
+ const unsigned char* us2 = s2; |
+ /* Code snippet without data-dependent branch due to |
+ * Nate Lawson (nate@root.org) of Root Labs. */ |
+ while (n--) |
+ result |= *us1++ ^ *us2++; |
+ |
+ return result != 0; |
+} |