summaryrefslogtreecommitdiff
path: root/lib/rts.c
diff options
context:
space:
mode:
authorAlasdair Armstrong2018-11-23 22:05:24 +0000
committerAlasdair Armstrong2018-11-23 22:05:24 +0000
commit2e271d91c58a2d4db4adbb4c47d34bcbe1a6992e (patch)
tree162548ba43b9336e9b834f8b9b435d6682d6915b /lib/rts.c
parentea177d95766789b0500317f12fe0939d1508e19c (diff)
Introduce intermediate bitvector representation in C
Bitvectors that aren't fixed size, but can still be shown to fit within 64-bits, now have a specialised representation. Still need to introduce more optimized functions, as right now we mostly have to convert them into large bitvectors to pass them into most functions. Nevertheless, this doubles the performance of the TLBLookup function in ARMv8.
Diffstat (limited to 'lib/rts.c')
-rw-r--r--lib/rts.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/lib/rts.c b/lib/rts.c
index 2f594ff8..bc0d4732 100644
--- a/lib/rts.c
+++ b/lib/rts.c
@@ -32,7 +32,7 @@ unit sail_exit(unit u)
static uint64_t g_verbosity = 0;
-mach_bits sail_get_verbosity(const unit u)
+fbits sail_get_verbosity(const unit u)
{
return g_verbosity;
}
@@ -214,9 +214,9 @@ void kill_mem()
bool write_ram(const mpz_t addr_size, // Either 32 or 64
const mpz_t data_size_mpz, // Number of bytes
- const sail_bits hex_ram, // Currently unused
- const sail_bits addr_bv,
- const sail_bits data)
+ const lbits hex_ram, // Currently unused
+ const lbits addr_bv,
+ const lbits data)
{
uint64_t addr = mpz_get_ui(*addr_bv.bits);
uint64_t data_size = mpz_get_ui(data_size_mpz);
@@ -238,11 +238,11 @@ bool write_ram(const mpz_t addr_size, // Either 32 or 64
return true;
}
-void read_ram(sail_bits *data,
+void read_ram(lbits *data,
const mpz_t addr_size,
const mpz_t data_size_mpz,
- const sail_bits hex_ram,
- const sail_bits addr_bv)
+ const lbits hex_ram,
+ const lbits addr_bv)
{
uint64_t addr = mpz_get_ui(*addr_bv.bits);
uint64_t data_size = mpz_get_ui(data_size_mpz);
@@ -261,7 +261,7 @@ void read_ram(sail_bits *data,
mpz_clear(byte);
}
-unit load_raw(mach_bits addr, const sail_string file)
+unit load_raw(fbits addr, const sail_string file)
{
FILE *fp = fopen(file, "r");
@@ -339,7 +339,7 @@ bool is_tracing(const unit u)
return g_trace_enabled;
}
-void trace_mach_bits(const mach_bits x) {
+void trace_fbits(const fbits x) {
if (g_trace_enabled) fprintf(stderr, "0x%" PRIx64, x);
}
@@ -355,7 +355,7 @@ void trace_sail_int(const sail_int op) {
if (g_trace_enabled) mpz_out_str(stderr, 10, op);
}
-void trace_sail_bits(const sail_bits op) {
+void trace_lbits(const lbits op) {
if (g_trace_enabled) fprint_bits("", op, "", stderr);
}