From c0cc58b1028f1a171043e3fd212beaea807e75b3 Mon Sep 17 00:00:00 2001 From: xtraeme Date: Thu, 9 Nov 2006 20:01:55 +0000 Subject: Update to 0.4.3. Changes between release 0.4.2 and 0.4.3 include, among other things: o) SuperH (SH4) emulation is now stable enough to let a NetBSD/dreamcast GENERIC_MD (ramdisk) kernel reach userland. o) There is now a simple framework for letting emulated clocks, as seen by guest operating systems, run at the same speed as the host clock. So far, the DECstation, MobilePro (hpcmips), NetWinder, CATS, Malta (evbmips), Cobalt, Algor, Dreamcast, and testmips machine modes use the new clock/timer framework. o) Some changes to the way expressions are evaluated in the built-in debugger, and some changes in command behaviour: x) Expressions (including assignments) can now be arbitrarily complex, using parentheses, and the following operators: + - * / % (modulo) ^ (xor) & (and) | (or) x) Some internal emulator variables can now be read/written using normal expressions. Examples of commands that did not work earlier, but should work now: print verbose r5 = sp - arch_pagesize * 4 machine[0].statistics_enabled = 1 x) To force a name to be interpreted as a setting/register name, a hash sign (#) is now used instead of the percentage sign (%). (In the new expression evaluator, % means arithmetic modulo.) x) The 'focus' command now also selects a cpu, in addition to selecting machine and emul. x) The 'reg' command only prints registers for one cpu now, not all cpus in the currently focused machine. o) The wdc (standard IDE controller) had a bug which prevented disk images larger than 2 GB to work correctly. This has been fixed. o) For MIPS emulation, some combinations of emulated processor + guest operating system should now work better when idling (i.e. the host should not run at 100% CPU): x) For MIPS32/MIPS64 and RM5200, the 'wait' instruction should now work more or less as expected. x) For VR41xx (e.g. MobilePro) emulation, the standby instruction should work like the 'wait' instruction. x) For R3000 emulation, where there is no hardware wait instruction, I've implemented "instruction combination" hacks for both NetBSD/pmax and Debian/pmax, so that their cpu idle loops are detected and treated almost as a wait instruction. o) MIPS 64-bit address translation (X=1) was not fully working before; TLB exception handling for xkseg and larger-than-2GB-userland should now actually work. (Thanks to Juli Mallett and Carl van Schaik for noticing these problems.) o) The mouse cursor update routines in DECstation (LK201) emulation previously used the fact that guest OSes set the _hardware_ cursor position. In order to support X Windows when emulating modern versions of NetBSD/pmax, which don't set the hardware position anymore, a workaround has been implemented which only sends relative coordinates to the guest OS. This has two drawbacks: 1. Ultrix emulation with dual- and tripple-head emulation will most likely feel very strange. It will still work, though. 2. Cursor movement feels "accelerated", because the emulator sends unaccelerated movements to the guest OS, which then accelerates them. This can however be compensated to some degree by running 'xset m 1 0' in the guest OS. Having weird accelerated mouse movement is better than having no mouse support at all, so this change was necessary. --- emulators/gxemul/Makefile | 5 +-- emulators/gxemul/PLIST | 8 ++-- emulators/gxemul/distinfo | 11 ++--- emulators/gxemul/patches/patch-aa | 26 ----------- emulators/gxemul/patches/patch-ab | 94 --------------------------------------- emulators/gxemul/patches/patch-ac | 13 ------ 6 files changed, 10 insertions(+), 147 deletions(-) delete mode 100644 emulators/gxemul/patches/patch-aa delete mode 100644 emulators/gxemul/patches/patch-ab delete mode 100644 emulators/gxemul/patches/patch-ac (limited to 'emulators') diff --git a/emulators/gxemul/Makefile b/emulators/gxemul/Makefile index 19bcf4087a5..d051a2bc9b9 100644 --- a/emulators/gxemul/Makefile +++ b/emulators/gxemul/Makefile @@ -1,8 +1,7 @@ -# $NetBSD: Makefile,v 1.24 2006/09/17 19:53:05 he Exp $ +# $NetBSD: Makefile,v 1.25 2006/11/09 20:01:55 xtraeme Exp $ # -DISTNAME= gxemul-0.4.2 -PKGREVISION= 1 +DISTNAME= gxemul-0.4.3 CATEGORIES= emulators MASTER_SITES= http://gavare.se/gxemul/src/ diff --git a/emulators/gxemul/PLIST b/emulators/gxemul/PLIST index 66b092a1df8..7b2a3969b42 100644 --- a/emulators/gxemul/PLIST +++ b/emulators/gxemul/PLIST @@ -1,4 +1,4 @@ -@comment $NetBSD: PLIST,v 1.12 2006/08/20 16:27:44 xtraeme Exp $ +@comment $NetBSD: PLIST,v 1.13 2006/11/09 20:01:55 xtraeme Exp $ bin/gxemul man/man1/gxemul.1 share/doc/gxemul/20040504-ultrix45-boot1.png @@ -59,10 +59,10 @@ share/doc/gxemul/20060812-netbsd-malta-3.0.1.png share/doc/gxemul/20060812-netbsd-malta-3.0.1_small.png share/doc/gxemul/20060814-netbsd-algor-3.0.1.png share/doc/gxemul/20060814-netbsd-algor-3.0.1_small.png +share/doc/gxemul/20061029-netbsd-dreamcast.png +share/doc/gxemul/20061029-netbsd-dreamcast_small.png share/doc/gxemul/HISTORY share/doc/gxemul/LICENSE -share/doc/gxemul/Makefile -share/doc/gxemul/Makefile.skel share/doc/gxemul/README share/doc/gxemul/RELEASE share/doc/gxemul/TODO @@ -105,8 +105,8 @@ share/doc/gxemul/intro.html share/doc/gxemul/maddr.gif share/doc/gxemul/make_doc_footer.html share/doc/gxemul/make_doc_header.html -share/doc/gxemul/make_documentation.sh share/doc/gxemul/misc.html +share/doc/gxemul/networking.html share/doc/gxemul/openbsd-pmax-20040710.png share/doc/gxemul/openbsd-pmax-20040710_small.png share/doc/gxemul/sgi-o2-real.jpg diff --git a/emulators/gxemul/distinfo b/emulators/gxemul/distinfo index bdada608395..8f0a579a322 100644 --- a/emulators/gxemul/distinfo +++ b/emulators/gxemul/distinfo @@ -1,8 +1,5 @@ -$NetBSD: distinfo,v 1.16 2006/09/17 19:53:05 he Exp $ +$NetBSD: distinfo,v 1.17 2006/11/09 20:01:55 xtraeme Exp $ -SHA1 (gxemul-0.4.2.tar.gz) = d912b4a38cf892d6f3e89c71195d6c52bb3718ca -RMD160 (gxemul-0.4.2.tar.gz) = dcffd9a3d8de93e935a0f2802c1a0aa60c462693 -Size (gxemul-0.4.2.tar.gz) = 1909826 bytes -SHA1 (patch-aa) = d320c625149490ec190b1201bfe94e4ee3692bbf -SHA1 (patch-ab) = 74cf9f44bd6577e120a1cafb532588a8280681e7 -SHA1 (patch-ac) = 6eae02b6dd162a907abbf9f84ca1c7949eb90bc8 +SHA1 (gxemul-0.4.3.tar.gz) = 1632f01c24ffaee46c8502a4bc54c0bd6461cdaf +RMD160 (gxemul-0.4.3.tar.gz) = 5c4599f8dc5d0942629981f041868f92d46e8c22 +Size (gxemul-0.4.3.tar.gz) = 2026817 bytes diff --git a/emulators/gxemul/patches/patch-aa b/emulators/gxemul/patches/patch-aa deleted file mode 100644 index 2420e42b7d8..00000000000 --- a/emulators/gxemul/patches/patch-aa +++ /dev/null @@ -1,26 +0,0 @@ -$NetBSD: patch-aa,v 1.3 2006/09/17 16:38:12 he Exp $ - ---- src/devices/dev_footbridge.c.orig 2006-02-09 21:07:12.000000000 +0100 -+++ src/devices/dev_footbridge.c -@@ -85,10 +85,18 @@ void dev_footbridge_tick(struct cpu *cpu - - if (d->timer_value[i] > amount) - d->timer_value[i] -= amount; -- else -- d->timer_value[i] = 0; -+ else { -+ if (d->timer_control[i] & TIMER_MODE_PERIODIC) -+ d->timer_value[i] = 0; -+ else { -+ /* free-running timer */ -+ d->timer_value[i] -= amount; -+ d->timer_value[i] &= TIMER_MAX_VAL; -+ } -+ } - -- if (d->timer_value[i] == 0) { -+ if ((d->timer_control[i] & TIMER_MODE_PERIODIC) && -+ (d->timer_value[i] == 0)) { - d->timer_tick_countdown[i] --; - if (d->timer_tick_countdown[i] > 0) - continue; diff --git a/emulators/gxemul/patches/patch-ab b/emulators/gxemul/patches/patch-ab deleted file mode 100644 index b83b0e781e9..00000000000 --- a/emulators/gxemul/patches/patch-ab +++ /dev/null @@ -1,94 +0,0 @@ -$NetBSD: patch-ab,v 1.1 2006/09/17 19:53:05 he Exp $ - ---- src/diskimage.c.orig 2006-08-14 19:46:45.000000000 +0200 -+++ src/diskimage.c -@@ -1185,6 +1185,89 @@ xferp->data_in[4] = 0x2c - 4; /* Additi - diskimage__return_default_status_and_message(xferp); - break; - -+ case SCSICDROM_READ_DISCINFO: -+ debug("CDROM_READ_DISCINFO, cmd[1]=0x%02x", xferp->cmd[1]); -+ -+ retlen = 34; -+ -+ scsi_transfer_allocbuf(&xferp->data_in_len, -+ &xferp->data_in, retlen, 1); -+ -+ xferp->data_in[0] = retlen - 2; /* length of info, excl len */ -+ xferp->data_in[1] = 0; /* length of info, excl len field, msb */ -+ xferp->data_in[2] = 0xE; /* 11 = complete ses, 10 = fin disc */ -+ xferp->data_in[3] = 0; /* First track on disc */ -+ xferp->data_in[4] = 1; /* Number of sessions, lsb */ -+ xferp->data_in[5] = 0; /* first_track_last_session_lsb */ -+ xferp->data_in[6] = 0; /* last_track_last_session_lsb */ -+ xferp->data_in[7] = 0x20; /* various flags */ -+ xferp->data_in[8] = 0; /* CD-ROM disc */ -+ xferp->data_in[9] = 1; /* num sessions, msb */ -+ xferp->data_in[10] = 0; /* first_track_last_session_msb */ -+ xferp->data_in[11] = 0; /* last_track_last_session_msb */ -+ { -+ int i; -+ /* Lead-in data, for completed cd-rom */ -+ for (i=16; i<=23; i++) { -+ xferp->data_in[i] = 0xff; -+ } -+ } -+ -+ diskimage__return_default_status_and_message(xferp); -+ break; -+ -+ case SCSICDROM_READ_TRACKINFO: -+ debug("CDROM_READ_TRACKINFO"); -+ -+ retlen = 36; -+ -+ scsi_transfer_allocbuf(&xferp->data_in_len, -+ &xferp->data_in, retlen, 1); -+ -+ diskimage_recalc_size(d); -+ -+ size = d->total_size / d->logical_block_size; -+ if (d->total_size & (d->logical_block_size-1)) -+ size ++; -+ -+ xferp->data_in[0] = retlen - 2; /* length of info, excl len */ -+ xferp->data_in[1] = 0; /* length of info, msb */ -+ xferp->data_in[2] = 1; /* track#, lsb */ -+ xferp->data_in[3] = 1; /* session#, lsb */ -+ xferp->data_in[4] = 0; /* reserved */ -+ xferp->data_in[5] = 0x6; /* trk mode: unintr. data, copyable */ -+ xferp->data_in[6] = 0x81; /* trk info: RT + trk mode */ -+ xferp->data_in[7] = 0x2; /* last rec=valid, next w=not valid */ -+ -+ { -+ int i; -+ /* -+ * track start, next writable, free blcks, -+ * blocking factor -+ */ -+ for(i=8; i<=23; i++) -+ xferp->data_in[i] = 0; -+ } -+ -+ /* Track size */ -+ xferp->data_in[24] = (size >> 24) & 0xff; -+ xferp->data_in[25] = (size >> 16) & 0xff; -+ xferp->data_in[26] = (size >> 8) & 0xff; -+ xferp->data_in[27] = size & 0xff; -+ -+ { -+ int i; -+ /* -+ * Last recorded address, only for dvd; -+ * zero out rest. -+ */ -+ for(i=28; i<=35; i++) -+ xferp->data_in[i] = 0; -+ } -+ -+ diskimage__return_default_status_and_message(xferp); -+ break; -+ - case SCSICDROM_READ_SUBCHANNEL: - /* - * According to diff --git a/emulators/gxemul/patches/patch-ac b/emulators/gxemul/patches/patch-ac deleted file mode 100644 index 07ba76d3f2b..00000000000 --- a/emulators/gxemul/patches/patch-ac +++ /dev/null @@ -1,13 +0,0 @@ -$NetBSD: patch-ac,v 1.1 2006/09/17 19:53:05 he Exp $ - ---- src/include/diskimage.h.orig 2005-11-13 03:22:01.000000000 +0100 -+++ src/include/diskimage.h -@@ -150,6 +150,8 @@ void diskimage_dump_info(struct machine - /* SCSI CD-ROM commands: */ - #define SCSICDROM_READ_SUBCHANNEL 0x42 - #define SCSICDROM_READ_TOC 0x43 -+#define SCSICDROM_READ_DISCINFO 0x51 -+#define SCSICDROM_READ_TRACKINFO 0x52 - - /* SCSI tape commands: */ - #define SCSICMD_REWIND 0x01 -- cgit v1.2.3