diff options
author | rin <rin@pkgsrc.org> | 2020-03-19 02:27:21 +0000 |
---|---|---|
committer | rin <rin@pkgsrc.org> | 2020-03-19 02:27:21 +0000 |
commit | d93c02670653ff1babb4fabdb3c080f72a547df4 (patch) | |
tree | 1dbb935317906de69072951870f8d0344c20bfc2 /emulators | |
parent | b2618ed31304fc1d30d80d38c9fe876e5d4dfb67 (diff) | |
download | pkgsrc-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/Makefile | 4 | ||||
-rw-r--r-- | emulators/tme/distinfo | 4 | ||||
-rw-r--r-- | emulators/tme/patches/patch-ic_m68k_m68k-misc.c | 22 |
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; } |