/* dv-m68hc11sio.c -- Simulation of the 68HC11 serial device.
- Copyright (C) 1999, 2000 Free Software Foundation, Inc.
+ Copyright (C) 1999, 2000, 2001 Free Software Foundation, Inc.
Written by Stephane Carrez (stcarrez@worldnet.fr)
(From a driver model Contributed by Cygnus Solutions.)
attach_m68hc11sio_regs (struct hw *me,
struct m68hc11sio *controller)
{
- hw_attach_address (hw_parent (me), 0, io_map,
+ hw_attach_address (hw_parent (me), M6811_IO_LEVEL, io_map,
M6811_SCI_FIRST_REG,
M6811_SCI_LAST_REG - M6811_SCI_FIRST_REG + 1,
me);
struct m68hc11sio *controller;
controller = HW_ZALLOC (me, struct m68hc11sio);
- me->overlap_mode_hw = 1;
set_hw_data (me, controller);
set_hw_io_read_buffer (me, m68hc11sio_io_read_buffer);
set_hw_io_write_buffer (me, m68hc11sio_io_write_buffer);
SIM_DESC sd;
struct m68hc11sio *controller;
sim_cpu *cpu;
- int check_interrupt = 0;
controller = hw_data (me);
sd = hw_system (me);
cpu->ios[M6811_SCSR] |= M6811_TDRE;
cpu->ios[M6811_SCSR] |= M6811_TC;
- /* Transmitter is enabled and we have something to sent. */
+ /* Transmitter is enabled and we have something to send. */
if ((cpu->ios[M6811_SCCR2] & M6811_TE) && controller->tx_has_char)
{
cpu->ios[M6811_SCSR] &= ~M6811_TDRE;
cpu->ios[M6811_SCSR] &= ~M6811_TC;
controller->tx_has_char = 0;
- check_interrupt = 1;
switch (controller->backend)
{
case sio_tcp:
NULL);
}
- if (check_interrupt)
- interrupts_update_pending (&cpu->cpu_interrupts);
+ interrupts_update_pending (&cpu->cpu_interrupts);
}
/* Descriptions of the SIO I/O ports. These descriptions are only used to
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, PRINT_TIME | PRINT_CYCLE),
+ 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, PRINT_TIME | PRINT_CYCLE));
}
}
const struct hw_descriptor dv_m68hc11sio_descriptor[] = {
- { "m68hc11sio", m68hc11sio_finish, },
+ { "m68hc11sio", m68hc11sio_finish },
+ { "m68hc12sio", m68hc11sio_finish },
{ NULL },
};