From b93775f5866b3f922041b64f73454c8788821abf Mon Sep 17 00:00:00 2001 From: Stephane Carrez Date: Sun, 26 Nov 2000 21:41:31 +0000 Subject: [PATCH] Preliminary support for 68HC12 --- sim/m68hc11/ChangeLog | 11 +++++++++++ sim/m68hc11/dv-m68hc11.c | 19 +++++++++---------- sim/m68hc11/dv-m68hc11eepr.c | 3 ++- sim/m68hc11/dv-m68hc11sio.c | 3 ++- sim/m68hc11/dv-m68hc11spi.c | 3 ++- sim/m68hc11/dv-m68hc11tim.c | 6 +++--- 6 files changed, 29 insertions(+), 16 deletions(-) diff --git a/sim/m68hc11/ChangeLog b/sim/m68hc11/ChangeLog index f477cb7c230..bf0ce6491ad 100644 --- a/sim/m68hc11/ChangeLog +++ b/sim/m68hc11/ChangeLog @@ -1,3 +1,14 @@ +2000-11-26 Stephane Carrez + + * dv-m68hc11.c (m68hc11cpu_io_read_buffer): Use attach_size + instead of a hard-coded value. + (m68hc11cpu_io_write_buffer): Likewise. + (dv_m68hc11_descriptor): Define a 68hc12 device. + * dv-m68hc11eepr.c (dv_m68hc11eepr_descriptor): Likewise. + * dv-m68hc11tim.c (dv_m68hc11tim_descriptor): Likewise. + * dv-m68hc11spi.c (dv_m68hc11spi_descriptor): Likewise. + * dv-m68hc11sio.c (dv_m68hc11sio_descriptor): Likewise. + 2000-11-22 Stephane Carrez * dv-m68hc11.c (attach_m68hc11_regs): Register a delete handler. diff --git a/sim/m68hc11/dv-m68hc11.c b/sim/m68hc11/dv-m68hc11.c index 38000472289..f300297331a 100644 --- a/sim/m68hc11/dv-m68hc11.c +++ b/sim/m68hc11/dv-m68hc11.c @@ -1,4 +1,4 @@ -/* dv-m68hc11.c -- CPU 68HC11 as a device. +/* dv-m68hc11.c -- CPU 68HC11&68HC12 as a device. Copyright (C) 1999, 2000 Free Software Foundation, Inc. Written by Stephane Carrez (stcarrez@worldnet.fr) (From a driver model Contributed by Cygnus Solutions.) @@ -26,12 +26,12 @@ /* DEVICE m68hc11cpu - m68hc11 cpu virtual device - + m68hc12cpu - m68hc12 cpu virtual device DESCRIPTION - Implements the external m68hc11 functionality. This includes the - delivery of of interrupts generated from other devices and the + Implements the external m68hc11/68hc12 functionality. This includes + the delivery of of interrupts generated from other devices and the handling of device specific registers. @@ -39,7 +39,7 @@ reg - Register base (should be 0x1000 0x03f). + Register base (should be 0x1000 0x03f for C11, 0x0000 0x3ff for HC12). clock @@ -272,8 +272,6 @@ m68hc11cpu_finish (struct hw *me) attach_m68hc11_regs (me, controller); } - - /* An event arrives on an interrupt port. */ static void @@ -442,7 +440,7 @@ m68hc11cpu_io_read_buffer (struct hw *me, while (nr_bytes) { - if (base >= 0x3F) + if (base >= controller->attach_size) break; memcpy (dest, &cpu->ios[base], 1); @@ -574,7 +572,7 @@ m68hc11cpu_io_write_buffer (struct hw *me, while (nr_bytes) { uint8 val; - if (base >= 0x3F) + if (base >= controller->attach_size) break; val = *((uint8*) source); @@ -588,7 +586,8 @@ m68hc11cpu_io_write_buffer (struct hw *me, } const struct hw_descriptor dv_m68hc11_descriptor[] = { - { "m68hc11", m68hc11cpu_finish, }, + { "m68hc11", m68hc11cpu_finish }, + { "m68hc12", m68hc11cpu_finish }, { NULL }, }; diff --git a/sim/m68hc11/dv-m68hc11eepr.c b/sim/m68hc11/dv-m68hc11eepr.c index d4aeb4833ad..a48456fa13d 100644 --- a/sim/m68hc11/dv-m68hc11eepr.c +++ b/sim/m68hc11/dv-m68hc11eepr.c @@ -621,7 +621,8 @@ m68hc11eepr_io_write_buffer (struct hw *me, } const struct hw_descriptor dv_m68hc11eepr_descriptor[] = { - { "m68hc11eepr", m68hc11eepr_finish, }, + { "m68hc11eepr", m68hc11eepr_finish }, + { "m68hc12eepr", m68hc11eepr_finish }, { NULL }, }; diff --git a/sim/m68hc11/dv-m68hc11sio.c b/sim/m68hc11/dv-m68hc11sio.c index aa765cf3a4f..1f022c4bbe7 100644 --- a/sim/m68hc11/dv-m68hc11sio.c +++ b/sim/m68hc11/dv-m68hc11sio.c @@ -657,7 +657,8 @@ m68hc11sio_io_write_buffer (struct hw *me, const struct hw_descriptor dv_m68hc11sio_descriptor[] = { - { "m68hc11sio", m68hc11sio_finish, }, + { "m68hc11sio", m68hc11sio_finish }, + { "m68hc12sio", m68hc11sio_finish }, { NULL }, }; diff --git a/sim/m68hc11/dv-m68hc11spi.c b/sim/m68hc11/dv-m68hc11spi.c index abde515131b..d0bdfda9953 100644 --- a/sim/m68hc11/dv-m68hc11spi.c +++ b/sim/m68hc11/dv-m68hc11spi.c @@ -527,7 +527,8 @@ m68hc11spi_io_write_buffer (struct hw *me, const struct hw_descriptor dv_m68hc11spi_descriptor[] = { - { "m68hc11spi", m68hc11spi_finish, }, + { "m68hc11spi", m68hc11spi_finish }, + { "m68hc12spi", m68hc11spi_finish }, { NULL }, }; diff --git a/sim/m68hc11/dv-m68hc11tim.c b/sim/m68hc11/dv-m68hc11tim.c index 355139fdf52..144ae4bf203 100644 --- a/sim/m68hc11/dv-m68hc11tim.c +++ b/sim/m68hc11/dv-m68hc11tim.c @@ -111,7 +111,6 @@ attach_m68hc11tim_regs (struct hw *me, me); } - static void m68hc11tim_finish (struct hw *me) { @@ -128,7 +127,7 @@ m68hc11tim_finish (struct hw *me) #else me->to_ioctl = m68hc11tim_ioctl; #endif - + /* Preset defaults. */ controller->clock_prescaler = 1; controller->tcnt_adjust = 0; @@ -688,7 +687,8 @@ m68hc11tim_io_write_buffer (struct hw *me, const struct hw_descriptor dv_m68hc11tim_descriptor[] = { - { "m68hc11tim", m68hc11tim_finish, }, + { "m68hc11tim", m68hc11tim_finish }, + { "m68hc12tim", m68hc11tim_finish }, { NULL }, }; -- 2.30.2