diff --git a/sim/bfin/ChangeLog b/sim/bfin/ChangeLog
index 1deb4ea..427cdd8 100644
--- a/sim/bfin/ChangeLog
+++ b/sim/bfin/ChangeLog
@@ -1,3 +1,7 @@
+2015-12-25  Mike Frysinger  <vapier@gentoo.org>
+
+	* devices.c (device_error): Delete.
+
 2015-12-24  Mike Frysinger  <vapier@gentoo.org>
 
 	* tconfig.h (SIM_HANDLES_LMA): Delete.
diff --git a/sim/bfin/devices.c b/sim/bfin/devices.c
index e25bd21..7dab5f1 100644
--- a/sim/bfin/devices.c
+++ b/sim/bfin/devices.c
@@ -149,14 +149,6 @@ device_io_write_buffer (device *me, const void *source, int space,
     return 0;
 }
 
-void device_error (device *me, const char *message, ...)
-{
-  /* Don't bother doing anything here -- any place in common code that
-     calls device_error() follows it with sim_hw_abort().  Since the
-     device isn't bound to the system yet, we can't call any common
-     hardware error funcs on it or we'll hit a NULL pointer.  */
-}
-
 unsigned int dv_get_bus_num (struct hw *me)
 {
   const hw_unit *unit = hw_unit_address (me);
diff --git a/sim/common/ChangeLog b/sim/common/ChangeLog
index 0a6cb15..52931d8 100644
--- a/sim/common/ChangeLog
+++ b/sim/common/ChangeLog
@@ -1,5 +1,15 @@
 2015-12-25  Mike Frysinger  <vapier@gentoo.org>
 
+	* sim-core.c (device_error): Delete.
+	(sim_core_map_attach): Delete calls to device_error.
+	(sim_core_attach): Likewise.
+	* sim-core.h (device_error): Delete.
+	* sim-n-core.h (sim_core_read_aligned_N): Change device_error call
+	to sim_engine_abort.
+	(sim_core_write_aligned_N): Likewise.
+
+2015-12-25  Mike Frysinger  <vapier@gentoo.org>
+
 	* sim-config.h (WITH_CALLBACK_MEMORY): Delete.
 	* sim-core.c (sim_core_write_buffer): Likewise.
 	* sim-n-core.h (sim_core_read_aligned_N): Likewise.
diff --git a/sim/common/sim-core.c b/sim/common/sim-core.c
index a5e3cdb..26fabd5 100644
--- a/sim/common/sim-core.c
+++ b/sim/common/sim-core.c
@@ -28,7 +28,6 @@
 
 #if (WITH_HW)
 #include "sim-hw.h"
-#define device_error(client, ...) device_error ((device *)(client), __VA_ARGS__)
 #define device_io_read_buffer(client, ...) device_io_read_buffer ((device *)(client), __VA_ARGS__)
 #define device_io_write_buffer(client, ...) device_io_write_buffer ((device *)(client), __VA_ARGS__)
 #endif
@@ -194,9 +193,6 @@ sim_core_map_attach (SIM_DESC sd,
   /* actually do occasionally get a zero size map */
   if (nr_bytes == 0)
     {
-#if (WITH_DEVICES)
-      device_error (client, "called on sim_core_map_attach with size zero");
-#endif
 #if (WITH_HW)
       sim_hw_abort (sd, client, "called on sim_core_map_attach with size zero");
 #endif
@@ -223,17 +219,6 @@ sim_core_map_attach (SIM_DESC sd,
   if (next_mapping != NULL && next_mapping->level == level
       && next_mapping->base < (addr + (nr_bytes - 1)))
     {
-#if (WITH_DEVICES)
-      device_error (client, "memory map %d:0x%lx..0x%lx (%ld bytes) overlaps %d:0x%lx..0x%lx (%ld bytes)",
-		    space,
-		    (long) addr,
-		    (long) (addr + nr_bytes - 1),
-		    (long) nr_bytes,
-		    next_mapping->space,
-		    (long) next_mapping->base,
-		    (long) next_mapping->bound,
-		    (long) next_mapping->nr_bytes);
-#endif
 #if WITH_HW
       sim_hw_abort (sd, client, "memory map %d:0x%lx..0x%lx (%ld bytes) overlaps %d:0x%lx..0x%lx (%ld bytes)",
 		    space,
@@ -297,9 +282,6 @@ sim_core_attach (SIM_DESC sd,
 
   if (client != NULL && modulo != 0)
     {
-#if (WITH_DEVICES)
-      device_error (client, "sim_core_attach - internal error - modulo and callback memory conflict");
-#endif
 #if (WITH_HW)
       sim_hw_abort (sd, client, "sim_core_attach - internal error - modulo and callback memory conflict");
 #endif
@@ -318,9 +300,6 @@ sim_core_attach (SIM_DESC sd,
 	}
       if (mask != sizeof (unsigned64) - 1)
 	{
-#if (WITH_DEVICES)
-	  device_error (client, "sim_core_attach - internal error - modulo %lx not power of two", (long) modulo);
-#endif
 #if (WITH_HW)
 	  sim_hw_abort (sd, client, "sim_core_attach - internal error - modulo %lx not power of two", (long) modulo);
 #endif
@@ -331,9 +310,6 @@ sim_core_attach (SIM_DESC sd,
   /* verify consistency between device and buffer */
   if (client != NULL && optional_buffer != NULL)
     {
-#if (WITH_DEVICES)
-      device_error (client, "sim_core_attach - internal error - conflicting buffer and attach arguments");
-#endif
 #if (WITH_HW)
       sim_hw_abort (sd, client, "sim_core_attach - internal error - conflicting buffer and attach arguments");
 #endif
diff --git a/sim/common/sim-core.h b/sim/common/sim-core.h
index a60e60a..bf98232 100644
--- a/sim/common/sim-core.h
+++ b/sim/common/sim-core.h
@@ -351,7 +351,6 @@ DECLARE_SIM_CORE_READ_N(misaligned,7,8)
 #if (WITH_DEVICES)
 /* TODO: create sim/common/device.h */
 /* These are defined with each particular cpu.  */
-void device_error (device *me, const char *message, ...) __attribute__((format (printf, 2, 3)));
 int device_io_read_buffer(device *me, void *dest, int space, address_word addr, unsigned nr_bytes, SIM_DESC sd, sim_cpu *processor, sim_cia cia);
 int device_io_write_buffer(device *me, const void *source, int space, address_word addr, unsigned nr_bytes, SIM_DESC sd, sim_cpu *processor, sim_cia cia);
 #endif
diff --git a/sim/common/sim-n-core.h b/sim/common/sim-n-core.h
index f57e8f8..3393f19 100644
--- a/sim/common/sim-n-core.h
+++ b/sim/common/sim-n-core.h
@@ -169,8 +169,9 @@ sim_core_read_aligned_N(sim_cpu *cpu,
 	{
 	  unsigned_M data;
 	  if (device_io_read_buffer (mapping->device, &data, mapping->space, addr, N, CPU_STATE (cpu), cpu, cia) != N)
-	    device_error (mapping->device, "internal error - %s - io_read_buffer should not fail",
-			  XSTRING (sim_core_read_aligned_N));
+	    sim_engine_abort (CPU_STATE (cpu), cpu, cia,
+			      "internal error - %s - io_read_buffer should not fail",
+			      XSTRING (sim_core_read_aligned_N));
 	  val = T2H_M (data);
 	  break;
 	}
@@ -300,8 +301,9 @@ sim_core_write_aligned_N(sim_cpu *cpu,
 	{
 	  unsigned_M data = H2T_M (val);
 	  if (device_io_write_buffer (mapping->device, &data, mapping->space, addr, N, CPU_STATE (cpu), cpu, cia) != N)
-	    device_error (mapping->device, "internal error - %s - io_write_buffer should not fail",
-			  XSTRING (sim_core_write_aligned_N));
+	    sim_engine_abort (CPU_STATE (cpu), cpu, cia,
+			      "internal error - %s - io_write_buffer should not fail",
+			      XSTRING (sim_core_read_aligned_N));
 	  break;
 	}
 #endif
diff --git a/sim/cris/ChangeLog b/sim/cris/ChangeLog
index 7b7618c..dbc2d09 100644
--- a/sim/cris/ChangeLog
+++ b/sim/cris/ChangeLog
@@ -1,3 +1,7 @@
+2015-12-25  Mike Frysinger  <vapier@gentoo.org>
+
+	* devices.c (device_error): Delete.
+
 2015-12-24  Mike Frysinger  <vapier@gentoo.org>
 
 	* tconfig.h (SIM_HANDLES_LMA): Delete.
diff --git a/sim/cris/devices.c b/sim/cris/devices.c
index a7fa051..56cdfed 100644
--- a/sim/cris/devices.c
+++ b/sim/cris/devices.c
@@ -31,14 +31,6 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 /* Placeholder definition.  */
 struct _device { char dummy; } cris_devices;
 
-void
-device_error (device *me ATTRIBUTE_UNUSED,
-	      const char *message ATTRIBUTE_UNUSED,
-	      ...)
-{
-  abort ();
-}
-
 int
 device_io_read_buffer (device *me ATTRIBUTE_UNUSED,
 		       void *source ATTRIBUTE_UNUSED,
diff --git a/sim/frv/ChangeLog b/sim/frv/ChangeLog
index 4f0dd8f..c7a601e 100644
--- a/sim/frv/ChangeLog
+++ b/sim/frv/ChangeLog
@@ -1,3 +1,7 @@
+2015-12-25  Mike Frysinger  <vapier@gentoo.org>
+
+	* devices.c (device_error): Delete.
+
 2015-12-24  Mike Frysinger  <vapier@gentoo.org>
 
 	* tconfig.h (SIM_HANDLES_LMA): Delete.
diff --git a/sim/frv/devices.c b/sim/frv/devices.c
index e417963..176f370 100644
--- a/sim/frv/devices.c
+++ b/sim/frv/devices.c
@@ -54,5 +54,3 @@ device_io_write_buffer (device *me, const void *source, int space,
 
   return nr_bytes;
 }
-
-void device_error (device *me, const char *message, ...) {}
diff --git a/sim/m32r/ChangeLog b/sim/m32r/ChangeLog
index f81e61b..7a33412 100644
--- a/sim/m32r/ChangeLog
+++ b/sim/m32r/ChangeLog
@@ -1,3 +1,7 @@
+2015-12-25  Mike Frysinger  <vapier@gentoo.org>
+
+	* devices.c (device_error): Delete.
+
 2015-12-24  Mike Frysinger  <vapier@gentoo.org>
 
 	* tconfig.h (SIM_HANDLES_LMA): Delete.
diff --git a/sim/m32r/devices.c b/sim/m32r/devices.c
index a308a08..62a9b6f 100644
--- a/sim/m32r/devices.c
+++ b/sim/m32r/devices.c
@@ -99,8 +99,3 @@ device_io_write_buffer (device *me, const void *source, int space,
 
   return nr_bytes;
 }
-
-void
-device_error (device *me, const char *message, ...)
-{
-}
