--- trunk/RELEASE 2007/10/08 16:18:27 10 +++ trunk/RELEASE 2007/10/08 16:20:58 32 @@ -1,83 +1,117 @@ -Release notes for GXemul 0.3.4 -============================== +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, regardless -of host platform. Several emulation modes are available. For 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. - -I have verified that the following "guest" operating systems can run -inside the emulator: - - Guest operating system Emulated machine - ---------------------- ---------------- - NetBSD/pmax 2.0.2 (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.2 NEC MobilePro 770, 780, 800, 880 - NetBSD/cobalt 2.0.2 Cobalt - NetBSD/evbmips 2.0.2 Malta 5Kc/4Kc evaluation board - NetBSD/sgimips 2.0.2 SGI O2 ("IP32") - -Some of these guest operating systems are easier to install and run than -others. The best supported mode is the DECstation 5000/200 emulation mode, -with NetBSD/pmax as the guest operating system. - -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. (However, GXemul does not simulate -things smaller than an instruction. What this means is that pipe-line -stalls, penalties caused by branch-prediction misses or cache misses, and -other micro-architectural effects are not simulated.) - -Summary of changes between release 0.3.3.2 and 0.3.4: - - x) When emulating a network of multiple machines, the emulated - machines can now be placed on different hosts. - - x) NetBSD/evbmips can now be installed and run from a disk image. - (There is no INSTALL kernel for NetBSD/evbmips, so you need to - install using another OS, for example emulated NetBSD/pmax.) - - x) NetBSD/sgimips can now be installed. Not onto a SCSI disk, - but the files can be exported via nfs from another emulated - machine. The sgimips machine can then netboot. (Read the - documentation for details.) +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. + +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. + + +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. -There have also been various other minor updates and bugfixes. 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. + demos Tutorial-like demos of testmachine functionality. doc Documentation. experiments Experimental code. (Usually not needed.) src Source code. - tests Regression tests. -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 src/include/ directory: only some of these are written by me, the rest are from other sources (such as NetBSD). The license text says @@ -143,12 +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 (in no specific order, that is, this is in alphabetic order :-) -Joachim Buss, Juli Mallett, Juan RP, Alec Voropay, Alexander Yurchenko, -and everyone else 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.