mcontrol = set_field(mcontrol, MCONTROL_EXECUTE, bp.execute);
mcontrol = set_field(mcontrol, MCONTROL_LOAD, bp.load);
mcontrol = set_field(mcontrol, MCONTROL_STORE, bp.store);
+ if (bp.load)
+ mcontrol = set_field(mcontrol, MCONTROL_TIMING, 1);
+
gs.dr_write(SLOT_DATA1, mcontrol);
state = STATE_WRITE_ADDRESS;
} else {
int match = proc->trigger_match(operation, address, data);
if (match == -1)
return NULL;
+ if (proc->state.mcontrol[match].timing == 0) {
+ throw trigger_matched_t(match, operation, address, data);
+ }
return new trigger_matched_t(match, operation, address, data);
}
mc->store = get_field(val, MCONTROL_STORE);
mc->load = get_field(val, MCONTROL_LOAD);
// Assume we're here because of csrw.
+ if (mc->execute)
+ mc->timing = 0;
+ if (mc->load)
+ mc->timing = 1;
trigger_updated();
}
break;