diff options
author | Marc Schink <flashrom-dev@marcschink.de> | 2016-03-17 16:07:23 +0100 |
---|---|---|
committer | Nico Huber <nico.h@gmx.de> | 2018-08-30 09:55:57 +0000 |
commit | 7ecfe48b19c3e97341a3f2b0d85e7367ab92f2b6 (patch) | |
tree | 8114881424b47ca6c3044e39da8e16615001887b /helpers.c | |
parent | af499198a49fe342a0bb3dbbfa362b8788a8fb4e (diff) | |
download | flashrom-git-7ecfe48b19c3e97341a3f2b0d85e7367ab92f2b6.tar.gz |
helpers: Add reverse_byte() and reverse_bytes()
Change-Id: I9d2e1e2856c835d22eed3b3a34bc0379773dd831
Signed-off-by: Marc Schink <flashrom-dev@marcschink.de>
Reviewed-on: https://review.coreboot.org/28086
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Nico Huber <nico.h@gmx.de>
Diffstat (limited to 'helpers.c')
-rw-r--r-- | helpers.c | 17 |
1 files changed, 17 insertions, 0 deletions
@@ -66,6 +66,23 @@ void tolower_string(char *str) *str = (char)tolower((unsigned char)*str); } +uint8_t reverse_byte(uint8_t x) +{ + x = ((x >> 1) & 0x55) | ((x << 1) & 0xaa); + x = ((x >> 2) & 0x33) | ((x << 2) & 0xcc); + x = ((x >> 4) & 0x0f) | ((x << 4) & 0xf0); + + return x; +} + +void reverse_bytes(uint8_t *dst, const uint8_t *src, size_t length) +{ + size_t i; + + for (i = 0; i < length; i++) + dst[i] = reverse_byte(src[i]); +} + /* FIXME: Find a better solution for MinGW. Maybe wrap strtok_s (C11) if it becomes available */ #ifdef __MINGW32__ char* strtok_r(char *str, const char *delim, char **nextp) |