summaryrefslogtreecommitdiff
path: root/emulators
diff options
context:
space:
mode:
authorrin <rin@pkgsrc.org>2020-03-19 02:27:21 +0000
committerrin <rin@pkgsrc.org>2020-03-19 02:27:21 +0000
commitd93c02670653ff1babb4fabdb3c080f72a547df4 (patch)
tree1dbb935317906de69072951870f8d0344c20bfc2 /emulators
parentb2618ed31304fc1d30d80d38c9fe876e5d4dfb67 (diff)
downloadpkgsrc-d93c02670653ff1babb4fabdb3c080f72a547df4.tar.gz
Fix logic to determine whether destination EA for cas lies b/w page
boundary or not; casl was mistakenly treated as an illegal instruction when destination is the highest long word in a page. This results in kernel panic in supervisor mode. Bump revision. Now, NetBSD/sun3 boots multiuser again. Have fun!
Diffstat (limited to 'emulators')
-rw-r--r--emulators/tme/Makefile4
-rw-r--r--emulators/tme/distinfo4
-rw-r--r--emulators/tme/patches/patch-ic_m68k_m68k-misc.c22
3 files changed, 21 insertions, 9 deletions
diff --git a/emulators/tme/Makefile b/emulators/tme/Makefile
index 2fe1cc36067..3ca7dc404e8 100644
--- a/emulators/tme/Makefile
+++ b/emulators/tme/Makefile
@@ -1,8 +1,8 @@
-# $NetBSD: Makefile,v 1.76 2020/03/10 22:09:48 wiz Exp $
+# $NetBSD: Makefile,v 1.77 2020/03/19 02:27:21 rin Exp $
#
DISTNAME= tme-0.8
-PKGREVISION= 43
+PKGREVISION= 44
CATEGORIES= emulators
MASTER_SITES= http://csail.mit.edu/~fredette/tme/
diff --git a/emulators/tme/distinfo b/emulators/tme/distinfo
index e248c9bd59c..7a0172a4c58 100644
--- a/emulators/tme/distinfo
+++ b/emulators/tme/distinfo
@@ -1,4 +1,4 @@
-$NetBSD: distinfo,v 1.25 2020/03/05 14:55:16 thorpej Exp $
+$NetBSD: distinfo,v 1.26 2020/03/19 02:27:21 rin Exp $
SHA1 (tme-0.8.tar.gz) = dd4f3421c20ceed548c5328a21dbb26e80f46b9c
RMD160 (tme-0.8.tar.gz) = 6bd505c5fa7810d37f436883383c4ba655df2ded
@@ -18,7 +18,7 @@ SHA1 (patch-ic_ieee754_ieee754-misc-auto.sh) = afeb7452ef64bcae71e4dbae21881cff1
SHA1 (patch-ic_m68k_m6888x.c) = fe42dce7bf5abc69e2c9e15967d5e862ef651a0e
SHA1 (patch-ic_m68k_m68k-insns-auto.sh) = c493b4c6b066135e093abd7482e0a1e99294848b
SHA1 (patch-ic_m68k_m68k-m68k-insns.c) = 1a9d8e3d4e11c5710d1f67b65954d6e3de68d99f
-SHA1 (patch-ic_m68k_m68k-misc.c) = 7aeef098631196fe60b9940600cf90c86d1be375
+SHA1 (patch-ic_m68k_m68k-misc.c) = a5d5f5dfdd0331d30b19815687ead49554a771f1
SHA1 (patch-ic_mm58167.c) = 1c35c599f56f6a13a9dfc85dc5154f094bd8c0d0
SHA1 (patch-libtme_memory-auto.sh) = f7d989831b2468d1288faabc10b6fc53ce5bd0f4
SHA1 (patch-machine_sun2_SUN2-MULTIBUS) = cf9f55fcc15e2d977823dd54b9a10c42b11a6666
diff --git a/emulators/tme/patches/patch-ic_m68k_m68k-misc.c b/emulators/tme/patches/patch-ic_m68k_m68k-misc.c
index 49d471c2a8a..359aa9b926b 100644
--- a/emulators/tme/patches/patch-ic_m68k_m68k-misc.c
+++ b/emulators/tme/patches/patch-ic_m68k_m68k-misc.c
@@ -1,10 +1,13 @@
-$NetBSD: patch-ic_m68k_m68k-misc.c,v 1.1 2013/12/28 19:16:48 martin Exp $
+$NetBSD: patch-ic_m68k_m68k-misc.c,v 1.2 2020/03/19 02:27:21 rin Exp $
-Fix from upstream CVS: fix sequencing and fault handling for read-modify-write
-instructions.
+- Fix from upstream CVS: fix sequencing and fault handling for
+ read-modify-write instructions.
---- ic/m68k/m68k-misc.c.orig 2009-08-29 21:47:52.000000000 +0200
-+++ ic/m68k/m68k-misc.c 2013-12-23 13:12:54.000000000 +0100
+- Fix logic to determine whether destination EA for cas lies b/w page
+ boundary or not.
+
+--- ic/m68k/m68k-misc.c.orig 2009-08-30 04:47:52.000000000 +0900
++++ ic/m68k/m68k-misc.c 2020-03-18 23:15:56.877341698 +0900
@@ -1441,6 +1441,9 @@ tme_m68k_rmw_start(struct tme_m68k *ic,
tme_uint32_t *buffer_reg;
int supported;
@@ -15,6 +18,15 @@ instructions.
/* if the user reran the cycle: */
if (TME_M68K_SEQUENCE_RESTARTING
&& (ic->_tme_m68k_group0_buffer_read_softrr > 0
+@@ -1690,7 +1693,7 @@ tme_m68k_rmw_start(struct tme_m68k *ic,
+ tlb = rmw->tme_m68k_rmw_tlbs[address_i];
+
+ /* if this TLB entry doesn't cover the entire operand: */
+- if ((((tme_bus_addr32_t) tlb->tme_m68k_tlb_linear_last) - address) < rmw->tme_m68k_rmw_size) {
++ if ((((tme_bus_addr32_t) tlb->tme_m68k_tlb_linear_last + 1) - address) < rmw->tme_m68k_rmw_size) {
+
+ /* we can't support this instruction on this memory, because
+ we can't split an atomic operation across TLB entries. on
@@ -1754,9 +1757,6 @@ tme_m68k_rmw_start(struct tme_m68k *ic,
tlbs_busy[!tlb_i] = FALSE;
}