This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/HISTORY

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 10 by dpavlin, Mon Oct 8 16:18:27 2007 UTC revision 44 by dpavlin, Mon Oct 8 16:22:56 2007 UTC
# Line 1  Line 1 
1  $Id: HISTORY,v 1.815 2005/06/27 23:04:35 debug Exp $  $Id: HISTORY,v 1.1632 2007/09/11 21:46:35 debug Exp $
3  Changelog for GXemul:  Changelog for GXemul:
4  ---------------------  ---------------------
# Line 2035  Changelog for GXemul: Line 2035  Changelog for GXemul:
2036  ==============  RELEASE 0.3.4  ==============  ==============  RELEASE 0.3.4  ==============
2038    20050628        Continuing the work on the ARM translation engine. end_of_page
2039                    works. Experimenting with load/store translation caches
2040                    (virtual -> physical -> host).
2041    20050629        More ARM stuff (memory access translation cache, mostly). This
2042                    might break a lot of stuff elsewhere, probably some MIPS-
2043                    related translation things.
2044    20050630        Many load/stores are now automatically generated and included
2045                    into cpu_arm_instr.c; 1024 functions in total (!).
2046                    Fixes based on feedback from Alec Voropay: only print 8 hex
2047                    digits instead of 16 in some cases when emulating 32-bit
2048                    machines; similar 8 vs 16 digit fix for breakpoint addresses;
2049                    4Kc has 16 TLB entries, not 48; the MIPS config select1
2050                    register is now printed with "reg ,0".
2051                    Also changing many other occurances of 16 vs 8 digit output.
2052                    Adding cache associativity fields to mips_cpu_types.h; updating
2053                    some other cache fields; making the output of
2054                    mips_cpu_dumpinfo() look nicer.
2055                    Generalizing the bintrans stuff for device accesses to also
2056                    work with the new translation system. (This might also break
2057                    some MIPS things.)
2058                    Adding multi-load/store instructions to the ARM disassembler
2059                    and the translator, and some optimizations of various kinds.
2060    20050701        Adding a simple dev_disk (it can read/write sectors from
2061                    disk images).
2062    20050712        Adding dev_ether (a simple ethernet send/receive device).
2063                    Debugger command "ninstrs" for toggling show_nr_of_instructions
2064                    during runtime.
2065                    Removing the framebuffer logo.
2066    20050713        Continuing on dev_ether.
2067                    Adding a dummy cpu_alpha (again).
2068    20050714        More work on cpu_alpha.
2069    20050715        More work on cpu_alpha. Many instructions work, enough to run
2070                    a simple framebuffer fill test (similar to the ARM test).
2071    20050716        More Alpha stuff.
2072    20050717        Minor updates (Alpha stuff).
2073    20050718        Minor updates (Alpha stuff).
2074    20050719        Generalizing some Alpha instructions.
2075    20050720        More Alpha-related updates.
2076    20050721        Continuing on cpu_alpha. Importing rpb.h from NetBSD/alpha.
2077    20050722        Alpha-related updates: userland stuff (Hello World using
2078                    write() compiled statically for FreeBSD/Alpha runs fine), and
2079                    more instructions are now implemented.
2080    20050723        Fixing ldq_u and stq_u.
2081                    Adding more instructions (conditional moves, masks, extracts,
2082                    shifts).
2083    20050724        More FreeBSD/Alpha userland stuff, and adding some more
2084                    instructions (inserts).
2085    20050725        Continuing on the Alpha stuff. (Adding dummy ldt/stt.)
2086                    Adding a -A command line option to turn off alignment checks
2087                    in some cases (for translated code).
2088                    Trying to remove the old bintrans code which updated the pc
2089                    and nr_of_executed_instructions for every instruction.
2090    20050726        Making another attempt att removing the pc/nr of instructions
2091                    code. This time it worked, huge performance increase for
2092                    artificial test code, but performance loss for real-world
2093                    code :-( so I'm scrapping that code for now.
2094                    Tiny performance increase on Alpha (by using ret instead of
2095                    jmp, to play nice with the Alpha's branch prediction) for the
2096                    old MIPS bintrans backend.
2097    20050727        Various minor fixes and cleanups.
2098    20050728        Switching from a 2-level virtual to host/physical translation
2099                    system for ARM emulation, to a 1-level translation.
2100                    Trying to switch from 2-level to 1-level for the MIPS bintrans
2101                    system as well (Alpha only, so far), but there is at least one
2102                    problem: caches and/or how they work with device mappings.
2103    20050730        Doing the 2-level to 1-level conversion for the i386 backend.
2104                    The cache/device bug is still there for R2K/3K :(
2105                    Various other minor updates (Malta etc).
2106                    The mc146818 clock now updates the UIP bit in a way which works
2107                    better with Linux for at least sgimips and Malta emulation.
2108                    Beginning the work on refactoring the dyntrans system.
2109    20050731        Continuing the dyntrans refactoring.
2110                    Fixing a small but serious host alignment bug in memory_rw.
2111                    Adding support for big-endian load/stores to the i386 bintrans
2112                    backend.
2113                    Another minor i386 bintrans backend update: stores from the
2114                    zero register are now one (or two) loads shorter.
2115                    The slt and sltu instructions were incorrectly implemented for
2116                    the i386 backend; only using them for 32-bit mode for now.
2117    20050801        Continuing the dyntrans refactoring.
2118                    Cleanup of the ns16550 serial controller (removing unnecessary
2119                    code).
2120                    Bugfix (memory corruption bug) in dev_gt, and a patch/hack from
2121                    Alec Voropay for Linux/Malta.
2122    20050802        More cleanup/refactoring of the dyntrans subsystem: adding
2123                    phys_page pointers to the lookup tables, for quick jumps
2124                    between translated pages.
2125                    Better fix for the ns16550 device (but still no real FIFO
2126                    functionality).
2127                    Converting cpu_ppc to the new dyntrans system. This means that
2128                    I will have to start from scratch with implementing each
2129                    instruction, and figure out how to implement dual 64/32-bit
2130                    modes etc.
2131                    Removing the URISC CPU family, because it was useless.
2132    20050803        When selecting a machine type, the main type can now be omitted
2133                    if the subtype name is unique. (I.e. -E can be omitted.)
2134                    Fixing a dyntrans/device update bug. (Writes to offset 0 of
2135                    a device could sometimes go unnoticed.)
2136                    Adding an experimental "instruction combination" hack for
2137                    ARM for memset-like byte fill loops.
2138    20050804        Minor progress on cpu_alpha and related things.
2139                    Finally fixing the MIPS dmult/dmultu bugs.
2140                    Fixing some minor TODOs.
2141    20050805        Generalizing the 8259 PIC. It now also works with Cobalt
2142                    and evbmips emulation, in addition to the x86 hack.
2143                    Finally converting the ns16550 device to use devinit.
2144                    Continuing the work on the dyntrans system. Thinking about
2145                    how to add breakpoints.
2146    20050806        More dyntrans updates. Breakpoints seem to work now.
2147    20050807        Minor updates: cpu_alpha and related things; removing
2148                    dev_malta (as it isn't used any more).
2149                    Dyntrans: working on general "show trace tree" support.
2150                    The trace tree stuff now works with both the old MIPS code and
2151                    with newer dyntrans modes. :)
2152                    Continuing on Alpha-related stuff (trying to get *BSD to boot
2153                    a bit further, adding more instructions, etc).
2154    20050808        Adding a dummy IA64 cpu family, and continuing the refactoring
2155                    of the dyntrans system.
2156                    Removing the regression test stuff, because it was more or
2157                    less useless.
2158                    Adding loadlinked/storeconditional type instructions to the
2159                    Alpha emulation. (Needed for Linux/alpha. Not very well tested
2160                    yet.)
2161    20050809        The function call trace tree now prints a per-function nr of
2162                    arguments. (Semi-meaningless, since that data isn't read yet
2163                    from the ELFs; some hardcoded symbols such as memcpy() and
2164                    strlen() work fine, though.)
2165                    More dyntrans refactoring; taking out more of the things that
2166                    are common to all cpu families.
2167    20050810        Working on adding support for "dual mode" for PPC dyntrans
2168                    (i.e. both 64-bit and 32-bit modes).
2169                    (Re)adding some simple PPC instructions.
2170    20050811        Adding a dummy M68K cpu family. The dyntrans system isn't ready
2171                    for variable-length ISAs yet, so it's completely bogus so far.
2172                    Re-adding more PPC instructions.
2173                    Adding a hack to src/file.c which allows OpenBSD/mac68k a.out
2174                    kernels to be loaded.
2175                    Beginning to add PPC loads/stores. So far they only work in
2176                    32-bit mode.
2177    20050812        The configure file option "add_remote" now accepts symbolic
2178                    host names, in addition to numeric IPv4 addresses.
2179                    Re-adding more PPC instructions.
2180    20050814        Continuing to port back more PPC instructions.
2181                    Found and fixed the cache/device write-update bug for 32-bit
2182                    MIPS bintrans. :-)
2183                    Triggered a really weird and annoying bug in Compaq's C
2184                    compiler; ccc sometimes outputs code which loads from an
2185                    address _before_ checking whether the pointer was NULL or not.
2186                    (I'm not sure how to handle this problem.)
2187    20050815        Removing all of the old x86 instruction execution code; adding
2188                    a new (dummy) dyntrans module for x86.
2189                    Taking the first steps to extend the dyntrans system to support
2190                    variable-length instructions.
2191                    Slowly preparing for the next release.
2192    20050816        Adding a dummy SPARC cpu module.
2193                    Minor updates (documentation etc) for the release.
2195    ==============  RELEASE 0.3.5  ==============
2197    20050816        Some success in decoding the way the SGI O2 PROM draws graphics
2198                    during bootup; lines/rectangles and bitmaps work, enough to
2199                    show the bootlogo etc. :-)
2200                    Adding more PPC instructions, and (dummy) BAT registers.
2201    20050817        Updating the pckbc to support scancode type 3 keyboards
2202                    (required in order to interact with the SGI O2 PROM).
2203                    Adding more PPC instructions.
2204    20050818        Adding more ARM instructions; general register forms.
2205                    Importing armreg.h from NetBSD (ARM cpu ids). Adding a (dummy)
2206                    CATS machine mode (using SA110 as the default CPU).
2207                    Continuing on general dyntrans related stuff.
2208    20050819        Register forms for ARM load/stores. Gaah! The Compaq C Compiler
2209                    bug is triggered for ARM loads as well, not just PPC :-(
2210                    Adding full support for ARM PC-relative load/stores, and load/
2211                    stores where the PC register is the destination register.
2212                    Adding support for ARM a.out binaries.
2213    20050820        Continuing to add more ARM instructions, and correcting some
2214                    bugs. Continuing on CATS emulation.
2215                    More work on the PPC stuff.
2216    20050821        Minor PPC and ARM updates. Adding more machine types.
2217    20050822        All ARM "data processing instructions" are now generated
2218                    automatically.
2219    20050824        Beginning the work on the ARM system control coprocessor.
2220                    Adding support for ARM halfword load/stores, and signed loads.
2221    20050825        Fixing an important bug related to the ARM condition codes.
2222                    OpenBSD/zaurus and NetBSD/netwinder now print some boot
2223                    messages. :)
2224                    Adding a dummy SH (Hitachi SuperH) cpu family.
2225                    Beginning to add some ARM virtual address translation.
2226                    MIPS bugfixes: unaligned PC now cause an ADEL exception (at
2227                    least for non-bintrans execution), and ADEL/ADES (not
2228                    TLBL/TLBS) are used if userland tries to access kernel space.
2229                    (Thanks to Joshua Wise for making me aware of these bugs.)
2230    20050827        More work on the ARM emulation, and various other updates.
2231    20050828        More ARM updates.
2232                    Finally taking the time to work on translation invalidation
2233                    (i.e. invalidating translated code mappings when memory is
2234                    written to). Hopefully this doesn't break anything.
2235    20050829        Moving CPU related files from src/ to a new subdir, src/cpus/.
2236                    Moving PROM emulation stuff from src/ to src/promemul/.
2237                    Better debug instruction trace for ARM loads and stores.
2238    20050830        Various ARM updates (correcting CMP flag calculation, etc).
2239    20050831        PPC instruction updates. (Flag fixes, etc.)
2240    20050901        Various minor PPC and ARM instruction emulation updates.
2241                    Minor OpenFirmware emulation updates.
2242    20050903        Adding support for adding arbitrary ARM coprocessors (with
2243                    the i80321 I/O coprocessor as a first test).
2244                    Various other ARM and PPC updates.
2245    20050904        Adding some SHcompact disassembly routines.
2246    20050907        (Re)adding a dummy HPPA CPU module, and a dummy i960 module.
2247    20050908        Began hacking on some Apple Partition Table support.
2248    20050909        Adding support for loading Mach-O (Darwin PPC) binaries.
2249    20050910        Fixing an ARM bug (Carry flag was incorrectly updated for some
2250                    data processing instructions); OpenBSD/cats and NetBSD/
2251                    netwinder get quite a bit further now.
2252                    Applying a patch to dev_wdc, and a one-liner to dev_pcic, to
2253                    make them work better when emulating new versions of OpenBSD.
2254                    (Thanks to Alexander Yurchenko for the patches.)
2255                    Also doing some other minor updates to dev_wdc. (Some cleanup,
2256                    and finally converting to devinit, etc.)
2257    20050912        IRIX doesn't have u_int64_t by default (noticed by Andreas
2258                    <avr@gnulinux.nl>); configure updated to reflect this.
2259                    Working on ARM register bank switching, CPSR vs SPSR issues,
2260                    and beginning the work on interrupt/exception support.
2261    20050913        Various minor ARM updates (speeding up load/store multiple,
2262                    and fixing a ROR bug in R(); NetBSD/cats now boots as far as
2263                    OpenBSD/cats).
2264    20050917        Adding a dummy Atmel AVR (8-bit) cpu family skeleton.
2265    20050918        Various minor updates.
2266    20050919        Symbols are now loaded from Mach-O executables.
2267                    Continuing the work on adding ARM exception support.
2268    20050920        More work on ARM stuff: OpenBSD/cats and NetBSD/cats reach
2269                    userland! :-)
2270    20050921        Some more progress on ARM interrupt specifics.
2271    20050923        Fixing linesize for VR4121 (patch by Yurchenko). Also fixing
2272                    linesizes/cachesizes for some other VR4xxx.
2273                    Adding a dummy Acer Labs M1543 PCI-ISA bridge (for CATS) and a
2274                    dummy Symphony Labs 83C553 bridge (for Netwinder), usable by
2275                    dev_footbridge.
2276    20050924        Some PPC progress.
2277    20050925        More PPC progress.
2278    20050926        PPC progress (fixing some bugs etc); Darwin's kernel gets
2279                    slightly further than before.
2280    20050928        Various updates: footbridge/ISA/pciide stuff, and finally
2281                    fixing the VGA text scroll-by-changing-the-base-offset bug.
2282    20050930        Adding a dummy S3 ViRGE pci card for CATS emulation, which
2283                    both NetBSD and OpenBSD detects as VGA.
2284                    Continuing on Footbridge (timers, ISA interrupt stuff).
2285    20051001        Continuing... there are still bugs, probably interrupt-
2286                    related.
2287    20051002        More work on the Footbridge (interrupt stuff).
2288    20051003        Various minor updates. (Trying to find the bug(s).)
2289    20051004        Continuing on the ARM stuff.
2290    20051005        More ARM-related fixes.
2291    20051007        FINALLY! Found and fixed 2 ARM bugs: 1 memory related, and the
2292                    other was because of an error in the ARM manual (load multiple
2293                    with the S-bit set should _NOT_ load usermode registers, as the
2294                    manual says, but it should load saved registers, which may or
2295                    may not happen to be usermode registers).
2296                    NetBSD/cats and OpenBSD/cats seem to install fine now :-)
2297                    except for a minor bug at the end of the OpenBSD/cats install.
2298                    Updating the documentation, preparing for the next release.
2299    20051008        Continuing with release testing and cleanup.
2301    ==============  RELEASE 0.3.6  ==============
2303    20051008        The bug was not because of faulty ARM documentation after all,
2304                    but it was related to those parts of the code.
2305                    Fixing the RTC (dev_mc146818) to work with CATS.
2306    20051009        Rewriting the R() function; now there are 8192 automatically
2307                    generated smaller functions doing the same thing, but hopefully
2308                    faster. This also fixes some bugs which were triggered when
2309                    trying to compile GXemul inside itself. :-)
2310                    Adding a dummy dev_lpt.
2311    20051010        Small hack to not update virtual translation tables if memory
2312                    accesses are done with the NO_EXCEPTION flag; a time reduction
2313                    of almost a factor 2 for a full NetBSD/cats install. :-)
2314    20051011        Passing -A as the default boot arg for CATS (works fine with
2315                    OpenBSD/cats).
2317    ==============  RELEASE  ==============
2319    20051012        Fixing the VGA cursor offset bug, and speeding up framebuffer
2320                    redraws if character cells contain the same thing as during
2321                    the last redraw.
2322    20051013        Adding a slow strd ARM instruction hack.
2323    20051017        Minor updates: Adding a dummy i80321 Verde controller (for
2324                    XScale emulation), fixing the disassembly of the ARM "ldrd"
2325                    instruction, adding "support" for less-than-4KB pages for ARM
2326                    (by not adding them to translation tables).
2327    20051020        Continuing on some HPCarm stuff. A NetBSD/hpcarm kernel prints
2328                    some boot messages on an emulated Jornada 720.
2329                    Making dev_ram work better with dyntrans (speeds up some things
2330                    quite a bit).
2331    20051021        Automatically generating some of the most common ARM load/store
2332                    multiple instructions.
2333    20051022        Better statistics gathering for the ARM load/store multiple.
2334                    Various other dyntrans and device updates.
2335    20051023        Various minor updates.
2336    20051024        Continuing; minor device and dyntrans fine-tuning. Adding the
2337                    first "reasonable" instruction combination hacks for ARM (the
2338                    cores of NetBSD/cats' memset and memcpy).
2339    20051025        Fixing a dyntrans-related bug in dev_vga. Also changing the
2340                    dyntrans low/high access notification to only be updated on
2341                    writes, not reads. Hopefully it will be enough. (dev_vga in
2342                    charcell mode now seems to work correctly with both reads and
2343                    writes.)
2344                    Experimenting with gathering dyntrans statistics (which parts
2345                    of emulated RAM that are actually executed), and adding
2346                    instruction combination hacks for cache cleaning and a part of
2347                    NetBSD's scanc() function.
2348    20051026        Adding a bitmap for ARM emulation which indicates if a page is
2349                    (specifically) user accessible; loads and stores with the t-
2350                    flag set can now use the translation arrays, which results in
2351                    a measurable speedup.
2352    20051027        Dyntrans updates; adding an extra bitmap array for 32-bit
2353                    emulation modes, speeding up the check whether a physical page
2354                    has any code translations or not (O(n) -> O(1)). Doing a
2355                    similar reduction of O(n) to O(1) by avoiding the scan through
2356                    the translation entries on a translation update (32-bit mode
2357                    only).
2358                    Various other minor hacks.
2359    20051029        Quick release, without any testing at all.
2361    ==============  RELEASE  ==============
2363    20051031        Adding disassembly support for more ARM instructions (clz,
2364                    smul* etc), and adding a hack to support "new tiny" pages
2365                    for StrongARM.
2366    20051101        Minor documentation updates (NetBSD 2.0.2 -> 2.1, and OpenBSD
2367                    3.7 -> 3.8, and lots of testing).
2368                    Changing from 1-sector PIO mode 0 transfers to 128-sector PIO
2369                    mode 3 (in dev_wdc).
2370                    Various minor ARM dyntrans updates (pc-relative loads from
2371                    within the same page as the instruction are now treated as
2372                    constant "mov").
2373    20051102        Re-enabling instruction combinations (they were accidentally
2374                    disabled).
2375                    Dyntrans TLB entries are now overwritten using a round-robin
2376                    scheme instead of randomly. This increases performance.
2377                    Fixing a typo in file.c (thanks to Chuan-Hua Chang for
2378                    noticing it).
2379                    Experimenting with adding ATAPI support to dev_wdc (to make
2380                    emulated *BSD detect cdroms as cdroms, not harddisks).
2381    20051104        Various minor updates.
2382    20051105        Continuing on the ATAPI emulation. Seems to work well enough
2383                    for a NetBSD/cats installation, but not OpenBSD/cats.
2384                    Various other updates.
2385    20051106        Modifying the -Y command line option to allow scaleup with
2386                    certain graphic controllers (only dev_vga so far), not just
2387                    scaledown.
2388                    Some minor dyntrans cleanups.
2389    20051107        Beginning a cleanup up the PCI subsystem (removing the
2390                    read_register hack, etc).
2391    20051108        Continuing the cleanup; splitting up some pci devices into a
2392                    normal autodev device and some separate pci glue code.
2393    20051109        Continuing on the PCI bus stuff; all old pci_*.c have been
2394                    incorporated into normal devices and/or rewritten as glue code
2395                    only, adding a dummy Intel 82371AB PIIX4 for Malta (not really
2396                    tested yet).
2397                    Minor pckbc fix so that Linux doesn't complain.
2398                    Working on the DEC 21143 NIC (ethernet mac rom stuff mostly).
2399                    Various other minor fixes.
2400    20051110        Some more ARM dyntrans fine-tuning (e.g. some instruction
2401                    combinations (cmps followed by conditional branch within the
2402                    same page) and special cases for DPIs with regform when the
2403                    shifter isn't used).
2404    20051111        ARM dyntrans updates: O(n)->O(1) for just-mark-as-non-
2405                    writable in the generic pc_to_pointers function, and some other
2406                    minor hacks.
2407                    Merging Cobalt and evbmips (Malta) ISA interrupt handling,
2408                    and some minor fixes to allow Linux to accept harddisk irqs.
2409    20051112        Minor device updates (pckbc, dec21143, lpt, ...), most
2410                    importantly fixing the ALI M1543/M5229 so that harddisk irqs
2411                    work with Linux/CATS.
2412    20051113        Some more generalizations of the PCI subsystem.
2413                    Finally took the time to add a hack for SCSI CDROM TOCs; this
2414                    enables OpenBSD to use partition 'a' (as needed by the OpenBSD
2415                    installer), and Windows NT's installer to get a bit further.
2416                    Also fixing dev_wdc to allow Linux to detect ATAPI CDROMs.
2417                    Continuing on the DEC 21143.
2418    20051114        Minor ARM dyntrans tweaks; ARM cmps+branch optimization when
2419                    comparing with 0, and generalizing the xchg instr. comb.
2420                    Adding disassembly of ARM mrrc/mcrr and q{,d}{add,sub}.
2421    20051115        Continuing on various PPC things (BATs, other address trans-
2422                    lation things, various loads/stores, BeBox emulation, etc.).
2423                    Beginning to work on PPC interrupt/exception support.
2424    20051116        Factoring out some code which initializes legacy ISA devices
2425                    from those machines that use them (bus_isa).
2426                    Continuing on PPC interrupt/exception support.
2427    20051117        Minor Malta fixes: RTC year offset = 80, disabling a speed hack
2428                    which caused NetBSD to detect a too fast cpu, and adding a new
2429                    hack to make Linux detect a faster cpu.
2430                    Continuing on the Artesyn PM/PPC emulation mode.
2431                    Adding an Algor emulation skeleton (P4032 and P5064);
2432                    implementing some of the basics.
2433                    Continuing on PPC emulation in general; usage of unimplemented
2434                    SPRs is now easier to track, continuing on memory/exception
2435                    related issues, etc.
2436    20051118        More work on PPC emulation (tgpr0..3, exception handling,
2437                    memory stuff, syscalls, etc.).
2438    20051119        Changing the ARM dyntrans code to mostly use cpu->pc, and not
2439                    necessarily use arm reg 15. Seems to work.
2440                    Various PPC updates; continuing on the PReP emulation mode.
2441    20051120        Adding a workaround/hack to dev_mc146818 to allow NetBSD/prep
2442                    to detect the clock.
2443    20051121        More cleanup of the PCI bus (memory and I/O bases, etc).
2444                    Continuing on various PPC things (decrementer and timebase,
2445                    WDCs on obio (on PReP) use irq 13, not 14/15).
2446    20051122        Continuing on the CPC700 controller (interrupts etc) for PMPPC,
2447                    and on PPC stuff in general.
2448                    Finally! After some bug fixes to the virtual to physical addr
2449                    translation, NetBSD/{prep,pmppc} 2.1 reach userland and are
2450                    stable enough to be interacted with.
2451                    More PCI updates; reverse-endian device access for PowerPC etc.
2452    20051123        Generalizing the IEEE floating point subsystem (moving it out
2453                    from src/cpus/cpu_mips_coproc.c into a new src/float_emul.c).
2454                    Input via slave xterms was sometimes not really working; fixing
2455                    this for ns16550, and a warning message is now displayed if
2456                    multiple non-xterm consoles are active.
2457                    Adding some PPC floating point support, etc.
2458                    Various interrupt related updates (dev_wdc, _ns16550, _8259,
2459                    and the isa32 common code in machine.c).
2460                    NetBSD/prep can now be installed! :-) (Well, with some manual
2461                    commands necessary before running sysinst.) Updating the
2462                    documentation and various other things to reflect this.
2463    20051124        Various minor documentation updates.
2464                    Continuing the work on the DEC 21143 NIC.
2465    20051125        LOTS of work on the 21143. Both OpenBSD and NetBSD work fine
2466                    with it now, except that OpenBSD sometimes gives a time-out
2467                    warning.
2468                    Minor documentation updates.
2470    ==============  RELEASE 0.3.7  ==============
2472    20051126        Cobalt and PReP now work with the 21143 NIC.
2473                    Continuing on Alpha dyntrans things.
2474                    Fixing some more left-shift-by-24 to unsigned.
2475    20051127        Working on OpenFirmware emulation; major cleanup/redesign.
2476                    Progress on MacPPC emulation: NetBSD detects two CPUs (when
2477                    running with -n 2), framebuffer output (for text) works.
2478                    Adding quick-hack Bandit PCI controller and "gc" interrupt
2479                    controller for MacPPC.
2480    20051128        Changing from a Bandit to a Uni-North controller for macppc.
2481                    Continuing on OpenFirmware and MacPPC emulation in general
2482                    (obio controller, and wdc attached to the obio seems to work).
2483    20051129        More work on MacPPC emulation (adding a dummy ADB controller).
2484                    Continuing the PCI bus cleanup (endianness and tag composition)
2485                    and rewriting all PCI controllers' access functions.
2486    20051130        Various minor PPC dyntrans optimizations.
2487                    Manually inlining some parts of the framebuffer redraw routine.
2488                    Slowly beginning the conversion of the old MIPS emulation into
2489                    dyntrans (but this will take quite some time to get right).
2490                    Generalizing quick_pc_to_pointers.
2491    20051201        Documentation update (David Muse has made available a kernel
2492                    which simplifies Debian/DECstation installation).
2493                    Continuing on the ADB bus controller.
2494    20051202        Beginning a rewrite of the Zilog serial controller (dev_zs).
2495    20051203        Continuing on the zs rewrite (now called dev_z8530); conversion
2496                    to devinit style.
2497                    Reworking some of the input-only vs output-only vs input-output
2498                    details of src/console.c, better warning messages, and adding
2499                    a debug dump.
2500                    Removing the concept of "device state"; it wasn't really used.
2501                    Changing some debug output (-vv should now be used to show all
2502                    details about devices and busses; not shown during normal
2503                    startup anymore).
2504                    Beginning on some SPARC instruction disassembly support.
2505    20051204        Minor PPC updates (WALNUT skeleton stuff).
2506                    Continuing on the MIPS dyntrans rewrite.
2507                    More progress on the ADB controller (a keyboard is "detected"
2508                    by NetBSD and OpenBSD).
2509                    Downgrading OpenBSD/arc as a guest OS from "working" to
2510                    "almost working" in the documentation.
2511                    Progress on Algor emulation ("v3" PCI controller).
2512    20051205        Minor updates.
2513    20051207        Sorting devices according to address; this reduces complexity
2514                    of device lookups from O(n) to O(log n) in memory_rw (but no
2515                    real performance increase (yet) in experiments).
2516    20051210        Beginning the work on native dyntrans backends (by making a
2517                    simple skeleton; so far only for Alpha hosts).
2518    20051211        Some very minor SPARC updates.
2519    20051215        Fixing a bug in the MIPS mul (note: not mult) instruction,
2520                    so it also works with non-64-bit emulation. (Thanks to Alec
2521                    Voropay for noticing the problem.)
2522    20051216        More work on the fake/empty/simple/skeleton/whatever backend;
2523                    performance doesn't increase, so this isn't really worth it,
2524                    but it was probably worth it to prepare for a real backend
2525                    later.
2526    20051219        More instr call statistics gathering and analysis stuff.
2527    20051220        Another fix for MIPS 'mul'. Also converting mul and {d,}cl{o,z}
2528                    to dyntrans.
2529                    memory_ppc.c syntax error fix (noticed by Peter Valchev).
2530                    Beginning to move out machines from src/machine.c into
2531                    individual files in src/machines (in a way similar to the
2532                    autodev system for devices).
2533    20051222        Updating the documentation regarding NetBSD/pmax 3.0.
2534    20051223        - " - NetBSD/cats 3.0.
2535    20051225        - " - NetBSD/hpcmips 3.0.
2536    20051226        Continuing on the machine registry redesign.
2537                    Adding support for ARM rrx (33-bit rotate).
2538                    Fixing some signed/unsigned issues (exposed by gcc -W).
2539    20051227        Fixing the bug which prevented a NetBSD/prep 3.0 install kernel
2540                    from starting (triggered when an mtmsr was the last instruction
2541                    on a page). Unfortunately not enough to get the kernel to run
2542                    as well as the 2.1 kernels did.
2543    20051230        Some dyntrans refactoring.
2544    20051231        Continuing on the machine registry redesign.
2545    20060101-10     Continuing... moving more machines. Moving MD interrupt stuff
2546                    from machine.c into a new src/machines/interrupts.c.
2547    20060114        Adding various mvmeppc machine skeletons.
2548    20060115        Continuing on mvme* stuff. NetBSD/mvmeppc prints boot messages
2549                    (for MVME1600) and reaches the root device prompt, but no
2550                    specific hardware devices are emulated yet.
2551    20060116        Minor updates to the mvme1600 emulation mode; the Eagle PCI bus
2552                    seems to work without much modification, and a 21143 can be
2553                    detected, interrupts might work (but untested so far).
2554                    Adding a fake MK48Txx (mkclock) device, for NetBSD/mvmeppc.
2555    20060121        Adding an aux control register for ARM. (A BIG thank you to
2556                    Olivier Houchard for tracking down this bug.)
2557    20060122        Adding more ARM instructions (smulXY), and dev_iq80321_7seg.
2558    20060124        Adding disassembly of more ARM instructions (mia*, mra/mar),
2559                    and some semi-bogus XScale and i80321 registers.
2560    20060201-02     Various minor updates. Moving the last machines out of
2561                    machine.c.
2562    20060204        Adding a -c command line option, for running debugger commands
2563                    before the simulation starts, but after all files have been
2564                    loaded.
2565                    Minor iq80321-related updates.
2566    20060209        Minor hacks (DEVINIT macro, etc).
2567                    Preparing for the generalization of the 64-bit dyntrans address
2568                    translation subsystem.
2569    20060216        Adding ARM ldrd (double-register load).
2570    20060217        Continuing on various ARM-related stuff.
2571    20060218        More progress on the ATA/wdc emulation for NetBSD/iq80321.
2572                    NetBSD/evbarm can now be installed :-)  Updating the docs, etc.
2573                    Continuing on Algor emulation.
2575    ==============  RELEASE 0.3.8  ==============
2577    20060219        Various minor updates. Removing the old MIPS16 skeleton code,
2578                    because it will need to be rewritten for dyntrans anyway.
2579    20060220-22     Removing the non-working dyntrans backend support.
2580                    Continuing on the 64-bit dyntrans virtual memory generalization.
2581    20060223        More work on the 64-bit vm generalization.
2582    20060225        Beginning on MIPS dyntrans load/store instructions.
2583                    Minor PPC updates (64-bit load/store, etc).
2584                    Fixes for the variable-instruction-length framework, some
2585                    minor AVR updates (a simple Hello World program works!).
2586                    Beginning on a skeleton for automatically generating documen-
2587                    tation (for devices etc.).
2588    20060226        PPC updates (adding some more 64-bit instructions, etc).
2589                    AVR updates (more instructions).
2590                    FINALLY found and fixed the zs bug, making NetBSD/macppc
2591                    accept the serial console.
2592    20060301        Adding more AVR instructions.
2593    20060304        Continuing on AVR-related stuff. Beginning on a framework for
2594                    cycle-accurate device emulation. Adding an experimental "PAL
2595                    TV" device (just a dummy so far).
2596    20060305        Adding more AVR instructions.
2597                    Adding a dummy epcom serial controller (for TS7200 emulation).
2598    20060310        Removing the emul() command from configuration files, so only
2599                    net() and machine() are supported.
2600                    Minor progress on the MIPS dyntrans rewrite.
2601    20060311        Continuing on the MIPS dyntrans rewrite (adding more
2602                    instructions, etc).
2603    20060315        Adding more instructions (sllv, srav, srlv, bgtz[l], blez[l],
2604                    beql, bnel, slti[u], various loads and stores).
2605    20060316        Removing the ALWAYS_SIGNEXTEND_32 option, since it was rarely
2606                    used.
2607                    Adding more MIPS dyntrans instructions, and fixing bugs.
2608    20060318        Implementing fast loads/stores for MIPS dyntrans (big/little
2609                    endian, 32-bit and 64-bit modes).
2610    20060320        Making MIPS dyntrans the default configure option; use
2611                    "--enable-oldmips" to use the old bintrans system.
2612                    Adding MIPS dyntrans dmult[u]; minor updates.
2613    20060322        Continuing... adding some more instructions.
2614                    Adding a simple skeleton for demangling C++ "_ZN" symbols.
2615    20060323        Moving src/debugger.c into a new directory (src/debugger/).
2616    20060324        Fixing the hack used to load PPC ELFs (useful for relocated
2617                    Linux/ppc kernels), and adding a dummy G3 machine mode.
2618    20060325-26     Beginning to experiment with GDB remote serial protocol
2619                    connections; adding a -G command line option for selecting
2620                    which TCP port to listen to.
2621    20060330        Beginning a major cleanup to replace things like "0x%016llx"
2622                    with more correct "0x%016"PRIx64, etc.
2623                    Continuing on the GDB remote serial protocol support.
2624    20060331        More cleanup, and some minor GDB remote progress.
2625    20060402        Adding a hack to the configure script, to allow compilation
2626                    on systems that lack PRIx64 etc.
2627    20060406        Removing the temporary FreeBSD/arm hack in dev_ns16550.c and
2628                    replacing it with a better fix from Olivier Houchard.
2629    20060407        A remote debugger (gdb or ddd) can now start and stop the
2630                    emulator using the GDB remote serial protocol, and registers
2631                    and memory can be read. MIPS only for now.
2632    20060408        More GDB progress: single-stepping also works, and also adding
2633                    support for ARM, PowerPC, and Alpha targets.
2634                    Continuing on the delay-slot-across-page-boundary issue.
2635    20060412        Minor update: beginning to add support for the SPARC target
2636                    to the remote GDB functionality.
2637    20060414        Various MIPS updates: adding more instructions for dyntrans
2638                    (eret, add), and making some exceptions work. Fixing a bug
2639                    in dmult[u].
2640                    Implementing the first SPARC instructions (sethi, or).
2641    20060415        Adding "magic trap" instructions so that PROM calls can be
2642                    software emulated in MIPS dyntrans.
2643                    Adding more MIPS dyntrans instructions (ddiv, dadd) and
2644                    fixing another bug in dmult.
2645    20060416        More MIPS dyntrans progress: adding [d]addi, movn, movz, dsllv,
2646                    rfi, an ugly hack for supporting R2000/R3000 style faked caches,
2647                    preliminary interrupt support, and various other updates and
2648                    bugfixes.
2649    20060417        Adding more SPARC instructions (add, sub, sll[x], sra[x],
2650                    srl[x]), and useful SPARC header definitions.
2651                    Adding the first (trivial) x86/AMD64 dyntrans instructions (nop,
2652                    cli/sti, stc/clc, std/cld, simple mov, inc ax). Various other
2653                    x86 updates related to variable instruction length stuff.
2654                    Adding unaligned loads/stores to the MIPS dyntrans mode (but
2655                    still using the pre-dyntrans (slow) imlementation).
2656    20060419        Fixing a MIPS dyntrans exception-in-delay-slot bug.
2657                    Removing the old "show opcode statistics" functionality, since
2658                    it wasn't really useful and isn't implemented for dyntrans.
2659                    Single-stepping (or running with instruction trace) now looks
2660                    ok with dyntrans with delay-slot architectures.
2661    20060420        Minor hacks (removing the -B command line option when compiled
2662                    for non-bintrans, and some other very minor updates).
2663                    Adding (slow) MIPS dyntrans load-linked/store-conditional.
2664    20060422        Applying fixes for bugs discovered by Nils Weller's nwcc
2665                    (static DEC memmap => now per machine, and adding an extern
2666                    keyword in cpu_arm_instr.c).
2667                    Finally found one of the MIPS dyntrans bugs that I've been
2668                    looking for (copy/paste spelling error BIG vs LITTLE endian in
2669                    cpu_mips_instr_loadstore.c for 16-bit fast stores).
2670                    FINALLY found the major MIPS dyntrans bug: slti vs sltiu
2671                    signed/unsigned code in cpu_mips_instr.c. :-)
2672                    Adding more MIPS dyntrans instructions (lwc1, swc1, bgezal[l],
2673                    ctc1, tlt[u], tge[u], tne, beginning on rdhwr).
2674                    NetBSD/hpcmips can now reach userland when using dyntrans :-)
2675                    Adding some more x86 dyntrans instructions.
2676                    Finally removed the old Alpha-specific virtual memory code,
2677                    and replaced it with the generic 64-bit version.
2678                    Beginning to add disassembly support for SPECIAL3 MIPS opcodes.
2679    20060423        Continuing on the delay-slot-across-page-boundary issue;
2680                    adding an end_of_page2 ic slot (like I had planned before, but
2681                    had removed for some reason).
2682                    Adding a quick-and-dirty fallback to legacy coprocessor 1
2683                    code (i.e. skipping dyntrans implementation for now).
2684                    NetBSD/hpcmips and NetBSD/pmax (when running on an emulated
2685                    R4400) can now be installed and run. :-)  (Many bugs left
2686                    to fix, though.)
2687                    Adding more MIPS dyntrans instructions: madd[u], msub[u].
2688                    Cleaning up the SPECIAL2 vs R5900/TX79/C790 "MMI" opcode
2689                    maps somewhat (disassembly and dyntrans instruction decoding).
2690    20060424        Adding an isa_revision field to mips_cpu_types.h, and making
2691                    sure that SPECIAL3 opcodes cause Reserved Instruction
2692                    exceptions on MIPS32/64 revisions lower than 2.
2693                    Adding the SPARC 'ba', 'call', 'jmpl/retl', 'and', and 'xor'
2694                    instructions.
2695    20060425        Removing the -m command line option ("run at most x
2696                    instructions") and -T ("single_step_on_bad_addr"), because
2697                    they never worked correctly with dyntrans anyway.
2698                    Freshening up the man page.
2699    20060428        Adding more MIPS dyntrans instructions: bltzal[l], idle.
2700                    Enabling MIPS dyntrans compare interrupts.
2701    20060429        FINALLY found the weird dyntrans bug, causing NetBSD etc. to
2702                    behave strangely: some floating point code (conditional
2703                    coprocessor branches) could not be reused from the old
2704                    non-dyntrans code. The "quick-and-dirty fallback" only appeared
2705                    to work. Fixing by implementing bc1* for MIPS dyntrans.
2706                    More MIPS instructions: [d]sub, sdc1, ldc1, dmtc1, dmfc1, cfc0.
2707                    Freshening up MIPS floating point disassembly appearance.
2708    20060430        Continuing on C790/R5900/TX79 disassembly; implementing 128-bit
2709                    "por" and "pextlw".
2710    20060504        Disabling -u (userland emulation) unless compiled as unstable
2711                    development version.
2712                    Beginning on freshening up the testmachine include files,
2713                    to make it easier to reuse those files (placing them in
2714                    src/include/testmachine/), and beginning on a set of "demos"
2715                    or "tutorials" for the testmachine functionality.
2716                    Minor updates to the MIPS GDB remote protocol stub.
2717                    Refreshing doc/experiments.html and gdb_remote.html.
2718                    Enabling Alpha emulation in the stable release configuration,
2719                    even though no guest OSes for Alpha can run yet.
2720    20060505        Adding a generic 'settings' object, which will contain
2721                    references to settable variables (which will later be possible
2722                    to access using the debugger).
2723    20060506        Updating dev_disk and corresponding demo/documentation (and
2724                    switching from SCSI to IDE disk types, so it actually works
2725                    with current test machines :-).
2726    20060510        Adding a -D_LARGEFILE_SOURCE hack for 64-bit Linux hosts,
2727                    so that fseeko() doesn't give a warning.
2728                    Updating the section about how dyntrans works (the "runnable
2729                    IR") in doc/intro.html.
2730                    Instruction updates (some x64=1 checks, some more R5900
2731                    dyntrans stuff: better mul/mult separation from MIPS32/64,
2732                    adding ei and di).
2733                    Updating MIPS cpuregs.h to a newer one (from NetBSD).
2734                    Adding more MIPS dyntrans instructions: deret, ehb.
2735    20060514        Adding disassembly and beginning implementation of SPARC wr
2736                    and wrpr instructions.
2737    20060515        Adding a SUN SPARC machine mode, with dummy SS20 and Ultra1
2738                    machines. Adding the 32-bit "rd psr" instruction.
2739    20060517        Disassembly support for the general SPARC rd instruction.
2740                    Partial implementation of the cmp (subcc) instruction.
2741                    Some other minor updates (making sure that R5900 processors
2742                    start up with the EIE bit enabled, otherwise Linux/playstation2
2743                    receives no interrupts).
2744    20060519        Minor MIPS updates/cleanups.
2745    20060521        Moving the MeshCube machine into evbmips; this seems to work
2746                    reasonably well with a snapshot of a NetBSD MeshCube kernel.
2747                    Cleanup/fix of MIPS config0 register initialization.
2748    20060529        Minor MIPS fixes, including a sign-extension fix to the
2749                    unaligned load/store code, which makes NetBSD/pmax on R3000
2750                    work better with dyntrans. (Ultrix and Linux/DECstation still
2751                    don't work, though.)
2752    20060530        Minor updates to the Alpha machine mode: adding an AlphaBook
2753                    mode, an LCA bus (forwarding accesses to an ISA bus), etc.
2754    20060531        Applying a bugfix for the MIPS dyntrans sc[d] instruction from
2755                    Ondrej Palkovsky. (Many thanks.)
2756    20060601        Minifix to allow ARM immediate msr instruction to not give
2757                    an error for some valid values.
2758                    More Alpha updates.
2759    20060602        Some minor Alpha updates.
2760    20060603        Adding the Alpha cmpbge instruction. NetBSD/alpha prints its
2761                    first boot messages :-) on an emulated Alphabook 1.
2762    20060612        Minor updates; adding a dev_ether.h include file for the
2763                    testmachine ether device. Continuing the hunt for the dyntrans
2764                    bug which makes Linux and Ultrix on DECstation behave
2765                    strangely... FINALLY found it! It seems to be related to
2766                    invalidation of the translation cache, on tlbw{r,i}. There
2767                    also seems to be some remaining interrupt-related problems.
2768    20060614        Correcting the implementation of ldc1/sdc1 for MIPS dyntrans
2769                    (so that it uses 16 32-bit registers if the FR bit in the
2770                    status register is not set).
2771    20060616        REMOVING BINTRANS COMPLETELY!
2772                    Removing the old MIPS interpretation mode.
2773                    Removing the MFHILO_DELAY and instruction delay stuff, because
2774                    they wouldn't work with dyntrans anyway.
2775    20060617        Some documentation updates (adding "NetBSD-archive" to some
2776                    URLs, and new Debian/DECstation installation screenshots).
2777                    Removing the "tracenull" and "enable-caches" configure options.
2778                    Improving MIPS dyntrans performance somewhat (only invalidate
2779                    translations if necessary, on writes to the entryhi register,
2780                    instead of doing it for all cop0 writes).
2781    20060618        More cleanup after the removal of the old MIPS emulation.
2782                    Trying to fix the MIPS dyntrans performance bugs/bottlenecks;
2783                    only semi-successful so far (for R3000).
2784    20060620        Minor update to allow clean compilation again on Tru64/Alpha.
2785    20060622        MIPS cleanup and fixes (removing the pc_last stuff, which
2786                    doesn't make sense with dyntrans anyway, and fixing a cross-
2787                    page-delay-slot-with-exception case in end_of_page).
2788                    Removing the old max_random_cycles_per_chunk stuff, and the
2789                    concept of cycles vs instructions for MIPS emulation.
2790                    FINALLY found and fixed the bug which caused NetBSD/pmax
2791                    clocks to behave strangely (it was a load to the zero register,
2792                    which was treated as a NOP; now it is treated as a load to a
2793                    dummy scratch register).
2794    20060623        Increasing the dyntrans chunk size back to
2795                    N_SAFE_DYNTRANS_LIMIT, instead of N_SAFE_DYNTRANS_LIMIT/2.
2796                    Preparing for a quick release, even though there are known
2797                    bugs, and performance for non-R3000 MIPS emulation is very
2798                    poor. :-/
2799                    Reverting to half the dyntrans chunk size again, because
2800                    NetBSD/cats seemed less stable with full size chunks. :(
2801                    NetBSD/sgimips 3.0 can now run :-)  (With release 0.3.8, only
2802                    NetBSD/sgimips 2.1 worked, not 3.0.)
2804    ==============  RELEASE 0.4.0  ==============
2806    20060624        Replacing the error-prone machine type initialization stuff
2807                    with something more reasonable.
2808                    Finally removing the old "cpu_run" kludge; moving around stuff
2809                    in machine.c and emul.c to better suit the dyntrans system.
2810                    Various minor dyntrans cleanups (renaming translate_address to
2811                    translate_v2p, and experimenting with template physpages).
2812    20060625        Removing the speed hack which separated the vph entries into
2813                    two halves (code vs data); things seem a lot more stable now.
2814                    Minor performance hack: R2000/R3000 cache isolation now only
2815                    clears address translations when going into isolation, not
2816                    when going out of it.
2817                    Fixing the MIPS interrupt problems by letting mtc0 immediately
2818                    cause interrupts.
2820    ==============  RELEASE  ==============
2822    20060626        Continuing on SPARC emulation (beginning on the 'save'
2823                    instruction, register windows, etc).
2824    20060629        Planning statistics gathering (new -s command line option),
2825                    and renaming speed_tricks to allow_instruction_combinations.
2826    20060630        Some minor manual page updates.
2827                    Various cleanups.
2828                    Implementing the -s command line option.
2829    20060701        FINALLY found the bug which prevented Linux and Ultrix from
2830                    running without the ugly hack in the R2000/R3000 cache isol
2831                    code; it was the phystranslation hint array which was buggy.
2832                    Removing the phystranslation hint code completely, for now.
2833    20060702        Minor dyntrans cleanups; invalidation of physpages now only
2834                    invalidate those parts of a page that have actually been
2835                    translated. (32 parts per page.)
2836                    Some MIPS non-R3000 speed fixes.
2837                    Experimenting with MIPS instruction combination for some
2838                    addiu+bne+sw loops, and sw+sw+sw.
2839                    Adding support (again) for larger-than-4KB pages in MIPS tlbw*.
2840                    Continuing on SPARC emulation: adding load/store instructions.
2841    20060704        Fixing a virtual vs physical page shift bug in the new tlbw*
2842                    implementation. Problem noticed by Jakub Jermar. (Many thanks.)
2843                    Moving rfe and eret to cpu_mips_instr.c, since that is the
2844                    only place that uses them nowadays.
2845    20060705        Removing the BSD license from the "testmachine" include files,
2846                    placing them in the public domain instead; this enables the
2847                    testmachine stuff to be used from projects which are
2848                    incompatible with the BSD license for some reason.
2849    20060707        Adding instruction combinations for the R2000/R3000 L1
2850                    I-cache invalidation code used by NetBSD/pmax 3.0, lui+addiu,
2851                    various branches followed by addiu or nop, and jr ra followed
2852                    by addiu. The time it takes to perform a full NetBSD/pmax R3000
2853                    install on the laptop has dropped from 573 seconds to 539. :-)
2854    20060708        Adding a framebuffer controller device (dev_fbctrl), which so
2855                    far can be used to change the fb resolution during runtime, but
2856                    in the future will also be useful for accelerated block fill/
2857                    copy, and possibly also simplified character output.
2858                    Adding an instruction combination for NetBSD/pmax' strlen.
2859    20060709        Minor fixes: reading raw files in src/file.c wasn't memblock
2860                    aligned, removing buggy multi_sw MIPS instruction combination,
2861                    etc.
2862    20060711        Adding a machine_qemu.c, which contains a "qemu_mips" machine.
2863                    (It mimics QEMU's MIPS machine mode, so that a test kernel
2864                    made for QEMU_MIPS also can run in GXemul... at least to some
2865                    extent.)  Adding a short section about how to run this mode to
2866                    doc/guestoses.html.
2867    20060714        Misc. minor code cleanups.
2868    20060715        Applying a patch which adds getchar() to promemul/yamon.c
2869                    (from Oleksandr Tymoshenko).
2870                    Adding yamon.h from NetBSD, and rewriting yamon.c to use it
2871                    (instead of ugly hardcoded numbers) + some cleanup.
2872    20060716        Found and fixed the bug which broke single-stepping of 64-bit
2873                    programs between 0.4.0 and (caused by too quick
2874                    refactoring and no testing). Hopefully this fix will not
2875                    break too many other things.
2876    20060718        Continuing on the 8253 PIT; it now works with Linux/QEMU_MIPS.
2877                    Re-adding the sw+sw+sw instr comb (the problem was that I had
2878                    ignored endian issues); however, it doesn't seem to give any
2879                    big performance gain.
2880    20060720        Adding a dummy Transputer mode (T414, T800 etc) skeleton (only
2881                    the 'j' and 'ldc' instructions are implemented so far). :-}
2882    20060721        Adding gtreg.h from NetBSD, updating dev_gt.c to use it, plus
2883                    misc. other updates to get Linux 2.6 for evbmips/malta working
2884                    (thanks to Alec Voropay for the details).
2885                    FINALLY found and fixed the bug which made tlbw* for non-R3000
2886                    buggy; it was a reference count problem in the dyntrans core.
2887    20060722        Testing stuff; things seem stable enough for a new release.
2889    ==============  RELEASE 0.4.1  ==============
2891    20060723        More Transputer instructions (pfix, nfix, opr, mint, ldl, ldlp,
2892                    eqc, rev, ajw, stl, stlf, sthf, sub, ldnl, ldnlp, ldpi, move,
2893                    wcnt, add, bcnt).
2894                    Adding more SPARC instructions (andcc, addcc, bl, rdpr).
2895                    Progress on the igsfb framebuffer used by NetBSD/netwinder.
2896                    Enabling 8-bit fills in dev_fb.
2897                    NetBSD/netwinder 3.0.1 can now run from a disk image :-)
2898    20060724        Cleanup/performance fix for 64-bit virtual translation table
2899                    updates (by removing the "timestamp" stuff). A full NetBSD/pmax
2900                    3.0.1 install for R4400 has dropped from 667 seconds to 584 :)
2901                    Fixing the igsfb "almost vga" color (it is 24-bit, not 18-bit).
2902                    Adding some MIPS instruction combinations (3*lw, and 3*addu).
2903                    The 8048 keyboard now turns off interrupt enable between the
2904                    KBR_ACK and the KBR_RSTDONE, to work better with Linux 2.6.
2905                    Not causing PPC DEC interrupts if PPC_NO_DEC is set for a
2906                    specific CPU; NetBSD/bebox gets slightly further than before.
2907                    Adding some more SPARC instructions: branches, udiv.
2908    20060725        Refreshing dev_pckbc.c a little.
2909                    Cleanups for the SH emulation mode, and adding the first
2910                    "compact" (16-bit) instructions: various simple movs, nop,
2911                    shll, stc, or, ldc.
2912    20060726        Adding dummy "pcn" (AMD PCnet NIC) PCI glue.
2913    20060727        Various cleanups; removing stuff from cpu.h, such as
2914                    running_translated (not really meaningful anymore), and
2915                    page flags (breaking into the debugger clears all translations
2916                    anyway).
2917                    Minor MIPS instruction combination updates.
2918    20060807        Expanding the 3*sw and 3*lw MIPS instruction combinations to
2919                    work with 2* and 4* too, resulting in a minor performance gain.
2920                    Implementing a usleep hack for the RM52xx/MIPS32/MIPS64 "wait"
2921                    instruction (when emulating 1 cpu).
2922    20060808        Experimenting with some more MIPS instruction combinations.
2923                    Implementing support for showing a (hardcoded 12x22) text
2924                    cursor in igsfb.
2925    20060809        Simplifying the NetBSD/evbmips (Malta) install instructions
2926                    somewhat (by using a NetBSD/pmax ramdisk install kernel).
2927    20060812        Experimenting more with the MIPS 'wait' instruction.
2928                    PCI configuration register writes can now be handled, which
2929                    allow PCI IDE controllers to work with NetBSD/Malta 3.0.1 and
2930                    NetBSD/cobalt 3.0.1. (Previously only NetBSD 2.1 worked.)
2931    20060813        Updating dev_gt.c based on numbers from Alec Voropay, to enable
2932                    Linux 2.6 to use PCI on Malta.
2933                    Continuing on Algor interrupt stuff.
2934    20060814        Adding support for routing ISA interrupts to two different
2935                    interrupts, making it possible to run NetBSD/algor :-)
2936    20060814-15     Testing for the release.
2938    ==============  RELEASE 0.4.2  ==============
2940    20060816        Adding a framework for emulated/virtual timers (src/timer.c),
2941                    using only setitimer().
2942                    Rewriting the mc146818 to use the new timer framework.
2943    20060817        Adding a call to gettimeofday() every now and then (once every
2944                    second, at the moment) to resynch the timer if it drifts.
2945                    Beginning to convert the ISA timer interrupt mechanism (8253
2946                    and 8259) to use the new timer framework.
2947                    Removing the -I command line option.
2948    20060819        Adding the -I command line option again, with new semantics.
2949                    Working on Footbridge timer interrupts; NetBSD/NetWinder and
2950                    NetBSD/CATS now run at correct speed, but unfortunately with
2951                    HUGE delays during bootup.
2952    20060821        Some minor m68k updates. Adding the first instruction: nop. :)
2953                    Minor Alpha emulation updates.
2954    20060822        Adding a FreeBSD development specific YAMON environment
2955                    variable ("khz") (as suggested by Bruce M. Simpson).
2956                    Moving YAMON environment variable initialization from
2957                    machine_evbmips.c into promemul/yamon.c, and adding some more
2958                    variables.
2959                    Continuing on the LCA PCI bus controller (for Alpha machines).
2960    20060823        Continuing on the timer stuff: experimenting with MIPS count/
2961                    compare interrupts connected to the timer framework.
2962    20060825        Adding bogus SCSI commands 0x51 (SCSICDROM_READ_DISCINFO) and
2963                    0x52 (SCSICDROM_READ_TRACKINFO) to the SCSI emulation layer,
2964                    to allow NetBSD/pmax 4.0_BETA to be installed from CDROM.
2965                    Minor updates to the LCA PCI controller.
2966    20060827        Implementing a CHIP8 cpu mode, and a corresponding CHIP8
2967                    machine, for fun. Disassembly support for all instructions,
2968                    and most of the common instructions have been implemented: mvi,
2969                    mov_imm, add_imm, jmp, rand, cls, sprite, skeq_imm, jsr,
2970                    skne_imm, bcd, rts, ldr, str, mov, or, and, xor, add, sub,
2971                    font, ssound, sdelay, gdelay, bogus skup/skpr, skeq, skne.
2972    20060828        Beginning to convert the CHIP8 cpu in the CHIP8 machine to a
2973                    (more correct) RCA 180x cpu. (Disassembly for all 1802
2974                    instructions has been implemented, but no execution yet, and
2975                    no 1805 extended instructions.)
2976    20060829        Minor Alpha emulation updates.
2977    20060830        Beginning to experiment a little with PCI IDE for SGI O2.
2978                    Fixing the cursor key mappings for MobilePro 770 emulation.
2979                    Fixing the LK201 warning caused by recent NetBSD/pmax.
2980                    The MIPS R41xx standby, suspend, and hibernate instructions now
2981                    behave like the RM52xx/MIPS32/MIPS64 wait instruction.
2982                    Fixing dev_wdc so it calculates correct (64-bit) offsets before
2983                    giving them to diskimage_access().
2984    20060831        Continuing on Alpha emulation (OSF1 PALcode).
2985    20060901        Minor Alpha updates; beginning on virtual memory pagetables.
2986                    Removed the limit for max nr of devices (in preparation for
2987                    allowing devices' base addresses to be changed during runtime).
2988                    Adding a hack for MIPS [d]mfc0 select 0 (except the count
2989                    register), so that the coproc register is simply copied.
2990                    The MIPS suspend instruction now exits the emulator, instead
2991                    of being treated as a wait instruction (this causes NetBSD/
2992                    hpcmips to get correct 'halt' behavior).
2993                    The VR41xx RTC now returns correct time.
2994                    Connecting the VR41xx timer to the timer framework (fixed at
2995                    128 Hz, for now).
2996                    Continuing on SPARC emulation, adding more instructions:
2997                    restore, ba_xcc, ble. The rectangle drawing demo works :)
2998                    Removing the last traces of the old ENABLE_CACHE_EMULATION
2999                    MIPS stuff (not usable with dyntrans anyway).
3000    20060902        Splitting up src/net.c into several smaller files in its own
3001                    subdirectory (src/net/).
3002    20060903        Cleanup of the files in src/net/, to make them less ugly.
3003    20060904        Continuing on the 'settings' subsystem.
3004                    Minor progress on the SPARC emulation mode.
3005    20060905        Cleanup of various things, and connecting the settings
3006                    infrastructure to various subsystems (emul, machine, cpu, etc).
3007                    Changing the lk201 mouse update routine to not rely on any
3008                    emulated hardware framebuffer cursor coordinates, but instead
3009                    always do (semi-usable) relative movements.
3010    20060906        Continuing on the lk201 mouse stuff. Mouse behaviour with
3011                    multiple framebuffers (which was working in Ultrix) is now
3012                    semi-broken (but it still works, in a way).
3013                    Moving the documentation about networking into its own file
3014                    (networking.html), and refreshing it a bit. Adding an example
3015                    of how to use ethernet frame direct-access (udp_snoop).
3016    20060907        Continuing on the settings infrastructure.
3017    20060908        Minor updates to SH emulation: for 32-bit emulation: delay
3018                    slots and the 'jsr @Rn' instruction. I'm putting 64-bit SH5 on
3019                    ice, for now.
3020    20060909-10     Implementing some more 32-bit SH instructions. Removing the
3021                    64-bit mode completely. Enough has now been implemented to run
3022                    the rectangle drawing demo. :-)
3023    20060912        Adding more SH instructions.
3024    20060916        Continuing on SH emulation (some more instructions: div0u,
3025                    div1, rotcl/rotcr, more mov instructions, dt, braf, sets, sett,
3026                    tst_imm, dmuls.l, subc, ldc_rm_vbr, movt, clrt, clrs, clrmac).
3027                    Continuing on the settings subsystem (beginning on reading/
3028                    writing settings, removing bugs, and connecting more cpus to
3029                    the framework).
3030    20060919        More work on SH emulation; adding an ldc banked instruction,
3031                    and attaching a 640x480 framebuffer to the Dreamcast machine
3032                    mode (NetBSD/dreamcast prints the NetBSD copyright banner :-),
3033                    and then panics).
3034    20060920        Continuing on the settings subsystem.
3035    20060921        Fixing the Footbridge timer stuff so that NetBSD/cats and
3036                    NetBSD/netwinder boot up without the delays.
3037    20060922        Temporarily hardcoding MIPS timer interrupt to 100 Hz. With
3038                    'wait' support disabled, NetBSD/malta and Linux/malta run at
3039                    correct speed.
3040    20060923        Connecting dev_gt to the timer framework, so that NetBSD/cobalt
3041                    runs at correct speed.
3042                    Moving SH4-specific memory mapped registers into its own
3043                    device (dev_sh4.c).
3044                    Running with -N now prints "idling" instead of bogus nr of
3045                    instrs/second (which isn't valid anyway) while idling.
3046    20060924        Algor emulation should now run at correct speed.
3047                    Adding disassembly support for some MIPS64 revision 2
3048                    instructions: ext, dext, dextm, dextu.
3049    20060926        The timer framework now works also when the MIPS wait
3050                    instruction is used.
3051    20060928        Re-implementing checks for coprocessor availability for MIPS
3052                    cop0 instructions. (Thanks to Carl van Schaik for noticing the
3053                    lack of cop0 availability checks.)
3054    20060929        Implementing an instruction combination hack which treats
3055                    NetBSD/pmax' idle loop as a wait-like instruction.
3056    20060930        The ENTRYHI_R_MASK was missing in (at least) memory_mips_v2p.c,
3057                    causing TLB lookups to sometimes succeed when they should have
3058                    failed. (A big thank you to Juli Mallett for noticing the
3059                    problem.)
3060                    Adding disassembly support for more MIPS64 revision 2 opcodes
3061                    (seb, seh, wsbh, jalr.hb, jr.hb, synci, ins, dins, dinsu,
3062                    dinsm, dsbh, dshd, ror, dror, rorv, drorv, dror32). Also
3063                    implementing seb, seh, dsbh, dshd, and wsbh.
3064                    Implementing an instruction combination hack for Linux/pmax'
3065                    idle loop, similar to the NetBSD/pmax case.
3066    20061001        Changing the NetBSD/sgimips install instructions to extract
3067                    files from an iso image, instead of downloading them via ftp.
3068    20061002        More-than-31-bit userland addresses in memory_mips_v2p.c were
3069                    not actually working; applying a fix from Carl van Schaik to
3070                    enable them to work + making some other updates (adding kuseg
3071                    support).
3072                    Fixing hpcmips (vr41xx) timer initialization.
3073                    Experimenting with O(n)->O(1) reduction in the MIPS TLB lookup
3074                    loop. Seems to work both for R3000 and non-R3000.
3075    20061003        Continuing a little on SH emulation (adding more control
3076                    registers; mini-cleanup of memory_sh.c).
3077    20061004        Beginning on a dev_rtc, a clock/timer device for the test
3078                    machines; also adding a demo, and some documentation.
3079                    Fixing a bug in SH "mov.w @(disp,pc),Rn" (the result wasn't
3080                    sign-extended), and adding the addc and ldtlb instructions.
3081    20061005        Contining on SH emulation: virtual to physical address
3082                    translation, and a skeleton exception mechanism.
3083    20061006        Adding more SH instructions (various loads and stores, rte,
3084                    negc, muls.w, various privileged register-move instructions).
3085    20061007        More SH instructions: various move instructions, trapa, div0s,
3086                    float, fdiv, ftrc.
3087                    Continuing on dev_rtc; removing the rtc demo.
3088    20061008        Adding a dummy Dreamcast PROM module. (Homebrew Dreamcast
3089                    programs using KOS libs need this.)
3090                    Adding more SH instructions: "stc vbr,rn", rotl, rotr, fsca,
3091                    fmul, fadd, various floating-point moves, etc. A 256-byte
3092                    demo for Dreamcast runs :-)
3093    20061012        Adding the SH "lds Rm,pr" and bsr instructions.
3094    20061013        More SH instructions: "sts fpscr,rn", tas.b, and some more
3095                    floating point instructions, cmp/str, and more moves.
3096                    Adding a dummy dev_pvr (Dreamcast graphics controller).
3097    20061014        Generalizing the expression evaluator (used in the built-in
3098                    debugger) to support parentheses and +-*/%^&|.
3099    20061015        Removing the experimental tlb index hint code in
3100                    mips_memory_v2p.c, since it didn't really have any effect.
3101    20061017        Minor SH updates; adding the "sts pr,Rn", fcmp/gt, fneg,
3102                    frchg, and some other instructions. Fixing missing sign-
3103                    extension in an 8-bit load instruction.
3104    20061019        Adding a simple dev_dreamcast_rtc.
3105                    Implementing memory-mapped access to the SH ITLB/UTLB arrays.
3106    20061021        Continuing on various SH and Dreamcast things: sh4 timers,
3107                    debug messages for dev_pvr, fixing some virtual address
3108                    translation bugs, adding the bsrf instruction.
3109                    The NetBSD/dreamcast GENERIC_MD kernel now reaches userland :)
3110                    Adding a dummy dev_dreamcast_asic.c (not really useful yet).
3111                    Implementing simple support for Store Queues.
3112                    Beginning on the PVR Tile Accelerator.
3113    20061022        Generalizing the PVR framebuffer to support off-screen drawing,
3114                    multiple bit-depths, etc. (A small speed penalty, but most
3115                    likely worth it.)
3116                    Adding more SH instructions (mulu.w, fcmp/eq, fsub, fmac,
3117                    fschg, and some more); correcting bugs in "fsca" and "float".
3118    20061024        Adding the SH ftrv (matrix * vector) instruction. Marcus
3119                    Comstedt's "tatest" example runs :) (wireframe only).
3120                    Correcting disassembly for SH floating point instructions that
3121                    use the xd* registers.
3122                    Adding the SH fsts instruction.
3123                    In memory_device_dyntrans_access(), only the currently used
3124                    range is now invalidated, and not the entire device range.
3125    20061025        Adding a dummy AVR32 cpu mode skeleton.
3126    20061026        Various Dreamcast updates; beginning on a Maple bus controller.
3127    20061027        Continuing on the Maple bus. A bogus Controller, Keyboard, and
3128                    Mouse can now be detected by NetBSD and KOS homebrew programs.
3129                    Cleaning up the SH4 Timer Management Unit, and beginning on
3130                    SH4 interrupts.
3131                    Implementing the Dreamcast SYSASIC.
3132    20061028        Continuing on the SYSASIC.
3133                    Adding the SH fsqrt instruction.
3134                    memory_sh.c now actually scans the ITLB.
3135                    Fixing a bug in dev_sh4.c, related to associative writes into
3136                    the memory-mapped UTLB array. NetBSD/dreamcast now reaches
3137                    userland stably, and prints the "Terminal type?" message :-]
3138                    Implementing enough of the Dreamcast keyboard to make NetBSD
3139                    accept it for input.
3140                    Enabling SuperH for stable (non-development) builds.
3141                    Adding NetBSD/dreamcast to the documentation, although it
3142                    doesn't support root-on-nfs yet.
3143    20061029        Changing usleep(1) calls in the debugger to usleep(10000)
3144                    (according to Brian Foley, this makes GXemul run better on
3145                    MacOS X).
3146                    Making the Maple "Controller" do something (enough to barely
3147                    interact with dcircus.elf).
3148    20061030-31     Some progress on the PVR. More test programs start running (but
3149                    with strange output).
3150                    Various other SH4-related updates.
3151    20061102        Various Dreamcast and SH4 updates; more KOS demos run now.
3152    20061104        Adding a skeleton dev_mb8696x.c (the Dreamcast's LAN adapter).
3153    20061105        Continuing on the MB8696x; NetBSD/dreamcast detects it as mbe0.
3154                    Testing for the release.
3156    ==============  RELEASE 0.4.3  ==============
3158    20061107        Adding a new disk image option (-d o...) which sets the ISO9660
3159                    filesystem base offset; also making some other hacks to allow
3160                    NetBSD/dreamcast and homebrew demos/games to boot directly
3161                    from a filesystem image.
3162                    Moving Dreamcast-specific stuff in the documentation to its
3163                    own page (dreamcast.html).
3164                    Adding a border to the Dreamcast PVR framebuffer.
3165    20061108        Adding a -T command line option (again?), for halting the
3166                    emulator on unimplemented memory accesses.
3167    20061109        Continuing on various SH4 and Dreamcast related things.
3168                    The emulator should now halt on more unimplemented device
3169                    accesses, instead of just printing a warning, forcing me to
3170                    actually implement missing stuff :)
3171    20061111        Continuing on SH4 and Dreamcast stuff.
3172                    Adding a bogus Landisk (SH4) machine mode.
3173    20061112        Implementing some parts of the Dreamcast GDROM device. With
3174                    some ugly hacks, NetBSD can (barely) mount an ISO image.
3175    20061113        NetBSD/dreamcast now starts booting from the Live CD image,
3176                    but crashes randomly quite early on in the boot process.
3177    20061122        Beginning on a skeleton interrupt.h and interrupt.c for the
3178                    new interrupt subsystem.
3179    20061124        Continuing on the new interrupt system; taking the first steps
3180                    to attempt to connect CPUs (SuperH and MIPS) and devices
3181                    (dev_cons and SH4 timer interrupts) to it. Many things will
3182                    probably break from now on.
3183    20061125        Converting dev_ns16550, dev_8253 to the new interrupt system.
3184                    Attempting to begin to convert the ISA bus.
3185    20061130        Incorporating a patch from Brian Foley for the configure
3186                    script, which checks for X11 libs in /usr/X11R6/lib64 (which
3187                    is used on some Linux systems).
3188    20061227        Adding a note in the man page about booting from Dreamcast
3189                    CDROM images (i.e. that no external kernel is needed).
3190    20061229        Continuing on the interrupt system rewrite: beginning to
3191                    convert more devices, adding abort() calls for legacy interrupt
3192                    system calls so that everything now _has_ to be rewritten!
3193                    Almost all machine modes are now completely broken.
3194    20061230        More progress on removing old interrupt code, mostly related
3195                    to the ISA bus + devices, the LCA bus (on AlphaBook1), and
3196                    the Footbridge bus (for CATS). And some minor PCI stuff.
3197                    Connecting the ARM cpu to the new interrupt system.
3198                    The CATS, NetWinder, and QEMU_MIPS machine modes now work with
3199                    the new interrupt system :)
3200    20061231        Connecting PowerPC CPUs to the new interrupt system.
3201                    Making PReP machines (IBM 6050) work again.
3202                    Beginning to convert the GT PCI controller (for e.g. Malta
3203                    and Cobalt emulation). Some things work, but not everything.
3204                    Updating Copyright notices for 2007.
3205    20070101        Converting dev_kn02 from legacy style to devinit; the 3max
3206                    machine mode now works with the new interrupt system :-]
3207    20070105        Beginning to convert the SGI O2 machine to the new interrupt
3208                    system; finally converting O2 (IP32) devices to devinit, etc.
3209    20070106        Continuing on the interrupt system redesign/rewrite; KN01
3210                    (PMAX), KN230, and Dreamcast ASIC interrupts should work again,
3211                    moving out stuff from machine.h and devices.h into the
3212                    corresponding devices, beginning the rewrite of i80321
3213                    interrupts, etc.
3214    20070107        Beginning on the rewrite of Eagle interrupt stuff (PReP, etc).
3215    20070117        Beginning the rewrite of Algor (V3) interrupts (finally
3216                    changing dev_v3 into devinit style).
3217    20070118        Removing the "bus" registry concept from machine.h, because
3218                    it was practically meaningless.
3219                    Continuing on the rewrite of Algor V3 ISA interrupts.
3220    20070121        More work on Algor interrupts; they are now working again,
3221                    well enough to run NetBSD/algor. :-)
3222    20070122        Converting VR41xx (HPCmips) interrupts. NetBSD/hpcmips
3223                    can be installed using the new interrupt system :-)
3224    20070123        Making the testmips mode work with the new interrupt system.
3225    20070127        Beginning to convert DEC5800 devices to devinit, and to the
3226                    new interrupt system.
3227                    Converting Playstation 2 devices to devinit, and converting
3228                    the interrupt system. Also fixing a severe bug: the interrupt
3229                    mask register on Playstation 2 is bitwise _toggled_ on writes.
3230    20070128        Removing the dummy NetGear machine mode and the 8250 device
3231                    (which was only used by the NetGear machine).
3232                    Beginning to convert the MacPPC GC (Grand Central) interrupt
3233                    controller to the new interrupt system.
3234                    Converting Jazz interrupts (PICA61 etc.) to the new interrupt
3235                    system. NetBSD/arc can be installed again :-)
3236                    Fixing the JAZZ timer (hardcoding it at 100 Hz, works with
3237                    NetBSD and it is better than a completely dummy timer as it
3238                    was before).
3239                    Converting dev_mp to the new interrupt system, although I
3240                    haven't had time to actually test it yet.
3241                    Completely removing src/machines/interrupts.c, cpu_interrupt
3242                    and cpu_interrupt_ack in src/cpu.c, and
3243                    src/include/machine_interrupts.h! Adding fatal error messages
3244                    + abort() in the few places that are left to fix.
3245                    Converting dev_z8530 to the new interrupt system.
3246                    FINALLY removing the md_int struct completely from the
3247                    machine struct.
3248                    SH4 fixes (adding a PADDR invalidation in the ITLB replacement
3249                    code in memory_sh.c); the NetBSD/dreamcast LiveCD now runs
3250                    all the way to the login prompt, and can be interacted with :-)
3251                    Converting the CPC700 controller (PCI and interrupt controller
3252                    for PM/PPC) to the new interrupt system.
3253    20070129        Fixing MACE ISA interrupts (SGI IP32 emulation). Both NetBSD/
3254                    sgimips' and OpenBSD/sgi's ramdisk kernels can now be
3255                    interacted with again.
3256    20070130        Moving out the MIPS multi_lw and _sw instruction combinations
3257                    so that they are auto-generated at compile time instead.
3258    20070131        Adding detection of amd64/x86_64 hosts in the configure script,
3259                    for doing initial experiments (again :-) with native code
3260                    generation.
3261                    Adding a -k command line option to set the size of the dyntrans
3262                    cache, and a -B command line option to disable native code
3263                    generation, even if GXemul was compiled with support for
3264                    native code generation for the specific host CPU architecture.
3265    20070201        Experimenting with a skeleton for native code generation.
3266                    Changing the default behaviour, so that native code generation
3267                    is now disabled by default, and has to be enabled by using
3268                    -b on the command line.
3269    20070202        Continuing the native code generation experiments.
3270                    Making PCI interrupts work for Footbridge again.
3271    20070203        More native code generation experiments.
3272                    Removing most of the native code generation experimental code,
3273                    it does not make sense to include any quick hacks like this.
3274                    Minor cleanup/removal of some more legacy MIPS interrupt code.
3275    20070204        Making i80321 interrupts work again (for NetBSD/evbarm etc.),
3276                    and fixing the timer at 100 Hz.
3277    20070206        Experimenting with removing the wdc interrupt slowness hack.
3278    20070207        Lowering the number of dyntrans TLB entries for MIPS from
3279                    192 to 128, resulting in a minor speed improvement.
3280                    Minor optimization to the code invalidation routine in
3281                    cpu_dyntrans.c.
3282    20070208        Increasing (experimentally) the nr of dyntrans instructions per
3283                    loop from 60 to 120.
3284    20070210        Commenting out (experimentally) the dyntrans_device_danger
3285                    detection in memory_rw.c.
3286                    Changing the testmips and baremips machines to use a revision 2
3287                    MIPS64 CPU by default, instead of revision 1.
3288                    Removing the dummy i960, IA64, x86, AVR32, and HP PA-RISC
3289                    files, the PC bios emulation, and the Olivetti M700 (ARC) and
3290                    db64360 emulation modes.
3291    20070211        Adding an "mp" demo to the demos directory, which tests the
3292                    SMP functionality of the testmips machine.
3293                    Fixing PReP interrupts some more. NetBSD/prep now boots again.
3294    20070216        Adding a "nop workaround" for booting Mach/PMAX to the
3295                    documentation; thanks to Artur Bujdoso for the values.
3296                    Converting more of the MacPPC interrupt stuff to the new
3297                    system.
3298                    Beginning to convert BeBox interrupts to the new system.
3299                    PPC603e should NOT have the PPC_NO_DEC flag! Removing it.
3300                    Correcting BeBox clock speed (it was set to 100 in the NetBSD
3301                    bootinfo block, but should be 33000000/4), allowing NetBSD
3302                    to start without using the (incorrect) PPC_NO_DEC hack.
3303    20070217        Implementing (slow) AltiVec vector loads and stores, allowing
3304                    NetBSD/macppc to finally boot using the GENERIC kernel :-)
3305                    Updating the documentation with install instructions for
3306                    NetBSD/macppc.
3307    20070218-19     Regression testing for the release.
3309    ==============  RELEASE 0.4.4  ==============
3311    20070224        Minor update to the initialization of the ns16550 in
3312                    machine_walnut.c, to allow that machine type to boot with the
3313                    new interrupt system (although it is still a dummy machine).
3314                    Adding a wdc at 0x14000000 to machine_landisk.c, and fixing
3315                    the SCIF serial interrupts of the SH4 cpu enough to get
3316                    NetBSD/landisk booting from a disk image :-)  Adding a
3317                    preliminary install instruction skeleton to guestoses.html.
3318    20070306        Adding SH-IPL+G PROM emulation, and also passing the "end"
3319                    symbol in r5 on bootup, for Landisk emulation. This is enough
3320                    to get OpenBSD/landisk to install :)  Adding a preliminary
3321                    install instruction skeleton to the documentation. SuperH
3322                    emulation is still shaky, though :-/
3323    20070307        Fixed a strangeness in memory_sh.c (read/write was never
3324                    returned for any page). (Unknown whether this fixes any actual
3325                    problems, though.)
3326    20070308        dev_ram.c fix: invalidate code translations on writes to
3327                    RAM, emulated as separate devices. Linux/dreamcast gets
3328                    further in the boot process than before, but still bugs out
3329                    in userland.
3330                    Fixing bugs in the "stc.l gbr,@-rN" and "ldc.l @rN+,gbr" SuperH
3331                    instructions (they should NOT check the MD bit), allowing the
3332                    Linux/dreamcast Live CD to reach userland correctly :-)
3333    20070310        Changing the cpu name "Alpha" in src/useremul.c to "21364" to
3334                    unbreak userland syscall emulation of FreeBSD/Alpha binaries.
3335    20070314        Applying a patch from Michael Yaroslavtsev which fixes the
3336                    previous Linux lib64 patch to the configure script.
3337    20070315        Adding a (dummy) sun4v machine type, and SPARC T1 cpu type.
3338    20070316        Creating a new directory, src/disk, and moving diskimage.c
3339                    to it. Separating out bootblock loading stuff from emul.c into
3340                    new files in src/disk.
3341                    Adding some more SPARC registers.
3342    20070318        Preparing/testing for a minirelease,
3344    ==============  RELEASE  ==============
3346    20070324        Adding a "--debug" option to the configure script, to disable
3347                    optimizations in unstable development builds.
3348                    Moving out SCSI-specific stuff from diskimage.c into a new
3349                    diskimage_scsicmd.c.
3350                    Applying Håvard Eidnes' patch for SCSICDROM_READ_DISKINFO and
3351                    SCSICDROM_READ_TRACKINFO. (Not really tested yet.)
3352                    Implementing disk image "overlays" (to allow simple roll-back
3353                    to previous disk state). Adding a 'V' disk flag for this, and
3354                    updating the man page and misc.html.
3355    20070325        Stability fix to cpu_dyntrans.c, when multiple physical pages
3356                    share the same initial table entry. (The ppp == NULL check
3357                    should be physpage_ofs == 0.) Bug found by analysing GXemul
3358                    against a version patched for Godson.
3359                    Fixing a second occurance of the same problem (also in
3360                    cpu_dyntrans.c).
3361                    Fixing a MAJOR physical page leak in cpu_dyntrans.c; pages
3362                    weren't _added_ to the set of translated pages, they _replaced_
3363                    all previous pages. It's amazing that this bug has been able
3364                    to live for this long. (Triggered when emulating >128MB RAM.)
3365    20070326        Removing the GDB debugging stub support; it was too hackish
3366                    and ugly.
3367    20070328        Moving around some native code generation skeleton code.
3368    20070329        The -lm check in the configure script now also checks for sin()
3369                    in addition to sqrt(). (Thanks to Nigel Horne for noticing that
3370                    sqrt was not enough on Fedora Core 6.) (Not verified yet.)
3371    20070330        Fixing an indexing bug in dev_sh4.c, found by using gcc version
3372                    4.3.0 20070323.
3373    20070331        Some more experimentation with native code generation.
3374    20070404        Attempting to fix some more SH4 SCIF interrupt bugs; rewriting
3375                    the SH interrupt assertion/deassertion code somewhat.
3376    20070410        Splitting src/file.c into separate files in src/file/.
3377                    Cleanup: Removing the dummy TS7200, Walnut, PB1000, and
3378                    Meshcube emulation modes, and dev_epcom and dev_au1x00.
3379                    Removing the experimental CHIP8/RCA180x code; it wasn't really
3380                    working much lately, anyway. It was fun while it lasted.
3381                    Also removing the experimental Transputer CPU support.
3382    20070412        Moving the section about how the dynamic translation system
3383                    works from intro.html to a separate translation.html file.
3384                    Minor SH fixes; attempting to get OpenBSD/landisk to run
3385                    without randomly bugging out, but no success yet.
3386    20070413        SH SCI (serial bit interface) should now work together with a
3387                    (new) RS5C313 clock device (for Landisk emulation).
3388    20070414        Moving Redhat/MIPS down from supported to experimental, in
3389                    guestoses.html.
3390                    Preparing for a new release; doing some regression testing etc.
3392    ==============  RELEASE 0.4.5  ==============
3394    20070415        Landisk PCLOCK should be 33.33 MHz, not 50 MHz. (This makes
3395                    the clock run at correct speed.)
3396                    FINALLY found and fixed the bug which caused OpenBSD/landisk
3397                    to randomly bug out: an &-sign was missing in the special case
3398                    handling of FPSCR in the 'LDS.L @Rm+,FPSCR' instruction.
3399                    Adding similar special case handling for 'LDC.L @Rm+,SR'
3400                    (calling sh_update_sr() instead of just loading).
3401                    Implementing the 'FCNVSD FPUL,DRn' and 'FCNVDS DRm,FPUL'
3402                    SuperH instructions.
3403                    The 'LDC Rm,SR' instruction now immediately breaks out of the
3404                    dyntrans loop if an interrupt is to be triggered.
3405    20070416        In memory_rw.c, if mapping a page as writable, make sure to
3406                    invalidate code translations even if the data access was a
3407                    read.
3408                    Minor SuperH updates.
3409    20070418        Removing the dummy M68K emulation mode.
3410                    Minor SH update (turning unnecessary sts_mach_rn, sts_macl_rn,
3411                    and sts_pr_rn instruction handlers into mov_rm_rn).
3412    20070419        Beginning to add a skeleton for an M88K mode: Adding a hack to
3413                    allow OpenBSD/m88k a.out binaries to be loaded, and disassembly
3414                    of a few simple 88K instructions.
3415                    Commenting out the 'LDC Rm,SR' fix from a few days ago, because
3416                    it made Linux/dreamcast bug out.
3417                    Adding a hack to dev_sh4.c (an extra translation cache
3418                    invalidation), which allows OpenBSD/landisk to boot ok after
3419                    an install. Upgrading the Landisk machine mode to stable,
3420                    updating documentation, etc.
3421    20070420        Experimenting with adding a PCI controller (pcic) to dev_sh4.
3422                    Adding a dummy Realtek 8139C+ skeleton device (dev_rtl8139c).
3423                    Implementing the first M88K instructions (br, or[.u] imm), and
3424                    adding disassembly of some more instructions.
3425    20070421        Continuing a little on dev_rtl8139c.
3426    20070422        Implementing the 9346 EEPROM "read" command for dev_rtl8139c.
3427                    Finally found and fixed an old bug in the log n symbol search
3428                    (it sometimes missed symbols). Debug trace (-i, -t etc) should
3429                    now show more symbols. :-)
3430    20070423        Continuing a little on M88K disassembly.
3431    20070428        Fixing a memset arg order bug in src/net/net.c (thanks to
3432                    Nigel Horne for noticing the bug).
3433                    Applying parts of a patch from Carl van Schaik to clear out
3434                    bottom bits of MIPS addresses more correctly, when using large
3435                    page sizes, and doing some other minor cleanup/refactoring.
3436                    Fixing a couple of warnings given by gcc with the -W option (a
3437                    few more warnings than just plain -Wall).
3438                    Reducing SuperH dyntrans physical address space from 64-bit to
3439                    32-bit (since SH5/SH64 isn't imlemented yet anyway).
3440                    Adding address-to-symbol annotation to a few more instructions
3441                    in the SuperH instruction trace output.
3442                    Beginning regression testing for the next release.
3443                    Reverting the value of SCIF_DELAYED_TX_VALUE from 1 to 2,
3444                    because OpenBSD/landisk may otherwise hang randomly.
3445    20070429        The ugly hack/workaround to get OpenBSD/landisk booting without
3446                    crashing does NOT work anymore (with the April 21 snapshot
3447                    of OpenBSD/landisk). Strangely enough, removing the hack
3448                    completely causes OpenBSD/landisk to work (!).
3449                    More regression testing (re-testing everything SuperH-related,
3450                    and some other things).
3451                    Cobalt interrupts were actually broken; fixing by commenting
3452                    out the DEC21143s in the Cobalt machine.
3453    20070430        More regression testing.
3454    20070501        Updating the OpenBSD/landisk install instructions to use
3455                    4.1 instead of the current snapshot.
3456                    GAAAH! OpenBSD/landisk 4.1 _needs_ the ugly hack/workaround;
3457                    reintroducing it again. (The 4.1 kernel is actually from
3458                    2007-03-11.)
3459                    Simplifying the NetBSD/evbarm install instructions a bit.
3460                    More regression testing.
3462    ==============  RELEASE  ==============
3464    20070501        Continuing a little on m88k disassembly (control registers,
3465                    more instructions).
3466                    Adding a dummy mvme88k machine mode.
3467    20070502        Re-adding MIPS load/store alignment exceptions.
3468    20070503        Implementing more of the M88K disassembly code.
3469    20070504        Adding disassembly of some more M88K load/store instructions.
3470                    Implementing some relatively simple M88K instructions (br.n,
3471                    xor[.u] imm, and[.u] imm).
3472    20070505        Implementing M88K three-register and, or, xor, and jmp[.n],
3473                    bsr[.n] including function call trace stuff.
3474                    Applying a patch from Bruce M. Simpson which implements the
3475                    SYSCON_BOARD_CPU_CLOCK_FREQ_ID object of the syscon call in
3476                    the yamon PROM emulation.
3477    20070506        Implementing M88K bb0[.n] and bb1[.n], and skeletons for
3478                    ldcr and stcr (although no control regs are implemented yet).
3479    20070509        Found and fixed the bug which caused Linux for QEMU_MIPS to
3480                    stop working in It was a faulty change to the MIPS
3481                    'sc' and 'scd' instructions I made while going through gcc -W
3482                    warnings on 20070428.
3483    20070510        Updating the Linux/QEMU_MIPS section in guestoses.html to
3484                    use mips-test-0.2.tar.gz instead of 0.1.
3485                    A big thank you to Miod Vallat for sending me M88K manuals.
3486                    Implementing more M88K instructions (addu, subu, div[u], mulu,
3487                    ext[u], clr, set, cmp).
3488    20070511        Fixing bugs in the M88K "and" and "and.u" instructions (found
3489                    by comparing against the manual).
3490                    Implementing more M88K instructions (mask[.u], mak, bcnd (auto-
3491                    generated)) and some more control register details.
3492                    Cleanup: Removing the experimental AVR emulation mode and
3493                    corresponding devices; AVR emulation wasn't really meaningful.
3494                    Implementing autogeneration of most M88K loads/stores. The
3495                    rectangle drawing demo (with -O0) for M88K runs :-)
3496                    Beginning on M88K exception handling.
3497                    More M88K instructions: tb0, tb1, rte, sub, jsr[.n].
3498                    Adding some skeleton MVME PROM ("BUG") emulation.
3499    20070512        Fixing a bug in the M88K cmp instruction.
3500                    Adding the M88K lda (scaled register) instruction.
3501                    Fixing bugs in 64-bit (32-bit pairs) M88K loads/stores.
3502                    Removing the unused tick_hz stuff from the machine struct.
3503                    Implementing the M88K xmem instruction. OpenBSD/mvme88k gets
3504                    far enough to display the Copyright banner :-)
3505                    Implementing subu.co (guess), addu.co, addu.ci, ff0, and ff1.
3506                    Adding a dev_mvme187, for MVME187-specific devices/registers.
3507                    OpenBSD/mvme88k prints more boot messages. :)
3508    20070515        Continuing on MVME187 emulation (adding more devices, beginning
3509                    on the CMMUs, etc).
3510                    Adding the M88K and.c, xor.c, and or.c instructions, and making
3511                    sure that mul, div, etc cause exceptions if executed when SFD1
3512                    is disabled.
3513    20070517        Continuing on M88K and MVME187 emulation in general; moving
3514                    the CMMU registers to the CPU struct, separating dev_pcc2 from
3515                    dev_mvme187, and beginning on memory_m88k.c (BATC and PATC).
3516                    Fixing a bug in 64-bit (32-bit pairs) M88K fast stores.
3517                    Implementing the clock part of dev_mk48txx.
3518                    Implementing the M88K fstcr and xcr instructions.
3519                    Implementing m88k_cpu_tlbdump().
3520                    Beginning on the implementation of a separate address space
3521                    for M88K .usr loads/stores.
3522    20070520        Removing the non-working (skeleton) Sandpoint, SonyNEWS, SHARK
3523                    Dnard, and Zaurus machine modes.
3524                    Experimenting with dyntrans to_be_translated read-ahead. It
3525                    seems to give a very small performance increase for MIPS
3526                    emulation, but a large performance degradation for SuperH. Hm.
3527    20070522        Disabling correct SuperH ITLB emulation; it does not seem to be
3528                    necessary in order to let SH4 guest OSes run, and it slows down
3529                    userspace code.
3530                    Implementing "samepage" branches for SuperH emulation, and some
3531                    other minor speed hacks.
3532    20070525        Continuing on M88K memory-related stuff: exceptions, memory
3533                    transaction register contents, etc.
3534                    Implementing the M88K subu.ci instruction.
3535                    Removing the non-working (skeleton) Iyonix machine mode.
3536                    OpenBSD/mvme88k reaches userland :-), starts executing
3537                    /sbin/init's instructions, and issues a few syscalls, before
3538                    crashing.
3539    20070526        Fixing bugs in dev_mk48txx, so that OpenBSD/mvme88k detects
3540                    the correct time-of-day.
3541                    Implementing a generic IRQ controller for the test machines
3542                    (dev_irqc), similar to a proposed patch from Petr Stepan.
3543                    Experimenting some more with translation read-ahead.
3544                    Adding an "expect" script for automated OpenBSD/landisk
3545                    install regression/performance tests.
3546    20070527        Adding a dummy mmEye (SH3) machine mode skeleton.
3547                    FINALLY found the strange M88K bug I have been hunting: I had
3548                    not emulated the SNIP value for exceptions occurring in
3549                    branch delay slots correctly.
3550                    Implementing correct exceptions for 64-bit M88K loads/stores.
3551                    Address to symbol lookups are now disabled when M88K is
3552                    running in usermode (because usermode addresses don't have
3553                    anything to do with supervisor addresses).
3554    20070531        Removing the mmEye machine mode skeleton.
3555    20070604        Some minor code cleanup.
3556    20070605        Moving src/useremul.c into a subdir (src/useremul/), and
3557                    cleaning up some more legacy constructs.
3558                    Adding -Wstrict-aliasing and -fstrict-aliasing detection to
3559                    the configure script.
3560    20070606        Adding a check for broken GCC on Solaris to the configure
3561                    script. (GCC 3.4.3 on Solaris cannot handle static variables
3562                    which are initialized to 0 or NULL. :-/)
3563                    Removing the old (non-working) ARC emulation modes: NEC RD94,
3564                    R94, R96, and R98, and the last traces of Olivetti M700 and
3565                    Deskstation Tyne.
3566                    Removing the non-working skeleton WDSC device (dev_wdsc).
3567    20070607        Thinking about how to use the host's cc + ld at runtime to
3568                    generate native code. (See experiments/native_cc_ld_test.i
3569                    for an example.)
3570    20070608        Adding a program counter sampling timer, which could be useful
3571                    for native code generation experiments.
3572                    The KN02_CSR_NRMMOD bit in the DECstation 5000/200 (KN02) CSR
3573                    should always be set, to allow a 5000/200 PROM to boot.
3574    20070609        Moving out breakpoint details from the machine struct into
3575                    a helper struct, and removing the limit on max nr of
3576                    breakpoints.
3577    20070610        Moving out tick functions into a helper struct as well (which
3578                    also gets rid of the max limit).
3579    20070612        FINALLY figured out why Debian/DECstation stopped working when
3580                    translation read-ahead was enabled: in src/memory_rw.c, the
3581                    call to invalidate_code_translation was made also if the
3582                    memory access was an instruction load (if the page was mapped
3583                    as writable); it shouldn't be called in that case.
3584    20070613        Implementing some more MIPS32/64 revision 2 instructions: di,
3585                    ei, ext, dext, dextm, dextu, and ins.
3586    20070614        Implementing an instruction combination for the NetBSD/arm
3587                    idle loop (making the host not use any cpu if NetBSD/arm
3588                    inside the emulator is not using any cpu).
3589                    Increasing the nr of ARM VPH entries from 128 to 384.
3590    20070615        Removing the ENABLE_arch stuff from the configure script, so
3591                    that all included architectures are included in both release
3592                    and development builds.
3593                    Moving memory related helper functions from misc.c to memory.c.
3594                    Adding preliminary instructions for netbooting NetBSD/pmppc to
3595                    guestoses.html; it doesn't work yet, there are weird timeouts.
3596                    Beginning a total rewrite of the userland emulation modes
3597                    (removing all emulation modes, beginning from scratch with
3598                    NetBSD/MIPS and FreeBSD/Alpha only).
3599    20070616        After fixing a bug in the DEC21143 NIC (the TDSTAT_OWN bit was
3600                    only cleared for the last segment when transmitting, not all
3601                    segments), NetBSD/pmppc boots with root-on-nfs without the
3602                    timeouts. Updating guestoses.html.
3603                    Removing the skeleton PSP (Playstation Portable) mode.
3604                    Moving X11-related stuff in the machine struct into a helper
3605                    struct.
3606                    Cleanup of out-of-memory checks, to use a new CHECK_ALLOCATION
3607                    macro (which prints a meaningful error message).
3608                    Adding a COMMENT to each machine and device (for automagic
3609                    .index comment generation).
3610                    Doing regression testing for the next release.
3612    ==============  RELEASE 0.4.6  ==============
3614    20070616        Implementing the MIPS32/64 revision 2 "ror" instruction.
3615    20070617        Adding a struct for each physpage which keeps track of which
3616                    ranges within that page (base offset, length) that are
3617                    continuously translatable. When running with native code
3618                    generation enabled (-b), a range is added after each read-
3619                    ahead loop.
3620                    Experimenting with using the physical program counter sample
3621                    data (implemented 20070608) together with the "translatable
3622                    range" information, to figure out which physical address ranges
3623                    would be worth translating to native code (if the number of
3624                    samples falling within a range is above a certain threshold).
3625    20070618        Adding automagic building of .index comment files for
3626                    src/file/, src/promemul/, src src/useremul/ as well.
3627                    Adding a "has been translated" bit to the ranges, so that only
3628                    not-yet-translated ranges will be sampled.
3629    20070619        Moving src/cpu.c and src/memory_rw.c into src/cpus/,
3630                    src/device.c into src/devices/, and src/machine.c into
3631                    src/machines/.
3632                    Creating a skeleton cc/ld native backend module; beginning on
3633                    the function which will detect cc command line, etc.
3634    20070620        Continuing on the native code generation infrastructure.
3635    20070621        Moving src/x11.c and src/console.c into a new src/console/
3636                    subdir (for everything that is console or framebuffer related).
3637                    Moving src/symbol*.c into a new src/symbol/, which should
3638                    contain anything that is symbol handling related.
3639    20070624        Making the program counter sampling threshold a "settings
3640                    variable" (sampling_threshold), i.e. it can now be changed
3641                    during runtime.
3642                    Switching the RELEASE notes format from plain text to HTML.
3643                    If the TMPDIR environment variable is set, it is used instead
3644                    of "/tmp" for temporary files.
3645                    Continuing on the cc/ld backend: simple .c code is generated,
3646                    the compiler and linker are called, etc.
3647                    Adding detection of host architecture to the configure script
3648                    (again), and adding icache invalidation support (only
3649                    implemented for Alpha hosts so far).
3650    20070625        Simplifying the program counter sampling mechanism.
3651    20070626        Removing the cc/ld native code generation stuff, program
3652                    counter sampling, etc; it would not have worked well in the
3653                    general case.
3654    20070627        Removing everything related to native code generation.
3655    20070629        Removing the (practically unusable) support for multiple
3656                    emulations. (The single emulation allowed now still supports
3657                    multiple simultaneous machines, as before.)
3658                    Beginning on PCCTWO and M88K interrupts.
3659    20070723        Adding a dummy skeleton for emulation of M32R processors.
3660    20070901        Fixing a warning found by "gcc version 4.3.0 20070817
3661                    (experimental)" on amd64.
3662    20070905        Removing some more traces of the old "multiple emulations"
3663                    code.
3664                    Also looking in /usr/local/include and /usr/local/lib for
3665                    X11 libs, when running configure.
3666    20070909        Minor updates to the guest OS install instructions, in
3667                    preparation for the NetBSD 4.0 release.
3668    20070918        More testing of NetBSD 4.0 RC1.

Removed from v.10  
changed lines
  Added in v.44

  ViewVC Help
Powered by ViewVC 1.1.26