summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephane Carrez <stcarrez@nerim.fr>2000-11-26 21:41:31 +0000
committerStephane Carrez <stcarrez@nerim.fr>2000-11-26 21:41:31 +0000
commitb93775f5866b3f922041b64f73454c8788821abf (patch)
tree5a62ae2892e117af5ff085418ac14e95b5d79c0a
parentae3e85dd270c1dba87ac81cd431ebc6a44a28e44 (diff)
downloadbinutils-gdb-b93775f5866b3f922041b64f73454c8788821abf.tar.gz
Preliminary support for 68HC12
-rw-r--r--sim/m68hc11/ChangeLog11
-rw-r--r--sim/m68hc11/dv-m68hc11.c19
-rw-r--r--sim/m68hc11/dv-m68hc11eepr.c3
-rw-r--r--sim/m68hc11/dv-m68hc11sio.c3
-rw-r--r--sim/m68hc11/dv-m68hc11spi.c3
-rw-r--r--sim/m68hc11/dv-m68hc11tim.c6
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 <Stephane.Carrez@worldnet.fr>
+
+ * 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 <Stephane.Carrez@worldnet.fr>
* 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 <base> <size>
- Register base (should be 0x1000 0x03f).
+ Register base (should be 0x1000 0x03f for C11, 0x0000 0x3ff for HC12).
clock <hz>
@@ -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 },
};