diff options
author | Stephane Carrez <stcarrez@nerim.fr> | 2000-09-09 21:00:39 +0000 |
---|---|---|
committer | Stephane Carrez <stcarrez@nerim.fr> | 2000-09-09 21:00:39 +0000 |
commit | 2990a9f484ce9ff796d68d6fbfdad7e8a2ea61b8 (patch) | |
tree | 09dfb90559e80e00bd1648861408345259b1e1d4 /sim/m68hc11 | |
parent | c488923f169eed9ac1f7cb8e7d15e53eee97681d (diff) | |
download | gdb-2990a9f484ce9ff796d68d6fbfdad7e8a2ea61b8.zip gdb-2990a9f484ce9ff796d68d6fbfdad7e8a2ea61b8.tar.gz gdb-2990a9f484ce9ff796d68d6fbfdad7e8a2ea61b8.tar.bz2 |
* sim-main.h: Define cycle_to_string.
* dv-m68hc11tim.c (cycle_to_string): New function to translate
the cpu cycle into some formatted time string.
(m68hc11tim_print_timer): Use it.
* dv-m68hc11sio.c (m68hc11sio_info): Use cycle_to_string.
* dv-m68hc11spi.c (m68hc11spi_info): Likewise.
* interrupts.c (interrupts_info): Likewise.
* m68hc11_sim.c (cpu_info): Likewise.
Diffstat (limited to 'sim/m68hc11')
-rw-r--r-- | sim/m68hc11/ChangeLog | 11 | ||||
-rw-r--r-- | sim/m68hc11/dv-m68hc11sio.c | 8 | ||||
-rw-r--r-- | sim/m68hc11/dv-m68hc11spi.c | 8 | ||||
-rw-r--r-- | sim/m68hc11/dv-m68hc11tim.c | 24 | ||||
-rw-r--r-- | sim/m68hc11/interrupts.c | 38 | ||||
-rw-r--r-- | sim/m68hc11/m68hc11_sim.c | 5 | ||||
-rw-r--r-- | sim/m68hc11/sim-main.h | 2 |
7 files changed, 70 insertions, 26 deletions
diff --git a/sim/m68hc11/ChangeLog b/sim/m68hc11/ChangeLog index be35547..0f25891 100644 --- a/sim/m68hc11/ChangeLog +++ b/sim/m68hc11/ChangeLog @@ -1,3 +1,14 @@ +2000-09-10 Stephane Carrez <Stephane.Carrez@worldnet.fr> + + * sim-main.h: Define cycle_to_string. + * dv-m68hc11tim.c (cycle_to_string): New function to translate + the cpu cycle into some formatted time string. + (m68hc11tim_print_timer): Use it. + * dv-m68hc11sio.c (m68hc11sio_info): Use cycle_to_string. + * dv-m68hc11spi.c (m68hc11spi_info): Likewise. + * interrupts.c (interrupts_info): Likewise. + * m68hc11_sim.c (cpu_info): Likewise. + 2000-09-06 Stephane Carrez <Stephane.Carrez@worldnet.fr> * dv-m68hc11tim.c (m68hc11tim_timer_event): Compute the overflow diff --git a/sim/m68hc11/dv-m68hc11sio.c b/sim/m68hc11/dv-m68hc11sio.c index 3e6d4eb..aa765cf 100644 --- a/sim/m68hc11/dv-m68hc11sio.c +++ b/sim/m68hc11/dv-m68hc11sio.c @@ -465,16 +465,16 @@ m68hc11sio_info (struct hw *me) t = hw_event_remain_time (me, controller->tx_poll_event); n = (clock_cycle - t) / controller->baud_cycle; n = controller->data_length - n; - sim_io_printf (sd, " Transmit finished in %ld cycles (%d bit%s)\n", - (long) t, n, (n > 1 ? "s" : "")); + sim_io_printf (sd, " Transmit finished in %s (%d bit%s)\n", + cycle_to_string (cpu, t), n, (n > 1 ? "s" : "")); } if (controller->rx_poll_event) { signed64 t; t = hw_event_remain_time (me, controller->rx_poll_event); - sim_io_printf (sd, " Receive finished in %ld cycles\n", - (long) t); + sim_io_printf (sd, " Receive finished in %s\n", + cycle_to_string (cpu, t)); } } diff --git a/sim/m68hc11/dv-m68hc11spi.c b/sim/m68hc11/dv-m68hc11spi.c index 04ac825..abde515 100644 --- a/sim/m68hc11/dv-m68hc11spi.c +++ b/sim/m68hc11/dv-m68hc11spi.c @@ -355,8 +355,12 @@ m68hc11spi_info (struct hw *me) sim_io_printf (sd, " SPI has %d bits to send\n", controller->tx_bit + 1); t = hw_event_remain_time (me, controller->spi_event); - sim_io_printf (sd, " SPI operation finished in %ld cycles\n", - (long) t); + sim_io_printf (sd, " SPI current bit-cycle finished in %s\n", + cycle_to_string (cpu, t)); + + t += (controller->tx_bit + 1) * 2 * controller->clock; + sim_io_printf (sd, " SPI operation finished in %s\n", + cycle_to_string (cpu, t)); } } diff --git a/sim/m68hc11/dv-m68hc11tim.c b/sim/m68hc11/dv-m68hc11tim.c index c830c05..355139f 100644 --- a/sim/m68hc11/dv-m68hc11tim.c +++ b/sim/m68hc11/dv-m68hc11tim.c @@ -407,6 +407,24 @@ to_realtime (sim_cpu *cpu, signed64 t) return (double) (t) / (double) (cpu->cpu_frequency / 4); } +const char* +cycle_to_string (sim_cpu *cpu, signed64 t) +{ + double dt; + static char buf[64]; + + dt = to_realtime (cpu, t); + if (dt < 0.001) + sprintf (buf, "%llu cycle%s (%3.1f us)", t, + (t > 1 ? "s" : ""), dt * 1000000.0); + else if (dt < 1.0) + sprintf (buf, "%llu cycles (%3.1f ms)", t, dt * 1000.0); + else + sprintf (buf, "%llu cycles (%3.1f s)", t, dt); + + return buf; +} + static void m68hc11tim_print_timer (struct hw *me, const char *name, struct hw_event *event) @@ -421,15 +439,13 @@ m68hc11tim_print_timer (struct hw *me, const char *name, else { signed64 t; - double dt; sim_cpu* cpu; cpu = STATE_CPU (sd, 0); t = hw_event_remain_time (me, event); - dt = to_realtime (cpu, t) * 1000.0; - sim_io_printf (sd, " Next %s interrupt in %ld cycles (%3.3f ms)\n", - name, (long) t, dt); + sim_io_printf (sd, " Next %s interrupt in %s\n", + name, cycle_to_string (cpu, t)); } } diff --git a/sim/m68hc11/interrupts.c b/sim/m68hc11/interrupts.c index f172276..655c400 100644 --- a/sim/m68hc11/interrupts.c +++ b/sim/m68hc11/interrupts.c @@ -262,9 +262,11 @@ interrupts_raise (struct interrupts *interrupts, enum M6811_INT number) void interrupts_info (SIM_DESC sd, struct interrupts *interrupts) { + signed64 t; + if (interrupts->start_mask_cycle >= 0) { - signed64 t = cpu_current_cycle (interrupts->cpu); + t = cpu_current_cycle (interrupts->cpu); t -= interrupts->start_mask_cycle; if (t > interrupts->max_mask_cycles) @@ -272,7 +274,7 @@ interrupts_info (SIM_DESC sd, struct interrupts *interrupts) } if (interrupts->xirq_start_mask_cycle >= 0) { - signed64 t = cpu_current_cycle (interrupts->cpu); + t = cpu_current_cycle (interrupts->cpu); t -= interrupts->xirq_start_mask_cycle; if (t > interrupts->xirq_max_mask_cycles) @@ -282,16 +284,24 @@ interrupts_info (SIM_DESC sd, struct interrupts *interrupts) sim_io_printf (sd, "Interrupts Info:\n"); sim_io_printf (sd, " Interrupts raised: %lu\n", interrupts->nb_interrupts_raised); - sim_io_printf (sd, " Min interrupts masked sequence: %llu cycles\n", - interrupts->min_mask_cycles == CYCLES_MAX ? - interrupts->max_mask_cycles : - interrupts->min_mask_cycles); - sim_io_printf (sd, " Max interrupts masked sequence: %llu cycles\n", - interrupts->max_mask_cycles); - sim_io_printf (sd, " XIRQ Min interrupts masked sequence: %llu cycles\n", - interrupts->xirq_min_mask_cycles == CYCLES_MAX ? - interrupts->xirq_max_mask_cycles : - interrupts->xirq_min_mask_cycles); - sim_io_printf (sd, " XIRQ Max interrupts masked sequence: %llu cycles\n", - interrupts->xirq_max_mask_cycles); + + t = interrupts->min_mask_cycles == CYCLES_MAX ? + interrupts->max_mask_cycles : + interrupts->min_mask_cycles; + sim_io_printf (sd, " Shortest interrupts masked sequence: %s\n", + cycle_to_string (interrupts->cpu, t)); + + t = interrupts->max_mask_cycles; + sim_io_printf (sd, " Longest interrupts masked sequence: %s\n", + cycle_to_string (interrupts->cpu, t)); + + t = interrupts->xirq_min_mask_cycles == CYCLES_MAX ? + interrupts->xirq_max_mask_cycles : + interrupts->xirq_min_mask_cycles; + sim_io_printf (sd, " XIRQ Min interrupts masked sequence: %s\n", + cycle_to_string (interrupts->cpu, t)); + + t = interrupts->xirq_max_mask_cycles; + sim_io_printf (sd, " XIRQ Max interrupts masked sequence: %s\n", + cycle_to_string (interrupts->cpu, t)); } diff --git a/sim/m68hc11/m68hc11_sim.c b/sim/m68hc11/m68hc11_sim.c index fbdf386..169edfa 100644 --- a/sim/m68hc11/m68hc11_sim.c +++ b/sim/m68hc11/m68hc11_sim.c @@ -627,8 +627,9 @@ void cpu_info (SIM_DESC sd, sim_cpu *cpu) { sim_io_printf (sd, "CPU info:\n"); - sim_io_printf (sd, " Absolute cycle: %llu\n", - cpu->cpu_absolute_cycle); + sim_io_printf (sd, " Absolute cycle: %s\n", + cycle_to_string (cpu, cpu->cpu_absolute_cycle)); + sim_io_printf (sd, " Syscall emulation: %s\n", cpu->cpu_emul_syscall ? "yes, via 0xcd <n>" : "no"); sim_io_printf (sd, " Memory errors detection: %s\n", diff --git a/sim/m68hc11/sim-main.h b/sim/m68hc11/sim-main.h index c5c42e4..6ea3fab 100644 --- a/sim/m68hc11/sim-main.h +++ b/sim/m68hc11/sim-main.h @@ -497,6 +497,8 @@ extern void sim_set_profile (int n); extern void sim_set_profile_size (int n); extern void sim_board_reset (SIM_DESC sd); +extern const char *cycle_to_string (sim_cpu *cpu, signed64 t); + #endif |