diff options
Diffstat (limited to 'lib/rts.c')
| -rw-r--r-- | lib/rts.c | 33 |
1 files changed, 18 insertions, 15 deletions
@@ -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; } |
