summaryrefslogtreecommitdiff
path: root/lib/rts.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/rts.c')
-rw-r--r--lib/rts.c33
1 files changed, 18 insertions, 15 deletions
diff --git a/lib/rts.c b/lib/rts.c
index ccad1f8a..d3362aec 100644
--- a/lib/rts.c
+++ b/lib/rts.c
@@ -278,40 +278,43 @@ void read_ram(lbits *data,
void platform_read_mem(lbits *data,
const int read_kind,
- const uint64_t addr,
+ const uint64_t addr_size,
+ const sbits addr,
const mpz_t n)
{
- mpz_t addr_size;
- mpz_init(addr_size);
- mpz_set_ui(addr_size, 64);
+ mpz_t mpz_addr_size;
+ mpz_init(mpz_addr_size);
+ mpz_set_ui(mpz_addr_size, addr_size);
mpz_t addr_bv;
mpz_init(addr_bv);
- mpz_set_ui(addr_bv, addr);
- read_ram(data, addr_size, n, (lbits){.len=0, .bits=NULL}, (lbits){.len=64, .bits=&addr_bv});
- mpz_clear(addr_size);
+ mpz_set_ui(addr_bv, addr.bits);
+ read_ram(data, mpz_addr_size, n, (lbits){.len=0, .bits=NULL}, (lbits){.len=addr.len, .bits=&addr_bv});
+ mpz_clear(mpz_addr_size);
mpz_clear(addr_bv);
}
unit platform_write_mem_ea(const int write_kind,
- const uint64_t addr,
+ const uint64_t addr_size,
+ const sbits addr,
const mpz_t n)
{
return UNIT;
}
bool platform_write_mem(const int write_kind,
- const uint64_t addr,
+ const uint64_t addr_size,
+ const sbits addr,
const mpz_t n,
const lbits data)
{
- mpz_t addr_size;
- mpz_init(addr_size);
- mpz_set_ui(addr_size, 64);
+ mpz_t mpz_addr_size;
+ mpz_init(mpz_addr_size);
+ mpz_set_ui(mpz_addr_size, addr_size);
mpz_t addr_bv;
mpz_init(addr_bv);
- mpz_set_ui(addr_bv, addr);
- bool res = write_ram(addr_size, n, (lbits){.len=0, .bits=NULL}, (lbits){.len=64, .bits=&addr_bv}, data);
- mpz_clear(addr_size);
+ mpz_set_ui(addr_bv, addr.bits);
+ bool res = write_ram(mpz_addr_size, n, (lbits){.len=0, .bits=NULL}, (lbits){.len=addr.len, .bits=&addr_bv}, data);
+ mpz_clear(mpz_addr_size);
mpz_clear(addr_bv);
return res;
}