diff options
author | Marcus Comstedt <marcus@mc.pp.se> | 2020-10-11 13:36:13 +0200 |
---|---|---|
committer | Marcus Comstedt <marcus@mc.pp.se> | 2020-11-07 15:03:58 +0100 |
commit | 8d09d845a7373cce52d3943f5dca1a2ac34a4f83 (patch) | |
tree | 65a8e157ac2c167c6b89d436c00fa8c12bdf6181 /fesvr/memif.h | |
parent | 641d7d03e6a8d822b720fcb1a19f261813c00c4a (diff) | |
download | riscv-isa-sim-8d09d845a7373cce52d3943f5dca1a2ac34a4f83.zip riscv-isa-sim-8d09d845a7373cce52d3943f5dca1a2ac34a4f83.tar.gz riscv-isa-sim-8d09d845a7373cce52d3943f5dca1a2ac34a4f83.tar.bz2 |
Implement support for big-endian targets
Diffstat (limited to 'fesvr/memif.h')
-rw-r--r-- | fesvr/memif.h | 19 |
1 files changed, 19 insertions, 0 deletions
diff --git a/fesvr/memif.h b/fesvr/memif.h index 3854d66..aaa9f05 100644 --- a/fesvr/memif.h +++ b/fesvr/memif.h @@ -10,6 +10,12 @@ typedef uint64_t reg_t; typedef int64_t sreg_t; typedef reg_t addr_t; +typedef enum { + memif_endianness_undecided, + memif_endianness_little, + memif_endianness_big +} memif_endianness_t; + class chunked_memif_t { public: @@ -19,6 +25,11 @@ public: virtual size_t chunk_align() = 0; virtual size_t chunk_max_size() = 0; + + virtual void set_target_endianness(memif_endianness_t endianness) {} + virtual memif_endianness_t get_target_endianness() const { + return memif_endianness_undecided; + } }; class memif_t @@ -55,6 +66,14 @@ public: virtual void write_uint64(addr_t addr, uint64_t val); virtual void write_int64(addr_t addr, int64_t val); + // endianness + virtual void set_target_endianness(memif_endianness_t endianness) { + cmemif->set_target_endianness(endianness); + } + virtual memif_endianness_t get_target_endianness() const { + return cmemif->get_target_endianness(); + } + protected: chunked_memif_t* cmemif; }; |