reg_t addr = (hdr.addr + i) * HTIF_DATA_ALIGN;
try {
sim->debug_mmu->store_uint64(addr, buf[i]);
- } catch (trap_load_access_fault& e) {
+ } catch (trap_store_access_fault& e) {
fprintf(stderr, "HTIF: attempt to write to illegal address 0x%" PRIx64 "\n", addr);
exit(-1);
}
packet_header_t ack(HTIF_CMD_ACK, seqno, 1, 0);
send(&ack, sizeof(ack));
- if (coreid == 0xFFFFF) // system control register space
- {
- uint64_t scr = sim->get_scr(regno);
- send(&scr, sizeof(scr));
- break;
- }
-
processor_t* proc = sim->get_core(coreid);
bool write = hdr.cmd == HTIF_CMD_WRITE_CONTROL_REG;
if (write)
switch (regno)
{
- case CSR_MTOHOST:
- old_val = proc->get_state()->tohost;
- if (write)
- proc->get_state()->tohost = new_val;
- break;
- case CSR_MFROMHOST:
- old_val = proc->get_state()->fromhost;
- if (write && old_val == 0)
- proc->set_csr(CSR_MFROMHOST, new_val);
- break;
case CSR_MRESET:
old_val = !proc->running();
if (write)