--- trunk/RELEASE 2007/10/08 16:17:48 2 +++ trunk/RELEASE 2007/10/08 16:20:58 32 @@ -1,74 +1,120 @@ -Release notes for GXemul 0.3.1 -============================== +Release notes for Gavare's eXperimental Emulator (GXemul), 0.4.3 +================================================================ -Copyright (C) 2003-2005 Anders Gavare. +Copyright (C) 2003-2006 Anders Gavare. -GXemul is an experimental instruction-level machine emulator. It can be -used to run binary code for (among others) MIPS-based machines. Several -emulation modes are available. For some emulation modes, processors and -surrounding hardware components are emulated well enough to let unmodified -operating systems run as if they were running on a real machine. - -I have verified that the following "guest" operating systems can run -inside the emulator: - - Guest operating system Emulated machine - ---------------------- ---------------- - NetBSD/pmax 2.0 (and 1.6.2) DECstation 5000/200 - OpenBSD/pmax 2.8-BETA DECstation 5000/200 - Ultrix 4.2-4.5 DECstation 5000/200 - Sprite demo harddisk image DECstation 5000/200 - Debian GNU/Linux for DECstation DECstation 5000/200 - Redhat Linux 7.1 for mips DECstation 5000/200 - NetBSD/arc 1.6.2 Acer PICA-61 - OpenBSD/arc 2.3 Acer PICA-61 - NetBSD/hpcmips 2.0 NEC MobilePro 770, 780, 800, 880 - -A couple of other emulation modes exist. Some of these modes are almost -working well enough to run complete guest operating systems, but most are -just skeletons. The modes that work are listed in the documentation. - -The emulator can also be used in other experiments; it does not have to -run entire guest operating systems. It is important to remember, though, -that GXemul does not simulate things smaller than an instruction; this -means that pipe-line stalls, penalties caused by branch-prediction misses, -and other effects are not simulated. - -The two most visible changes from version 0.3 to 0.3.1 are: - - x) Name change (from mips64emul to GXemul). +GXemul is an experimental instruction-level machine emulator. Several +emulation modes are available. In some modes, processors and surrounding +hardware components are emulated well enough to let unmodified operating +systems (e.g. NetBSD) run as if they were running on a real machine. - x) NetBSD/hpcmips can now be installed and run from a harddisk - image on an emulated NEC MobilePro 770, 780, 800, or 880. +The documentation lists the machines and guest operating systems that can +be regarded as "working" in GXemul. The best working guest operating +systems are probably NetBSD/pmax, NetBSD/cats, and OpenBSD/cats. -There have also been many other updates and bugfixes, as usual. -This release has a number of known bugs, listed in the BUGS file, but feel -free to drop me an email regarding other bugs. +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. + +Please read the HISTORY files for more details. + Files included in this release are: - BUGS A list of known bugs. HISTORY Detailed revision history / changelog. LICENSE Copyright message / license. README Quick start instructions, for the impatient. RELEASE This file. TODO TODO notes. - configure, Makefile.skel sh and make scripts for building GXemul + configure, Makefile.skel sh and make scripts for building GXemul. + demos Tutorial-like demos of testmachine functionality. doc Documentation. experiments Experimental code. (Usually not needed.) - src, devices, and include Source code. - tests Regression tests. + src Source code. -To build the emulator, run the ./configure script, and then run make. +To build the emulator, run the configure script, and then run make. This +should work on most Unix-like systems. -Building the emulator should work on most Unix-like systems. (One system which -is specifically known to NOT work is Ultrix/RISC inside the emulator; Ultrix -chokes on the configure script and the default cc in Ultrix doesn't work.) -Regarding files in the include/ directory: only some of these are written by -me, the rest are from other sources (such as NetBSD). The license text says +Regarding files in the src/include/ directory: only some of these are written +by me, the rest are from other sources (such as NetBSD). The license text says that "All advertising materials mentioning features or use of this software" must display acknowledgements. Even though I do NOT feel I mention features or use of the header files (the "software") in any advertising materials, I am @@ -131,10 +177,37 @@ This product includes software developed by Marc Horowitz. + This product includes software developed by Brini. + + This product includes software developed by Mark Brinicombe + for the NetBSD Project. + + This product includes software developed by TooLs GmbH. + + This product includes software developed by Manuel Bouyer. + + This product includes software developed by the Alice Group. + + This product includes software developed by Ichiro FUKUHARA. + + This product includes software developed by Marcus Comstedt. + +Also, src/include/alpha_rpb.h requires the following: + + Copyright (c) 1994, 1995, 1996 Carnegie-Mellon University. + All rights reserved. + + Author: Keith Bostic, Chris G. Demetriou + + Permission to use, copy, modify and distribute this software and + its documentation is hereby granted, provided that both the copyright + notice and this permission notice appear in all copies of the + software, derivative works or modified versions, and any portions + thereof, and that both notices appear in supporting documentation. + See individual files for license details, if you plan to redistribute GXemul or reuse code. -Thanks to everyone who has provided me with feedback. If you have found GXemul useful in some way, or feel like sending me comments or feedback in general, then mail me at anders(at)gavare.se.