aboutsummaryrefslogtreecommitdiff
path: root/util/cbfstool/cse_helpers.c
diff options
context:
space:
mode:
authorFurquan Shaikh <furquan@google.com>2021-10-08 15:18:33 -0700
committerFurquan Shaikh <furquan@google.com>2021-10-19 16:08:45 +0000
commit555f0407721ca1c29e3d6f3a6f4076fdcb550915 (patch)
tree8b81402d1fc812d4a608c34995f9de050dfa61b7 /util/cbfstool/cse_helpers.c
parentd7fb6a90e1d0130db18c84530272f5d35dd914b0 (diff)
util/cse*: Add cse_helpers.{c,h}
This change moves `read_member` and `write_member` helper functions out of cse_fpt.c and cse_serger.c into cse_helpers.c to avoid duplication. BUG=b:189177186,b:189167923 Change-Id: I7b646b29c9058d892bb0fc9824ef1b4340d2510c Signed-off-by: Furquan Shaikh <furquan@google.com> Reviewed-on: https://review.coreboot.org/c/coreboot/+/58201 Tested-by: build bot (Jenkins) <no-reply@coreboot.org> Reviewed-by: Tim Wawrzynczak <twawrzynczak@chromium.org>
Diffstat (limited to 'util/cbfstool/cse_helpers.c')
-rw-r--r--util/cbfstool/cse_helpers.c56
1 files changed, 56 insertions, 0 deletions
diff --git a/util/cbfstool/cse_helpers.c b/util/cbfstool/cse_helpers.c
new file mode 100644
index 0000000000..c60005a21a
--- /dev/null
+++ b/util/cbfstool/cse_helpers.c
@@ -0,0 +1,56 @@
+/* SPDX-License-Identifier: GPL-2.0-only */
+/* Helper functions for cse_serger and cse_fpt */
+
+#include <commonlib/endian.h>
+
+#include "cse_helpers.h"
+
+void write_member(struct buffer *buff, void *src, size_t size)
+{
+ void *dst = buffer_get(buff);
+
+ switch (size) {
+ case 1:
+ write_le8(dst, *(uint8_t *)src);
+ break;
+ case 2:
+ write_le16(dst, *(uint16_t *)src);
+ break;
+ case 4:
+ write_le32(dst, *(uint32_t *)src);
+ break;
+ case 8:
+ write_le64(dst, *(uint64_t *)src);
+ break;
+ default:
+ memcpy(dst, src, size);
+ break;
+ }
+
+ buffer_seek(buff, size);
+}
+
+void read_member(struct buffer *buff, void *dst, size_t size)
+{
+ const void *src = buffer_get(buff);
+
+ switch (size) {
+ case 1:
+ *(uint8_t *)dst = read_le8(src);
+ break;
+ case 2:
+ *(uint16_t *)dst = read_le16(src);
+ break;
+ case 4:
+ *(uint32_t *)dst = read_le32(src);
+ break;
+ case 8:
+ *(uint64_t *)dst = read_le64(src);
+ break;
+ default:
+ memcpy(dst, src, size);
+ break;
+ }
+
+ buffer_seek(buff, size);
+}