mirror of
https://github.com/darlinghq/darling-gdb.git
synced 2024-11-24 20:49:43 +00:00
* 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.
This commit is contained in:
parent
c488923f16
commit
2990a9f484
@ -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
|
||||
|
@ -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));
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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));
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -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));
|
||||
}
|
||||
|
@ -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",
|
||||
|
@ -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
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user