> compile NEMU

ysyx_22040000 李心杨
Linux calcite 6.1.75 #1-NixOS SMP PREEMPT_DYNAMIC Thu Jan 25 23:27:52 UTC 2024 x86_64 GNU/Linux
 19:25:40  up 1 day  5:01,  2 users,  load average: 1.09, 0.92, 0.80
This commit is contained in:
tracer-ysyx 2024-02-08 19:25:40 +08:00 committed by xinyangli
parent 53baebe06d
commit 0531eb060a
2 changed files with 7 additions and 4 deletions

View file

@ -31,7 +31,7 @@ static uint64_t g_timer = 0; // unit: us
static bool g_print_step = false;
void device_update();
void wp_eval_all();
bool wp_eval_all();
static void trace_and_difftest(Decode *_this, vaddr_t dnpc) {
#ifdef CONFIG_ITRACE_COND
@ -78,6 +78,8 @@ static void execute(uint64_t n) {
exec_once(&s, cpu.pc);
g_nr_guest_inst ++;
trace_and_difftest(&s, cpu.pc);
if (wp_eval_all()) break;
if (nemu_state.state != NEMU_RUNNING) break;
IFDEF(CONFIG_DEVICE, device_update());
}
@ -114,8 +116,6 @@ void cpu_exec(uint64_t n) {
uint64_t timer_end = get_time();
g_timer += timer_end - timer_start;
wp_eval_all();
switch (nemu_state.state) {
case NEMU_RUNNING: nemu_state.state = NEMU_STOP; break;

View file

@ -136,12 +136,15 @@ static bool wp_check_change(WP* wp) {
/*
Check if watchpoint value changed after execution
*/
void wp_eval_all() {
bool wp_eval_all() {
WP *wp;
bool value_change = false;
for (wp = head; wp != NULL; wp = wp->next) {
int prev_val = wp->val;
if (wp_check_change(wp)) {
printf("Watchpoint %d: %s\n %u -> %u\n", wp->NO, wp->expr, prev_val, wp->val);
value_change = true;
}
}
return value_change;
}