/* Copyright (c) 2011 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 "sysincludes.h" #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 d; } int SafeMemcmp(const void* s1, const void* s2, size_t n) { const unsigned char* us1 = s1; const unsigned char* us2 = s2; int result = 0; if (0 == n) return 0; /* Code snippet without data-dependent branch due to * Nate Lawson (nate@root.org) of Root Labs. */ while (n--) result |= *us1++ ^ *us2++; return result != 0; }