/[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

Contents of /trunk/HISTORY

Parent Directory Parent Directory | Revision Log Revision Log


Revision 22 - (show annotations)
Mon Oct 8 16:19:37 2007 UTC (16 years, 5 months ago) by dpavlin
File size: 129886 byte(s)
++ trunk/HISTORY	(local)
$Id: HISTORY,v 1.1121 2006/02/18 21:03:08 debug Exp $
20051126	Cobalt and PReP now work with the 21143 NIC.
		Continuing on Alpha dyntrans things.
		Fixing some more left-shift-by-24 to unsigned.
20051127	Working on OpenFirmware emulation; major cleanup/redesign.
		Progress on MacPPC emulation: NetBSD detects two CPUs (when
		running with -n 2), framebuffer output (for text) works.
		Adding quick-hack Bandit PCI controller and "gc" interrupt
		controller for MacPPC.
20051128	Changing from a Bandit to a Uni-North controller for macppc.
		Continuing on OpenFirmware and MacPPC emulation in general
		(obio controller, and wdc attached to the obio seems to work).
20051129	More work on MacPPC emulation (adding a dummy ADB controller).
		Continuing the PCI bus cleanup (endianness and tag composition)
		and rewriting all PCI controllers' access functions.
20051130	Various minor PPC dyntrans optimizations.
		Manually inlining some parts of the framebuffer redraw routine.
		Slowly beginning the conversion of the old MIPS emulation into
		dyntrans (but this will take quite some time to get right).
		Generalizing quick_pc_to_pointers.
20051201	Documentation update (David Muse has made available a kernel
		which simplifies Debian/DECstation installation).
		Continuing on the ADB bus controller.
20051202	Beginning a rewrite of the Zilog serial controller (dev_zs).
20051203	Continuing on the zs rewrite (now called dev_z8530); conversion
		to devinit style.
		Reworking some of the input-only vs output-only vs input-output
		details of src/console.c, better warning messages, and adding
		a debug dump.
		Removing the concept of "device state"; it wasn't really used.
		Changing some debug output (-vv should now be used to show all
		details about devices and busses; not shown during normal
		startup anymore).
		Beginning on some SPARC instruction disassembly support.
20051204	Minor PPC updates (WALNUT skeleton stuff).
		Continuing on the MIPS dyntrans rewrite.
		More progress on the ADB controller (a keyboard is "detected"
		by NetBSD and OpenBSD).
		Downgrading OpenBSD/arc as a guest OS from "working" to
		"almost working" in the documentation.
		Progress on Algor emulation ("v3" PCI controller).
20051205	Minor updates.
20051207	Sorting devices according to address; this reduces complexity
		of device lookups from O(n) to O(log n) in memory_rw (but no
		real performance increase (yet) in experiments).
20051210	Beginning the work on native dyntrans backends (by making a
		simple skeleton; so far only for Alpha hosts).
20051211	Some very minor SPARC updates.
20051215	Fixing a bug in the MIPS mul (note: not mult) instruction,
		so it also works with non-64-bit emulation. (Thanks to Alec
		Voropay for noticing the problem.)
20051216	More work on the fake/empty/simple/skeleton/whatever backend;
		performance doesn't increase, so this isn't really worth it,
		but it was probably worth it to prepare for a real backend
		later.
20051219	More instr call statistics gathering and analysis stuff.
20051220	Another fix for MIPS 'mul'. Also converting mul and {d,}cl{o,z}
		to dyntrans.
		memory_ppc.c syntax error fix (noticed by Peter Valchev).
		Beginning to move out machines from src/machine.c into
		individual files in src/machines (in a way similar to the
		autodev system for devices).
20051222	Updating the documentation regarding NetBSD/pmax 3.0.
20051223	- " - NetBSD/cats 3.0.
20051225	- " - NetBSD/hpcmips 3.0.
20051226	Continuing on the machine registry redesign.
		Adding support for ARM rrx (33-bit rotate).
		Fixing some signed/unsigned issues (exposed by gcc -W).
20051227	Fixing the bug which prevented a NetBSD/prep 3.0 install kernel
		from starting (triggered when an mtmsr was the last instruction
		on a page). Unfortunately not enough to get the kernel to run
		as well as the 2.1 kernels did.
20051230	Some dyntrans refactoring.
20051231	Continuing on the machine registry redesign.
20060101-10	Continuing... moving more machines. Moving MD interrupt stuff
		from machine.c into a new src/machines/interrupts.c.
20060114	Adding various mvmeppc machine skeletons.
20060115	Continuing on mvme* stuff. NetBSD/mvmeppc prints boot messages
		(for MVME1600) and reaches the root device prompt, but no
		specific hardware devices are emulated yet.
20060116	Minor updates to the mvme1600 emulation mode; the Eagle PCI bus
		seems to work without much modification, and a 21143 can be
		detected, interrupts might work (but untested so far).
		Adding a fake MK48Txx (mkclock) device, for NetBSD/mvmeppc.
20060121	Adding an aux control register for ARM. (A BIG thank you to
		Olivier Houchard for tracking down this bug.)
20060122	Adding more ARM instructions (smulXY), and dev_iq80321_7seg.
20060124	Adding disassembly of more ARM instructions (mia*, mra/mar),
		and some semi-bogus XScale and i80321 registers.
20060201-02	Various minor updates. Moving the last machines out of
		machine.c.
20060204	Adding a -c command line option, for running debugger commands
		before the simulation starts, but after all files have been
		loaded.
		Minor iq80321-related updates.
20060209	Minor hacks (DEVINIT macro, etc).
		Preparing for the generalization of the 64-bit dyntrans address
		translation subsystem.
20060216	Adding ARM ldrd (double-register load).
20060217	Continuing on various ARM-related stuff.
20060218	More progress on the ATA/wdc emulation for NetBSD/iq80321.
		NetBSD/evbarm can now be installed :-)  Updating the docs, etc.
		Continuing on Algor emulation.

==============  RELEASE 0.3.8  ==============


1 $Id: HISTORY,v 1.1121 2006/02/18 21:03:08 debug Exp $
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 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 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 ============== 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 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 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 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
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 20051011 Passing -A as the default boot arg for CATS (works fine with
2315 OpenBSD/cats).
2316
2317 ============== RELEASE 0.3.6.1 ==============
2318
2319 20051012 Fixing the VGA cursor offset bug, and speeding up framebuffer
2320 redraws if character cells contain the same thing as during
2321 the last redraw.
2322 20051013 Adding a slow strd ARM instruction hack.
2323 20051017 Minor updates: Adding a dummy i80321 Verde controller (for
2324 XScale emulation), fixing the disassembly of the ARM "ldrd"
2325 instruction, adding "support" for less-than-4KB pages for ARM
2326 (by not adding them to translation tables).
2327 20051020 Continuing on some HPCarm stuff. A NetBSD/hpcarm kernel prints
2328 some boot messages on an emulated Jornada 720.
2329 Making dev_ram work better with dyntrans (speeds up some things
2330 quite a bit).
2331 20051021 Automatically generating some of the most common ARM load/store
2332 multiple instructions.
2333 20051022 Better statistics gathering for the ARM load/store multiple.
2334 Various other dyntrans and device updates.
2335 20051023 Various minor updates.
2336 20051024 Continuing; minor device and dyntrans fine-tuning. Adding the
2337 first "reasonable" instruction combination hacks for ARM (the
2338 cores of NetBSD/cats' memset and memcpy).
2339 20051025 Fixing a dyntrans-related bug in dev_vga. Also changing the
2340 dyntrans low/high access notification to only be updated on
2341 writes, not reads. Hopefully it will be enough. (dev_vga in
2342 charcell mode now seems to work correctly with both reads and
2343 writes.)
2344 Experimenting with gathering dyntrans statistics (which parts
2345 of emulated RAM that are actually executed), and adding
2346 instruction combination hacks for cache cleaning and a part of
2347 NetBSD's scanc() function.
2348 20051026 Adding a bitmap for ARM emulation which indicates if a page is
2349 (specifically) user accessible; loads and stores with the t-
2350 flag set can now use the translation arrays, which results in
2351 a measurable speedup.
2352 20051027 Dyntrans updates; adding an extra bitmap array for 32-bit
2353 emulation modes, speeding up the check whether a physical page
2354 has any code translations or not (O(n) -> O(1)). Doing a
2355 similar reduction of O(n) to O(1) by avoiding the scan through
2356 the translation entries on a translation update (32-bit mode
2357 only).
2358 Various other minor hacks.
2359 20051029 Quick release, without any testing at all.
2360
2361 ============== RELEASE 0.3.6.2 ==============
2362
2363 20051031 Adding disassembly support for more ARM instructions (clz,
2364 smul* etc), and adding a hack to support "new tiny" pages
2365 for StrongARM.
2366 20051101 Minor documentation updates (NetBSD 2.0.2 -> 2.1, and OpenBSD
2367 3.7 -> 3.8, and lots of testing).
2368 Changing from 1-sector PIO mode 0 transfers to 128-sector PIO
2369 mode 3 (in dev_wdc).
2370 Various minor ARM dyntrans updates (pc-relative loads from
2371 within the same page as the instruction are now treated as
2372 constant "mov").
2373 20051102 Re-enabling instruction combinations (they were accidentally
2374 disabled).
2375 Dyntrans TLB entries are now overwritten using a round-robin
2376 scheme instead of randomly. This increases performance.
2377 Fixing a typo in file.c (thanks to Chuan-Hua Chang for
2378 noticing it).
2379 Experimenting with adding ATAPI support to dev_wdc (to make
2380 emulated *BSD detect cdroms as cdroms, not harddisks).
2381 20051104 Various minor updates.
2382 20051105 Continuing on the ATAPI emulation. Seems to work well enough
2383 for a NetBSD/cats installation, but not OpenBSD/cats.
2384 Various other updates.
2385 20051106 Modifying the -Y command line option to allow scaleup with
2386 certain graphic controllers (only dev_vga so far), not just
2387 scaledown.
2388 Some minor dyntrans cleanups.
2389 20051107 Beginning a cleanup up the PCI subsystem (removing the
2390 read_register hack, etc).
2391 20051108 Continuing the cleanup; splitting up some pci devices into a
2392 normal autodev device and some separate pci glue code.
2393 20051109 Continuing on the PCI bus stuff; all old pci_*.c have been
2394 incorporated into normal devices and/or rewritten as glue code
2395 only, adding a dummy Intel 82371AB PIIX4 for Malta (not really
2396 tested yet).
2397 Minor pckbc fix so that Linux doesn't complain.
2398 Working on the DEC 21143 NIC (ethernet mac rom stuff mostly).
2399 Various other minor fixes.
2400 20051110 Some more ARM dyntrans fine-tuning (e.g. some instruction
2401 combinations (cmps followed by conditional branch within the
2402 same page) and special cases for DPIs with regform when the
2403 shifter isn't used).
2404 20051111 ARM dyntrans updates: O(n)->O(1) for just-mark-as-non-
2405 writable in the generic pc_to_pointers function, and some other
2406 minor hacks.
2407 Merging Cobalt and evbmips (Malta) ISA interrupt handling,
2408 and some minor fixes to allow Linux to accept harddisk irqs.
2409 20051112 Minor device updates (pckbc, dec21143, lpt, ...), most
2410 importantly fixing the ALI M1543/M5229 so that harddisk irqs
2411 work with Linux/CATS.
2412 20051113 Some more generalizations of the PCI subsystem.
2413 Finally took the time to add a hack for SCSI CDROM TOCs; this
2414 enables OpenBSD to use partition 'a' (as needed by the OpenBSD
2415 installer), and Windows NT's installer to get a bit further.
2416 Also fixing dev_wdc to allow Linux to detect ATAPI CDROMs.
2417 Continuing on the DEC 21143.
2418 20051114 Minor ARM dyntrans tweaks; ARM cmps+branch optimization when
2419 comparing with 0, and generalizing the xchg instr. comb.
2420 Adding disassembly of ARM mrrc/mcrr and q{,d}{add,sub}.
2421 20051115 Continuing on various PPC things (BATs, other address trans-
2422 lation things, various loads/stores, BeBox emulation, etc.).
2423 Beginning to work on PPC interrupt/exception support.
2424 20051116 Factoring out some code which initializes legacy ISA devices
2425 from those machines that use them (bus_isa).
2426 Continuing on PPC interrupt/exception support.
2427 20051117 Minor Malta fixes: RTC year offset = 80, disabling a speed hack
2428 which caused NetBSD to detect a too fast cpu, and adding a new
2429 hack to make Linux detect a faster cpu.
2430 Continuing on the Artesyn PM/PPC emulation mode.
2431 Adding an Algor emulation skeleton (P4032 and P5064);
2432 implementing some of the basics.
2433 Continuing on PPC emulation in general; usage of unimplemented
2434 SPRs is now easier to track, continuing on memory/exception
2435 related issues, etc.
2436 20051118 More work on PPC emulation (tgpr0..3, exception handling,
2437 memory stuff, syscalls, etc.).
2438 20051119 Changing the ARM dyntrans code to mostly use cpu->pc, and not
2439 necessarily use arm reg 15. Seems to work.
2440 Various PPC updates; continuing on the PReP emulation mode.
2441 20051120 Adding a workaround/hack to dev_mc146818 to allow NetBSD/prep
2442 to detect the clock.
2443 20051121 More cleanup of the PCI bus (memory and I/O bases, etc).
2444 Continuing on various PPC things (decrementer and timebase,
2445 WDCs on obio (on PReP) use irq 13, not 14/15).
2446 20051122 Continuing on the CPC700 controller (interrupts etc) for PMPPC,
2447 and on PPC stuff in general.
2448 Finally! After some bug fixes to the virtual to physical addr
2449 translation, NetBSD/{prep,pmppc} 2.1 reach userland and are
2450 stable enough to be interacted with.
2451 More PCI updates; reverse-endian device access for PowerPC etc.
2452 20051123 Generalizing the IEEE floating point subsystem (moving it out
2453 from src/cpus/cpu_mips_coproc.c into a new src/float_emul.c).
2454 Input via slave xterms was sometimes not really working; fixing
2455 this for ns16550, and a warning message is now displayed if
2456 multiple non-xterm consoles are active.
2457 Adding some PPC floating point support, etc.
2458 Various interrupt related updates (dev_wdc, _ns16550, _8259,
2459 and the isa32 common code in machine.c).
2460 NetBSD/prep can now be installed! :-) (Well, with some manual
2461 commands necessary before running sysinst.) Updating the
2462 documentation and various other things to reflect this.
2463 20051124 Various minor documentation updates.
2464 Continuing the work on the DEC 21143 NIC.
2465 20051125 LOTS of work on the 21143. Both OpenBSD and NetBSD work fine
2466 with it now, except that OpenBSD sometimes gives a time-out
2467 warning.
2468 Minor documentation updates.
2469
2470 ============== RELEASE 0.3.7 ==============
2471
2472 20051126 Cobalt and PReP now work with the 21143 NIC.
2473 Continuing on Alpha dyntrans things.
2474 Fixing some more left-shift-by-24 to unsigned.
2475 20051127 Working on OpenFirmware emulation; major cleanup/redesign.
2476 Progress on MacPPC emulation: NetBSD detects two CPUs (when
2477 running with -n 2), framebuffer output (for text) works.
2478 Adding quick-hack Bandit PCI controller and "gc" interrupt
2479 controller for MacPPC.
2480 20051128 Changing from a Bandit to a Uni-North controller for macppc.
2481 Continuing on OpenFirmware and MacPPC emulation in general
2482 (obio controller, and wdc attached to the obio seems to work).
2483 20051129 More work on MacPPC emulation (adding a dummy ADB controller).
2484 Continuing the PCI bus cleanup (endianness and tag composition)
2485 and rewriting all PCI controllers' access functions.
2486 20051130 Various minor PPC dyntrans optimizations.
2487 Manually inlining some parts of the framebuffer redraw routine.
2488 Slowly beginning the conversion of the old MIPS emulation into
2489 dyntrans (but this will take quite some time to get right).
2490 Generalizing quick_pc_to_pointers.
2491 20051201 Documentation update (David Muse has made available a kernel
2492 which simplifies Debian/DECstation installation).
2493 Continuing on the ADB bus controller.
2494 20051202 Beginning a rewrite of the Zilog serial controller (dev_zs).
2495 20051203 Continuing on the zs rewrite (now called dev_z8530); conversion
2496 to devinit style.
2497 Reworking some of the input-only vs output-only vs input-output
2498 details of src/console.c, better warning messages, and adding
2499 a debug dump.
2500 Removing the concept of "device state"; it wasn't really used.
2501 Changing some debug output (-vv should now be used to show all
2502 details about devices and busses; not shown during normal
2503 startup anymore).
2504 Beginning on some SPARC instruction disassembly support.
2505 20051204 Minor PPC updates (WALNUT skeleton stuff).
2506 Continuing on the MIPS dyntrans rewrite.
2507 More progress on the ADB controller (a keyboard is "detected"
2508 by NetBSD and OpenBSD).
2509 Downgrading OpenBSD/arc as a guest OS from "working" to
2510 "almost working" in the documentation.
2511 Progress on Algor emulation ("v3" PCI controller).
2512 20051205 Minor updates.
2513 20051207 Sorting devices according to address; this reduces complexity
2514 of device lookups from O(n) to O(log n) in memory_rw (but no
2515 real performance increase (yet) in experiments).
2516 20051210 Beginning the work on native dyntrans backends (by making a
2517 simple skeleton; so far only for Alpha hosts).
2518 20051211 Some very minor SPARC updates.
2519 20051215 Fixing a bug in the MIPS mul (note: not mult) instruction,
2520 so it also works with non-64-bit emulation. (Thanks to Alec
2521 Voropay for noticing the problem.)
2522 20051216 More work on the fake/empty/simple/skeleton/whatever backend;
2523 performance doesn't increase, so this isn't really worth it,
2524 but it was probably worth it to prepare for a real backend
2525 later.
2526 20051219 More instr call statistics gathering and analysis stuff.
2527 20051220 Another fix for MIPS 'mul'. Also converting mul and {d,}cl{o,z}
2528 to dyntrans.
2529 memory_ppc.c syntax error fix (noticed by Peter Valchev).
2530 Beginning to move out machines from src/machine.c into
2531 individual files in src/machines (in a way similar to the
2532 autodev system for devices).
2533 20051222 Updating the documentation regarding NetBSD/pmax 3.0.
2534 20051223 - " - NetBSD/cats 3.0.
2535 20051225 - " - NetBSD/hpcmips 3.0.
2536 20051226 Continuing on the machine registry redesign.
2537 Adding support for ARM rrx (33-bit rotate).
2538 Fixing some signed/unsigned issues (exposed by gcc -W).
2539 20051227 Fixing the bug which prevented a NetBSD/prep 3.0 install kernel
2540 from starting (triggered when an mtmsr was the last instruction
2541 on a page). Unfortunately not enough to get the kernel to run
2542 as well as the 2.1 kernels did.
2543 20051230 Some dyntrans refactoring.
2544 20051231 Continuing on the machine registry redesign.
2545 20060101-10 Continuing... moving more machines. Moving MD interrupt stuff
2546 from machine.c into a new src/machines/interrupts.c.
2547 20060114 Adding various mvmeppc machine skeletons.
2548 20060115 Continuing on mvme* stuff. NetBSD/mvmeppc prints boot messages
2549 (for MVME1600) and reaches the root device prompt, but no
2550 specific hardware devices are emulated yet.
2551 20060116 Minor updates to the mvme1600 emulation mode; the Eagle PCI bus
2552 seems to work without much modification, and a 21143 can be
2553 detected, interrupts might work (but untested so far).
2554 Adding a fake MK48Txx (mkclock) device, for NetBSD/mvmeppc.
2555 20060121 Adding an aux control register for ARM. (A BIG thank you to
2556 Olivier Houchard for tracking down this bug.)
2557 20060122 Adding more ARM instructions (smulXY), and dev_iq80321_7seg.
2558 20060124 Adding disassembly of more ARM instructions (mia*, mra/mar),
2559 and some semi-bogus XScale and i80321 registers.
2560 20060201-02 Various minor updates. Moving the last machines out of
2561 machine.c.
2562 20060204 Adding a -c command line option, for running debugger commands
2563 before the simulation starts, but after all files have been
2564 loaded.
2565 Minor iq80321-related updates.
2566 20060209 Minor hacks (DEVINIT macro, etc).
2567 Preparing for the generalization of the 64-bit dyntrans address
2568 translation subsystem.
2569 20060216 Adding ARM ldrd (double-register load).
2570 20060217 Continuing on various ARM-related stuff.
2571 20060218 More progress on the ATA/wdc emulation for NetBSD/iq80321.
2572 NetBSD/evbarm can now be installed :-) Updating the docs, etc.
2573 Continuing on Algor emulation.
2574
2575 ============== RELEASE 0.3.8 ==============
2576

  ViewVC Help
Powered by ViewVC 1.1.26