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

Annotation of /trunk/HISTORY

Parent Directory Parent Directory | Revision Log Revision Log


Revision 44 - (hide annotations)
Mon Oct 8 16:22:56 2007 UTC (16 years, 5 months ago) by dpavlin
File size: 188848 byte(s)
++ trunk/HISTORY	(local)
$Id: HISTORY,v 1.1632 2007/09/11 21:46:35 debug Exp $
20070616	Implementing the MIPS32/64 revision 2 "ror" instruction.
20070617	Adding a struct for each physpage which keeps track of which
		ranges within that page (base offset, length) that are
		continuously translatable. When running with native code
		generation enabled (-b), a range is added after each read-
		ahead loop.
		Experimenting with using the physical program counter sample
		data (implemented 20070608) together with the "translatable
		range" information, to figure out which physical address ranges
		would be worth translating to native code (if the number of
		samples falling within a range is above a certain threshold).
20070618	Adding automagic building of .index comment files for
		src/file/, src/promemul/, src src/useremul/ as well.
		Adding a "has been translated" bit to the ranges, so that only
		not-yet-translated ranges will be sampled.
20070619	Moving src/cpu.c and src/memory_rw.c into src/cpus/,
		src/device.c into src/devices/, and src/machine.c into
		src/machines/.
		Creating a skeleton cc/ld native backend module; beginning on
		the function which will detect cc command line, etc.
20070620	Continuing on the native code generation infrastructure.
20070621	Moving src/x11.c and src/console.c into a new src/console/
		subdir (for everything that is console or framebuffer related).
		Moving src/symbol*.c into a new src/symbol/, which should
		contain anything that is symbol handling related.
20070624	Making the program counter sampling threshold a "settings
		variable" (sampling_threshold), i.e. it can now be changed
		during runtime.
		Switching the RELEASE notes format from plain text to HTML.
		If the TMPDIR environment variable is set, it is used instead
		of "/tmp" for temporary files.
		Continuing on the cc/ld backend: simple .c code is generated,
		the compiler and linker are called, etc.
		Adding detection of host architecture to the configure script
		(again), and adding icache invalidation support (only
		implemented for Alpha hosts so far).
20070625	Simplifying the program counter sampling mechanism.
20070626	Removing the cc/ld native code generation stuff, program
		counter sampling, etc; it would not have worked well in the
		general case.
20070627	Removing everything related to native code generation.
20070629	Removing the (practically unusable) support for multiple
		emulations. (The single emulation allowed now still supports
		multiple simultaneous machines, as before.)
		Beginning on PCCTWO and M88K interrupts.
20070723	Adding a dummy skeleton for emulation of M32R processors.
20070901	Fixing a warning found by "gcc version 4.3.0 20070817
		(experimental)" on amd64.
20070905	Removing some more traces of the old "multiple emulations"
		code.
		Also looking in /usr/local/include and /usr/local/lib for
		X11 libs, when running configure.
20070909	Minor updates to the guest OS install instructions, in
		preparation for the NetBSD 4.0 release.
20070918	More testing of NetBSD 4.0 RC1.

1 dpavlin 44 $Id: HISTORY,v 1.1632 2007/09/11 21:46:35 debug Exp $
2 dpavlin 2
3     Changelog for GXemul:
4     ---------------------
5    
6     20030829 Skeleton. ELF stuff. Some instructions.
7     20030830 Simple test programs using +-*/^|&%, function calls,
8     loops, and stuff like that work.
9     20030903 Adding more instructions, fixing some bugs.
10     20030907 Making adding of memory mapped devices easier, although
11     the framework isn't built for speed.
12     Adding a -q switch to turn of debug output.
13     20030911 Trying to fix some bugs. Minor changes. Some COP0
14     registers are now meaningful.
15     20030919 Making APs (non-bootstrap cpus) available via a simple
16     'mp' device. Implementing ll/lld and sc/scd (for atomic
17     memory updates, needed by MP operating systems).
18     20030923 Minor updates: more instructions (divu, mulu, lwu,
19     perhaps some more), and opcode usage statistics.
20     20030924 If the next instruction is nullified (for 'branch
21     likely' type of instructions), counters for delays etc
22     are now decreased as they should.
23     Adding some comments.
24     Adding instructions: movz, movn.
25     Adding a simple mandelbrot test to mipstest.c.
26     20030925 Adding instructions: bltzl, bgezl, lh, lhu, sh, mfc*,
27     mtc*.
28     Adding a dummy instructions: sync, cache.
29     Adding minimal DECstation PROM functionality: printf()
30     and getsysid() callback functions.
31     Beginning work on address translation.
32     20030927 Adding some more cop0 functionality (tlb stuff).
33     Adding mc146818 real-time clock. (Skeleton stuff.)
34     20030928 Adding a dc7085 serial console device (dummy, but enough
35     to output chars to the screen). NetBSD uses this for
36     the MIPSMATE 5100.
37     20030929 Working on the TLB stuff.
38     Adding instructions: srlv, tlbwr, tlbr, tlbp, eret.
39     20030930 Trying to find a bug which causes NetBSD to bug out, but
40     it is really hard.
41     Adding some a.out support (for loading an old
42     OpenBSD 2.8/pmax kernel image).
43     Adding instructions: lwc*, ldc*, swc1 and swc3.
44     Beginning to add special code to handle the differences
45     between R4000 (the default emulation) and R2000/R3000.
46     20031001 Symbol listings produced by 'nm -S' can be used to
47     show symbolic names for addresses. (-S)
48     20031002 Fixing the i/d fake cache for R2000/R3000. It's still
49     just an ugly hack, though.
50     Fixing minor bugs to make the 3100 emulation use the
51     dc device (serial console) correctly. So far, 5100 and
52     3100 are the only ones that get far enough to print
53     stuff, when booting NetBSD.
54     20031004 Adding skeleton Cobalt machine emulation (-E).
55     Adding a dummy ns16550 serial controller, used by the
56     Cobalt machine emulation.
57     20031006 Adding unaligned load/store instructions (lwl, lwr,
58     ldl, ldr, swl, swr, sdl, sdr), although they are not
59     tested yet.
60     Fixed a "data modified on freelist" bug when running
61     NetBSD/cobalt: setting the top bit of the index register
62     when a tlbp fails (as the R4000 manual says) isn't
63     sufficient, I had to clear the low bits as well.
64     Adding break and syscall instructions, but they are not
65     tested yet.
66     Adding a 'gt' device, faking a PCI bus, for the Cobalt
67     emulation.
68     20031008 Adding initial support for HPCmips (-F), a framebuffer
69     device using X11. NetBSD/hpcmips can output pixels to
70     the framebuffer, but that's about it.
71     20031009 Fixing the NetBSD/pmax bug: the "0/tftp/netbsd" style
72     bootstring was only passed correctly in the bootinfo
73     block, it needs to be passed as argv[0] as well.
74     Adding instructions: mtlo, mthi.
75     Rearrangning the source tree layout.
76     Adding console input functionality. The NetBSD/cobalt
77     kernel's ddb can now be interacted with.
78     20031010 Adding experimental (semi-useless) -t option, to show
79     a function call tree while a program runs.
80     Linux/cobalt now prints a few messages, but then hangs
81     at "Calibrating delay loop..." unless an ugly hack is
82     used (setting a word of memory at 0x801e472c to non-zero).
83     20031013 Adding a framebuffer device used in DECstation 3100;
84     VFB01 for mono is implemented so far, not yet the
85     VFB02 (color) variant. Rewriting the framebuffer
86     device so that it is usable by both HPCmips and DECstation
87     emulation.
88     20031014 Minor fixes. Everything should compile and run ok
89     both with and without X11.
90     20031015 Adding support for ECOFF binary images; text, data,
91     and symbols are loaded. (Playing around with ultrixboot
92     and ultrix kernels.)
93     20031016 The DECstation argv,argc stuff must be at 0xa0000000,
94     not 0x80000000, or Ultrix kernels complain.
95     Adding R2000/R3000 'rfe' instruction.
96     Implementing more R2K/R3K tlb specific stuff, so that
97     NetBSD boots and uses the tlb correctly, but much of
98     it is ugly. (Needs to be separated in a cleaner way.)
99     ECOFF symbols sizes are now calculated, so that offsets
100     within symbols are usable.
101     20031017 DECstation bootstrings now automatically include the
102     correct name of the kernel that is booting.
103     Ultrix boots a bit.
104     20031018 ELF symbols are now read automatically from the binary.
105     -t trace looks a bit better (string arguments are shown).
106     Trying to get initial R5900 stuff working (the 128-bit
107     CPU used in Playstation 2).
108     Fixing a minor bug to make the VFB02 (color framebuffer)
109     device work better, but it is still just 256 grayscales,
110     not real color. Ultrix can now use the framebuffer (it
111     calls it PMAX-CFB).
112     A machine can now consist of CPUs of different types.
113     Adding instructions: daddi, mov_xxx, mult_xx. The xxx
114     instructions are not documented MIPS64 instructions,
115     but NetBSD/playstation2 uses them. Perhaps VR5432
116     instructions?
117     Adding sign-extension to 32-bit mult.
118     Adding Playstation 2 devices: dmac (DMA controller),
119     gs (Graphic something?), and gif (graphics something
120     else, which has access to the PS2's framebuffer).
121     NetBSD/playstation2 works a bit, and prints a few
122     bootup messages.
123     20031020 The cpu_type field of the cpu struct now contains
124     usable values in a much better form than before. This
125     simplifies adding of new CPU types.
126     20031021 Fixing an interrupt related bug: pc_last was used, but
127     for interrupts this was incorrect. Fixed now.
128     Fixing a load/store related bug: if a load into a
129     register was aborted due to an exception, the register
130     was still modified.
131     The mc146818 rtc now reads its time from the system's
132     time() function.
133     Fixing another exception bug: if loading an instruction
134     caused an exception, something bogus happened as the
135     emulator tried to execute the instruction anyway. This
136     has been fixed now.
137     20031023 Adding a quick hack which skips "while (reg --) ;"
138     kind of loops.
139     NetBSD/pmax suddenly reached userland (!), but only
140     once and attempts to repeat it have failed. I believe
141     it is problems with my interrupt handling system.
142     20031024 Adding 8-bit color palette support to the framebuffer.
143     Connecting the pmax vdac device to the framebuffer's
144     rgb palette.
145     Fixing a bug in the dc device, so that console input
146     is possible; interaction with NetBSD/pmax's built-in
147     kernel debugger works now.
148     Symbol sizes for file formats where symbol size isn't
149     included are now calculated regardless of file format.
150     Physical memory space can now be smaller than 64 bits,
151     improving emulation speed a bit.
152     Doing other minor performance enhancements by moving
153     around some statements in critical parts of the code.
154     20031025 Minor changes to the dc device.
155     20031026 Adding support for reading symbols directly from
156     a.out files. (Works with OpenBSD/pmax binaries.)
157     Hardware devices may now register "tick functions" at
158     specific cycle intervals in a generic fashion.
159     All four channels of the dc serial controller device
160     should now work; playing around with keyboard scan
161     code generation when using the DECstation framebuffer.
162     Making various (speed) improvements to the framebuffer
163     device.
164     20031027 Playing around with the sii SCSI controller.
165     20031028 Minor fixes.
166     Adding an SGI emulation mode (-G), and some ARCBIOS
167     stuff, which SGIs seem to use.
168     Adding getbitmap() to the DEC prom emulation layer,
169     so some more -D x models become more usable.
170     Adding a dummy 'ssc' serial console device for
171     DECsystem 5400 emulation.
172     Playing around with TURBOchannel stuff.
173     20031030 Minor fixes.
174     Adding the sub instruction. (Not tested yet?)
175     Sign-extending the results of multu, addi,addiu,
176     add,addu,sub,subu,mfcZ.
177     Adding a colorplanemask device for DECstation 3100.
178     Fixed the NetBSD/pmax bug: I had forgotten to reset
179     asid_match to 0 between tlb entry checks. :-) Now
180     userland runs nicely...
181     20031031 Fixing more bugs: unaligned load/store could fail
182     because of an exception, but registers could be "half
183     updated". This has been fixed now. (As a result,
184     NetBSD/pmax can now run with any of r2000,r3000,r4000,
185     r4400, or r5000.)
186     Adding some R5K and R10000 stuff. (Note: R5K is NOT
187     R5000. Weird.)
188     Adding dummy serial console (scc) for MAXINE.
189     MAXINE also works with framebuffer, but there is no
190     color palette yet (only black and white output).
191     20031101 Moving code chunks around to increase performance by
192     a few percent.
193     The opcode statistics option (-s) now shows opcode
194     names, and not just numbers. :-)
195     Fixing the bug which caused NetBSD/pmax to refuse
196     input in serial console mode, but not in keyboard/
197     framebuffer mode: the osconsole environment variable
198     wasn't set correctly.
199     Adding DEC PROM getchar() call.
200     The transmitter scanner of the dc device now scans
201     all four channels at once, for each tick, so serial
202     output is (approximately) 4 times faster.
203     20031103 Adding a dummy BT459 vdac device, which does nothing
204     but allows a PMAG-BA turbochannel graphics card to be
205     used as framebuffer.
206     Several DECstation machines (-D 2, 3, and 4) can now
207     use TURBOchannel option card framebuffers as console,
208     for output. (Keyboard input is still not implemented
209     for those models.) Only PMAG-AA (1280x1024x8) and
210     PMAG-BA (1024x864x8), both using BT459 vdac, have
211     been tested so far.
212     Modifying the X11 routines so that several framebuffer
213     windows now can be used simultaneously (if several
214     graphics option cards are to be emulated concurrently).
215     20031104 DEC MIPSMATE 5100 (KN230) interrupts are shared
216     between devices. I've added an ugly hack to allow
217     that to work, which makes it possible to boot NetBSD
218     into userland with serial console.
219     20031106 Removing the -S (symbol) option, as symbol files can
220     now be given in any order together with other file
221     names to be loaded.
222     cookin tipped me about using (int64_t) (int32_t)
223     casts instead of manually sign-extending values.
224     Casting sometimes increases performance, sometimes
225     decreases. It's tricky.
226     Importing mips64emul into CVS.
227     20031107 Adding a generic ARC emulation mode.
228     Increasing performance of the framebuffer by not
229     updating it (or the XImage) if a write to the
230     framebuffer contains exactly what is already in it.
231     (This improves scrolling speed and initialization.)
232     Adding initial MIPS16 support.
233     Adding initial disk image support (-d command line
234     option), but this will not be used until I get some
235     kind of SCSI-controller emulation working.
236     20031108 Adding the first MIPS16 instructions: "move y,X",
237     "ld y,D(x)", and "daddiu S,K" (but the last one
238     doesn't work yet).
239     Fixing the console environment variable for
240     Enough of the 'asc' controller is now implemented
241     to let NetBSD get past scsi disk detection when
242     no disk images are used.
243     DECstation machine type 2; both serial console and
244     graphical console work now.
245     Other X-windows bit-depths than 24 bits work now,
246     but colors are still not correct in non-24 bit modes.
247     Keypresses in X framebuffer windows are now
248     translated into console keypresses. (Normal keys, but
249     not cursor keys or other special keys.)
250     20031111 Adding support for X11 using non-24-bit output.
251     20031120 Adding X11 mouse event to emulated mouse event
252     translation, but it's not tested yet.
253     Trying to get more of the SCSI controller emulation
254     to work.
255     20031124 Raw binaries can now be loaded into memory.
256     20031204 Adding srec binary support.
257     20031220 Adding some super-ugly arcbios emulation code.
258     Making some progress on the SGI and ARC machine
259     emulations.
260     20031222 SGI and ARC progress. Multiple CPUs are now added to
261     the arcbios component tree (although NetBSD cannot
262     actually use more than one).
263     20031228 Adding 'crime' and 'macepci' fake devices for SGI
264     emulation.
265     Finally implementing the cop0 'compare' register.
266     Improvements to the ns16550 device, but it is still
267     incomplete.
268     SGI userland is now reached, but interaction is broken
269     (due to the buggy ns16550).
270     20031229 Adding some more instructions: teq, dsllv
271     Adding a Nintendo 64 emulation mode (skeleton).
272     Adding R4300 and R12000 to the cpu list.
273     20031230 Adding bltzal, bltzall, bgezal, bgezall (not really
274     tested yet).
275     Fixing the 16550 serial controller device (by not
276     supporting fifo, so in fact it emulates a 16450
277     instead). This causes NetBSD/sgimips to run nicely
278     into userland, sysinst, and so on.
279     Some ARC/RD94 interrupts seem to work ok now, but
280     i/o interrupts are still not correctly implemented.
281     NetBSD/arc userland is reached and can be interacted
282     with, but there's no sysinst (?).
283     20040103 Trying to get some Irix stuff to work, but it's hard.
284     Fixing some Cobalt/linux problems.
285     20040104 Adding a dummy 8250 device, so that Linux/sgimips can output
286     console messages.
287     Adding dmultu. (The same as dmult, so I'm not sure it's correct.
288     Perhaps dmultu is correct and dmult is wrong...)
289     Fixing a bug in unaligned load/stores of 64-bit values (a cast
290     was needed).
291     Linux/sgimips in 64-bit works a bit more than before.
292     Adding simple (polled) input functionality to dev_zs.
293     Making some progress on SGI-IP22 (IP32 still works best,
294     though).
295     Fixing the mc146818 clock device in ARC/NEC and SGI emulation
296     modes, the year field was not correct.
297     Adding a fake 'pref' instruction (lwc3).
298     20040106 Separating out memory.h from misc.h.
299     Refactoring of a lot of small code fragments.
300     The PCI bus device is now shared between Cobalt, SGI, and ARC.
301     Support for RAM mirroring (dev_ram.c, not really tested yet).
302     Ugly hack to select the largest of ELF string symbol tables,
303     if there are more than one.
304     Memory hole fix for ARCBIOS, and a fix for very large (>= 4GB)
305     amounts of emulated RAM.
306     TGA (DEC 21030) PCI graphics device. NetBSD/arc can boot with
307     this card and use it as a framebuffer console.
308     20040107 Adding a fix (partly incorrect) to daddi, to allow Linux/sgimips
309     to boot in 64-bit mode.
310     20040108 Fixing a sll/nop bug (rd==0 for nop, not sa==0 as before).
311     20040109 Trying to get an SGI-IP32 PROM image to boot.
312     20040110 Faking R10000 cache things.
313     The PROM image boots, although it takes almost forever for it
314     to realize that there is no keyboard.
315     The 'gbe' SGI-IP32 graphics device works enough to display the
316     Linux framebuffer penguin in the upper left corner :-)
317     20040111 -p and -P addresses can now be given as symbol names, not just
318     numeric values.
319     Experimenting with adding a PCIIDE (dev_wdc) controller to the
320     Cobalt emulation.
321     20040120 Adding src/bintrans.c. No code yet, but this is a place for
322     ideas to be written down.
323     Increasing performance a little bit by inlining the check for
324     interrupts (which occurs for every instruction).
325     20040124 Experimenting with pure userland (syscall) emulation.
326     20040127 Fixes for compiling under Solaris.
327     20040206 Some bintrans experiments.
328     20040209 Adding some simple Ultrix userland emulation syscalls.
329     20040211 Adding decprom_dump_txt_to_bin.c to the experiments/ dir.
330     Adding a section to doc/ on how to use DECstation PROM dumps.
331     Adding a hello world example to doc/ as well.
332     20040218 TURBOchannel slots that are empty now return a DBE exception,
333     so that Ultrix and DECstation PROMs don't complain about
334     broken TURBOchannel ROMs.
335     Working some more on the machine-dependant interrupt stuff.
336     20040219 Trying out some Linux/DECstation kernels (semi-successfully).
337     20040222 YES! I finally found the bug that caused Linux/SGI-IP32 to only
338     work on Alpha, not on 32-bit machines. It was a shift left,
339     probably done using 6 bits on alpha, 5 bits on 32-bit machines.
340     20040223 Some minimal DEC KN5800 progress; Ultrix prints some boot
341     messages, detects 16 XMI R3000 cpus, and get a NULL panic.
342     It's all fake, though, the CPUs don't actually work.
343     Still, better than nothing :-)
344     20040225 An Ultrix OSF1 kernel with a ramdisk now boots :-) (It was
345     a problem with ultrixboot not giving the same arguments as
346     NetBSD's boot program.)
347     20040225(later) Fixing a bug in the DECstation dc serial device; digits 0-9
348     were translated to numeric keypad 0-9, not the normal 0-9.
349     (This caused Ultrix to print escape sequences instead of
350     digits.)
351     20040226 Some progress on machine-dependant interrupt delivery
352     for -D7 (Maxine) and -D4, and some more 'scc' serial
353     controller featuers are implemented (but no interrupts/
354     dma/keyboard/mouse stuff yet).
355     20040228 Progress on the scc controller; -D4 works in both serial
356     console mode and with keyboard (graphical console), but no
357     mouse yet.
358     20040301 SGI mace interrupts are now done using the new machine-
359     independant interrupt system.
360     20040303 Fixing an R5900 bug; the lowest 6 bits have special meaning
361     for coprocessor functions, not just 5 bits as on non-R5900
362     CPUs. (This fixes a bug which caused NetBSD to crash.)
363     20040304 Adding enough (fake) DMA capabilities to the ioasic device
364     to allow Ultrix to print boot messages in the -D3, -D4,
365     and -D7 modes, and also print graphical console messages
366     in -D4 and -D7 modes.
367     -D11 (DEC5500) polled getchar added (to the 'ssc' device).
368     Adding the 'madd' instruction (including R5900 weird stuff).
369     20040304(later) Playstation 2's GIF can now copy 640x16 pixel chunks, allowing
370     NetBSD to scroll up the framebuffer. The cursor also works
371     better now.
372     Playstation 2 bootinfo RTC data should now be passed correctly
373     to the running kernel.
374     DECstation rtc year should be either 72 or 73, anything else
375     will cause Ultrix to give a warning about invalid year.
376     20040306 Combining playstation2's dmac, interrupt, and timer devices
377     into one (ps2_stuff).
378     Adding some R5900 instructions: mfsa, mtsa, pmfhi, pmflo, por,
379     lq, and sq. (Most of them are just guesses, though.)
380     Implementing my own XImage putpixel routine, which can be
381     inlined... significantly faster than normal XPutPixel. :-)
382     20040307 Implementing the basic functionality of a "PMAG-CA" pixelstamp
383     accellerated framebuffer device. Works with NetBSD and
384     Ultrix, but no cursor or color support.
385     20040308 PMAG-CA, -DA, and -FA pixelstamps seem to work now.
386     Adding a hack to allow a pmax/mach kernel to be loaded (it's
387     a COFF file with 0 (!) sections).
388     Initial test of bt459 + framebuffer cursor support.
389     20040309 Fixes/updates of dev_dec5800 and dev_ssc (and dev_decxmi) allow
390     a KN5800 Ultrix-OSF1-ramdisk kernel to boot all the way into
391     userland and be interacted with.
392     The bt459 cursor should now look semi-nice, but it is still
393     a bit fake.
394     20040310 Moving the DEC CCA stuff from src/machine.c into a separate
395     device file (devices/dev_deccca.c).
396     An ugly hack added to allow some more OSF/1 kernels (almost
397     a.out, but without many of the header fields) to load.
398     20040314 Adding PMAG-JA and PMAG-RO (1280x1024 x 8-bit) TURBOchannel
399     graphics devices. They work in Ultrix, but only monochrome
400     and no cursor, because there are no ramdacs or such yet.
401     20040315 Pixelstamp solid fill now supports colors other than just
402     zero-fill.
403     Adding a (new) regression test skeleton.
404     20040321 Some really minor updates.
405     20040323 Fixes to allow SGI-IP20 and IP22 to work a bit better
406     (aliased memory), and adding "private" firmware-like vectors
407     to arcbios emul. An IP22 Irix kernel gets far enough to
408     print an assertion warning (and then double panics). :-)
409     20040324 Adding a generalization hack to the SCC serial controller
410     to work with SGI-IP19 (in addition to DECstations).
411     Adding the 'sdc1' instruction.
412     Some progress on various SGI emulation modes.
413     20040325 Minor updates.
414     20040326 Fixed a 'madd' bug (r5900). NetBSD/playstation2 now reaches
415     userland correctly. And a simple fix which allows NetBSD
416     timer interrupts to be triggered; NetBSD uses T_MODE_CMPE
417     (compare), while Linux uses _OVFE (overflow).
418     20040328 Linux on Playstation 2 boots a bit. The Playstation 2
419     graphics controller has been extended to work better with
420     NetBSD, and to include some Linux support as well.
421     Some interrupt handling enhancements on Playstation 2,
422     needed for Linux' dma.
423     128-bit loads and stores (lq and sq) are allowed, although
424     the top half of quadwords are not modified by other
425     instructions. (Linux uses lq and sq.)
426     Big-endian X Windows servers now display correct rgb color,
427     not bgr as before.
428     20040330 Some minor updates to the documentation.
429     20040401 Adding a dummy ps2 OHCI device.
430     20040402 Progress on the asc SCSI controller.
431     20040406 Hack to allow ./configure, make to work on HP-UX B.11.00
432     on HPPA-RISC, gcc 3.3.2. (Does not work with HP's cc.)
433     More progress on the asc SCSI controller. Fixing INQUIRY,
434     adding READ_CAPACITY, adding READ. Works a bit with NetBSD
435     and some (but not all) Ultrix kernels, on DECstation type 2.
436     Adding WRITE, SYNCRONIZE_CACHE.
437     Mounting disks works in NetBSD :-) It is a bit buggy,
438     though. Or something else is buggy.
439     20040407 The bug is triggered by gunzip during NetBSD/pmax install.
440     20040408 Fixing a bug (non-nul-terminated string) which caused X11
441     cursors to not display on Solaris.
442     Unnecessary X11 redraws are skipped (removes some weird
443     delays that existed before), and cursors are redrawn on
444     window exposure. (The cursor functionality has been moved
445     from dev_fb.c to x11.c.)
446     20040411 Fixing the DC7085 device so that Ultrix doesn't behave weird
447     if both tx and rx interrupts occur at the same time.
448     More advancements on the asc SCSI controller.
449     More disk image filename prefixes are now recognized; c (for
450     CD-ROM, as before), d for disk, b for boot device, r for
451     read-only, and 0-7 for scsi id.
452     Mounting disks works in Ultrix. Installing to disk usually
453     crashes for various reasons, but an OSF/1 install gets
454     relatively far (similar to the NetBSD/pmax install).
455     20040412 Trying to find the bug.
456     20040415 Finally found and fixed the bug; SCSI reads and writes
457     (actually, any data in or data out) can be split up into
458     multiple DMA transfers. That stuff was only partially
459     implemented, and the part that was implemented was buggy.
460     It works now. NetBSD/pmax and Ultrix 4.3 seems to like
461     the SCSI stuff enough to install almost all the way.
462     20040415 (more) Adding a hack which allows a host's cdrom device to be used as
463     a cdrom device inside the emulator, eg /dev/cd0c.
464     Making the cycle counter int64_t instead of long, as a 'long'
465     overflows too easily on 32-bit machines. (The bug is still
466     there, though.)
467     I've now verified that a full NetBSD/pmax install can be done.
468     If using a PMAG-AA graphics board, startx brings up X :-)
469     mips64emul can be compiled inside NetBSD inside mips64emul,
470     and it can run NetBSD in that environment. (I'm getting
471     dizzy... :-)
472     20040417 Moving some coprocessor stuff from cpu.c to coproc.c.
473     20040424 Adding a BT455 vdac for PMAG-AA. Black and white are now
474     rendered correctly in Xpmax.
475     Adding colormap support to the BT459 device, for PMAG-BA.
476     20040425 Fixing a buffer length bug, which caused an Ultrix 4.5
477     install to bug out on an i386 host.
478     20040429 FPU experiments.
479     20040502 More FPU experiments.
480     Speedup for exception debug messages: in quiet mode, debug
481     messages were still evaluated, which took a relatively
482     large amount of time.
483     20040503 Most FPU stuff fixed, but there is at least one known bug
484     left; ps axu in NetBSD triggers it (ps loops forever).
485     20040504 A default install of Ultrix 4.5 succeeded! It boots up with
486     a graphical login.
487     Fixing the keyboard repetition bug (a lk201 "up" (release)
488     scancode is now sent after every key).
489     20040505 Both CR and LF now produce the same lk201 scancode, so that
490     pressing 'enter' works as expected in Ultrix.
491     20040506 Adding a vaddr to paddr translation cache, causing a speedup
492     of perhaps 50% or more.
493     20040507 Fixing PMAG-BA color for Ultrix. (Ultrix relies on interrupts
494     coming from the TURBOchannel slot to update the palette.)
495     20040508 Fixing cursor positioning for PMAG-BA.
496     20040511 Prints current nr of instructions per seconds, not only
497     average, when using -N.
498     20040515 Some more bintrans experiments.
499     20040606 Adding ARCBIOS GetReadStatus() and Read().
500     Adding some instructions: tlt, tltu, tge, tgeu, tne.
501     20040607 Adding the dsub instruction.
502     Some minimal progress on SGI-IP30 emulation.
503     Applying a patch from Juli Mallett to src/file.c (I'm not
504     sure yet if it breaks or fixes anything).
505     Some minor fixes for SGI-IP22 (such as faked board revision
506     numbers).
507     20040608 ll/sc should now fail if any unrelated load/store occurs.
508     Minor changes to the configure script.
509     Adding some ifdefs around code which is not often used
510     (the mfhi/mflo delay, and the last_used TLB experimental
511     code); this might cause a tiny speedup.
512     20040609 Minor fixes.
513     20040610 Various minor SGI fixes (64-bit ARCS stuff, progress on the
514     CRIME/MACE interrupt system, and some other random things).
515     20040611 More crime/mace progress, and some more work on pckbc.
516     KN5800 progress: adding a XMI->BI adapter device; a disk
517     controller is detected (but it is just a dummy so far).
518     20040612 Adding "dev_unreadable", which simplifies making memory
519     areas unreadable. (NetBSD on SGI-IP22 no longer detects
520     non-existant hpc1 and hpc2 busses.)
521     Implementing rudimentary support for IP22 "local0" and
522     "local1" interrupts, and "mappable" local interrupts.
523     Some progress on the WDSC SCSI controller on IP22, enough
524     to let NetBSD get past the disk detection and enter
525     userland! :-)
526     The zs (zilog serial) device now works well enough to let
527     NetBSD/sgimips be interacted with on IP22. :-) (Though
528     it is very ugly and hardcoded.)
529     20040613 IP32 didn't work last night, because there were too many
530     tick functions registered. That has been increased now.
531     Trying out NetBSD/sgimips 2.0 beta kernels. There are some
532     differences compared to 1.6.2, which I'm trying to solve.
533     Interrupt fixes for IP32: _serial and _misc are different.
534     Separation of IP22 (Full-house) and IP24 (Guiness).
535     20040614 Modifying the memory layout for IP20,22,24,26 (RAM is now
536     offset by 128MB, leaving room for EISA registers and such),
537     and moving around some code chunks. This is not well
538     tested yet, but seems to work.
539     Moving parts of the tiny translation cache, as suggested
540     by Juli Mallett. It seems that the speedup isn't as
541     apparent as it was a few weeks ago, though. :-(
542     Speedups due to not translating addresses into symbol
543     names unless the symbol name is actually printed.
544     Added support for loading old big-endian (Irix) ECOFF
545     kernels (0x60 0x01 as the first two bytes).
546     20040615 (late) Adding enough SGI IP20 (Indigo) support to let NetBSD 2.0
547     enter userland :-) No interrupt specifics are implemented
548     yet, so it hangs while doing terminal output.
549     20040618 Experimenting with the WDSC SCSI controller for IP20,22,24.
550     20040620 Adding a program which converts SGI prom dumps from text
551     capture to binary, and some hacks to try to make such an
552     IP22 PROM to work better in the emulator.
553     20040621 Removing the Nintendo 64 emulation mode, as it is too
554     uninteresting to support.
555     Adding SCSI tape device support (read-only, so far).
556     Fixing a bug which caused the cursor to be corrupted if new
557     data was written to the framebuffer, but the cursor wasn't
558     moved.
559     20040622(early) Finally! Making progress on the SCSI tape stuff; when going
560     past the end of a file, automagically switch to the beginning
561     of the next.
562     20040622(late) Trying to track down the last SCSI tape bugs.
563     Removing _all_ dynamic binary translation code (bintrans),
564     starting from scratch again.
565     20040623(early) Performing a general code cleanup (comments, fixing stuff
566     that led to compiler warnings, ...).
567     Disabling MIPS16 support by default, and making it a
568     configure time option to enable it (--mips16). This gives
569     a few percent speed increase overall.
570     Increasing performance by assuming that instruction loads
571     (reading from memory) will be at the same page as the last
572     load. (Several percent speedup.)
573     Moving the list of kernels that can be found on the net from
574     README to doc/.
575     20040624 Finally! I found and fixed the bug which caused 'ps', 'top',
576     'xclock', and other programs in NetBSD/pmax to behave weird.
577     Increasing performance by a few percent by running as many
578     instructions in a row as possible, before checking for
579     hardware ticks.
580     When booting from SCSI tapes on DECstation, the bootstring
581     now contains 'tz' instead of 'rz'.
582     Adding a second ARC machine mode, "Acer PICA-61", -A2.
583     Disabling the support for "instruction delays" by default
584     (it has to be enabled manually in misc.h now, but is never
585     used anywhere anyway).
586     Other minor optimizations (moving around stuff in the
587     cpu struct in misc.h, and caching cpu->pc in cpu.c).
588     Separating the tiny translation cache into two, one for
589     code and one for data. This gives a few percent speed
590     increase.
591     20040625(early) I think now is a good time for a "feature freeze",
592     to let the code stabilize and then make some kind of
593     first release.
594     20040625(later) Adding a -v (verbose) command line option. If -v is not
595     specified, the emulator goes into -q (quiet) mode just before
596     it starts to execute MIPS code.
597     20040627 The configure script now adds -fomit-frame-pointer to the
598     compile flags if the $CC seems to be able to handle that.
599     Found and fixed a serious interrupt bug in BT459 (Ultrix'
600     behaviour required a hack, which was incorrect), so
601     performance for machines using the PMAG-BA framebuffer is
602     now improved.
603     For X11 bitdepths other than 8 or 24, a warning message
604     is printed at startup.
605     A number of other minor fixes, optimizations, updated
606     comments and so on.
607     Adding a BUGS file, a list of known bugs.
608     Adding a minimal man page, doc/mips64emul.1.
609     20040628 Hacks for faking the existance of a second level cache
610     (ARCBIOS and other places).
611     An important fix for dc7085: tx interrupts should happen
612     before rx interrupts, not the other way around as it was
613     before. (This speeds up NetBSD boot on DECstation, and
614     fixes a bug which Ultrix triggered on heavy keyboard input.)
615     A couple of other minor fixes.
616     Framebuffer fix: there was a bug which caused the rightmost/
617     bottom pixel to sometimes not be updated, when running in
618     scaledown mode. This is now fixed.
619     Adding a small program which removes "zero holes" from
620     harddisk image files.
621     20040629 More minor fixes.
622     20040629(later) Adding -A3 (NEC RISCstation 2200) (this is similar to
623     the 2250 model that NetBSD/arc can already boot all the
624     way into userland and be interacted with), and -A4
625     (Deskstation Tyne).
626     Some more minor fixes.
627     20040630 Adding support for 15 and 16 bits X11 framebuffers,
628     and converting from XYPixmap to ZPixmap (this fixes the
629     problem of updates appearing in "layers" on some X
630     servers).
631     The pixels in the mouse cursor (for BT459) are now colored
632     as the emulated OS sets them, although no transparency
633     masking is done on the edges of the cursor yet. (In plain
634     English: the mouse cursor is no longer just a white solid
635     square, you can actually see the mouse cursor image
636     on the white square.)
637    
638     ============== RELEASE 0.1 ==============
639    
640     20040701 The -j option now takes a name, the of the kernel as passed
641     on to the bootloader. ("netbsd" is the default name.)
642     Adding support to load bootstrap code directly from a disk
643     image, for DECstation. Both NetBSD/pmax and Ultrix boot
644     straight of a disk image now, with no need to supply a
645     kernel filename on the command line. (Ultrix still needs
646     -j vmunix, though, to boot from /vmunix instead of /netbsd.)
647     20040702 Minor bugfix (some new untested code for X11 keypresses was
648     incorrect).
649     20040702(later) Adding an ugly hack for CDROMs in FreeBSD; if an fread() isn't
650     done at a 2048-byte aligned offset, it will fail. The hack
651     tries to read at 2048-byte aligned offsets and move around
652     buffers to make it work.
653     Adding video off (screen blanking) support to BT459.
654    
655     ============== RELEASE 0.1.1 ==============
656    
657     20040702(later) Cleanup to remove compiler warnings (Compaq's cc, Solaris' cc,
658     and gcc 3.3.3/3.3.4 in Linux), mostly by putting ULL on large
659     numeric constants.
660     Better support for scaledown of BT459 cursors, but still not
661     color-averaging.
662     Beginning the work on adding better memory latency support
663     (instruction delays), enabled by the --delays configure option.
664     20040703 Modifications to the configure script so that a config.h file
665     is created, containing things that were passed along as
666     -Dxxx on each cc command line before.
667     More work on instruction latency support; trying to separate
668     the concepts of nr of cycles and nr of instructions.
669     20040704 Working on R2000/R3000 caches.
670     Adding a '--caches' option to the configure script.
671     Various small optimizations.
672     R3000 caches finally work. (I know that there is at least one
673     bug, regarding interrupt response.)
674     20040705 Working on the 'le' device, and on a generic (device
675     independant) networking framework. le can transmit and receive
676     packets, and the network framework fakes ARP responses from a
677     fake gateway machine (at a fixed ip address, 10.0.0.254).
678     Adding a '-c' command line option, which makes emulated_hz
679     automatically adjust itself to the current number of emulated
680     cycles per host CPU second (measured at regular intervals).
681     20040707 Removing the '-c' option again, and making it the default
682     behaviour of the emulator to automatically adjust clock
683     interrupts to runtime speed (as long as it is above 1 MHz).
684     (This can be overridden by specifying a static clock rate with
685     the -I option.)
686     Updating the doc/ stuff a bit.
687     Generalization of the DECstation bootblock loading, to work
688     with Sprite/pmax. Lots of other minor modifications to make
689     Sprite work, such as adding support for DECstation "jump table"
690     PROM functions, in addition to the old callback functions.
691     Sprite boots from a disk image, starting the kernel if the
692     argument "-j vmsprite" is used, but it seems to not like the
693     DBE exceptions caused by reading empty TURBOchannel slots. :-/
694     20040708 Minor changes and perhaps some tiny speed improvements.
695     The Lance chip is (apparently) supposed to set the length of
696     received packets to len+4. (I've not found this in any
697     documentation, but this is what NetBSD expects.) So now, ICMP
698     echo replies work :-) UDP works in the outgoing direction,
699     in the incoming direction, tcpdump can see the packets but they
700     seem to be ignored anyway. (Weird.)
701     Adding a separate virtual-address-to-host-page translation
702     cache, 1-entry for loads, 1-entry for stores. (For now, it
703     only works on R4000 as there are conflicts with cache usage
704     on R3000).
705     Changing the lower clock speed bound from 1 MHz to 1.5 MHz.
706     20040709 Incoming UDP checksums were wrong, but are now set to zero
707     and NetBSD inside the emulator now accepts the packets (eg.
708     nameserver responses). Host lookups and even tftp file
709     transfers (using UDP) work now :-)
710     Adding a section on Networking to the Technical documentation,
711     and a preliminary NetBSD/pmax install instruction for network
712     installs to the User documentation.
713     Some updates to the man page.
714     20040709(later) Fix to the TURBOchannel code to allow Sprite to get past the
715     card detection. Seems to still work with Ultrix and NetBSD.
716     This also makes Linux/DECstation properly recognize both the
717     Lance controller and the SCSI controller. Linux 2.4.26 from
718     Debian boots nicely in framebuffer mode :-)
719     20040710 Some bits in the KN02 CSR that were supposed to be readonly
720     weren't. That has been fixed, and this allows Linux/DECstation
721     to get past SCSI detection. :-)
722     Minor updates to the ASC controller, which makes Linux and
723     OpenBSD/pmax like the controller enough to be able to access
724     SCSI devices. OpenBSD/pmax boots from a disk image for the
725     first time. :-) Linux detects SCSI disks, but I have no
726     bootable Linux diskimage to test this with.
727     Updating the doc/ to include instructions on how to install
728     OpenBSD/pmax onto a disk image.
729     Naively added a PMAGB-BA (1280x1024x8) in hopes that it would
730     basically be a PMAG-BA (1024x864x8) in higher resolution,
731     but it didn't work that way. I'll have to look into this later.
732     Adding a -o option, useful for selecting '-s' (single user
733     mode) during OpenBSD install and other things.
734     After a lot of debugging, a serious bug related to the tiny
735     cache was found; Linux just changes the ASID and returns when
736     switching between processes in some occasions without actually
737     _writing_ to the TLB, and I had forgotten to invalidate the
738     tiny cache on such a change.
739     20040711(early) I've been trying to repeat the OpenBSD install from yesterday,
740     but appart from the first initial install (which was
741     successful), I've only been able to do one more. Several
742     attempts have failed with a filesystem panic in the middle
743     of install. I'm not sure why.
744     20040711 I found the "bug": wget downloaded the simpleroot28.fs.gz file
745     as read-only, and gunzip preserved those flags. Thus, OpenBSD's
746     installer crashed as it didn't get its writes through to the
747     disk.
748     Parts of the 1280x1024x8 PMAGB-BA graphics card has been
749     implemented, it works (unaccelerated) in NetBSD and OpenBSD,
750     but Ultrix does not seem to like it.
751     Cleaned up the BT459 cursor offset stuff a bit.
752     Trying to make the emulated mouse coordinates follow the host's
753     mouse' coordinates (for lk201, DECstation), by
754     "de-accelerating" the data sent to the emulated OS.
755     20040711(later) Fix so that Sprite detects the PMAG-BA correctly.
756     Adding some stuff about NFS via UDP to the documentation.
757     Fixed the 'update flag' for seconds, so now Sprite doesn't
758     crash because of timer-related issues anymore.
759     Fixing KN02 interrupt masks a bit more, to make Sprite not
760     crash. Sprite now runs quite well.
761     20040712 Working on IP/UDP fragementation issues. Incoming UDP packets
762     from the outside world can now be broken up into fragments
763     for the guest OS. (This allows, for example, OpenBSD/pmax to
764     be installed via nfs.) Outgoing fragmented packets are NOT
765     yet handled.
766     Linux doesn't use 64-bit file offsets by default, which is
767     needed when using large disk images (more than 2GB), so the
768     configure script has now been modified to add necessary
769     compiler flags for Linux.
770     20040713 Trying out some minor optimizations.
771     Refreshing the UDP implementation in src/net.c a little.
772     20040714 Updating the documentation a little on how to experiment
773     with a Debian Linux install kernel for DECstations.
774     A 'mini.iso' Linux image for DECstation has different fields
775     at offsets 0x10 and 0x14, so I'm guessing that the first is
776     the load address and the second is the initial PC value.
777     Hopefully this doesn't break anything.
778     Some initial TCP hacks, but not much is working yet.
779     Some updates for IP30: The load/store 1-entry cache didn't
780     work too well with IP30 memory, so it's only turned on for
781     "MMU4K" now. (This needs to be fixed some better way.)
782     Adding a hack which allows Linux/Octane to use ARC write()
783     and getchild() on IP30. Linux uses ARCBIOS_SPB_SIGNATURE as a
784     64-bit field, it was 32-bit before.
785     Making ugly hacks to the arcbios emulation to semi-support
786     64-bit equivalents of 32-bit structures.
787     20040716 Minor fixes to the configure script (and a few other places)
788     to make the sources compile out-of-the-box on HP-UX (ia64
789     and HPPA), old OpenBSD/pmax (inside the emulator itself), and
790     Tru64 (OSF/1) on Alpha.
791     A couple of other minor fixes.
792     20040717 A little TCP progress; OpenBSD/pmax likes my SYN+ACK replies,
793     and tries to send out data, but NetBSD/pmax just drops the
794     SYN+ACK packets.
795     Trial-and-error led me to change the 64-bit ARCS component
796     struct again (Linux/IP30 likes it now). I'm not sure about all
797     of the offsets yet, but some things seem to work.
798     More 64-bit ARCS updates (memory descriptors etc).
799     Better memory offset fix for IP30, similar to how I did it for
800     IP22 etc. (Hopefully this doesn't break anything else.)
801     Adding a MardiGras graphics controller skeleton for SGI-IP30
802     (dev_sgi_mardigras.c).
803     Thanks to Stanislaw Skowronek for dual-licensing mgras.h.
804     Finally rewrote get_symbol_name() to O(log n) instead of O(n)
805     (Stanislaw's Linux kernel had so many symbols that tracing
806     with the old get_symbol_name() was unbareably slow).
807     Removing all of the experimental tlbmod tag optimization code
808     (the 1-entry load/store cache), as it causes more trouble than
809     the performance gain was worth.
810     20040718 The MardiGras device works well enough to let Linux draw the
811     SGI logo and output text.
812     A bunch of other minor changes.
813     20040719 Trying to move out all of the instruction_trace stuff from the
814     main cpu loop (for two reasons: a little performance gain,
815     and to make it easier to add a GUI later on).
816     20040720 Finally found and fixed the ethernet/tcp bug. The hardware
817     address is comprised of 6 bytes, where the _first_ byte should
818     have a zero as the lowest bit, not the last byte. (This causes
819     NetBSD and Linux running in the emulator to accept my SYN+ACK
820     packets.)
821     Getting the first nameserver address from /etc/resolv.conf.
822     (This is not used yet, but could be useful if/when I add
823     internal DHCP support.)
824     Working more on the TCP stuff; TCP seems to be almost working,
825     the only immediate problem left is that the guest OS gets
826     stuck in the closing and last-ack states, when it shouldn't.
827     It is now possible to install NetBSD and OpenBSD via ftp. :-)
828     20040721 Trying to fix the last-ack bug, by sending an RST after the
829     end of a connection. (Probably not a correct fix, but seems
830     to work?)
831     Adding a my_fseek() function, which works like fseek() but
832     with off_t instead of long, so that large disk images can
833     be used on systems where long is 32 bits.
834     20040722 Trying to fix some more TCP related bugs.
835     20040725 Changing the inlined asm statement in bintrans_alpha.c into
836     a call to a hardcoded array of bytes that do the same thing
837     (an instruction cache invalidation). This allows the same
838     invalidation code to be used regardless of compiler.
839     Some other minor changes.
840     20040726 Minor updates. The configure script is now more verbose.
841     A Debian/IP22 Linux tftp boot kernel requires ARCS memory to
842     be FreeMemory, not FreeContiguous. (This should still work with
843     other SGI and ARC OSes.)
844     Fix for ARCS write(), so it returns good write count and
845     success result (0).
846     Some hacks to the IP22 memory controller, to fake 72MB RAM
847     in bank 0.
848     The IP22 Debian kernel reaches userland (ramdisk) when run
849     with -G24 -M72 -CR4400, if a special hack is done to the
850     zs device.
851     20040730 Removing mgras.h, as I'm not sure a file dual-licensed this way
852     would work. (Dual-licensing as two separate files would work
853     though.)
854     Preparing for the upcoming release (0.2).
855     20040801 Fixing the 512 vs 2048 cdrom sector size bug; I hadn't
856     implemented the mode select SCSI command. (It still isn't
857     really implemented.)
858     A bug which crashes the emulator is triggered when run with
859     new NetBSD 2.0_BETA snapshots on a Linux/i386 host. I'm not
860     sure why.
861     UDP packets sent to the gateway (at 10.0.0.254) are now
862     forwarded to the machine that the host uses as its nameserver.
863     Some other minor fixes.
864    
865     ============== RELEASE 0.2 ==============
866    
867     20040803 A post-3.5 OpenBSD/sgimips kernel snapshot with ramdisk seems
868     to boot fine in the emulator, all the way to userland, and
869     can be interacted with.
870     Adding a -y option, used to set how many (random) instructions
871     to run from each CPU at max (useful for SMP instruction
872     interleave experiments).
873     Importing a 8x16 console font from FreeBSD (vt220l.816).
874     Adding a skeleton for a 80x25 text console device (dev_vga),
875     useful for some ARC modes. (Character output is possible, but
876     no cursor yet.)
877     Adding a dev_zero device (returns zeroes on read).
878     OpenBSD/arc 2.3 can get all the way to userland with -A4 (if
879     the wdc devices are commented out) but bugs out there, probably
880     because of interrupt issues.
881     Adding a -A5 ARC emulation mode (Microsoft-Jazz, "MIPS Magnum")
882     which NetBSD seems to like. No interrupt specifics yet, so
883     it hangs while waiting for SCSI.
884     20040804 Some dev_mp updates.
885     The -y switch has to do with number of cycles, not number
886     of instructions; variable names have been changed to reflect
887     this.
888     20040805 Minor updates. Adding some more CPU types/names, but they
889     are probably bogus.
890     Adding a MeshCube emulation mode. Just a skeleton so far, but
891     enough to let a Linux kernel print some boot messages.
892     Adding the 'deret' instruction.
893     20040806 Adding include/impactsr-bsd.h (a newer version of what was in
894     mgras.h before, and this time with only a BSD-style license),
895     but it is not used yet.
896     20040810 Some Au1500 updates.
897     20040811 Adding the 'clz', 'clo', 'dclz', and 'dclo' special2 (MIPS32
898     and MIPS64) instructions.
899     More Au1500 updates.
900     20040812 Using fseeko(), when it is available.
901     Other minor updates.
902     Adding a NetGear WG602 emulation mode skeleton (-g); after
903     a lot of trial and error, a Linux kernel (WG602_V1715.img)
904     gets all the way to userland, but hangs there.
905     20040818 Adding signal handlers to better cope with CTRL-Z and CTRL-C.
906     Adding a simple interactive single-step debugger which is
907     activated by CTRL-C. (Commands so far: continue, dump, help,
908     itrace, quit, registers, step, trace, version)
909     20040818(later) Adding a 'tlbdump' debugger command, and some other minor
910     fixes.
911     20040819 Minor updates. Adding an 'unassemble' debugger command.
912     20040822 Minor updates to the regression testing framework.
913     20040824 Minor updates based on feedback from Alec Voropay
914     (configure script updates for Cygwin and documentation).
915     20040826 Minor updates.
916     Adding a cursor to the VGA text console device.
917     Changing all old 11:22:..55:66 ethernet macs to 10:20..60,
918     still hardcoded though.
919     20040828 Minor updates.
920     20040829 mips64emul is 1 year old today :-)
921     20040901 tests/README now lists "all" MIPS opcodes. This list should
922     be updated whenever a new opcode is implemented, or when a
923     regression test is added. (A combination of instructions from
924     the TX79 manual, the GNU assembler, and the MIPS64 manual).
925     Hopefully I haven't missed too many.
926     Adding a section on regression testing to doc/technical.html.
927     20040902 Finally beginning the work on separating out the stuff from
928     main.c into a "struct emul". Very time-consuming.
929     Some minor fixes for LL/SC on R10000.
930     20040905 Moving more stuff from main.c into struct emul. Unfortunately,
931     it seems that this causes a slowdown of the emulator.
932     Userland emulation is now only used if --userland is used
933     when running configure.
934     Modifying src/symbol.c to not use global variables.
935     20040906 Minor update.
936     20040914 Using $COPTIM when detecting which compiler flags to use in
937     the configure script. (This makes sure that combinations of
938     flags should work.)
939     There'll probably be a 0.2.1 release some time soon, but I'll
940     do some more clean-up first.
941     Minor update to the detection of ECOFF files, but I don't like
942     it; sometimes the endianness of the magic value seems to be
943     swapped, but it doesn't have to do with endianness of the
944     actual data?
945     20040916 Minor updates. Adding an Example section to the manpage, but
946     as I'm not really familiar with manpage formatting, it will
947     need to be rewritten later.
948     20040917 Finally making the coprocessor instructions disassemblable
949     even when not running.
950     Doing some testing for the 0.2.1 release.
951    
952     ============== RELEASE 0.2.1 ==============
953    
954     20040923 Updating the documentation about how to (try to) install
955     Debian GNU/Linux.
956     20040924 Some more updates to the documentation.
957     20040925 Adding overflow stuff to 'add' and 'sub'.
958     20040926 Minor updates: possibly a fix to 'sltiu' (the imm value
959     should be treated as signed, and then converted to unsigned,
960     according to the MIPS64 manual), and removing the
961     'last_was_rfe' stuff (again).
962     OpenBSD/arc used speed-hack jumps with other deltas than just
963     +/- 1 (it used -3 iirc), so the jump speedhack should now
964     support any delta. Also adding bgtzl and blezl as possible
965     instructions for the speed-hack jumps. (This needs to be
966     tested more.)
967     20040928 Minor updates. Some ARC stuff ("arcdiag" runs now).
968     cpu_register_dump() now also dumps coprocessor registers.
969     20040929 More ARC updates. Making the code look a tiny bit nicer
970     than before. "arcdiag.ip22" works for -G22 (SGI-IP22).
971     Apparently the overflow support in the 'add' instruction
972     was incorrect, so I disabled it.
973     20041002 Trying to install Ultrix in the emulator, but the installer
974     crashes; found (and fixed) the bug rather quickly: the "fix"
975     I implemented a few days ago for the 'sub' instruction
976     (according to the MIPS64 manual) caused the bug.
977     20041004 Changing the behaviour of the -j command line option. The
978     default is now "" (or taken from the last filename given on
979     the command line), not "netbsd". In practice, this doesn't
980     change much, except that -j netbsd.pmax is no longer needed
981     when installing NetBSD.
982     Adding a COMPILE_DATE string to config.h.
983     20041007 Adding a NEC RISCserver 4200 model (-A6), and some more
984     updates to the ARC component tree generator.
985     20041008 The 'll' instruction should be signed, not unsigned as before.
986     This (and some other minor fixes) causes Irix on SGI-IP32 (O2)
987     to actually boot far enough to print its first boot messages :)
988     Working on some new dynamic bintrans code. Enough is now
989     implemented so that the 'nop' instruction is translated
990     and there is support for Alpha, i386 and UltraSparc backends,
991     but performance is about 50% worse than when running without
992     bintrans. (This is as expected, though.)
993     20041009 Minor updates to the documentation.
994     Using mprotect() to make sure that the code created dynamically
995     by the bintrans subsystem is allowed to be executed. (This
996     affects newer OpenBSD systems, and possibly others.)
997     The translated code chunks now only get one argument passed to
998     them, the (struct cpu *) of the current cpu.
999     20041010 Hack to dev_le.c which makes Ultrix accept the initialization
1000     of the LANCE controller. (This goes against the LANCE
1001     documentation though.)
1002     In src/net.c, a fix for Ultrix (which seems to send larger
1003     ethernet packets than the actual TCP/IP contents). The hack to
1004     dev_le.c and this fix is enough to let Ultrix access the
1005     Internet.
1006     For DECstation, when booting without a disk image (or when
1007     "-O" is used on the command line), use "tftp" instead of "rzX"
1008     for the boot string.
1009     20041011 Adding cache size variables to the emul struct, so that these
1010     can be set on a per-machine basis (or potentially manually
1011     on the command line).
1012     20041012 Mach/PMAX now passes the LK201 keyboard self-test (although
1013     the keyboard ID is still bogus).
1014     20041013 Minor updates.
1015     Hacks to the ASC SCSI controller for Mach/PMAX, hopefully this
1016     will not break support for other OSes.
1017     20041014 Minor fix to src/emul.c for reading bootblocks at the end of
1018     a disk or cdrom image (thanks to Alexandru Lazar for making me
1019     aware of this).
1020     Adding "gets()" to src/dec_prom.c.
1021     Working a bit on ARC stuff. Importing pica.h from NetBSD.
1022     Minor updates to the ARC component tree for PICA-61.
1023     Adding a dev_jazz.c (mostly for PICA-61).
1024     Renaming dev_jazz.c into dev_pica.c. Working on PICA timer
1025     and interrupt specifics.
1026     20041016 Adding some dummy entries to lk201.c to reduce debug output.
1027     Some bintrans updates (don't run in delay slots or nullified
1028     slots, read directly from host memory and not via memory_rw(),
1029     try mmap() before malloc() at startup, and many other minor
1030     updates).
1031     Adding bintrans_mips.c for 64-bit MIPS hosts, but it is not
1032     used yet.
1033     20041017 Minor updates.
1034     20041018 Update to dev_mc146818 to allow Mach to boot a bit further.
1035     The "hardware random" in dev_mp.c now returns up to 64 bits
1036     of random.
1037     20041019 Minor updates to the way cache sizes are used throughout the
1038     code. Should be mostly ok for R[234]x00.
1039     src/file.c now loads files using NO_EXCEPTIONS. Whether this
1040     is good or bad, I'm not sure.
1041     20041020 Adding a Linksys WRT54G emulation skeleton (-H).
1042     20041021 Minor updates.
1043     R1[024]000 cache size bits in the config register should now
1044     be ok.
1045     Trying to make dev_asc.c work better with PICA.
1046     More work on PICA interrupts (but they are broken now).
1047     20041022 Generalizing the dev_vga text console device so that it can be
1048     used in other resolutions than just 80x25. Works with
1049     OpenBSD/arc.
1050     emul->boot_string_argument is now empty by default (except
1051     for DECstation modes, where it is "-a").
1052     Speedup of dev_ram by using mmap() instead of malloc().
1053     Using mmap() in memory.c as well, which reduces memory usage
1054     when emulating large memory sizes if the memory isn't actually
1055     written to.
1056     20041023 Minor updates.
1057     20041024 Updates to the PC-style keyboard controller, used by PICA.
1058     Updates to the PICA (Jazz) interrupt system. Both NetBSD/arc
1059     and OpenBSD/arc now reach userland with PICA emulation, and
1060     can be interacted with (there are a few programs on the
1061     INSTALL kernel ramdisks). In the case of OpenBSD, a VGA text
1062     console and PC-style keyboard controller is used, NetBSD
1063     runs on serial console.
1064     Adding a framework for DMA transfer for the ASC SCSI
1065     controller.
1066     Implementing a R4030 DMA controller for PICA, enough to let
1067     OpenBSD/arc and NetBSD/arc be installed on an emulated
1068     Pica. :-)
1069     Updates to the documentation.
1070     20041025 Working on ISA interrupts for PICA.
1071     Adding an Olivetti M700 emulation mode (-A7).
1072     Better separation of PICA and M700 stuff (which I accidentally
1073     mixed up before, I thought the M700 Linux kernel would
1074     also work on PICA because it almost booted).
1075     Writing a skeleton G364 framebuffer for M700, enough to show
1076     the Linux penguin and some text, although scrolling isn't
1077     correctly implemented yet.
1078     Adding a dummy SONIC (ethernet) device, dev_sn, for PICA.
1079     Fixing the passing of OSLOADOPTIONS for ARC, the default is
1080     now "-aN" which works fine with OpenBSD/arc and NetBSD/arc.
1081     20041027 Minor updates.
1082     20041029 Adding a Sony NeWS "newsmips" emulation mode skeleton (-f).
1083     Found and fixed a bug which prevented Linux/IP32 from running
1084     (the speed-hack-jump-optimization fix I made a few weeks ago
1085     was buggy).
1086     Adding the trunc.w.fmt and trunc.l.fmt instructions, although
1087     the are probably not really tested yet.
1088     Changes to how floating point values are handled in
1089     src/coproc.c, but right now it is probably very unstable.
1090     20041101 I had accidentally removed the instructions on how to install
1091     Ultrix from doc/index.html. They are back now.
1092     Adding a -Z option, which makes it easier to run dual- or
1093     tripple-head with Ultrix. (Default nr of graphics cards
1094     without -X is 0, with -X is 1.)
1095     Minor update which makes it possible to switch to the left
1096     monitor when running tripple-head, not just right as before.
1097     When using more than one framebuffer window, and the host's
1098     mouse cursor is in a different window than the emulated mouse
1099     cursor, the emulated mouse will now try to move "very far",
1100     so that it in practice changes screen.
1101     Running Ultrix with dual- and tripple-head now feels really
1102     great.
1103     20041101(later) OpenBSD/arc and Linux/Olivetti-M700 don't both work at the
1104     same time with the speed-hack stuff. So, from now on, you
1105     need to add -J for Linux, and add nothing for openbsd.
1106     20041102 Minor update for OSF/1 V4.0 (include sys/time.h in src/net.c
1107     and add -D_POSIX_PII_SOCKET to the C compiler flags).
1108     20041103 Minor updates for the release.
1109     For some reason, Mach/PMAX caused the emulator to bug out on
1110     SunOS/sparc64 (compiled in 64-bit mode); a minor update/hack
1111     to dev_asc fixed this.
1112    
1113     ============== RELEASE 0.2.2 ==============
1114    
1115     20041103 Minor updates.
1116     20041104 Minor updates.
1117     20041105 Running with different framebuffer windows on different X11
1118     displays works now (even with different bit depths and
1119     endiannesses on different displays). A new command line option
1120     (-z) adds DISPLAYs that should be used.
1121     Update regarding how DECstation BT459 cursors are used;
1122     transparency :-) and some other bug fixes.
1123     20041106 More bt459 updates. The cursor color seems to be correct for
1124     NetBSD, OpenBSD, Ultrix, and Sprite.
1125     Some minor bintrans updates (redesigning some things).
1126     20041107 More bintrans updates (probably broken for non-Alpha targets).
1127     Moving doc/mips64emul.1 to man/.
1128     20041108 Some updates.
1129     20041109 More updates. Bintrans experiments mostly.
1130     20041110 Some minor bintrans updates.
1131     20041111 Minor updates.
1132     20041112 A little rewrite of the bintrans system (again :-), this time
1133     a lot more naïve and non-optimizing, in order to support delay
1134     slots in a much simpler way.
1135     Ultrix 4.5 boots into a usable desktop on my home machine in
1136     3min 28sec, compared to 6-8 minutes without bintrans.
1137     20041113 Some minor bintrans updates.
1138     20041114 More bintrans updates. Ultrix now boots in exactly 3 minutes
1139     on my home machine.
1140     20041115 More bintrans updates.
1141     20041116 Bintrans updates.
1142     20041117 Working on dev_dec_ioasic and related issues.
1143     Adding support for letting translated code access devices in
1144     some cases (such as framebuffers).
1145     20041118 Moving some MIPS registers into Alpha registers, which gives
1146     a speed improvement.
1147     Beginning to write an i386 bintrans backend. Skeleton stuff
1148     works, lui, jr/jalr, addiu/daddiu/andi/ori/xori, j/jal,
1149     addu/daddu/subu/xor/or/nor/and.
1150     20041119 dsubu/sll/srl/sra, rfe,mfc0,dmfc0, beq,bne, delayed branches.
1151     Some load/store (but not for bigendian emulation yet.)
1152     Time to reach Ultrix 4.5's graphical login on a 2.8 GHz Xeon
1153     host is now down to 20 seconds!
1154     Adding bgez, bltz, bgtz, and blez to the i386 backend.
1155     20041120 Minor updates (bintrans related mostly).
1156     Time to reach Ultrix login on the Xeon is now 11 seconds.
1157     Adding 'mult', 'multu' and a some parts of mtc0 to the Alpha
1158     backend.
1159     The transparency updates to the X11 cursor support made the
1160     OpenBSD/arc cursor disappear; that has been fixed now.
1161     Unfortunately, something with Acer Pica emulation is broken
1162     when bintrans is enabled.
1163     20041121 Making tlbwr, tlbwi, tlbp, tlbr callable directly from
1164     translated code.
1165     Adding sltiu, slti, slt, and sltu to the i386 backend.
1166     20041122 More bintrans updates.
1167     With the Alpha backend, the status and entryhi registers
1168     can (in some cases) be written without exiting to the main
1169     loop. Ultrix boot time until a usable desktop is reached
1170     is about 1 min 35 seconds on the 533 MHz pca56.
1171     Adding srlv, srav, and sllv to the i386 backend.
1172     20041123 Removing the special handling of high physical addresses for
1173     DECstation emulation from the main memory handling code, and
1174     replacing it with a mirror device instead. (This results in
1175     a tiny increase in performance, and cleaner code.)
1176     Various minor updates.
1177     20041124 Ripping out _all_ bintrans load/store code, because I have
1178     a new idea I'd like to try out.
1179     A total rewrite of the load/store system. It works when
1180     emulating 32-bit MIPS, but not for 64-bit code yet.
1181     Some minor updates to the dev_fb, but no speed improvement.
1182     Making the 'le' ethernet device' SRAM work with bintrans.
1183     20041125 Various updates.
1184     Adding a little "bootup logo" to the framebuffer.
1185     There is now one translate_address() for R3000-style MMUs,
1186     and one for the other types. (This gives a tiny speed
1187     improvement.)
1188     20041126 Minor updates, bintrans.
1189     Fixing the bug which caused OpenBSD/arc (R4000) to bug out;
1190     it was introduced between the 7:th and 10:th of November
1191     when moving up the check for interrupts to above the code
1192     which runs bintrans code, in src/cpu.c.
1193     Adding movn and movz to the Alpha bintrans backend.
1194     20041127 Various minor updates.
1195     20041128 Making the R2000/R3000 caches work with bintrans, even in
1196     isolated mode. (Not true cache emulation, but it works with
1197     NetBSD/pmax, OpenBSD/pmax, and Ultrix.)
1198     Making the default cache size for R3000 4KB instr, 4 KB data;
1199     a real R3000 could have 64KB each, but emulated OSes run
1200     faster when they think the cache is smaller :-)
1201     Updates to the i386 backend: the nr of executed instructions
1202     is now placed in ebp at all times, and some support for
1203     mtc0 similar to how it is done in the Alpha backend has been
1204     added. A full NetBSD/pmax 1.6.2 install can now be done in
1205     5 minutes 35 seconds, on a 2.8 GHz Xeon host (with -bD2 -M20).
1206     Adding mult and multu to the i386 bintrans backend.
1207     Reducing the number of malloc/free calls used by the
1208     diskimage subsystem.
1209     20041129 Minor updates to the Alpha bintrans backend.
1210     20041130 Trying to fix the bug which prevents Linux from working
1211     with bintrans. It _seems_ to work now. (Pages could in some
1212     cases be written to after they were translated, but that
1213     has been fixed now.)
1214     A couple of other minor fixes.
1215     Minor updates to the Alpha backend (directly using Alpha
1216     registers in some cases, instead of loading into temporaries).
1217     Updates to the i386 backend (special hacks for 32-bit
1218     MIPS emulation, which are fast on i386, for example only
1219     updating half of the pc register).
1220     20041201 More updates to the i386 backend, similar to those yesterday.
1221     Preparing for release 0.2.3.
1222     Adding a generic load/store mechanism, which is used when the
1223     32-bit optimized version cannot be used (for R4000 etc).
1224    
1225     ============== RELEASE 0.2.3 ==============
1226    
1227     20041202 If ALWAYS_SIGNEXTEND_32 is defined in misc.h, and an
1228     incorrectly extended register is detected, the emulator now
1229     exits instead of continues.
1230     Removing the LAST_USED_TLB_EXPERIMENT stuff.
1231     Minor updates to work better with Windows NT's ARCINST.EXE;
1232     printing 0x9b via arcbios becomes ESC + '[', and the ARC
1233     memory descriptor stuff has been generalized a bit more.
1234     Adding arbios hacks for Open(), Seek(), GetRelativeTime(),
1235     and Read() to allow WinNT's SETUPLDR to read the filesystem
1236     on the diskimage used for booting.
1237     20041203 Adding a terminal emulation layer which converts arcbios
1238     stdout writes to "VGA text console" cell characters. Seems
1239     to work with Windows NT and arcdiag.
1240     Adding a 8x8 font to dev_vga.
1241     Adding more ARC components to the component tree (for PICA
1242     emulation).
1243     20041204 Minor updates.
1244     More updates to dev_vga. Adding a 8x10 font.
1245     Adding a hack so that the framebuffer logo is visible at
1246     startup with dev_vga. (It disappears at the first scroll.)
1247     A minor fix for a bug which was triggered when running
1248     dual- or tripple-head, on 2 or 3 actual X11 displays.
1249     20041205 Fixing a bintrans bug.
1250     Some other minor updates (some of them bintrans related).
1251     20041206 Moving the web page to http://gavare.se.
1252     Adding a hack for mmap() which supports anonymous mapping
1253     using /dev/zero, but not using MAP_ANON{,YMOUS}.
1254     Separating out opcodes.h, cop0.h, and cpu_types.h from misc.h.
1255     20041207 Minor bintrans update. (In some cases, it isn't necessary
1256     to return to the main loop, when translating from a new page.)
1257     Some other minor i386 bintrans backend optimizations.
1258     And some other minor updates.
1259     i386 backend update: the lowest 32 bits of the pc register
1260     are now placed in an i386 register.
1261     20041208 Adding GetConfigurationData() and some support for config
1262     data, to src/arcbios.c.
1263     Adding a bogus 0xbd SCSI command (used by Windows NT). It is
1264     not listed in http://www.danbbs.dk/~dino/SCSI/SCSI2-D.html.
1265     If the framebuffer cursor contains more than 1 color, then
1266     the host's X11 cursor disappears. (Nice for DECstation
1267     emulation with emulated X.)
1268     For ARC and SGI emulation, if an exception occurs before an
1269     exception handler is installed, the emulator now exits
1270     nicely (as suggested by Alec Voropay).
1271     A couple of minor updates to the ARCBIOS emulation subsystem.
1272     The single step debugger is now automatically entered when
1273     all CPUs have stopped running, unless there was a clean
1274     shutdown of some kind (PROM halt() call, or similar).
1275     Adding a -V option for starting up in a paused state, into
1276     the single-step debugger.
1277     Adding a note about 'mmon' to the documentation
1278     (http://www.brouhaha.com/~eric/software/mmon/).
1279     20041209 Fixes to devices/console.c which makes cursor keys and such
1280     a bit more reliable.
1281     ARCBIOS hack/update which creates memory descriptors _after_
1282     loading the executable. (Seems to work with OpenBSD/arc,
1283     NetBSD/arc, arcdiag, IRIX, NetBSD/sgimips, OpenBSD/sgi, and
1284     some Windows NT executables.)
1285     ARCBIOS support for cursor keys (ESC + '[' ==> 0x9b).
1286     A bintrans update (for 32-bit emulation) which speeds up
1287     jumps between pages, if code is already translated.
1288     Changing the default bintrans cache from 20 to 24 MB.
1289     20041210 Optimizing unaligned load/stores a little bit in src/cpu.c.
1290     Omiting the check for nr of executed bintrans instructions
1291     on some forward jumps.
1292     Adding the 'syscall' and 'break' instructions to the
1293     bintrans backends.
1294     Allowing more bits of the status register to be written to
1295     from within inside translated code, on R3000.
1296     Getting rid of the final pixel when hiding the host's mouse
1297     cursor.
1298     store_buf() now copies data 8 or 4 bytes at a time, when
1299     possible. (This speeds up emulated ROM disk reads, etc.)
1300     Tiny bug fix: coprocessor unusable exceptions are now also
1301     generated (for coproc 1..3) even when in kernel mode, if the
1302     coprocessors are not enabled. This allows a Debian installation
1303     to proceed further than before. (It's still very unstable,
1304     though.)
1305     20041212 Updating doc/index.html with better Debian installation
1306     instructions.
1307     If SLOWSERIALINTERRUPTS is defined at compile time, interrupts
1308     from the dc7085 device will not come as often as they normally
1309     do. This makes Debian seem more stable.
1310     Decreasing the bintrans cache to 20 MB again.
1311     Updating some files in preparation for a 0.2.4 release.
1312     20041213 Updating the docs on how to install NetBSD 2.0/pmax, and also
1313     some updates to the section on installing Debian.
1314     32-bit bintrans backend optimization: don't inline large
1315     chunks of code, such as general jumps.
1316     20041214 Minor fix for coproc unusable for R4000 (it's the PC that,
1317     matters, not the KSU bits).
1318     Separating out the debugger from emul.c into debugger.c.
1319     Rewriting parts of the debugger.
1320     Removing the -U command line option, as it wasn't really
1321     useful. Also removing the -P option.
1322     Renaming all instances of dumppoint to breakpoint, as that
1323     is what it really is.
1324     When a breakpoint is reached, the single-step debugger is
1325     entered, instead of just turning on instruction trace.
1326     Adding a 'breakpoints' debugger command.
1327     Better fix for coproc unusable on R4000: the KSU bits matter,
1328     but the ERL and EXL bits override that.
1329     Fix which allows Debian to boot directly from a disk image
1330     (with DELO). (It reads multiple separate areas from disk.)
1331     Update to the SLOWSERIALINTERRUPTS stuff, making it even
1332     slower.
1333     Fixes based on feedback from Alec Voropay (-Q with ARC
1334     emulation skips the setup of arcbios data structures in
1335     memory, and no sign-extension _after_ writing a 32-bit
1336     value to a 64-bit coproc 0 register).
1337     Adding a 'devices' command to the debugger.
1338     The 'registers' and 'tlbdump' commands now take an optional
1339     argument (a cpu id).
1340     Adding rudimentary tab-completion and cursor key stuff to
1341     debugger_readline().
1342     Adding some more debugger commands: 'bintrans' and 'machine'.
1343     20041215 Adding a 'devstate' command; implementing a skeleton for a
1344     state function for the bt459 device.
1345     Implementing yet another variant of the SLOWSERIALINTERRUPTS
1346     stuff.
1347     Implementing more of the different exception offsets (taking
1348     CAUSE_IV and STATUS_BEV into account).
1349     hpc_bootinfo should now be correctly filled on big-endian
1350     hosts.
1351     Always shift left by 12, not by pageshift, to get physical
1352     addresses on MMU4K etc. (Thanks to Alec Voropay for noticing
1353     this.)
1354     20041216 The KN02's CSR can now be read from bintranslated code.
1355     Adding a dummy dev_sgi_mec.
1356     20041217 The default framebuffer and model settings for -F (hpcmips)
1357     should now be almost like Cassiopeia E-500.
1358     Changing -DSLOWSERIALINTERRUPTS into a command line option, -U.
1359     20041218 Continuing a little bit on the mec controller.
1360     Removing lots of #include <math.h> that weren't really used.
1361     20041219 Fixing stuff that broke because of the pageshift bugfix.
1362     Adding an argument to the s (step) debugger command, for doing
1363     more than 1 step at a time.
1364     ARCBIOS components representing disk images are now created
1365     to actually match the disk images in use, and some other
1366     arcbios-related updates; adding a dummy GetComponent().
1367     Adding a 'lookup' command to the debugger, for symbol lookups.
1368     Adding a "NEC Express RISCserver" mode (NEC-R96, -A8).
1369     Adding a dummy ARCBIOS GetFileInformation(), GetTime(), and
1370     SetEnvironmentVariable().
1371     20041220 Improved command line editing (including command history)
1372     in the debugger.
1373     Separating some more .h files from each other, and fixing
1374     some Solaris compiler warnings.
1375     20041221 Minor updates.
1376     20041222 Minor updates; hpcmips (BE300, VR41xx) stuff.
1377     The 'register' debugger command is now 'reg', and it can
1378     be used to modify registers, not just read them.
1379     The syntax for hpcmips (-F) is now -F xx, where xx is a
1380     machine model identifier. (1 = BE300.)
1381     20041223 Some really minor updates.
1382     20041226 Minor updates to doc/index.html (NetBSD 1.6.2 -> 2.0, and
1383     some other rearrangements).
1384     Many updates to the debugger (better register manipulation,
1385     breakpoint manipulation, and other updates).
1386     Fix to dev_cons.c to allow the regression tests to work again.
1387     The configure script now tries to detect the presence of a
1388     MIPS cross compiler. (Used by "make regtest".)
1389     Regression tests are now run both with and without bintrans.
1390     20041227 Some hacks to the VR41xx code to allow Linux for BE300 to
1391     get far enough to show the penguin on the framebuffer.
1392     20041228 Merging dev_kn01_csr.c and dev_vdac.c into dev_kn01.c.
1393     20041229 Various updates to the debugger (nicer tlb output and other
1394     things).
1395     Some floating point fixes in src/coproc.c (mov is not
1396     an arithmetic instruction), and in src/cpu.c (ldcX/sdcX in
1397     32-bit mode uses register pairs).
1398     '-O' now also affects the bootstring for SGI and ARC emulation.
1399     Bintrans updates (slightly faster 32-bit load/store on alpha).
1400     Updates to the i386 backend too, but no real speed improvement.
1401     20041230 Cleaning up parts of the 64-bit virtual-to-physical code for
1402     R10000, and per-machine default TLB entries can now be set
1403     for SGI and ARC machines.
1404     Fix: SGI-IP27 is ARC64, not ARCS.
1405     20050101 Minor updates.
1406     20050102 Minor updates.
1407     Fixing a 32-bit 'addu' bug in the bintrans backends.
1408     Allowing fast load/stores even in 64-bit bintrans mode, if
1409     the top 32 bits are either 0x00000000 or 0xffffffff (for Alpha
1410     only).
1411     Re-enabling ctc0/cfc0 (but what do they do?).
1412     Adding beql, bnel, blezl, and bgtzl to the Alpha backend.
1413     20050103 Adding fast 32-bit load/store for 64-bit mode emulation to
1414     the i386 backend too (similar to the Alpha code). Not really
1415     tested yet, though.
1416     Adding an incomplete regression test case for lwl/lwr/ldl/ldr.
1417     Playing around with bintranslated lwl and lwr for Alpha.
1418     20040104 Changing many occurances of pica to jazz.
1419     Various other updates.
1420     20050105 Fixing some more bintrans bugs (both Alpha and i386).
1421     Unaligned stores that cause tlb refill exceptions should now
1422     cause TLBS exceptions, not TLBL.
1423     Adding experimental swl and swr to the Alpha backend.
1424     Adding lwl, lwr, swl, and swr to the i386 backend.
1425     20050106 Adding another hpcmips model (Casio E-105, -F2), and doing
1426     some updates to the VR41xx code. NetBSD/hpcmips prints some
1427     boot messages.
1428     20050108 Minor updates.
1429     20050109 dev_dec5500_ioboard.c and dev_sgec.c => dev_kn220.c.
1430     dev_crime.c, _mace.c, and _macepci.c => dev_sgi_ip32.c.
1431     Also adding dev_sgi_mec, _ust, and _mte into dev_sgi_ip32.c.
1432     A slight license change. Still revised BSD-style, though.
1433     memory_v2p.c is now included separately for MMU10K and
1434     MMU8K.
1435     Fixing a NS16550 bug, triggered by NetBSD 2.0, but not 1.6.2.
1436     Refreshing the UltraSPARC bintrans backend skeleton.
1437     Merging dev_decbi, _deccca, and _decxmi into dev_dec5800.c.
1438     Sparc backend instructions done so far: mthi/mtlo/mfhi/mflo,
1439     lui, addu, daddu, subu, dsubu, and, or, nor, xor, sll, dsll,
1440     srl, and sra.
1441     Adding more sparc backend instructions: addiu, daddiu, xori,
1442     ori, andi, srlv, srav, sllv, slt, sltu, slti, sltiu.
1443     20050110 Changing the default bintrans cache to 16 MB, and some other
1444     minor updates.
1445     Adding div and divu to the i386 backend (but not Alpha yet).
1446     More work on ARCBIOS emulation.
1447     Trying to find a bug which affects Linux on Playstation 2 in
1448     bintrans mode.
1449     20050111 Moving around some Playstation 2 stuff, but I haven't found
1450     the bug yet. It is triggered by load/stores.
1451     More ARCBIOS updates, enough to let Windows NT partition
1452     disks in some rudimentary fashion.
1453     20050112 Testing for release 0.2.4.
1454     Fixes to suppress compiler warnings.
1455    
1456     ============== RELEASE 0.2.4 ==============
1457    
1458     20050113 Minor updates.
1459     20050114 Fix to the Alpha bintrans backend to allow compilation with
1460     old versions of gcc (2.95.4).
1461    
1462     ============== RELEASE 0.2.4.1 ==============
1463    
1464     20050115 Various updates and fixes: some IP32 stuff, the debugger,
1465     ns16550 loopback tx isn't transmitted out anymore, ...
1466     Removing old/broken R10000 cache hacks, which weren't really
1467     used.
1468     20050116 Minor updates to the documentation on using PROM images.
1469     Adding ARCBIOS function 0x100 (used by IRIX when returning
1470     from main, but undocumented).
1471     MC146818 updates (mostly SGI-related).
1472     ARCS64 updates (testing with an OpenBSD snapshot in IP27
1473     mode). This causes Linux/IP30 to not work. Maybe IP27 and
1474     IP30 differ, even though both are 64-bit?
1475     Removing some nonsensical ARCS64 code from machine.c.
1476     Better handling of 128MB and 512MB memory offsets used by
1477     various SGI models.
1478     Trying to revert the ARCS64 changes (OpenBSD/sgi does
1479     seem to be aware of 64-bit vs 32-bit data structures in
1480     _some_ places, but not all), to make Linux/IP30 work again.
1481     Adding "power off" capability to the RTC, as used on IP32
1482     (and possibly IP30 and others).
1483     Some IP30 updates.
1484     20050117 Debugger updates (symbolic register names instead of just rX,
1485     and using %08x instead of %016llx when emulating 32-bit CPUs
1486     in more places than before).
1487     Removing the dummy sgi_nasid and sgi_cpuinfo devices.
1488     Also using symbolic names for coprocessor 0 registers.
1489     Adding DEV_MP_MEMORY to dev_mp.c.
1490     Adding a 'put' command to the debugger.
1491     ARCBIOS function 0x100 used by IRIX seems to _NOT_ be a
1492     ReturnFromMain(), but something else undocumented.
1493     The count and compare registers are now 32-bit in all
1494     places, as they should be. (This causes, among other things,
1495     OpenBSD/sgi to not hang randomly in userspace anymore.)
1496     On breakpoints, the debugger is now entered _at_ the
1497     instruction at the breakpoint, not after it.
1498     Some cursor keys now work when inputed via X.
1499     Refreshing the MC146818 device a bit more.
1500     20050118 Trying to add some support for less-than-4KB virtual pages,
1501     used by at least VR4131. Thanks to Alexander Yurchenko for
1502     noticing this. (I'm assuming for now that all R41xx work
1503     this way, which is not necessarily true.) It doesn't really
1504     work yet though.
1505     Renicing the "loading files" messages and other things
1506     displayed during startup.
1507     Changing the disassembly output of ori, xori, and andi to
1508     unsigned hex immediate, instead of decimal (as suggested
1509     by Alec Voropay).
1510     configure-script update for HP-UX, and switching from using
1511     inet_aton() to inet_pton() (as suggested by Nils Weller).
1512     Also adding -lnsl on Solaris, if required by inet_pton().
1513     Lots of minor R4100-related updates.
1514     20050119 Correcting the R4100 config register in src/coproc.c, and
1515     a minor update to dev_vr41xx.
1516     Finally began a redesign/remodelling/cleanup that I have had
1517     in mind for quite some time... moving many things that were
1518     in struct emul into a new struct machine.
1519     Userland emulation now works with bintrans.
1520     Refreshing the LANCE controller (dev_le.c).
1521     Fixing the LK201 keyboard id.
1522     20050120 Continuing on the remodelling/cleanup.
1523     Fixing the SCSI bug (which was triggered sometimes by
1524     NetBSD 2.0/pmax on Linux/i386 hosts).
1525     Adding a speed-limit hack to the mc146818 device when running
1526     in DECstation mode (limiting to emulated 30 MHz clock, so
1527     that Ultrix doesn't freak out).
1528     Adding an ugly workaround for the floating-point bug which
1529     is triggered when running NetBSD/pmax 2.0 on an Alpha host.
1530     The count/compare interrupt will not be triggered now, if
1531     the compare register is left untouched.
1532     Many, many other fixes...
1533     20050121 Continuing the remodelling/cleanup. (Mostly working on the
1534     network stack, and on moving towards multiple emulations
1535     with multiple machines per emulation.)
1536     Fixbug: not clearing lowest parts of lo0 and hi on tlbr
1537     (seems to increase performance when emulating Linux?).
1538     20050122 Continuing the remodelling/cleanup.
1539     Linux on DECstation uses a non-used part of the RTC registers
1540     for the year value; this is supported now, so Linux thinks
1541     it is 2005 and not 2000.
1542     Began hacking on something to reply to Debian's DHCP requests,
1543     but it's not working yet.
1544     20050123 Continuing the remodelling/cleanup.
1545     20050124 Continuing the remodelling/cleanup.
1546     Converting the dev_vga charcell memory to support direct
1547     bintrans access (similar to how dev_fb works), and fixing a
1548     couple of bintrans bugs in the process.
1549     The emulator now compiles under OpenBSD/arc 2.3 without
1550     crashing (mostly due to the bintrans fixes, but also some
1551     minor updates to the configure script).
1552     20050125 Continuing the remodelling/cleanup.
1553     The '-a' option was missing in the Hello World example in the
1554     documentation. (Thanks to Soohyun Cho for noticing this.)
1555     20050126 Continuing the remodelling/cleanup. Moving around stuff in
1556     the header files, etc. Adding a '-K' command line option, which
1557     forces the debugger to be entered at the exit of a simulation,
1558     regardless of failure or success. Beginning to work on the
1559     config file parser.
1560     Splitting doc/index.html into experiments.html, guestoses.html,
1561     intro.html, and misc.html.
1562     Updating the man page and adding a skeleton section about the
1563     configure files to doc/misc.html.
1564     20050127 Minor documentation updates.
1565     20050128 Continuing the remodelling/cleanup, mostly working on the
1566     config file parser (adding a couple of machine words, enough
1567     to run simple emulations, and adding support for multi-line
1568     comments using tuborgs).
1569     Removing some command line options for the least working
1570     emulation modes (-e, -f, -g, -E, -H), adding new -E and -e
1571     options for selecting machine type.
1572     Moving global variables from src/x11.c into struct machine (a
1573     bit buggy, but it seems to almost work).
1574     20050129 Removing the Playstation 2 mode (-B) and hpcmips modes (-F)
1575     from the command line as well.
1576     Changing the -T command line option from meaning "trace on bad
1577     address" to meaning "enter the single-step debugger on bad
1578     address".
1579     More updates to the configuration file parser (nested tuborg
1580     comments, more options, ...).
1581     Making -s a global setting, not just affecting one machine.
1582     Trying to fix the X11 event stuff... but it's so ugly that it
1583     must be rewritten later.
1584     Continuing the multi-emul cleanup.
1585     Bugfixes and other updates to dev_vga.
1586     20050130 Continuing the remodelling/cleanup. Finally moving out the
1587     MIPS dependant stuff of the cpu struct into its own struct.
1588     Renaming cpu.c to cpu_mips.c, and cpu_common.c to cpu.c.
1589     Adding a dummy cpu_ppc.c.
1590     Removing the UltraSPARC bintrans backend.
1591     Many other minor updates.
1592     src/file.c should now be free from MIPS-dependancies.
1593     20050131 Continuing a little bit more on src/file.c. PPC ELFs can now
1594     be loaded, it seems.
1595     Continuing on src/cpu_ppc.c.
1596     'mips' is undefined by the configure script, if it is defined
1597     by default. (Fixes build on at least OpenBSD/arc and
1598     NetBSD/arc, where gcc defines 'mips'.)
1599     A couple of other minor fixes.
1600     Removing the "Changing framebuffer resolution" section from
1601     doc/misc.h (because it's buggy and not very useful anway).
1602     Adding a mystrtoull(), used on systems where there is no
1603     strtoull() in libc.
1604     Adding 'add_x11_display' to the configure file parser
1605     (corresponding to the -z command line option).
1606     Continuing the multi-emul machine cleanup.
1607     20050201 Minor updates (man page, RELEASE, README).
1608     Continuing the cleanup.
1609     Adding a 'name' field to the emul struct, and adding a command
1610     to the debugger ("focus") to make it possible to switch focus
1611     to different machines (in different emuls).
1612     Beginning to work on the PPC disassembler etc. Hello World
1613     for linux-ppc64 can be disassembled :-)
1614     20050202 Adding a hack for reading symbols from Microsoft's variant of
1615     COFF files.
1616     Adding a dummy cpu_sparc.c and include/cpu_sparc.h.
1617     Cleaning up more to support multiple cpu families.
1618     Various other minor updates.
1619     Fixing another old-gcc-on-Alpha problem.
1620     20050203 Bintrans cache size is now variable, settable by a new
1621     configuration file option 'bintrans_size'.
1622     The debugger can now theoretically call disassembler functions
1623     for cpu families with non-fixed instruction word length.
1624     Working more on the mec controller. It now works well enough
1625     to let both NetBSD/sgimips and OpenBSD/sgi connect to the
1626     outside world using ftp :-)
1627     Continuing on the cleanup of the networking subsystem.
1628     20050204 Continuing the cleanup.
1629     Working on a way to use separate xterms for serial ports and
1630     other console input, when emulating multiple machines (or one
1631     machine with multiple serial lines active).
1632     20050205 Minor documentation updates.
1633     20050206 Moving console.c from devices/ to src/, and continuing the
1634     work on using separate windows for each serial console.
1635     Trying to get OpenBSD/sgi to boot with root-on-nfs on an
1636     emulated NetBSD/pmax server, but no success in setting up
1637     the server yet.
1638     20050207 Continuing on the console cleanup.
1639     Adding a 'start_paused' configuration file option, and a
1640     'pause' command to the debugger.
1641     20050208 Everything now builds with --withoutmips.
1642     Continuing on the documentation on how to run OpenBSD/sgi, but
1643     no actual success yet.
1644     sizeof => (int)sizeof in the configure script (as suggested by
1645     Nils Weller).
1646     20050209 Adding a check for -lm to the configure script.
1647     Continuing on the cleanup: trying to make memory_rw non-MIPS
1648     dependant.
1649     Trying to make a better fix for the cdrom-block-size problems
1650     on FreeBSD. (It now works with a Windows NT 4.0 cdrom in my
1651     drive.)
1652     Began a clean-up of the userland subsystem.
1653     20050210 Continuing the userland cleanup.
1654     IBM's Hello World example for Linux/PPC64 runs fine now.
1655     20050211 Continuing the cleanup. Removing the --userland configure
1656     option (because support for userland is always included now).
1657     Working more on getting OpenBSD/sgi to boot with root on
1658     nfs. (Booting with the ramdisk kernel, and mounting root via
1659     nfs works, but not yet from the generic kernel.)
1660     Major update to the manpage.
1661     Removing the -G command line option (SGI modes).
1662     20050212 Updating the documentation (experimental devices: dev_cons
1663     and dev_mp, better hello.c, and some other things).
1664     20050213 Some minor fixes: documentation, 80 columns in some source
1665     files, better configure script options.
1666     Adding some more PPC instructions.
1667     Added a NOFPU flag to the MIPS cpu flags, so that executing
1668     FPU instructions on for example VR4xxx will fail (as suggested
1669     by Alexander Yurchenko).
1670     20050214 Implementing more PPC instructions.
1671     Adding dev_pmppc.
1672     20050215 Continuing the work on PPC emulation. Adding a (mostly non-
1673     working) NetBSD/powerpc userland mode, a (buggy)
1674     show_trace_tree thing (simliar to the MIPS version).
1675     20050216 Continuing...
1676     20050218 Continuing the clean-up. (Merging the devices and devstate
1677     debugger commands, more 80-column cleanup, some documentation
1678     updates, ...).
1679     20050219 Removing the -D, -A, and -a command line options. Updating the
1680     documentation, in preparation for the next release.
1681     Adding interrupt stuff to dev_cons.
1682     Single-stepping now looks/works better with bintrans enabled.
1683     Beginning the first phase of release testing; various minor
1684     updates to make everything build cleanly on Solaris.
1685     20050220 Continuing testing for the release...
1686    
1687     ============== RELEASE 0.3 ==============
1688    
1689     20050221 Minor updates. Some more clean-up.
1690     Beginning on the new device registry stuff.
1691     20050222 Continuing on the device stuff, and doing various other kinds
1692     of clean-up.
1693     Adding a dummy BeBox mode.
1694     Making the pc register common for all cpu families.
1695     Adding some more PPC instructions and fixing some bugs.
1696     20050223 Continuing on the BeBox stuff, and adding more instructions.
1697     Adding an ns16550 to the VR4131 emulation (which is probably
1698     a close enough fake to the VR4131's SIU unit).
1699     20050224 Minor updates. Adding dummy PReP, macppc, and DB64360 modes.
1700     Continuing on the device registry rewrite.
1701     20050225 Continuing on the device stuff.
1702     20050226 Continuing more on the device rewrite.
1703     Separating the "testmips" machine into testmips and baremips
1704     (and similarly with the ppc machine).
1705     Redesigning the device registry again :-)
1706     Adding a "device" command to the config file parser.
1707     Adding "device add" and "device remove" to the debugger.
1708     Removing pcidevs.h, because it was almost unused.
1709     20050228 Correcting the Sprite disk image url in the documentation.
1710     20050301 Adding an URISC cpu emulation mode (single-opcode machine).
1711     20050303 Adding some files to the experiments directory (rssb_as.c,
1712     rssb_as.README, urisc_test.s).
1713     Continuing on the device stuff.
1714     20050304 Minor documentation update. Also, the SPARC, PPC, and URISC
1715     modes are now enabled by default in the configure script.
1716     Some minor PPC updates (adding a VGA device to the bebox
1717     emulation mode).
1718     20050305 Moving the static i386 bintrans runchunk code snippet (and the
1719     others) to be dynamically generated. (This allows the code to
1720     compile on i386 with old gcc.)
1721     Loading PPC64 ELFs now sets R2 to the TOC base.
1722     Changing the name of the emulator from mips64emul to GXemul.
1723     Splitting out the configuration file part of the documentation
1724     into its own file (configfiles.html).
1725     20050306 Some really minor documentation updates.
1726     Adding a -D command line option (for "fully deterministic"
1727     behaviour).
1728     20050308 Minor PPC updates. Adding a dummy OpenFirmware emulation layer.
1729     20050309 Adding a hack for systems without inet_pton (such as Cygwin in
1730     Windows) as suggested by Soohyun Cho. (And updating the
1731     configure script too.)
1732     Adding a dummy HPPA cpu family.
1733     Some more OpenFirmware updates.
1734     Faster loading of badly aligned ELF regions.
1735     20050311 Minor updates. Adding a dummy "NEC MobilePro 780" hpcmips
1736     machine mode; disabling direct bintrans access to framebuffers
1737     that are not 4K page aligned.
1738     20050312 Adding an ugly KIU hack to the VR41xx device (which enables
1739     NetBSD/hpcmips MobilePro 780 keyboard input).
1740     20050313 Adding a dummy "pcic" device (a pcmcia card controller).
1741     Adding a dummy Alpha cpu emulation mode.
1742     Fixing a strcmp length bug (thanks to Alexander Yurchenko for
1743     noticing the bug).
1744     20050314 Some minor bintrans-related updates in preparation for a new
1745     bintrans subsystem: command line option -b now means "old
1746     bintrans", -B means "disable bintrans", and using no option at
1747     all selects "new bintrans".
1748     Better generation of MAC addresses when emulating multiple
1749     machines and/or NICs.
1750     Minor documentation updates (regarding configuration files).
1751     20050315 Adding dummy standby, suspend, and hibernate MIPS opcodes.
1752     RTC interrupt hack for VR4121 (hpcmips).
1753     Enough of the pcic is now emulated to let NetBSD/hpcmips detect
1754     a PCMCIA harddisk controller card (but there is no support for
1755     ISA/PCMCIA interrupts yet).
1756     Adding preliminary instructions on how to install
1757     NetBSD/hpcmips.
1758     Continuing the attempt to get harddisks working with interrupts
1759     (pcic, wdc on hpcmips).
1760     20050318 Minor updates. (Fixing disassembly of MIPS bgtz etc.,
1761     continuing on the device cleanup, ...)
1762     20050319 Minor updates.
1763     20050320 Minor updates.
1764     20050322 Various minor updates.
1765     20050323 Some more minor updates.
1766     20050328 VR41xx-related updates (keyboard stuff: the space key and
1767     shifted and ctrled keys are now working in userland (ie
1768     NetBSD/hpcmips' ramdisk installer).
1769     Also adding simple cursor key support to the VR41xx kiu.
1770     20050329 Some progress on the wdc.
1771     Updating the documentation of how to (possibly) install
1772     NetBSD/hpcmips, once it is working.
1773     Adding delays before wdc interrupts; this allows NetBSD
1774     2.0/hpcmips to be successfully installed!
1775     Mirroring physical addresses 0x8....... to 0x00000000 on
1776     hpcmips; this makes it possible to run X11 inside
1777     NetBSD/hpcmips :-)
1778     Updating the documentation regarding NetBSD/hpcmips.
1779     Fixing 16-bit vs 15-bit color in dev_fb.
1780     20050330 Print a warning when the user attempts to load a gzipped
1781     file. (Thanks to Juan RP for making me aware of this "bug".)
1782     20050331 Importing aic7xxx_reg.h from NetBSD.
1783     Adding a "-x" command line option, which forces xterms for
1784     each emulated serial port to always be opened.
1785     Adding a MobilePro 770 mode (same as 780, but different
1786     framebuffer address which allows bintrans = fast scrolling),
1787     and a MobilePro 800 (with 800x600 pixels framebuffer :-).
1788     20050401 Minor updates.
1789     20050402 Minor updates. (The standby and suspend instructions are
1790     bintransed as NOPs, and some minor documentation updates.)
1791     20050403 Adding an Agenda VR3 mode, and playing around with a Linux
1792     kernel image, but not much success yet.
1793     Changing BIFB_D16_FFFF -> BIFB_D16_0000 for the hpcmips
1794     framebuffers, causing NetBSD to boot with correct colors.
1795     New syntax for loading raw files: loadaddr:skiplen:
1796     initialpc:filename. (This is necessary to boot the Linux VR3
1797     kernels.)
1798     The Linux VR3 kernel boots in both serial console mode and
1799     using the framebuffer, but it panics relatively early.
1800     20050404 Continuing on the AHC, and some other minor updates.
1801     20050405 Adding a note in doc/experimental.html about "root1.2.6.cramfs"
1802     (thanks to Alec Voropay for noticing that it wasn't part
1803     of root1.2.6.kernel-8.00).
1804     Also adding a note about another cramfs image.
1805     -o options are now added to the command line passed to the
1806     Linux kernel, when emulating the VR3.
1807     Adding a MobilePro 880 mode, and a dummy IBM WorkPad Z50 mode.
1808     20050406 Connecting the VR3 serial controller to irq 9 (Linux calls this
1809     irq 17), and some other interrupt-related cleanups.
1810     Reducing the memory overhead per bintranslated page. (Hopefully
1811     this makes things faster, or at least not slower...)
1812     20050407 Some more cleanup regarding command line argument passing for
1813     the hpcmips modes.
1814     Playing with Linux kernels for MobilePro 770 and 800; they get
1815     as far as mounting a root filesystem, but then crash.
1816     Doing some testing for the next release.
1817    
1818     ============== RELEASE 0.3.1 ==============
1819    
1820 dpavlin 4 20050408 Some minor updates to the wdc. Linux now doesn't complain
1821     anymore if a disk is non-present.
1822     20050409 Various minor fixes (a bintrans bug, and some other things).
1823     The wdc seems to work with Playstation2 emulation, but there
1824     is a _long_ annoying delay when disks are detected.
1825     Fixing a really important bintrans bug (when devices and RAM
1826     are mixed within 4KB pages), which was triggered with
1827     NetBSD/playstation2 kernels.
1828     20050410 Adding a dummy dev_ps2_ether (just so that NetBSD doesn't
1829     complain as much during bootup).
1830     Symbols starting with '$' are now ignored.
1831     Renaming dev_ps2_ohci.c to dev_ohci.c, etc.
1832     20050411 Moving the bintrans-cache-isolation check from cpu_mips.c to
1833     cpu_mips_coproc.c. (I thought this would give a speedup, but
1834     it's not noticable.)
1835     Better playstation2 sbus interrupt code.
1836     Skip ahead many ticks if the count register is read manually.
1837     (This increases the speed of delay-loops that simply read
1838     the count register.)
1839     20050412 Updates to the playstation2 timer/interrupt code.
1840     Some other minor updates.
1841     20050413 NetBSD/cobalt runs from a disk image :-) including userland;
1842     updating the documentation on how to install NetBSD/cobalt
1843     using NetBSD/pmax (!).
1844     Some minor bintrans updates (no real speed improvement) and
1845     other minor updates (playstation2 now uses the -o options).
1846     20050414 Adding a dummy x86 (and AMD64) mode.
1847     20050415 Adding some (32-bit and 16-bit) x86 instructions.
1848     Adding some initial support for non-SCSI, non-IDE floppy
1849     images. (The x86 mode can boot from these, more or less.)
1850     Moving the devices/ and include/ directories to src/devices/
1851     and src/include/, respectively.
1852     20050416 Continuing on the x86 stuff. (Adding pc_bios.c and some simple
1853     support for software interrupts in 16-bit mode.)
1854     20050417 Ripping out most of the x86 instruction decoding stuff, trying
1855     to rewrite it in a cleaner way.
1856     Disabling some of the least working CPU families in the
1857     configure script (sparc, x86, alpha, hppa), so that they are
1858     not enabled by default.
1859     20050418 Trying to fix the bug which caused problems when turning on
1860     and off bintrans interactively, by flushing the bintrans cache
1861     whenever bintrans is manually (re)enabled.
1862     20050419 Adding the 'lswi' ppc instruction.
1863     Minor updates to the x86 instruction decoding.
1864     20050420 Renaming x86 register name indices from R_xx to X86_R_xx (this
1865     makes building on Tru64 nicer).
1866     20050422 Adding a check for duplicate MIPS TLB entries on tlbwr/tlbwi.
1867     20050427 Adding screenshots to guestoses.html.
1868     Some minor fixes and testing for the next release.
1869    
1870     ============== RELEASE 0.3.2 ==============
1871    
1872 dpavlin 6 20050428 Disabling the "-fmove-all-movables" option in the configure
1873     script, because it causes the compile to fail on OpenBSD/sgi.
1874     20050502 Minor updates.
1875     20050503 Removing the WRT54G mode (it was bogus anyway), and adding a
1876     comment about Windows NT for MIPS in doc/experiments.html.
1877     Minor updates to the x86 instruction decoding.
1878     20050504 Adding some more x86 instructions.
1879     Adding support for reading files from ISO9660 CDROMs (including
1880     gzipped files). It's an ugly hack, but it seems to work.
1881     Various other minor updates (dev_vga.c, pc_bios.c etc).
1882     20050505 Some more x86-related updates.
1883     Beginning (what I hope will be) a major code cleanup phase.
1884     "bootris" (an x86 bootsector) runs :-)
1885     20050506 Adding some more x86 instructions.
1886     20050507 tmpnam => mkstemp.
1887     Working on a hack to allow VGA charcells to be shown even when
1888     not running with X11.
1889     Adding more x86 instructions.
1890     20050508 x86 32-bit SIB addressing fix, and more instructions.
1891     20050509 Adding more x86 instructions.
1892     20050510 Minor documentation updates, and other updates (x86 stuff etc.)
1893     20050511 More x86-related updates.
1894     20050513 Various updates, mostly x86-related. (Trying to fix flag
1895     calculation, factoring out the ugly shift/rotate code, and
1896     some other things.)
1897     20050514 Adding support for loading some old i386 a.out executables.
1898     Finally beginning the cleanup of machine/PROM/bios dependant
1899     info.
1900     Some minor documentation updates.
1901     Trying to clean up ARCBIOS stuff a little.
1902     20050515 Trying to make it possible to actually use more than one disk
1903     type per machine (floppy, ide, scsi).
1904     Trying to clean up the kbd vs PROM console stuff. (For PC and
1905     ARC emulation modes, mostly.)
1906     Beginning to add an 8259 interrupt controller, and connecting
1907     it to the x86 emulation.
1908     20050516 The first x86 interrupts seem to work (keyboard stuff).
1909     Adding a 8253/8254 programmable interval timer skeleton.
1910     FreeDOS now reaches a command prompt and can be interacted
1911     with.
1912     20050517 After some bugfixes, MS-DOS also (sometimes) reaches a
1913     command prompt now.
1914     Trying to fix the pckbc to work with MS-DOS' keyb.com, but no
1915     success yet.
1916     20050518 Adding a simple 32-bit x86 MMU skeleton.
1917     20050519 Some more work on the x86 stuff. (Beginning the work on paging,
1918     and various other fixes).
1919     20050520 More updates. Working on dev_vga (4-bit graphics modes), adding
1920     40 columns support to the PC bios emulation.
1921     Trying to add support for resizing windows when switching
1922     between graphics modes.
1923     20050521 Many more x86-related updates.
1924     20050522 Correcting the initial stack pointer's sign-extension for
1925     ARCBIOS emulation (thanks to Alec Voropay for noticing the
1926     error).
1927     Continuing on the cleanup (ARCBIOS etc).
1928     dev_vga updates.
1929     20050523 More x86 updates: trying to add some support for protected mode
1930     interrupts (via gate descriptors) and many other fixes.
1931     More ARCBIOS cleanup.
1932     Adding a device flag which indicates that reads cause no
1933     side-effects. (Useful for the "dump" command in the debugger,
1934     and other things.)
1935     Adding support for directly starting up x86 ELFs, skipping the
1936     bootloader stage. (Most ELFs, however, are not suitable for
1937     this.)
1938     20050524 Adding simple 32-bit x86 TSS task switching, but no privilege
1939     level support yet.
1940     More work on dev_vga. A small "Copper bars" demo works. :-)
1941     Adding support for Trap Flag (single-step exceptions), at least
1942     in real mode, and various other x86-related fixes.
1943     20050525 Adding a new disk image prefix (gH;S;) which can be used to
1944     override the default nr of heads and sectors per track.
1945     20050527 Various bug fixes, more work on the x86 mode (stack change on
1946     interrupts between different priv.levels), and some minor
1947     documentation updates.
1948     20050528 Various fixes (x86 stuff).
1949     20050529 More x86 fixes. An OpenBSD/i386 bootfloppy reaches userland
1950     and can be interacted with (although there are problems with
1951     key repetition). NetBSD/i386 triggers a serious CISC-related
1952     problem: instruction fetches across page boundaries, where
1953     the later part isn't actually part of the instruction.
1954     20050530 Various minor updates. (Documentation updates, etc.)
1955     20050531 Adding some experimental code (experiments/new_test_*) which
1956     could be useful for dynamic (but not binary) translation in
1957     the future.
1958     20050602 Adding a dummy ARM skeleton.
1959     Fixing the pckbc key repetition problem (by adding release
1960     scancodes for all keypresses).
1961     20050603 Minor updates for the next release.
1962     20050604 Release testing. Minor updates.
1963    
1964     ============== RELEASE 0.3.3 ==============
1965    
1966     20050604 There'll probably be a 0.3.3.1 release soon, with some very
1967     very tiny updates.
1968    
1969 dpavlin 8 ============== RELEASE 0.3.3.1 ==============
1970    
1971     20050609 Adding simple MIPS IPIs (to dev_mp).
1972     20050611 Adding an ugly hack to track down low-reference bugs
1973     (define TRACE_NULL_CRASHES, or configure --tracenull).
1974     Other minor updates.
1975     20050612 Adding a dummy evbmips mode.
1976    
1977     ============== RELEASE 0.3.3.2 ==============
1978    
1979 dpavlin 10 20050617 Experimenting some more with netbooting OpenBSD/sgi. Adding
1980     a hack which allows emulated ethernet networks to be
1981     distributed across multiple emulator processes.
1982     20050618 Minor updates (documentation, dummy YAMON emulation, etc).
1983     20050620 strcpy/strcat -> strlcpy/strlcat updates.
1984     Some more progress on evbmips (Malta).
1985     20050621 Adding a section to doc/configfiles.html about ethernet
1986     emulation across multiple hosts.
1987     Beginning the work on the ARM translation engine (using the
1988     dynamic-but-not-binary translation method).
1989     Fixing a bintrans bug: 0x9fc00000 should always be treated as
1990     PROM area, just as 0xbfc00000 is.
1991     Minor progress on Malta emulation (the PCI-ISA bus).
1992     20050622 NetBSD/evbmips can now be installed (using another emulated
1993     machine) and run (including userland and so on). :-)
1994     Spliting up the bintrans haddr_entry field into two (one for
1995     read, one for write). Probably not much of a speed increase,
1996     though.
1997     Updating some NetBSD 2.0 -> 2.0.2 in the documentation.
1998     20050623 Minor updates (documentation, the TODO file, etc).
1999     gzipped kernels are now always automagically gunzipped when
2000     loaded.
2001     20050624 Adding a dummy Playstation Portable (PSP) mode, just barely
2002     enough to run Hello World (in weird colors :-).
2003     Removing the -b command line option; old bintrans is enabled
2004     by default instead. It makes more sense.
2005     Trying to finally fix the non-working performance measurement
2006     thing (instr/second etc).
2007     20050625 Continuing on the essential basics for ARM emulation. Two
2008     instructions seem to work, a branch and a simple "mov". (The
2009     mov arguments are not correct yet.) Performance is definitely
2010     reasonable.
2011     Various other minor updates.
2012     Adding the ARM "bl" instruction.
2013     Adding support for combining multiple ARM instructions into one
2014     function call. ("mov" + "mov" is the only one implemented so
2015     far, but it seems to work.)
2016     Cleaning up some IP32 interrupt things (crime/mace); disabling
2017     the PS/2 keyboard controller on IP32, so that NetBSD/sgimips
2018     boots into userland again.
2019     20050626 Finally! NetBSD/sgimips netboots. Adding instructions to
2020     doc/guestoses.html on how to set up an nfs server etc.
2021     Various other minor fixes.
2022     Playstation Portable ".pbp" files can now be used directly.
2023     (The ELF part of the .pbp is extracted transparently.)
2024     Converting some sprintf -> snprintf.
2025     Adding some more instructions to the ARM disassembler.
2026     20050627 More ARM updates. Adding some simple ldr(b), str(b),
2027     cmps, and conditional branch instructions, enough to run
2028     a simple Hello World program.
2029     All ARM instructions are now inlined/generated for all possible
2030     condition codes.
2031     Adding add and sub, and more load/store instructions.
2032     Removing dummy files: cpu_alpha.c, cpu_hppa.c, and cpu_sparc.c.
2033     Some minor documentation updates; preparing for a 0.3.4
2034     release. Updating some URLs.
2035    
2036     ============== RELEASE 0.3.4 ==============
2037    
2038 dpavlin 12 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.
2194    
2195     ============== RELEASE 0.3.5 ==============
2196    
2197 dpavlin 14 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.
2300 dpavlin 16
2301     ============== RELEASE 0.3.6 ==============
2302    
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 dpavlin 18 20051011 Passing -A as the default boot arg for CATS (works fine with
2315     OpenBSD/cats).
2316 dpavlin 16
2317     ============== RELEASE 0.3.6.1 ==============
2318    
2319 dpavlin 18 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.
2360    
2361     ============== RELEASE 0.3.6.2 ==============
2362    
2363 dpavlin 20 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.
2469    
2470     ============== RELEASE 0.3.7 ==============
2471    
2472 dpavlin 22 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.
2574    
2575     ============== RELEASE 0.3.8 ==============
2576    
2577 dpavlin 24 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.)
2803    
2804     ============== RELEASE 0.4.0 ==============
2805    
2806 dpavlin 26 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.
2819    
2820     ============== RELEASE 0.4.0.1 ==============
2821    
2822 dpavlin 28 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 0.4.0.1 (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.
2888    
2889     ============== RELEASE 0.4.1 ==============
2890    
2891 dpavlin 30 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.
2937    
2938     ============== RELEASE 0.4.2 ==============
2939    
2940 dpavlin 32 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 dpavlin 34 20061029 Changing usleep(1) calls in the debugger to usleep(10000)
3144 dpavlin 32 (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.
3155    
3156     ============== RELEASE 0.4.3 ==============
3157    
3158 dpavlin 34 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.
3308    
3309     ============== RELEASE 0.4.4 ==============
3310    
3311 dpavlin 36 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, 0.4.4.1.
3343    
3344     ============== RELEASE 0.4.4.1 ==============
3345    
3346 dpavlin 38 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.
3391    
3392     ============== RELEASE 0.4.5 ==============
3393    
3394 dpavlin 40 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.
3461    
3462     ============== RELEASE 0.4.5.1 ==============
3463    
3464 dpavlin 42 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 0.4.5.1: 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.
3611    
3612     ============== RELEASE 0.4.6 ==============
3613    
3614 dpavlin 44 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.

  ViewVC Help
Powered by ViewVC 1.1.26