diff options
author | Aryadev Chavali <aryadev@aryadevchavali.com> | 2024-04-09 15:10:40 +0630 |
---|---|---|
committer | Aryadev Chavali <aryadev@aryadevchavali.com> | 2024-04-09 15:11:42 +0630 |
commit | afb48b65b9217fd0afd7d53cd89365d11a5a556b (patch) | |
tree | 62241e1197347ea8dea2490752446661e4654682 /lib | |
parent | 6df6dce1531a65b887963cb0fc19f2f976b21f8b (diff) | |
download | ovm-afb48b65b9217fd0afd7d53cd89365d11a5a556b.tar.gz ovm-afb48b65b9217fd0afd7d53cd89365d11a5a556b.tar.bz2 ovm-afb48b65b9217fd0afd7d53cd89365d11a5a556b.zip |
Completed TODO: Rigid Endian
Just used the endian.h functions to convert host endian to and from
big endian.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/base.c | 17 |
1 files changed, 11 insertions, 6 deletions
@@ -10,30 +10,35 @@ * Description: Implementation of basic library functions */ +#include <endian.h> #include <string.h> #include "./base.h" hword convert_bytes_to_hword(byte *bytes) { - hword h = 0; - memcpy(&h, bytes, HWORD_SIZE); + hword be_h = 0; + memcpy(&be_h, bytes, HWORD_SIZE); + hword h = be32toh(be_h); return h; } void convert_hword_to_bytes(hword w, byte *bytes) { - memcpy(bytes, &w, HWORD_SIZE); + hword be_h = htobe32(w); + memcpy(bytes, &be_h, HWORD_SIZE); } void convert_word_to_bytes(word w, byte *bytes) { - memcpy(bytes, &w, WORD_SIZE); + word be_w = htobe64(w); + memcpy(bytes, &be_w, WORD_SIZE); } word convert_bytes_to_word(byte *bytes) { - word w = 0; - memcpy(&w, bytes, WORD_SIZE); + word be_w = 0; + memcpy(&be_w, bytes, WORD_SIZE); + word w = be64toh(be_w); return w; } |