1Changelog for GXemul: 2--------------------- 3 420030829 Skeleton. ELF stuff. Some instructions. 520030830 Simple test programs using +-*/^|&%, function calls, 6 loops, and stuff like that work. 720030903 Adding more instructions, fixing some bugs. 820030907 Making adding of memory mapped devices easier, although 9 the framework isn't built for speed. 10 Adding a -q switch to turn of debug output. 1120030911 Trying to fix some bugs. Minor changes. Some COP0 12 registers are now meaningful. 1320030919 Making APs (non-bootstrap cpus) available via a simple 14 'mp' device. Implementing ll/lld and sc/scd (for atomic 15 memory updates, needed by MP operating systems). 1620030923 Minor updates: more instructions (divu, mulu, lwu, 17 perhaps some more), and opcode usage statistics. 1820030924 If the next instruction is nullified (for 'branch 19 likely' type of instructions), counters for delays etc 20 are now decreased as they should. 21 Adding some comments. 22 Adding instructions: movz, movn. 23 Adding a simple mandelbrot test to mipstest.c. 2420030925 Adding instructions: bltzl, bgezl, lh, lhu, sh, mfc*, 25 mtc*. 26 Adding a dummy instructions: sync, cache. 27 Adding minimal DECstation PROM functionality: printf() 28 and getsysid() callback functions. 29 Beginning work on address translation. 3020030927 Adding some more cop0 functionality (tlb stuff). 31 Adding mc146818 real-time clock. (Skeleton stuff.) 3220030928 Adding a dc7085 serial console device (dummy, but enough 33 to output chars to the screen). NetBSD uses this for 34 the MIPSMATE 5100. 3520030929 Working on the TLB stuff. 36 Adding instructions: srlv, tlbwr, tlbr, tlbp, eret. 3720030930 Trying to find a bug which causes NetBSD to bug out, but 38 it is really hard. 39 Adding some a.out support (for loading an old 40 OpenBSD 2.8/pmax kernel image). 41 Adding instructions: lwc*, ldc*, swc1 and swc3. 42 Beginning to add special code to handle the differences 43 between R4000 (the default emulation) and R2000/R3000. 4420031001 Symbol listings produced by 'nm -S' can be used to 45 show symbolic names for addresses. (-S) 4620031002 Fixing the i/d fake cache for R2000/R3000. It's still 47 just an ugly hack, though. 48 Fixing minor bugs to make the 3100 emulation use the 49 dc device (serial console) correctly. So far, 5100 and 50 3100 are the only ones that get far enough to print 51 stuff, when booting NetBSD. 5220031004 Adding skeleton Cobalt machine emulation (-E). 53 Adding a dummy ns16550 serial controller, used by the 54 Cobalt machine emulation. 5520031006 Adding unaligned load/store instructions (lwl, lwr, 56 ldl, ldr, swl, swr, sdl, sdr), although they are not 57 tested yet. 58 Fixed a "data modified on freelist" bug when running 59 NetBSD/cobalt: setting the top bit of the index register 60 when a tlbp fails (as the R4000 manual says) isn't 61 sufficient, I had to clear the low bits as well. 62 Adding break and syscall instructions, but they are not 63 tested yet. 64 Adding a 'gt' device, faking a PCI bus, for the Cobalt 65 emulation. 6620031008 Adding initial support for HPCmips (-F), a framebuffer 67 device using X11. NetBSD/hpcmips can output pixels to 68 the framebuffer, but that's about it. 6920031009 Fixing the NetBSD/pmax bug: the "0/tftp/netbsd" style 70 bootstring was only passed correctly in the bootinfo 71 block, it needs to be passed as argv[0] as well. 72 Adding instructions: mtlo, mthi. 73 Rearrangning the source tree layout. 74 Adding console input functionality. The NetBSD/cobalt 75 kernel's ddb can now be interacted with. 7620031010 Adding experimental (semi-useless) -t option, to show 77 a function call tree while a program runs. 78 Linux/cobalt now prints a few messages, but then hangs 79 at "Calibrating delay loop..." unless an ugly hack is 80 used (setting a word of memory at 0x801e472c to non-zero). 8120031013 Adding a framebuffer device used in DECstation 3100; 82 VFB01 for mono is implemented so far, not yet the 83 VFB02 (color) variant. Rewriting the framebuffer 84 device so that it is usable by both HPCmips and DECstation 85 emulation. 8620031014 Minor fixes. Everything should compile and run ok 87 both with and without X11. 8820031015 Adding support for ECOFF binary images; text, data, 89 and symbols are loaded. (Playing around with ultrixboot 90 and ultrix kernels.) 9120031016 The DECstation argv,argc stuff must be at 0xa0000000, 92 not 0x80000000, or Ultrix kernels complain. 93 Adding R2000/R3000 'rfe' instruction. 94 Implementing more R2K/R3K tlb specific stuff, so that 95 NetBSD boots and uses the tlb correctly, but much of 96 it is ugly. (Needs to be separated in a cleaner way.) 97 ECOFF symbols sizes are now calculated, so that offsets 98 within symbols are usable. 9920031017 DECstation bootstrings now automatically include the 100 correct name of the kernel that is booting. 101 Ultrix boots a bit. 10220031018 ELF symbols are now read automatically from the binary. 103 -t trace looks a bit better (string arguments are shown). 104 Trying to get initial R5900 stuff working (the 128-bit 105 CPU used in Playstation 2). 106 Fixing a minor bug to make the VFB02 (color framebuffer) 107 device work better, but it is still just 256 grayscales, 108 not real color. Ultrix can now use the framebuffer (it 109 calls it PMAX-CFB). 110 A machine can now consist of CPUs of different types. 111 Adding instructions: daddi, mov_xxx, mult_xx. The xxx 112 instructions are not documented MIPS64 instructions, 113 but NetBSD/playstation2 uses them. Perhaps VR5432 114 instructions? 115 Adding sign-extension to 32-bit mult. 116 Adding Playstation 2 devices: dmac (DMA controller), 117 gs (Graphic something?), and gif (graphics something 118 else, which has access to the PS2's framebuffer). 119 NetBSD/playstation2 works a bit, and prints a few 120 bootup messages. 12120031020 The cpu_type field of the cpu struct now contains 122 usable values in a much better form than before. This 123 simplifies adding of new CPU types. 12420031021 Fixing an interrupt related bug: pc_last was used, but 125 for interrupts this was incorrect. Fixed now. 126 Fixing a load/store related bug: if a load into a 127 register was aborted due to an exception, the register 128 was still modified. 129 The mc146818 rtc now reads its time from the system's 130 time() function. 131 Fixing another exception bug: if loading an instruction 132 caused an exception, something bogus happened as the 133 emulator tried to execute the instruction anyway. This 134 has been fixed now. 13520031023 Adding a quick hack which skips "while (reg --) ;" 136 kind of loops. 137 NetBSD/pmax suddenly reached userland (!), but only 138 once and attempts to repeat it have failed. I believe 139 it is problems with my interrupt handling system. 14020031024 Adding 8-bit color palette support to the framebuffer. 141 Connecting the pmax vdac device to the framebuffer's 142 rgb palette. 143 Fixing a bug in the dc device, so that console input 144 is possible; interaction with NetBSD/pmax's built-in 145 kernel debugger works now. 146 Symbol sizes for file formats where symbol size isn't 147 included are now calculated regardless of file format. 148 Physical memory space can now be smaller than 64 bits, 149 improving emulation speed a bit. 150 Doing other minor performance enhancements by moving 151 around some statements in critical parts of the code. 15220031025 Minor changes to the dc device. 15320031026 Adding support for reading symbols directly from 154 a.out files. (Works with OpenBSD/pmax binaries.) 155 Hardware devices may now register "tick functions" at 156 specific cycle intervals in a generic fashion. 157 All four channels of the dc serial controller device 158 should now work; playing around with keyboard scan 159 code generation when using the DECstation framebuffer. 160 Making various (speed) improvements to the framebuffer 161 device. 16220031027 Playing around with the sii SCSI controller. 16320031028 Minor fixes. 164 Adding an SGI emulation mode (-G), and some ARCBIOS 165 stuff, which SGIs seem to use. 166 Adding getbitmap() to the DEC prom emulation layer, 167 so some more -D x models become more usable. 168 Adding a dummy 'ssc' serial console device for 169 DECsystem 5400 emulation. 170 Playing around with TURBOchannel stuff. 17120031030 Minor fixes. 172 Adding the sub instruction. (Not tested yet?) 173 Sign-extending the results of multu, addi,addiu, 174 add,addu,sub,subu,mfcZ. 175 Adding a colorplanemask device for DECstation 3100. 176 Fixed the NetBSD/pmax bug: I had forgotten to reset 177 asid_match to 0 between tlb entry checks. :-) Now 178 userland runs nicely... 17920031031 Fixing more bugs: unaligned load/store could fail 180 because of an exception, but registers could be "half 181 updated". This has been fixed now. (As a result, 182 NetBSD/pmax can now run with any of r2000,r3000,r4000, 183 r4400, or r5000.) 184 Adding some R5K and R10000 stuff. (Note: R5K is NOT 185 R5000. Weird.) 186 Adding dummy serial console (scc) for MAXINE. 187 MAXINE also works with framebuffer, but there is no 188 color palette yet (only black and white output). 18920031101 Moving code chunks around to increase performance by 190 a few percent. 191 The opcode statistics option (-s) now shows opcode 192 names, and not just numbers. :-) 193 Fixing the bug which caused NetBSD/pmax to refuse 194 input in serial console mode, but not in keyboard/ 195 framebuffer mode: the osconsole environment variable 196 wasn't set correctly. 197 Adding DEC PROM getchar() call. 198 The transmitter scanner of the dc device now scans 199 all four channels at once, for each tick, so serial 200 output is (approximately) 4 times faster. 20120031103 Adding a dummy BT459 vdac device, which does nothing 202 but allows a PMAG-BA turbochannel graphics card to be 203 used as framebuffer. 204 Several DECstation machines (-D 2, 3, and 4) can now 205 use TURBOchannel option card framebuffers as console, 206 for output. (Keyboard input is still not implemented 207 for those models.) Only PMAG-AA (1280x1024x8) and 208 PMAG-BA (1024x864x8), both using BT459 vdac, have 209 been tested so far. 210 Modifying the X11 routines so that several framebuffer 211 windows now can be used simultaneously (if several 212 graphics option cards are to be emulated concurrently). 21320031104 DEC MIPSMATE 5100 (KN230) interrupts are shared 214 between devices. I've added an ugly hack to allow 215 that to work, which makes it possible to boot NetBSD 216 into userland with serial console. 21720031106 Removing the -S (symbol) option, as symbol files can 218 now be given in any order together with other file 219 names to be loaded. 220 cookin tipped me about using (int64_t) (int32_t) 221 casts instead of manually sign-extending values. 222 Casting sometimes increases performance, sometimes 223 decreases. It's tricky. 224 Importing mips64emul into CVS. 22520031107 Adding a generic ARC emulation mode. 226 Increasing performance of the framebuffer by not 227 updating it (or the XImage) if a write to the 228 framebuffer contains exactly what is already in it. 229 (This improves scrolling speed and initialization.) 230 Adding initial MIPS16 support. 231 Adding initial disk image support (-d command line 232 option), but this will not be used until I get some 233 kind of SCSI-controller emulation working. 23420031108 Adding the first MIPS16 instructions: "move y,X", 235 "ld y,D(x)", and "daddiu S,K" (but the last one 236 doesn't work yet). 237 Fixing the console environment variable for 238 Enough of the 'asc' controller is now implemented 239 to let NetBSD get past scsi disk detection when 240 no disk images are used. 241 DECstation machine type 2; both serial console and 242 graphical console work now. 243 Other X-windows bit-depths than 24 bits work now, 244 but colors are still not correct in non-24 bit modes. 245 Keypresses in X framebuffer windows are now 246 translated into console keypresses. (Normal keys, but 247 not cursor keys or other special keys.) 24820031111 Adding support for X11 using non-24-bit output. 24920031120 Adding X11 mouse event to emulated mouse event 250 translation, but it's not tested yet. 251 Trying to get more of the SCSI controller emulation 252 to work. 25320031124 Raw binaries can now be loaded into memory. 25420031204 Adding srec binary support. 25520031220 Adding some super-ugly arcbios emulation code. 256 Making some progress on the SGI and ARC machine 257 emulations. 25820031222 SGI and ARC progress. Multiple CPUs are now added to 259 the arcbios component tree (although NetBSD cannot 260 actually use more than one). 26120031228 Adding 'crime' and 'macepci' fake devices for SGI 262 emulation. 263 Finally implementing the cop0 'compare' register. 264 Improvements to the ns16550 device, but it is still 265 incomplete. 266 SGI userland is now reached, but interaction is broken 267 (due to the buggy ns16550). 26820031229 Adding some more instructions: teq, dsllv 269 Adding a Nintendo 64 emulation mode (skeleton). 270 Adding R4300 and R12000 to the cpu list. 27120031230 Adding bltzal, bltzall, bgezal, bgezall (not really 272 tested yet). 273 Fixing the 16550 serial controller device (by not 274 supporting fifo, so in fact it emulates a 16450 275 instead). This causes NetBSD/sgimips to run nicely 276 into userland, sysinst, and so on. 277 Some ARC/RD94 interrupts seem to work ok now, but 278 i/o interrupts are still not correctly implemented. 279 NetBSD/arc userland is reached and can be interacted 280 with, but there's no sysinst (?). 28120040103 Trying to get some Irix stuff to work, but it's hard. 282 Fixing some Cobalt/linux problems. 28320040104 Adding a dummy 8250 device, so that Linux/sgimips can output 284 console messages. 285 Adding dmultu. (The same as dmult, so I'm not sure it's correct. 286 Perhaps dmultu is correct and dmult is wrong...) 287 Fixing a bug in unaligned load/stores of 64-bit values (a cast 288 was needed). 289 Linux/sgimips in 64-bit works a bit more than before. 290 Adding simple (polled) input functionality to dev_zs. 291 Making some progress on SGI-IP22 (IP32 still works best, 292 though). 293 Fixing the mc146818 clock device in ARC/NEC and SGI emulation 294 modes, the year field was not correct. 295 Adding a fake 'pref' instruction (lwc3). 29620040106 Separating out memory.h from misc.h. 297 Refactoring of a lot of small code fragments. 298 The PCI bus device is now shared between Cobalt, SGI, and ARC. 299 Support for RAM mirroring (dev_ram.c, not really tested yet). 300 Ugly hack to select the largest of ELF string symbol tables, 301 if there are more than one. 302 Memory hole fix for ARCBIOS, and a fix for very large (>= 4GB) 303 amounts of emulated RAM. 304 TGA (DEC 21030) PCI graphics device. NetBSD/arc can boot with 305 this card and use it as a framebuffer console. 30620040107 Adding a fix (partly incorrect) to daddi, to allow Linux/sgimips 307 to boot in 64-bit mode. 30820040108 Fixing a sll/nop bug (rd==0 for nop, not sa==0 as before). 30920040109 Trying to get an SGI-IP32 PROM image to boot. 31020040110 Faking R10000 cache things. 311 The PROM image boots, although it takes almost forever for it 312 to realize that there is no keyboard. 313 The 'gbe' SGI-IP32 graphics device works enough to display the 314 Linux framebuffer penguin in the upper left corner :-) 31520040111 -p and -P addresses can now be given as symbol names, not just 316 numeric values. 317 Experimenting with adding a PCIIDE (dev_wdc) controller to the 318 Cobalt emulation. 31920040120 Adding src/bintrans.c. No code yet, but this is a place for 320 ideas to be written down. 321 Increasing performance a little bit by inlining the check for 322 interrupts (which occurs for every instruction). 32320040124 Experimenting with pure userland (syscall) emulation. 32420040127 Fixes for compiling under Solaris. 32520040206 Some bintrans experiments. 32620040209 Adding some simple Ultrix userland emulation syscalls. 32720040211 Adding decprom_dump_txt_to_bin.c to the experiments/ dir. 328 Adding a section to doc/ on how to use DECstation PROM dumps. 329 Adding a hello world example to doc/ as well. 33020040218 TURBOchannel slots that are empty now return a DBE exception, 331 so that Ultrix and DECstation PROMs don't complain about 332 broken TURBOchannel ROMs. 333 Working some more on the machine-dependant interrupt stuff. 33420040219 Trying out some Linux/DECstation kernels (semi-successfully). 33520040222 YES! I finally found the bug that caused Linux/SGI-IP32 to only 336 work on Alpha, not on 32-bit machines. It was a shift left, 337 probably done using 6 bits on alpha, 5 bits on 32-bit machines. 33820040223 Some minimal DEC KN5800 progress; Ultrix prints some boot 339 messages, detects 16 XMI R3000 cpus, and get a NULL panic. 340 It's all fake, though, the CPUs don't actually work. 341 Still, better than nothing :-) 34220040225 An Ultrix OSF1 kernel with a ramdisk now boots :-) (It was 343 a problem with ultrixboot not giving the same arguments as 344 NetBSD's boot program.) 34520040225(later) Fixing a bug in the DECstation dc serial device; digits 0-9 346 were translated to numeric keypad 0-9, not the normal 0-9. 347 (This caused Ultrix to print escape sequences instead of 348 digits.) 34920040226 Some progress on machine-dependant interrupt delivery 350 for -D7 (Maxine) and -D4, and some more 'scc' serial 351 controller featuers are implemented (but no interrupts/ 352 dma/keyboard/mouse stuff yet). 35320040228 Progress on the scc controller; -D4 works in both serial 354 console mode and with keyboard (graphical console), but no 355 mouse yet. 35620040301 SGI mace interrupts are now done using the new machine- 357 independant interrupt system. 35820040303 Fixing an R5900 bug; the lowest 6 bits have special meaning 359 for coprocessor functions, not just 5 bits as on non-R5900 360 CPUs. (This fixes a bug which caused NetBSD to crash.) 36120040304 Adding enough (fake) DMA capabilities to the ioasic device 362 to allow Ultrix to print boot messages in the -D3, -D4, 363 and -D7 modes, and also print graphical console messages 364 in -D4 and -D7 modes. 365 -D11 (DEC5500) polled getchar added (to the 'ssc' device). 366 Adding the 'madd' instruction (including R5900 weird stuff). 36720040304(later) Playstation 2's GIF can now copy 640x16 pixel chunks, allowing 368 NetBSD to scroll up the framebuffer. The cursor also works 369 better now. 370 Playstation 2 bootinfo RTC data should now be passed correctly 371 to the running kernel. 372 DECstation rtc year should be either 72 or 73, anything else 373 will cause Ultrix to give a warning about invalid year. 37420040306 Combining playstation2's dmac, interrupt, and timer devices 375 into one (ps2_stuff). 376 Adding some R5900 instructions: mfsa, mtsa, pmfhi, pmflo, por, 377 lq, and sq. (Most of them are just guesses, though.) 378 Implementing my own XImage putpixel routine, which can be 379 inlined... significantly faster than normal XPutPixel. :-) 38020040307 Implementing the basic functionality of a "PMAG-CA" pixelstamp 381 accellerated framebuffer device. Works with NetBSD and 382 Ultrix, but no cursor or color support. 38320040308 PMAG-CA, -DA, and -FA pixelstamps seem to work now. 384 Adding a hack to allow a pmax/mach kernel to be loaded (it's 385 a COFF file with 0 (!) sections). 386 Initial test of bt459 + framebuffer cursor support. 38720040309 Fixes/updates of dev_dec5800 and dev_ssc (and dev_decxmi) allow 388 a KN5800 Ultrix-OSF1-ramdisk kernel to boot all the way into 389 userland and be interacted with. 390 The bt459 cursor should now look semi-nice, but it is still 391 a bit fake. 39220040310 Moving the DEC CCA stuff from src/machine.c into a separate 393 device file (devices/dev_deccca.c). 394 An ugly hack added to allow some more OSF/1 kernels (almost 395 a.out, but without many of the header fields) to load. 39620040314 Adding PMAG-JA and PMAG-RO (1280x1024 x 8-bit) TURBOchannel 397 graphics devices. They work in Ultrix, but only monochrome 398 and no cursor, because there are no ramdacs or such yet. 39920040315 Pixelstamp solid fill now supports colors other than just 400 zero-fill. 401 Adding a (new) regression test skeleton. 40220040321 Some really minor updates. 40320040323 Fixes to allow SGI-IP20 and IP22 to work a bit better 404 (aliased memory), and adding "private" firmware-like vectors 405 to arcbios emul. An IP22 Irix kernel gets far enough to 406 print an assertion warning (and then double panics). :-) 40720040324 Adding a generalization hack to the SCC serial controller 408 to work with SGI-IP19 (in addition to DECstations). 409 Adding the 'sdc1' instruction. 410 Some progress on various SGI emulation modes. 41120040325 Minor updates. 41220040326 Fixed a 'madd' bug (r5900). NetBSD/playstation2 now reaches 413 userland correctly. And a simple fix which allows NetBSD 414 timer interrupts to be triggered; NetBSD uses T_MODE_CMPE 415 (compare), while Linux uses _OVFE (overflow). 41620040328 Linux on Playstation 2 boots a bit. The Playstation 2 417 graphics controller has been extended to work better with 418 NetBSD, and to include some Linux support as well. 419 Some interrupt handling enhancements on Playstation 2, 420 needed for Linux' dma. 421 128-bit loads and stores (lq and sq) are allowed, although 422 the top half of quadwords are not modified by other 423 instructions. (Linux uses lq and sq.) 424 Big-endian X Windows servers now display correct rgb color, 425 not bgr as before. 42620040330 Some minor updates to the documentation. 42720040401 Adding a dummy ps2 OHCI device. 42820040402 Progress on the asc SCSI controller. 42920040406 Hack to allow ./configure, make to work on HP-UX B.11.00 430 on HPPA-RISC, gcc 3.3.2. (Does not work with HP's cc.) 431 More progress on the asc SCSI controller. Fixing INQUIRY, 432 adding READ_CAPACITY, adding READ. Works a bit with NetBSD 433 and some (but not all) Ultrix kernels, on DECstation type 2. 434 Adding WRITE, SYNCRONIZE_CACHE. 435 Mounting disks works in NetBSD :-) It is a bit buggy, 436 though. Or something else is buggy. 43720040407 The bug is triggered by gunzip during NetBSD/pmax install. 43820040408 Fixing a bug (non-nul-terminated string) which caused X11 439 cursors to not display on Solaris. 440 Unnecessary X11 redraws are skipped (removes some weird 441 delays that existed before), and cursors are redrawn on 442 window exposure. (The cursor functionality has been moved 443 from dev_fb.c to x11.c.) 44420040411 Fixing the DC7085 device so that Ultrix doesn't behave weird 445 if both tx and rx interrupts occur at the same time. 446 More advancements on the asc SCSI controller. 447 More disk image filename prefixes are now recognized; c (for 448 CD-ROM, as before), d for disk, b for boot device, r for 449 read-only, and 0-7 for scsi id. 450 Mounting disks works in Ultrix. Installing to disk usually 451 crashes for various reasons, but an OSF/1 install gets 452 relatively far (similar to the NetBSD/pmax install). 45320040412 Trying to find the bug. 45420040415 Finally found and fixed the bug; SCSI reads and writes 455 (actually, any data in or data out) can be split up into 456 multiple DMA transfers. That stuff was only partially 457 implemented, and the part that was implemented was buggy. 458 It works now. NetBSD/pmax and Ultrix 4.3 seems to like 459 the SCSI stuff enough to install almost all the way. 46020040415 (more) Adding a hack which allows a host's cdrom device to be used as 461 a cdrom device inside the emulator, eg /dev/cd0c. 462 Making the cycle counter int64_t instead of long, as a 'long' 463 overflows too easily on 32-bit machines. (The bug is still 464 there, though.) 465 I've now verified that a full NetBSD/pmax install can be done. 466 If using a PMAG-AA graphics board, startx brings up X :-) 467 mips64emul can be compiled inside NetBSD inside mips64emul, 468 and it can run NetBSD in that environment. (I'm getting 469 dizzy... :-) 47020040417 Moving some coprocessor stuff from cpu.c to coproc.c. 47120040424 Adding a BT455 vdac for PMAG-AA. Black and white are now 472 rendered correctly in Xpmax. 473 Adding colormap support to the BT459 device, for PMAG-BA. 47420040425 Fixing a buffer length bug, which caused an Ultrix 4.5 475 install to bug out on an i386 host. 47620040429 FPU experiments. 47720040502 More FPU experiments. 478 Speedup for exception debug messages: in quiet mode, debug 479 messages were still evaluated, which took a relatively 480 large amount of time. 48120040503 Most FPU stuff fixed, but there is at least one known bug 482 left; ps axu in NetBSD triggers it (ps loops forever). 48320040504 A default install of Ultrix 4.5 succeeded! It boots up with 484 a graphical login. 485 Fixing the keyboard repetition bug (a lk201 "up" (release) 486 scancode is now sent after every key). 48720040505 Both CR and LF now produce the same lk201 scancode, so that 488 pressing 'enter' works as expected in Ultrix. 48920040506 Adding a vaddr to paddr translation cache, causing a speedup 490 of perhaps 50% or more. 49120040507 Fixing PMAG-BA color for Ultrix. (Ultrix relies on interrupts 492 coming from the TURBOchannel slot to update the palette.) 49320040508 Fixing cursor positioning for PMAG-BA. 49420040511 Prints current nr of instructions per seconds, not only 495 average, when using -N. 49620040515 Some more bintrans experiments. 49720040606 Adding ARCBIOS GetReadStatus() and Read(). 498 Adding some instructions: tlt, tltu, tge, tgeu, tne. 49920040607 Adding the dsub instruction. 500 Some minimal progress on SGI-IP30 emulation. 501 Applying a patch from Juli Mallett to src/file.c (I'm not 502 sure yet if it breaks or fixes anything). 503 Some minor fixes for SGI-IP22 (such as faked board revision 504 numbers). 50520040608 ll/sc should now fail if any unrelated load/store occurs. 506 Minor changes to the configure script. 507 Adding some ifdefs around code which is not often used 508 (the mfhi/mflo delay, and the last_used TLB experimental 509 code); this might cause a tiny speedup. 51020040609 Minor fixes. 51120040610 Various minor SGI fixes (64-bit ARCS stuff, progress on the 512 CRIME/MACE interrupt system, and some other random things). 51320040611 More crime/mace progress, and some more work on pckbc. 514 KN5800 progress: adding a XMI->BI adapter device; a disk 515 controller is detected (but it is just a dummy so far). 51620040612 Adding "dev_unreadable", which simplifies making memory 517 areas unreadable. (NetBSD on SGI-IP22 no longer detects 518 non-existant hpc1 and hpc2 busses.) 519 Implementing rudimentary support for IP22 "local0" and 520 "local1" interrupts, and "mappable" local interrupts. 521 Some progress on the WDSC SCSI controller on IP22, enough 522 to let NetBSD get past the disk detection and enter 523 userland! :-) 524 The zs (zilog serial) device now works well enough to let 525 NetBSD/sgimips be interacted with on IP22. :-) (Though 526 it is very ugly and hardcoded.) 52720040613 IP32 didn't work last night, because there were too many 528 tick functions registered. That has been increased now. 529 Trying out NetBSD/sgimips 2.0 beta kernels. There are some 530 differences compared to 1.6.2, which I'm trying to solve. 531 Interrupt fixes for IP32: _serial and _misc are different. 532 Separation of IP22 (Full-house) and IP24 (Guiness). 53320040614 Modifying the memory layout for IP20,22,24,26 (RAM is now 534 offset by 128MB, leaving room for EISA registers and such), 535 and moving around some code chunks. This is not well 536 tested yet, but seems to work. 537 Moving parts of the tiny translation cache, as suggested 538 by Juli Mallett. It seems that the speedup isn't as 539 apparent as it was a few weeks ago, though. :-( 540 Speedups due to not translating addresses into symbol 541 names unless the symbol name is actually printed. 542 Added support for loading old big-endian (Irix) ECOFF 543 kernels (0x60 0x01 as the first two bytes). 54420040615 (late) Adding enough SGI IP20 (Indigo) support to let NetBSD 2.0 545 enter userland :-) No interrupt specifics are implemented 546 yet, so it hangs while doing terminal output. 54720040618 Experimenting with the WDSC SCSI controller for IP20,22,24. 54820040620 Adding a program which converts SGI prom dumps from text 549 capture to binary, and some hacks to try to make such an 550 IP22 PROM to work better in the emulator. 55120040621 Removing the Nintendo 64 emulation mode, as it is too 552 uninteresting to support. 553 Adding SCSI tape device support (read-only, so far). 554 Fixing a bug which caused the cursor to be corrupted if new 555 data was written to the framebuffer, but the cursor wasn't 556 moved. 55720040622(early) Finally! Making progress on the SCSI tape stuff; when going 558 past the end of a file, automagically switch to the beginning 559 of the next. 56020040622(late) Trying to track down the last SCSI tape bugs. 561 Removing _all_ dynamic binary translation code (bintrans), 562 starting from scratch again. 56320040623(early) Performing a general code cleanup (comments, fixing stuff 564 that led to compiler warnings, ...). 565 Disabling MIPS16 support by default, and making it a 566 configure time option to enable it (--mips16). This gives 567 a few percent speed increase overall. 568 Increasing performance by assuming that instruction loads 569 (reading from memory) will be at the same page as the last 570 load. (Several percent speedup.) 571 Moving the list of kernels that can be found on the net from 572 README to doc/. 57320040624 Finally! I found and fixed the bug which caused 'ps', 'top', 574 'xclock', and other programs in NetBSD/pmax to behave weird. 575 Increasing performance by a few percent by running as many 576 instructions in a row as possible, before checking for 577 hardware ticks. 578 When booting from SCSI tapes on DECstation, the bootstring 579 now contains 'tz' instead of 'rz'. 580 Adding a second ARC machine mode, "Acer PICA-61", -A2. 581 Disabling the support for "instruction delays" by default 582 (it has to be enabled manually in misc.h now, but is never 583 used anywhere anyway). 584 Other minor optimizations (moving around stuff in the 585 cpu struct in misc.h, and caching cpu->pc in cpu.c). 586 Separating the tiny translation cache into two, one for 587 code and one for data. This gives a few percent speed 588 increase. 58920040625(early) I think now is a good time for a "feature freeze", 590 to let the code stabilize and then make some kind of 591 first release. 59220040625(later) Adding a -v (verbose) command line option. If -v is not 593 specified, the emulator goes into -q (quiet) mode just before 594 it starts to execute MIPS code. 59520040627 The configure script now adds -fomit-frame-pointer to the 596 compile flags if the $CC seems to be able to handle that. 597 Found and fixed a serious interrupt bug in BT459 (Ultrix' 598 behaviour required a hack, which was incorrect), so 599 performance for machines using the PMAG-BA framebuffer is 600 now improved. 601 For X11 bitdepths other than 8 or 24, a warning message 602 is printed at startup. 603 A number of other minor fixes, optimizations, updated 604 comments and so on. 605 Adding a BUGS file, a list of known bugs. 606 Adding a minimal man page, doc/mips64emul.1. 60720040628 Hacks for faking the existance of a second level cache 608 (ARCBIOS and other places). 609 An important fix for dc7085: tx interrupts should happen 610 before rx interrupts, not the other way around as it was 611 before. (This speeds up NetBSD boot on DECstation, and 612 fixes a bug which Ultrix triggered on heavy keyboard input.) 613 A couple of other minor fixes. 614 Framebuffer fix: there was a bug which caused the rightmost/ 615 bottom pixel to sometimes not be updated, when running in 616 scaledown mode. This is now fixed. 617 Adding a small program which removes "zero holes" from 618 harddisk image files. 61920040629 More minor fixes. 62020040629(later) Adding -A3 (NEC RISCstation 2200) (this is similar to 621 the 2250 model that NetBSD/arc can already boot all the 622 way into userland and be interacted with), and -A4 623 (Deskstation Tyne). 624 Some more minor fixes. 62520040630 Adding support for 15 and 16 bits X11 framebuffers, 626 and converting from XYPixmap to ZPixmap (this fixes the 627 problem of updates appearing in "layers" on some X 628 servers). 629 The pixels in the mouse cursor (for BT459) are now colored 630 as the emulated OS sets them, although no transparency 631 masking is done on the edges of the cursor yet. (In plain 632 English: the mouse cursor is no longer just a white solid 633 square, you can actually see the mouse cursor image 634 on the white square.) 635 636============== RELEASE 0.1 ============== 637 63820040701 The -j option now takes a name, the of the kernel as passed 639 on to the bootloader. ("netbsd" is the default name.) 640 Adding support to load bootstrap code directly from a disk 641 image, for DECstation. Both NetBSD/pmax and Ultrix boot 642 straight of a disk image now, with no need to supply a 643 kernel filename on the command line. (Ultrix still needs 644 -j vmunix, though, to boot from /vmunix instead of /netbsd.) 64520040702 Minor bugfix (some new untested code for X11 keypresses was 646 incorrect). 64720040702(later) Adding an ugly hack for CDROMs in FreeBSD; if an fread() isn't 648 done at a 2048-byte aligned offset, it will fail. The hack 649 tries to read at 2048-byte aligned offsets and move around 650 buffers to make it work. 651 Adding video off (screen blanking) support to BT459. 652 653============== RELEASE 0.1.1 ============== 654 65520040702(later) Cleanup to remove compiler warnings (Compaq's cc, Solaris' cc, 656 and gcc 3.3.3/3.3.4 in Linux), mostly by putting ULL on large 657 numeric constants. 658 Better support for scaledown of BT459 cursors, but still not 659 color-averaging. 660 Beginning the work on adding better memory latency support 661 (instruction delays), enabled by the --delays configure option. 66220040703 Modifications to the configure script so that a config.h file 663 is created, containing things that were passed along as 664 -Dxxx on each cc command line before. 665 More work on instruction latency support; trying to separate 666 the concepts of nr of cycles and nr of instructions. 66720040704 Working on R2000/R3000 caches. 668 Adding a '--caches' option to the configure script. 669 Various small optimizations. 670 R3000 caches finally work. (I know that there is at least one 671 bug, regarding interrupt response.) 67220040705 Working on the 'le' device, and on a generic (device 673 independant) networking framework. le can transmit and receive 674 packets, and the network framework fakes ARP responses from a 675 fake gateway machine (at a fixed ip address, 10.0.0.254). 676 Adding a '-c' command line option, which makes emulated_hz 677 automatically adjust itself to the current number of emulated 678 cycles per host CPU second (measured at regular intervals). 67920040707 Removing the '-c' option again, and making it the default 680 behaviour of the emulator to automatically adjust clock 681 interrupts to runtime speed (as long as it is above 1 MHz). 682 (This can be overridden by specifying a static clock rate with 683 the -I option.) 684 Updating the doc/ stuff a bit. 685 Generalization of the DECstation bootblock loading, to work 686 with Sprite/pmax. Lots of other minor modifications to make 687 Sprite work, such as adding support for DECstation "jump table" 688 PROM functions, in addition to the old callback functions. 689 Sprite boots from a disk image, starting the kernel if the 690 argument "-j vmsprite" is used, but it seems to not like the 691 DBE exceptions caused by reading empty TURBOchannel slots. :-/ 69220040708 Minor changes and perhaps some tiny speed improvements. 693 The Lance chip is (apparently) supposed to set the length of 694 received packets to len+4. (I've not found this in any 695 documentation, but this is what NetBSD expects.) So now, ICMP 696 echo replies work :-) UDP works in the outgoing direction, 697 in the incoming direction, tcpdump can see the packets but they 698 seem to be ignored anyway. (Weird.) 699 Adding a separate virtual-address-to-host-page translation 700 cache, 1-entry for loads, 1-entry for stores. (For now, it 701 only works on R4000 as there are conflicts with cache usage 702 on R3000). 703 Changing the lower clock speed bound from 1 MHz to 1.5 MHz. 70420040709 Incoming UDP checksums were wrong, but are now set to zero 705 and NetBSD inside the emulator now accepts the packets (eg. 706 nameserver responses). Host lookups and even tftp file 707 transfers (using UDP) work now :-) 708 Adding a section on Networking to the Technical documentation, 709 and a preliminary NetBSD/pmax install instruction for network 710 installs to the User documentation. 711 Some updates to the man page. 71220040709(later) Fix to the TURBOchannel code to allow Sprite to get past the 713 card detection. Seems to still work with Ultrix and NetBSD. 714 This also makes Linux/DECstation properly recognize both the 715 Lance controller and the SCSI controller. Linux 2.4.26 from 716 Debian boots nicely in framebuffer mode :-) 71720040710 Some bits in the KN02 CSR that were supposed to be readonly 718 weren't. That has been fixed, and this allows Linux/DECstation 719 to get past SCSI detection. :-) 720 Minor updates to the ASC controller, which makes Linux and 721 OpenBSD/pmax like the controller enough to be able to access 722 SCSI devices. OpenBSD/pmax boots from a disk image for the 723 first time. :-) Linux detects SCSI disks, but I have no 724 bootable Linux diskimage to test this with. 725 Updating the doc/ to include instructions on how to install 726 OpenBSD/pmax onto a disk image. 727 Naively added a PMAGB-BA (1280x1024x8) in hopes that it would 728 basically be a PMAG-BA (1024x864x8) in higher resolution, 729 but it didn't work that way. I'll have to look into this later. 730 Adding a -o option, useful for selecting '-s' (single user 731 mode) during OpenBSD install and other things. 732 After a lot of debugging, a serious bug related to the tiny 733 cache was found; Linux just changes the ASID and returns when 734 switching between processes in some occasions without actually 735 _writing_ to the TLB, and I had forgotten to invalidate the 736 tiny cache on such a change. 73720040711(early) I've been trying to repeat the OpenBSD install from yesterday, 738 but appart from the first initial install (which was 739 successful), I've only been able to do one more. Several 740 attempts have failed with a filesystem panic in the middle 741 of install. I'm not sure why. 74220040711 I found the "bug": wget downloaded the simpleroot28.fs.gz file 743 as read-only, and gunzip preserved those flags. Thus, OpenBSD's 744 installer crashed as it didn't get its writes through to the 745 disk. 746 Parts of the 1280x1024x8 PMAGB-BA graphics card has been 747 implemented, it works (unaccelerated) in NetBSD and OpenBSD, 748 but Ultrix does not seem to like it. 749 Cleaned up the BT459 cursor offset stuff a bit. 750 Trying to make the emulated mouse coordinates follow the host's 751 mouse' coordinates (for lk201, DECstation), by 752 "de-accelerating" the data sent to the emulated OS. 75320040711(later) Fix so that Sprite detects the PMAG-BA correctly. 754 Adding some stuff about NFS via UDP to the documentation. 755 Fixed the 'update flag' for seconds, so now Sprite doesn't 756 crash because of timer-related issues anymore. 757 Fixing KN02 interrupt masks a bit more, to make Sprite not 758 crash. Sprite now runs quite well. 75920040712 Working on IP/UDP fragementation issues. Incoming UDP packets 760 from the outside world can now be broken up into fragments 761 for the guest OS. (This allows, for example, OpenBSD/pmax to 762 be installed via nfs.) Outgoing fragmented packets are NOT 763 yet handled. 764 Linux doesn't use 64-bit file offsets by default, which is 765 needed when using large disk images (more than 2GB), so the 766 configure script has now been modified to add necessary 767 compiler flags for Linux. 76820040713 Trying out some minor optimizations. 769 Refreshing the UDP implementation in src/net.c a little. 77020040714 Updating the documentation a little on how to experiment 771 with a Debian Linux install kernel for DECstations. 772 A 'mini.iso' Linux image for DECstation has different fields 773 at offsets 0x10 and 0x14, so I'm guessing that the first is 774 the load address and the second is the initial PC value. 775 Hopefully this doesn't break anything. 776 Some initial TCP hacks, but not much is working yet. 777 Some updates for IP30: The load/store 1-entry cache didn't 778 work too well with IP30 memory, so it's only turned on for 779 "MMU4K" now. (This needs to be fixed some better way.) 780 Adding a hack which allows Linux/Octane to use ARC write() 781 and getchild() on IP30. Linux uses ARCBIOS_SPB_SIGNATURE as a 782 64-bit field, it was 32-bit before. 783 Making ugly hacks to the arcbios emulation to semi-support 784 64-bit equivalents of 32-bit structures. 78520040716 Minor fixes to the configure script (and a few other places) 786 to make the sources compile out-of-the-box on HP-UX (ia64 787 and HPPA), old OpenBSD/pmax (inside the emulator itself), and 788 Tru64 (OSF/1) on Alpha. 789 A couple of other minor fixes. 79020040717 A little TCP progress; OpenBSD/pmax likes my SYN+ACK replies, 791 and tries to send out data, but NetBSD/pmax just drops the 792 SYN+ACK packets. 793 Trial-and-error led me to change the 64-bit ARCS component 794 struct again (Linux/IP30 likes it now). I'm not sure about all 795 of the offsets yet, but some things seem to work. 796 More 64-bit ARCS updates (memory descriptors etc). 797 Better memory offset fix for IP30, similar to how I did it for 798 IP22 etc. (Hopefully this doesn't break anything else.) 799 Adding a MardiGras graphics controller skeleton for SGI-IP30 800 (dev_sgi_mardigras.c). 801 Thanks to Stanislaw Skowronek for dual-licensing mgras.h. 802 Finally rewrote get_symbol_name() to O(log n) instead of O(n) 803 (Stanislaw's Linux kernel had so many symbols that tracing 804 with the old get_symbol_name() was unbareably slow). 805 Removing all of the experimental tlbmod tag optimization code 806 (the 1-entry load/store cache), as it causes more trouble than 807 the performance gain was worth. 80820040718 The MardiGras device works well enough to let Linux draw the 809 SGI logo and output text. 810 A bunch of other minor changes. 81120040719 Trying to move out all of the instruction_trace stuff from the 812 main cpu loop (for two reasons: a little performance gain, 813 and to make it easier to add a GUI later on). 81420040720 Finally found and fixed the ethernet/tcp bug. The hardware 815 address is comprised of 6 bytes, where the _first_ byte should 816 have a zero as the lowest bit, not the last byte. (This causes 817 NetBSD and Linux running in the emulator to accept my SYN+ACK 818 packets.) 819 Getting the first nameserver address from /etc/resolv.conf. 820 (This is not used yet, but could be useful if/when I add 821 internal DHCP support.) 822 Working more on the TCP stuff; TCP seems to be almost working, 823 the only immediate problem left is that the guest OS gets 824 stuck in the closing and last-ack states, when it shouldn't. 825 It is now possible to install NetBSD and OpenBSD via ftp. :-) 82620040721 Trying to fix the last-ack bug, by sending an RST after the 827 end of a connection. (Probably not a correct fix, but seems 828 to work?) 829 Adding a my_fseek() function, which works like fseek() but 830 with off_t instead of long, so that large disk images can 831 be used on systems where long is 32 bits. 83220040722 Trying to fix some more TCP related bugs. 83320040725 Changing the inlined asm statement in bintrans_alpha.c into 834 a call to a hardcoded array of bytes that do the same thing 835 (an instruction cache invalidation). This allows the same 836 invalidation code to be used regardless of compiler. 837 Some other minor changes. 83820040726 Minor updates. The configure script is now more verbose. 839 A Debian/IP22 Linux tftp boot kernel requires ARCS memory to 840 be FreeMemory, not FreeContiguous. (This should still work with 841 other SGI and ARC OSes.) 842 Fix for ARCS write(), so it returns good write count and 843 success result (0). 844 Some hacks to the IP22 memory controller, to fake 72MB RAM 845 in bank 0. 846 The IP22 Debian kernel reaches userland (ramdisk) when run 847 with -G24 -M72 -CR4400, if a special hack is done to the 848 zs device. 84920040730 Removing mgras.h, as I'm not sure a file dual-licensed this way 850 would work. (Dual-licensing as two separate files would work 851 though.) 852 Preparing for the upcoming release (0.2). 85320040801 Fixing the 512 vs 2048 cdrom sector size bug; I hadn't 854 implemented the mode select SCSI command. (It still isn't 855 really implemented.) 856 A bug which crashes the emulator is triggered when run with 857 new NetBSD 2.0_BETA snapshots on a Linux/i386 host. I'm not 858 sure why. 859 UDP packets sent to the gateway (at 10.0.0.254) are now 860 forwarded to the machine that the host uses as its nameserver. 861 Some other minor fixes. 862 863============== RELEASE 0.2 ============== 864 86520040803 A post-3.5 OpenBSD/sgimips kernel snapshot with ramdisk seems 866 to boot fine in the emulator, all the way to userland, and 867 can be interacted with. 868 Adding a -y option, used to set how many (random) instructions 869 to run from each CPU at max (useful for SMP instruction 870 interleave experiments). 871 Importing a 8x16 console font from FreeBSD (vt220l.816). 872 Adding a skeleton for a 80x25 text console device (dev_vga), 873 useful for some ARC modes. (Character output is possible, but 874 no cursor yet.) 875 Adding a dev_zero device (returns zeroes on read). 876 OpenBSD/arc 2.3 can get all the way to userland with -A4 (if 877 the wdc devices are commented out) but bugs out there, probably 878 because of interrupt issues. 879 Adding a -A5 ARC emulation mode (Microsoft-Jazz, "MIPS Magnum") 880 which NetBSD seems to like. No interrupt specifics yet, so 881 it hangs while waiting for SCSI. 88220040804 Some dev_mp updates. 883 The -y switch has to do with number of cycles, not number 884 of instructions; variable names have been changed to reflect 885 this. 88620040805 Minor updates. Adding some more CPU types/names, but they 887 are probably bogus. 888 Adding a MeshCube emulation mode. Just a skeleton so far, but 889 enough to let a Linux kernel print some boot messages. 890 Adding the 'deret' instruction. 89120040806 Adding include/impactsr-bsd.h (a newer version of what was in 892 mgras.h before, and this time with only a BSD-style license), 893 but it is not used yet. 89420040810 Some Au1500 updates. 89520040811 Adding the 'clz', 'clo', 'dclz', and 'dclo' special2 (MIPS32 896 and MIPS64) instructions. 897 More Au1500 updates. 89820040812 Using fseeko(), when it is available. 899 Other minor updates. 900 Adding a NetGear WG602 emulation mode skeleton (-g); after 901 a lot of trial and error, a Linux kernel (WG602_V1715.img) 902 gets all the way to userland, but hangs there. 90320040818 Adding signal handlers to better cope with CTRL-Z and CTRL-C. 904 Adding a simple interactive single-step debugger which is 905 activated by CTRL-C. (Commands so far: continue, dump, help, 906 itrace, quit, registers, step, trace, version) 90720040818(later) Adding a 'tlbdump' debugger command, and some other minor 908 fixes. 90920040819 Minor updates. Adding an 'unassemble' debugger command. 91020040822 Minor updates to the regression testing framework. 91120040824 Minor updates based on feedback from Alec Voropay 912 (configure script updates for Cygwin and documentation). 91320040826 Minor updates. 914 Adding a cursor to the VGA text console device. 915 Changing all old 11:22:..55:66 ethernet macs to 10:20..60, 916 still hardcoded though. 91720040828 Minor updates. 91820040829 mips64emul is 1 year old today :-) 91920040901 tests/README now lists "all" MIPS opcodes. This list should 920 be updated whenever a new opcode is implemented, or when a 921 regression test is added. (A combination of instructions from 922 the TX79 manual, the GNU assembler, and the MIPS64 manual). 923 Hopefully I haven't missed too many. 924 Adding a section on regression testing to doc/technical.html. 92520040902 Finally beginning the work on separating out the stuff from 926 main.c into a "struct emul". Very time-consuming. 927 Some minor fixes for LL/SC on R10000. 92820040905 Moving more stuff from main.c into struct emul. Unfortunately, 929 it seems that this causes a slowdown of the emulator. 930 Userland emulation is now only used if --userland is used 931 when running configure. 932 Modifying src/symbol.c to not use global variables. 93320040906 Minor update. 93420040914 Using $COPTIM when detecting which compiler flags to use in 935 the configure script. (This makes sure that combinations of 936 flags should work.) 937 There'll probably be a 0.2.1 release some time soon, but I'll 938 do some more clean-up first. 939 Minor update to the detection of ECOFF files, but I don't like 940 it; sometimes the endianness of the magic value seems to be 941 swapped, but it doesn't have to do with endianness of the 942 actual data? 94320040916 Minor updates. Adding an Example section to the manpage, but 944 as I'm not really familiar with manpage formatting, it will 945 need to be rewritten later. 94620040917 Finally making the coprocessor instructions disassemblable 947 even when not running. 948 Doing some testing for the 0.2.1 release. 949 950============== RELEASE 0.2.1 ============== 951 95220040923 Updating the documentation about how to (try to) install 953 Debian GNU/Linux. 95420040924 Some more updates to the documentation. 95520040925 Adding overflow stuff to 'add' and 'sub'. 95620040926 Minor updates: possibly a fix to 'sltiu' (the imm value 957 should be treated as signed, and then converted to unsigned, 958 according to the MIPS64 manual), and removing the 959 'last_was_rfe' stuff (again). 960 OpenBSD/arc used speed-hack jumps with other deltas than just 961 +/- 1 (it used -3 iirc), so the jump speedhack should now 962 support any delta. Also adding bgtzl and blezl as possible 963 instructions for the speed-hack jumps. (This needs to be 964 tested more.) 96520040928 Minor updates. Some ARC stuff ("arcdiag" runs now). 966 cpu_register_dump() now also dumps coprocessor registers. 96720040929 More ARC updates. Making the code look a tiny bit nicer 968 than before. "arcdiag.ip22" works for -G22 (SGI-IP22). 969 Apparently the overflow support in the 'add' instruction 970 was incorrect, so I disabled it. 97120041002 Trying to install Ultrix in the emulator, but the installer 972 crashes; found (and fixed) the bug rather quickly: the "fix" 973 I implemented a few days ago for the 'sub' instruction 974 (according to the MIPS64 manual) caused the bug. 97520041004 Changing the behaviour of the -j command line option. The 976 default is now "" (or taken from the last filename given on 977 the command line), not "netbsd". In practice, this doesn't 978 change much, except that -j netbsd.pmax is no longer needed 979 when installing NetBSD. 980 Adding a COMPILE_DATE string to config.h. 98120041007 Adding a NEC RISCserver 4200 model (-A6), and some more 982 updates to the ARC component tree generator. 98320041008 The 'll' instruction should be signed, not unsigned as before. 984 This (and some other minor fixes) causes Irix on SGI-IP32 (O2) 985 to actually boot far enough to print its first boot messages :) 986 Working on some new dynamic bintrans code. Enough is now 987 implemented so that the 'nop' instruction is translated 988 and there is support for Alpha, i386 and UltraSparc backends, 989 but performance is about 50% worse than when running without 990 bintrans. (This is as expected, though.) 99120041009 Minor updates to the documentation. 992 Using mprotect() to make sure that the code created dynamically 993 by the bintrans subsystem is allowed to be executed. (This 994 affects newer OpenBSD systems, and possibly others.) 995 The translated code chunks now only get one argument passed to 996 them, the (struct cpu *) of the current cpu. 99720041010 Hack to dev_le.c which makes Ultrix accept the initialization 998 of the LANCE controller. (This goes against the LANCE 999 documentation though.) 1000 In src/net.c, a fix for Ultrix (which seems to send larger 1001 ethernet packets than the actual TCP/IP contents). The hack to 1002 dev_le.c and this fix is enough to let Ultrix access the 1003 Internet. 1004 For DECstation, when booting without a disk image (or when 1005 "-O" is used on the command line), use "tftp" instead of "rzX" 1006 for the boot string. 100720041011 Adding cache size variables to the emul struct, so that these 1008 can be set on a per-machine basis (or potentially manually 1009 on the command line). 101020041012 Mach/PMAX now passes the LK201 keyboard self-test (although 1011 the keyboard ID is still bogus). 101220041013 Minor updates. 1013 Hacks to the ASC SCSI controller for Mach/PMAX, hopefully this 1014 will not break support for other OSes. 101520041014 Minor fix to src/emul.c for reading bootblocks at the end of 1016 a disk or cdrom image (thanks to Alexandru Lazar for making me 1017 aware of this). 1018 Adding "gets()" to src/dec_prom.c. 1019 Working a bit on ARC stuff. Importing pica.h from NetBSD. 1020 Minor updates to the ARC component tree for PICA-61. 1021 Adding a dev_jazz.c (mostly for PICA-61). 1022 Renaming dev_jazz.c into dev_pica.c. Working on PICA timer 1023 and interrupt specifics. 102420041016 Adding some dummy entries to lk201.c to reduce debug output. 1025 Some bintrans updates (don't run in delay slots or nullified 1026 slots, read directly from host memory and not via memory_rw(), 1027 try mmap() before malloc() at startup, and many other minor 1028 updates). 1029 Adding bintrans_mips.c for 64-bit MIPS hosts, but it is not 1030 used yet. 103120041017 Minor updates. 103220041018 Update to dev_mc146818 to allow Mach to boot a bit further. 1033 The "hardware random" in dev_mp.c now returns up to 64 bits 1034 of random. 103520041019 Minor updates to the way cache sizes are used throughout the 1036 code. Should be mostly ok for R[234]x00. 1037 src/file.c now loads files using NO_EXCEPTIONS. Whether this 1038 is good or bad, I'm not sure. 103920041020 Adding a Linksys WRT54G emulation skeleton (-H). 104020041021 Minor updates. 1041 R1[024]000 cache size bits in the config register should now 1042 be ok. 1043 Trying to make dev_asc.c work better with PICA. 1044 More work on PICA interrupts (but they are broken now). 104520041022 Generalizing the dev_vga text console device so that it can be 1046 used in other resolutions than just 80x25. Works with 1047 OpenBSD/arc. 1048 emul->boot_string_argument is now empty by default (except 1049 for DECstation modes, where it is "-a"). 1050 Speedup of dev_ram by using mmap() instead of malloc(). 1051 Using mmap() in memory.c as well, which reduces memory usage 1052 when emulating large memory sizes if the memory isn't actually 1053 written to. 105420041023 Minor updates. 105520041024 Updates to the PC-style keyboard controller, used by PICA. 1056 Updates to the PICA (Jazz) interrupt system. Both NetBSD/arc 1057 and OpenBSD/arc now reach userland with PICA emulation, and 1058 can be interacted with (there are a few programs on the 1059 INSTALL kernel ramdisks). In the case of OpenBSD, a VGA text 1060 console and PC-style keyboard controller is used, NetBSD 1061 runs on serial console. 1062 Adding a framework for DMA transfer for the ASC SCSI 1063 controller. 1064 Implementing a R4030 DMA controller for PICA, enough to let 1065 OpenBSD/arc and NetBSD/arc be installed on an emulated 1066 Pica. :-) 1067 Updates to the documentation. 106820041025 Working on ISA interrupts for PICA. 1069 Adding an Olivetti M700 emulation mode (-A7). 1070 Better separation of PICA and M700 stuff (which I accidentally 1071 mixed up before, I thought the M700 Linux kernel would 1072 also work on PICA because it almost booted). 1073 Writing a skeleton G364 framebuffer for M700, enough to show 1074 the Linux penguin and some text, although scrolling isn't 1075 correctly implemented yet. 1076 Adding a dummy SONIC (ethernet) device, dev_sn, for PICA. 1077 Fixing the passing of OSLOADOPTIONS for ARC, the default is 1078 now "-aN" which works fine with OpenBSD/arc and NetBSD/arc. 107920041027 Minor updates. 108020041029 Adding a Sony NeWS "newsmips" emulation mode skeleton (-f). 1081 Found and fixed a bug which prevented Linux/IP32 from running 1082 (the speed-hack-jump-optimization fix I made a few weeks ago 1083 was buggy). 1084 Adding the trunc.w.fmt and trunc.l.fmt instructions, although 1085 the are probably not really tested yet. 1086 Changes to how floating point values are handled in 1087 src/coproc.c, but right now it is probably very unstable. 108820041101 I had accidentally removed the instructions on how to install 1089 Ultrix from doc/index.html. They are back now. 1090 Adding a -Z option, which makes it easier to run dual- or 1091 tripple-head with Ultrix. (Default nr of graphics cards 1092 without -X is 0, with -X is 1.) 1093 Minor update which makes it possible to switch to the left 1094 monitor when running tripple-head, not just right as before. 1095 When using more than one framebuffer window, and the host's 1096 mouse cursor is in a different window than the emulated mouse 1097 cursor, the emulated mouse will now try to move "very far", 1098 so that it in practice changes screen. 1099 Running Ultrix with dual- and tripple-head now feels really 1100 great. 110120041101(later) OpenBSD/arc and Linux/Olivetti-M700 don't both work at the 1102 same time with the speed-hack stuff. So, from now on, you 1103 need to add -J for Linux, and add nothing for openbsd. 110420041102 Minor update for OSF/1 V4.0 (include sys/time.h in src/net.c 1105 and add -D_POSIX_PII_SOCKET to the C compiler flags). 110620041103 Minor updates for the release. 1107 For some reason, Mach/PMAX caused the emulator to bug out on 1108 SunOS/sparc64 (compiled in 64-bit mode); a minor update/hack 1109 to dev_asc fixed this. 1110 1111============== RELEASE 0.2.2 ============== 1112 111320041103 Minor updates. 111420041104 Minor updates. 111520041105 Running with different framebuffer windows on different X11 1116 displays works now (even with different bit depths and 1117 endiannesses on different displays). A new command line option 1118 (-z) adds DISPLAYs that should be used. 1119 Update regarding how DECstation BT459 cursors are used; 1120 transparency :-) and some other bug fixes. 112120041106 More bt459 updates. The cursor color seems to be correct for 1122 NetBSD, OpenBSD, Ultrix, and Sprite. 1123 Some minor bintrans updates (redesigning some things). 112420041107 More bintrans updates (probably broken for non-Alpha targets). 1125 Moving doc/mips64emul.1 to man/. 112620041108 Some updates. 112720041109 More updates. Bintrans experiments mostly. 112820041110 Some minor bintrans updates. 112920041111 Minor updates. 113020041112 A little rewrite of the bintrans system (again :-), this time 1131 a lot more naïve and non-optimizing, in order to support delay 1132 slots in a much simpler way. 1133 Ultrix 4.5 boots into a usable desktop on my home machine in 1134 3min 28sec, compared to 6-8 minutes without bintrans. 113520041113 Some minor bintrans updates. 113620041114 More bintrans updates. Ultrix now boots in exactly 3 minutes 1137 on my home machine. 113820041115 More bintrans updates. 113920041116 Bintrans updates. 114020041117 Working on dev_dec_ioasic and related issues. 1141 Adding support for letting translated code access devices in 1142 some cases (such as framebuffers). 114320041118 Moving some MIPS registers into Alpha registers, which gives 1144 a speed improvement. 1145 Beginning to write an i386 bintrans backend. Skeleton stuff 1146 works, lui, jr/jalr, addiu/daddiu/andi/ori/xori, j/jal, 1147 addu/daddu/subu/xor/or/nor/and. 114820041119 dsubu/sll/srl/sra, rfe,mfc0,dmfc0, beq,bne, delayed branches. 1149 Some load/store (but not for bigendian emulation yet.) 1150 Time to reach Ultrix 4.5's graphical login on a 2.8 GHz Xeon 1151 host is now down to 20 seconds! 1152 Adding bgez, bltz, bgtz, and blez to the i386 backend. 115320041120 Minor updates (bintrans related mostly). 1154 Time to reach Ultrix login on the Xeon is now 11 seconds. 1155 Adding 'mult', 'multu' and a some parts of mtc0 to the Alpha 1156 backend. 1157 The transparency updates to the X11 cursor support made the 1158 OpenBSD/arc cursor disappear; that has been fixed now. 1159 Unfortunately, something with Acer Pica emulation is broken 1160 when bintrans is enabled. 116120041121 Making tlbwr, tlbwi, tlbp, tlbr callable directly from 1162 translated code. 1163 Adding sltiu, slti, slt, and sltu to the i386 backend. 116420041122 More bintrans updates. 1165 With the Alpha backend, the status and entryhi registers 1166 can (in some cases) be written without exiting to the main 1167 loop. Ultrix boot time until a usable desktop is reached 1168 is about 1 min 35 seconds on the 533 MHz pca56. 1169 Adding srlv, srav, and sllv to the i386 backend. 117020041123 Removing the special handling of high physical addresses for 1171 DECstation emulation from the main memory handling code, and 1172 replacing it with a mirror device instead. (This results in 1173 a tiny increase in performance, and cleaner code.) 1174 Various minor updates. 117520041124 Ripping out _all_ bintrans load/store code, because I have 1176 a new idea I'd like to try out. 1177 A total rewrite of the load/store system. It works when 1178 emulating 32-bit MIPS, but not for 64-bit code yet. 1179 Some minor updates to the dev_fb, but no speed improvement. 1180 Making the 'le' ethernet device' SRAM work with bintrans. 118120041125 Various updates. 1182 Adding a little "bootup logo" to the framebuffer. 1183 There is now one translate_address() for R3000-style MMUs, 1184 and one for the other types. (This gives a tiny speed 1185 improvement.) 118620041126 Minor updates, bintrans. 1187 Fixing the bug which caused OpenBSD/arc (R4000) to bug out; 1188 it was introduced between the 7:th and 10:th of November 1189 when moving up the check for interrupts to above the code 1190 which runs bintrans code, in src/cpu.c. 1191 Adding movn and movz to the Alpha bintrans backend. 119220041127 Various minor updates. 119320041128 Making the R2000/R3000 caches work with bintrans, even in 1194 isolated mode. (Not true cache emulation, but it works with 1195 NetBSD/pmax, OpenBSD/pmax, and Ultrix.) 1196 Making the default cache size for R3000 4KB instr, 4 KB data; 1197 a real R3000 could have 64KB each, but emulated OSes run 1198 faster when they think the cache is smaller :-) 1199 Updates to the i386 backend: the nr of executed instructions 1200 is now placed in ebp at all times, and some support for 1201 mtc0 similar to how it is done in the Alpha backend has been 1202 added. A full NetBSD/pmax 1.6.2 install can now be done in 1203 5 minutes 35 seconds, on a 2.8 GHz Xeon host (with -bD2 -M20). 1204 Adding mult and multu to the i386 bintrans backend. 1205 Reducing the number of malloc/free calls used by the 1206 diskimage subsystem. 120720041129 Minor updates to the Alpha bintrans backend. 120820041130 Trying to fix the bug which prevents Linux from working 1209 with bintrans. It _seems_ to work now. (Pages could in some 1210 cases be written to after they were translated, but that 1211 has been fixed now.) 1212 A couple of other minor fixes. 1213 Minor updates to the Alpha backend (directly using Alpha 1214 registers in some cases, instead of loading into temporaries). 1215 Updates to the i386 backend (special hacks for 32-bit 1216 MIPS emulation, which are fast on i386, for example only 1217 updating half of the pc register). 121820041201 More updates to the i386 backend, similar to those yesterday. 1219 Preparing for release 0.2.3. 1220 Adding a generic load/store mechanism, which is used when the 1221 32-bit optimized version cannot be used (for R4000 etc). 1222 1223============== RELEASE 0.2.3 ============== 1224 122520041202 If ALWAYS_SIGNEXTEND_32 is defined in misc.h, and an 1226 incorrectly extended register is detected, the emulator now 1227 exits instead of continues. 1228 Removing the LAST_USED_TLB_EXPERIMENT stuff. 1229 Minor updates to work better with Windows NT's ARCINST.EXE; 1230 printing 0x9b via arcbios becomes ESC + '[', and the ARC 1231 memory descriptor stuff has been generalized a bit more. 1232 Adding arbios hacks for Open(), Seek(), GetRelativeTime(), 1233 and Read() to allow WinNT's SETUPLDR to read the filesystem 1234 on the diskimage used for booting. 123520041203 Adding a terminal emulation layer which converts arcbios 1236 stdout writes to "VGA text console" cell characters. Seems 1237 to work with Windows NT and arcdiag. 1238 Adding a 8x8 font to dev_vga. 1239 Adding more ARC components to the component tree (for PICA 1240 emulation). 124120041204 Minor updates. 1242 More updates to dev_vga. Adding a 8x10 font. 1243 Adding a hack so that the framebuffer logo is visible at 1244 startup with dev_vga. (It disappears at the first scroll.) 1245 A minor fix for a bug which was triggered when running 1246 dual- or tripple-head, on 2 or 3 actual X11 displays. 124720041205 Fixing a bintrans bug. 1248 Some other minor updates (some of them bintrans related). 124920041206 Moving the web page to http://gavare.se. 1250 Adding a hack for mmap() which supports anonymous mapping 1251 using /dev/zero, but not using MAP_ANON{,YMOUS}. 1252 Separating out opcodes.h, cop0.h, and cpu_types.h from misc.h. 125320041207 Minor bintrans update. (In some cases, it isn't necessary 1254 to return to the main loop, when translating from a new page.) 1255 Some other minor i386 bintrans backend optimizations. 1256 And some other minor updates. 1257 i386 backend update: the lowest 32 bits of the pc register 1258 are now placed in an i386 register. 125920041208 Adding GetConfigurationData() and some support for config 1260 data, to src/arcbios.c. 1261 Adding a bogus 0xbd SCSI command (used by Windows NT). It is 1262 not listed in http://www.danbbs.dk/~dino/SCSI/SCSI2-D.html. 1263 If the framebuffer cursor contains more than 1 color, then 1264 the host's X11 cursor disappears. (Nice for DECstation 1265 emulation with emulated X.) 1266 For ARC and SGI emulation, if an exception occurs before an 1267 exception handler is installed, the emulator now exits 1268 nicely (as suggested by Alec Voropay). 1269 A couple of minor updates to the ARCBIOS emulation subsystem. 1270 The single step debugger is now automatically entered when 1271 all CPUs have stopped running, unless there was a clean 1272 shutdown of some kind (PROM halt() call, or similar). 1273 Adding a -V option for starting up in a paused state, into 1274 the single-step debugger. 1275 Adding a note about 'mmon' to the documentation 1276 (http://www.brouhaha.com/~eric/software/mmon/). 127720041209 Fixes to devices/console.c which makes cursor keys and such 1278 a bit more reliable. 1279 ARCBIOS hack/update which creates memory descriptors _after_ 1280 loading the executable. (Seems to work with OpenBSD/arc, 1281 NetBSD/arc, arcdiag, IRIX, NetBSD/sgimips, OpenBSD/sgi, and 1282 some Windows NT executables.) 1283 ARCBIOS support for cursor keys (ESC + '[' ==> 0x9b). 1284 A bintrans update (for 32-bit emulation) which speeds up 1285 jumps between pages, if code is already translated. 1286 Changing the default bintrans cache from 20 to 24 MB. 128720041210 Optimizing unaligned load/stores a little bit in src/cpu.c. 1288 Omiting the check for nr of executed bintrans instructions 1289 on some forward jumps. 1290 Adding the 'syscall' and 'break' instructions to the 1291 bintrans backends. 1292 Allowing more bits of the status register to be written to 1293 from within inside translated code, on R3000. 1294 Getting rid of the final pixel when hiding the host's mouse 1295 cursor. 1296 store_buf() now copies data 8 or 4 bytes at a time, when 1297 possible. (This speeds up emulated ROM disk reads, etc.) 1298 Tiny bug fix: coprocessor unusable exceptions are now also 1299 generated (for coproc 1..3) even when in kernel mode, if the 1300 coprocessors are not enabled. This allows a Debian installation 1301 to proceed further than before. (It's still very unstable, 1302 though.) 130320041212 Updating doc/index.html with better Debian installation 1304 instructions. 1305 If SLOWSERIALINTERRUPTS is defined at compile time, interrupts 1306 from the dc7085 device will not come as often as they normally 1307 do. This makes Debian seem more stable. 1308 Decreasing the bintrans cache to 20 MB again. 1309 Updating some files in preparation for a 0.2.4 release. 131020041213 Updating the docs on how to install NetBSD 2.0/pmax, and also 1311 some updates to the section on installing Debian. 1312 32-bit bintrans backend optimization: don't inline large 1313 chunks of code, such as general jumps. 131420041214 Minor fix for coproc unusable for R4000 (it's the PC that, 1315 matters, not the KSU bits). 1316 Separating out the debugger from emul.c into debugger.c. 1317 Rewriting parts of the debugger. 1318 Removing the -U command line option, as it wasn't really 1319 useful. Also removing the -P option. 1320 Renaming all instances of dumppoint to breakpoint, as that 1321 is what it really is. 1322 When a breakpoint is reached, the single-step debugger is 1323 entered, instead of just turning on instruction trace. 1324 Adding a 'breakpoints' debugger command. 1325 Better fix for coproc unusable on R4000: the KSU bits matter, 1326 but the ERL and EXL bits override that. 1327 Fix which allows Debian to boot directly from a disk image 1328 (with DELO). (It reads multiple separate areas from disk.) 1329 Update to the SLOWSERIALINTERRUPTS stuff, making it even 1330 slower. 1331 Fixes based on feedback from Alec Voropay (-Q with ARC 1332 emulation skips the setup of arcbios data structures in 1333 memory, and no sign-extension _after_ writing a 32-bit 1334 value to a 64-bit coproc 0 register). 1335 Adding a 'devices' command to the debugger. 1336 The 'registers' and 'tlbdump' commands now take an optional 1337 argument (a cpu id). 1338 Adding rudimentary tab-completion and cursor key stuff to 1339 debugger_readline(). 1340 Adding some more debugger commands: 'bintrans' and 'machine'. 134120041215 Adding a 'devstate' command; implementing a skeleton for a 1342 state function for the bt459 device. 1343 Implementing yet another variant of the SLOWSERIALINTERRUPTS 1344 stuff. 1345 Implementing more of the different exception offsets (taking 1346 CAUSE_IV and STATUS_BEV into account). 1347 hpc_bootinfo should now be correctly filled on big-endian 1348 hosts. 1349 Always shift left by 12, not by pageshift, to get physical 1350 addresses on MMU4K etc. (Thanks to Alec Voropay for noticing 1351 this.) 135220041216 The KN02's CSR can now be read from bintranslated code. 1353 Adding a dummy dev_sgi_mec. 135420041217 The default framebuffer and model settings for -F (hpcmips) 1355 should now be almost like Cassiopeia E-500. 1356 Changing -DSLOWSERIALINTERRUPTS into a command line option, -U. 135720041218 Continuing a little bit on the mec controller. 1358 Removing lots of #include <math.h> that weren't really used. 135920041219 Fixing stuff that broke because of the pageshift bugfix. 1360 Adding an argument to the s (step) debugger command, for doing 1361 more than 1 step at a time. 1362 ARCBIOS components representing disk images are now created 1363 to actually match the disk images in use, and some other 1364 arcbios-related updates; adding a dummy GetComponent(). 1365 Adding a 'lookup' command to the debugger, for symbol lookups. 1366 Adding a "NEC Express RISCserver" mode (NEC-R96, -A8). 1367 Adding a dummy ARCBIOS GetFileInformation(), GetTime(), and 1368 SetEnvironmentVariable(). 136920041220 Improved command line editing (including command history) 1370 in the debugger. 1371 Separating some more .h files from each other, and fixing 1372 some Solaris compiler warnings. 137320041221 Minor updates. 137420041222 Minor updates; hpcmips (BE300, VR41xx) stuff. 1375 The 'register' debugger command is now 'reg', and it can 1376 be used to modify registers, not just read them. 1377 The syntax for hpcmips (-F) is now -F xx, where xx is a 1378 machine model identifier. (1 = BE300.) 137920041223 Some really minor updates. 138020041226 Minor updates to doc/index.html (NetBSD 1.6.2 -> 2.0, and 1381 some other rearrangements). 1382 Many updates to the debugger (better register manipulation, 1383 breakpoint manipulation, and other updates). 1384 Fix to dev_cons.c to allow the regression tests to work again. 1385 The configure script now tries to detect the presence of a 1386 MIPS cross compiler. (Used by "make regtest".) 1387 Regression tests are now run both with and without bintrans. 138820041227 Some hacks to the VR41xx code to allow Linux for BE300 to 1389 get far enough to show the penguin on the framebuffer. 139020041228 Merging dev_kn01_csr.c and dev_vdac.c into dev_kn01.c. 139120041229 Various updates to the debugger (nicer tlb output and other 1392 things). 1393 Some floating point fixes in src/coproc.c (mov is not 1394 an arithmetic instruction), and in src/cpu.c (ldcX/sdcX in 1395 32-bit mode uses register pairs). 1396 '-O' now also affects the bootstring for SGI and ARC emulation. 1397 Bintrans updates (slightly faster 32-bit load/store on alpha). 1398 Updates to the i386 backend too, but no real speed improvement. 139920041230 Cleaning up parts of the 64-bit virtual-to-physical code for 1400 R10000, and per-machine default TLB entries can now be set 1401 for SGI and ARC machines. 1402 Fix: SGI-IP27 is ARC64, not ARCS. 140320050101 Minor updates. 140420050102 Minor updates. 1405 Fixing a 32-bit 'addu' bug in the bintrans backends. 1406 Allowing fast load/stores even in 64-bit bintrans mode, if 1407 the top 32 bits are either 0x00000000 or 0xffffffff (for Alpha 1408 only). 1409 Re-enabling ctc0/cfc0 (but what do they do?). 1410 Adding beql, bnel, blezl, and bgtzl to the Alpha backend. 141120050103 Adding fast 32-bit load/store for 64-bit mode emulation to 1412 the i386 backend too (similar to the Alpha code). Not really 1413 tested yet, though. 1414 Adding an incomplete regression test case for lwl/lwr/ldl/ldr. 1415 Playing around with bintranslated lwl and lwr for Alpha. 141620040104 Changing many occurances of pica to jazz. 1417 Various other updates. 141820050105 Fixing some more bintrans bugs (both Alpha and i386). 1419 Unaligned stores that cause tlb refill exceptions should now 1420 cause TLBS exceptions, not TLBL. 1421 Adding experimental swl and swr to the Alpha backend. 1422 Adding lwl, lwr, swl, and swr to the i386 backend. 142320050106 Adding another hpcmips model (Casio E-105, -F2), and doing 1424 some updates to the VR41xx code. NetBSD/hpcmips prints some 1425 boot messages. 142620050108 Minor updates. 142720050109 dev_dec5500_ioboard.c and dev_sgec.c => dev_kn220.c. 1428 dev_crime.c, _mace.c, and _macepci.c => dev_sgi_ip32.c. 1429 Also adding dev_sgi_mec, _ust, and _mte into dev_sgi_ip32.c. 1430 A slight license change. Still revised BSD-style, though. 1431 memory_v2p.c is now included separately for MMU10K and 1432 MMU8K. 1433 Fixing a NS16550 bug, triggered by NetBSD 2.0, but not 1.6.2. 1434 Refreshing the UltraSPARC bintrans backend skeleton. 1435 Merging dev_decbi, _deccca, and _decxmi into dev_dec5800.c. 1436 Sparc backend instructions done so far: mthi/mtlo/mfhi/mflo, 1437 lui, addu, daddu, subu, dsubu, and, or, nor, xor, sll, dsll, 1438 srl, and sra. 1439 Adding more sparc backend instructions: addiu, daddiu, xori, 1440 ori, andi, srlv, srav, sllv, slt, sltu, slti, sltiu. 144120050110 Changing the default bintrans cache to 16 MB, and some other 1442 minor updates. 1443 Adding div and divu to the i386 backend (but not Alpha yet). 1444 More work on ARCBIOS emulation. 1445 Trying to find a bug which affects Linux on Playstation 2 in 1446 bintrans mode. 144720050111 Moving around some Playstation 2 stuff, but I haven't found 1448 the bug yet. It is triggered by load/stores. 1449 More ARCBIOS updates, enough to let Windows NT partition 1450 disks in some rudimentary fashion. 145120050112 Testing for release 0.2.4. 1452 Fixes to suppress compiler warnings. 1453 1454============== RELEASE 0.2.4 ============== 1455 145620050113 Minor updates. 145720050114 Fix to the Alpha bintrans backend to allow compilation with 1458 old versions of gcc (2.95.4). 1459 1460============== RELEASE 0.2.4.1 ============== 1461 146220050115 Various updates and fixes: some IP32 stuff, the debugger, 1463 ns16550 loopback tx isn't transmitted out anymore, ... 1464 Removing old/broken R10000 cache hacks, which weren't really 1465 used. 146620050116 Minor updates to the documentation on using PROM images. 1467 Adding ARCBIOS function 0x100 (used by IRIX when returning 1468 from main, but undocumented). 1469 MC146818 updates (mostly SGI-related). 1470 ARCS64 updates (testing with an OpenBSD snapshot in IP27 1471 mode). This causes Linux/IP30 to not work. Maybe IP27 and 1472 IP30 differ, even though both are 64-bit? 1473 Removing some nonsensical ARCS64 code from machine.c. 1474 Better handling of 128MB and 512MB memory offsets used by 1475 various SGI models. 1476 Trying to revert the ARCS64 changes (OpenBSD/sgi does 1477 seem to be aware of 64-bit vs 32-bit data structures in 1478 _some_ places, but not all), to make Linux/IP30 work again. 1479 Adding "power off" capability to the RTC, as used on IP32 1480 (and possibly IP30 and others). 1481 Some IP30 updates. 148220050117 Debugger updates (symbolic register names instead of just rX, 1483 and using %08x instead of %016llx when emulating 32-bit CPUs 1484 in more places than before). 1485 Removing the dummy sgi_nasid and sgi_cpuinfo devices. 1486 Also using symbolic names for coprocessor 0 registers. 1487 Adding DEV_MP_MEMORY to dev_mp.c. 1488 Adding a 'put' command to the debugger. 1489 ARCBIOS function 0x100 used by IRIX seems to _NOT_ be a 1490 ReturnFromMain(), but something else undocumented. 1491 The count and compare registers are now 32-bit in all 1492 places, as they should be. (This causes, among other things, 1493 OpenBSD/sgi to not hang randomly in userspace anymore.) 1494 On breakpoints, the debugger is now entered _at_ the 1495 instruction at the breakpoint, not after it. 1496 Some cursor keys now work when inputed via X. 1497 Refreshing the MC146818 device a bit more. 149820050118 Trying to add some support for less-than-4KB virtual pages, 1499 used by at least VR4131. Thanks to Alexander Yurchenko for 1500 noticing this. (I'm assuming for now that all R41xx work 1501 this way, which is not necessarily true.) It doesn't really 1502 work yet though. 1503 Renicing the "loading files" messages and other things 1504 displayed during startup. 1505 Changing the disassembly output of ori, xori, and andi to 1506 unsigned hex immediate, instead of decimal (as suggested 1507 by Alec Voropay). 1508 configure-script update for HP-UX, and switching from using 1509 inet_aton() to inet_pton() (as suggested by Nils Weller). 1510 Also adding -lnsl on Solaris, if required by inet_pton(). 1511 Lots of minor R4100-related updates. 151220050119 Correcting the R4100 config register in src/coproc.c, and 1513 a minor update to dev_vr41xx. 1514 Finally began a redesign/remodelling/cleanup that I have had 1515 in mind for quite some time... moving many things that were 1516 in struct emul into a new struct machine. 1517 Userland emulation now works with bintrans. 1518 Refreshing the LANCE controller (dev_le.c). 1519 Fixing the LK201 keyboard id. 152020050120 Continuing on the remodelling/cleanup. 1521 Fixing the SCSI bug (which was triggered sometimes by 1522 NetBSD 2.0/pmax on Linux/i386 hosts). 1523 Adding a speed-limit hack to the mc146818 device when running 1524 in DECstation mode (limiting to emulated 30 MHz clock, so 1525 that Ultrix doesn't freak out). 1526 Adding an ugly workaround for the floating-point bug which 1527 is triggered when running NetBSD/pmax 2.0 on an Alpha host. 1528 The count/compare interrupt will not be triggered now, if 1529 the compare register is left untouched. 1530 Many, many other fixes... 153120050121 Continuing the remodelling/cleanup. (Mostly working on the 1532 network stack, and on moving towards multiple emulations 1533 with multiple machines per emulation.) 1534 Fixbug: not clearing lowest parts of lo0 and hi on tlbr 1535 (seems to increase performance when emulating Linux?). 153620050122 Continuing the remodelling/cleanup. 1537 Linux on DECstation uses a non-used part of the RTC registers 1538 for the year value; this is supported now, so Linux thinks 1539 it is 2005 and not 2000. 1540 Began hacking on something to reply to Debian's DHCP requests, 1541 but it's not working yet. 154220050123 Continuing the remodelling/cleanup. 154320050124 Continuing the remodelling/cleanup. 1544 Converting the dev_vga charcell memory to support direct 1545 bintrans access (similar to how dev_fb works), and fixing a 1546 couple of bintrans bugs in the process. 1547 The emulator now compiles under OpenBSD/arc 2.3 without 1548 crashing (mostly due to the bintrans fixes, but also some 1549 minor updates to the configure script). 155020050125 Continuing the remodelling/cleanup. 1551 The '-a' option was missing in the Hello World example in the 1552 documentation. (Thanks to Soohyun Cho for noticing this.) 155320050126 Continuing the remodelling/cleanup. Moving around stuff in 1554 the header files, etc. Adding a '-K' command line option, which 1555 forces the debugger to be entered at the exit of a simulation, 1556 regardless of failure or success. Beginning to work on the 1557 config file parser. 1558 Splitting doc/index.html into experiments.html, guestoses.html, 1559 intro.html, and misc.html. 1560 Updating the man page and adding a skeleton section about the 1561 configure files to doc/misc.html. 156220050127 Minor documentation updates. 156320050128 Continuing the remodelling/cleanup, mostly working on the 1564 config file parser (adding a couple of machine words, enough 1565 to run simple emulations, and adding support for multi-line 1566 comments using tuborgs). 1567 Removing some command line options for the least working 1568 emulation modes (-e, -f, -g, -E, -H), adding new -E and -e 1569 options for selecting machine type. 1570 Moving global variables from src/x11.c into struct machine (a 1571 bit buggy, but it seems to almost work). 157220050129 Removing the Playstation 2 mode (-B) and hpcmips modes (-F) 1573 from the command line as well. 1574 Changing the -T command line option from meaning "trace on bad 1575 address" to meaning "enter the single-step debugger on bad 1576 address". 1577 More updates to the configuration file parser (nested tuborg 1578 comments, more options, ...). 1579 Making -s a global setting, not just affecting one machine. 1580 Trying to fix the X11 event stuff... but it's so ugly that it 1581 must be rewritten later. 1582 Continuing the multi-emul cleanup. 1583 Bugfixes and other updates to dev_vga. 158420050130 Continuing the remodelling/cleanup. Finally moving out the 1585 MIPS dependant stuff of the cpu struct into its own struct. 1586 Renaming cpu.c to cpu_mips.c, and cpu_common.c to cpu.c. 1587 Adding a dummy cpu_ppc.c. 1588 Removing the UltraSPARC bintrans backend. 1589 Many other minor updates. 1590 src/file.c should now be free from MIPS-dependancies. 159120050131 Continuing a little bit more on src/file.c. PPC ELFs can now 1592 be loaded, it seems. 1593 Continuing on src/cpu_ppc.c. 1594 'mips' is undefined by the configure script, if it is defined 1595 by default. (Fixes build on at least OpenBSD/arc and 1596 NetBSD/arc, where gcc defines 'mips'.) 1597 A couple of other minor fixes. 1598 Removing the "Changing framebuffer resolution" section from 1599 doc/misc.h (because it's buggy and not very useful anway). 1600 Adding a mystrtoull(), used on systems where there is no 1601 strtoull() in libc. 1602 Adding 'add_x11_display' to the configure file parser 1603 (corresponding to the -z command line option). 1604 Continuing the multi-emul machine cleanup. 160520050201 Minor updates (man page, RELEASE, README). 1606 Continuing the cleanup. 1607 Adding a 'name' field to the emul struct, and adding a command 1608 to the debugger ("focus") to make it possible to switch focus 1609 to different machines (in different emuls). 1610 Beginning to work on the PPC disassembler etc. Hello World 1611 for linux-ppc64 can be disassembled :-) 161220050202 Adding a hack for reading symbols from Microsoft's variant of 1613 COFF files. 1614 Adding a dummy cpu_sparc.c and include/cpu_sparc.h. 1615 Cleaning up more to support multiple cpu families. 1616 Various other minor updates. 1617 Fixing another old-gcc-on-Alpha problem. 161820050203 Bintrans cache size is now variable, settable by a new 1619 configuration file option 'bintrans_size'. 1620 The debugger can now theoretically call disassembler functions 1621 for cpu families with non-fixed instruction word length. 1622 Working more on the mec controller. It now works well enough 1623 to let both NetBSD/sgimips and OpenBSD/sgi connect to the 1624 outside world using ftp :-) 1625 Continuing on the cleanup of the networking subsystem. 162620050204 Continuing the cleanup. 1627 Working on a way to use separate xterms for serial ports and 1628 other console input, when emulating multiple machines (or one 1629 machine with multiple serial lines active). 163020050205 Minor documentation updates. 163120050206 Moving console.c from devices/ to src/, and continuing the 1632 work on using separate windows for each serial console. 1633 Trying to get OpenBSD/sgi to boot with root-on-nfs on an 1634 emulated NetBSD/pmax server, but no success in setting up 1635 the server yet. 163620050207 Continuing on the console cleanup. 1637 Adding a 'start_paused' configuration file option, and a 1638 'pause' command to the debugger. 163920050208 Everything now builds with --withoutmips. 1640 Continuing on the documentation on how to run OpenBSD/sgi, but 1641 no actual success yet. 1642 sizeof => (int)sizeof in the configure script (as suggested by 1643 Nils Weller). 164420050209 Adding a check for -lm to the configure script. 1645 Continuing on the cleanup: trying to make memory_rw non-MIPS 1646 dependant. 1647 Trying to make a better fix for the cdrom-block-size problems 1648 on FreeBSD. (It now works with a Windows NT 4.0 cdrom in my 1649 drive.) 1650 Began a clean-up of the userland subsystem. 165120050210 Continuing the userland cleanup. 1652 IBM's Hello World example for Linux/PPC64 runs fine now. 165320050211 Continuing the cleanup. Removing the --userland configure 1654 option (because support for userland is always included now). 1655 Working more on getting OpenBSD/sgi to boot with root on 1656 nfs. (Booting with the ramdisk kernel, and mounting root via 1657 nfs works, but not yet from the generic kernel.) 1658 Major update to the manpage. 1659 Removing the -G command line option (SGI modes). 166020050212 Updating the documentation (experimental devices: dev_cons 1661 and dev_mp, better hello.c, and some other things). 166220050213 Some minor fixes: documentation, 80 columns in some source 1663 files, better configure script options. 1664 Adding some more PPC instructions. 1665 Added a NOFPU flag to the MIPS cpu flags, so that executing 1666 FPU instructions on for example VR4xxx will fail (as suggested 1667 by Alexander Yurchenko). 166820050214 Implementing more PPC instructions. 1669 Adding dev_pmppc. 167020050215 Continuing the work on PPC emulation. Adding a (mostly non- 1671 working) NetBSD/powerpc userland mode, a (buggy) 1672 show_trace_tree thing (simliar to the MIPS version). 167320050216 Continuing... 167420050218 Continuing the clean-up. (Merging the devices and devstate 1675 debugger commands, more 80-column cleanup, some documentation 1676 updates, ...). 167720050219 Removing the -D, -A, and -a command line options. Updating the 1678 documentation, in preparation for the next release. 1679 Adding interrupt stuff to dev_cons. 1680 Single-stepping now looks/works better with bintrans enabled. 1681 Beginning the first phase of release testing; various minor 1682 updates to make everything build cleanly on Solaris. 168320050220 Continuing testing for the release... 1684 1685============== RELEASE 0.3 ============== 1686 168720050221 Minor updates. Some more clean-up. 1688 Beginning on the new device registry stuff. 168920050222 Continuing on the device stuff, and doing various other kinds 1690 of clean-up. 1691 Adding a dummy BeBox mode. 1692 Making the pc register common for all cpu families. 1693 Adding some more PPC instructions and fixing some bugs. 169420050223 Continuing on the BeBox stuff, and adding more instructions. 1695 Adding an ns16550 to the VR4131 emulation (which is probably 1696 a close enough fake to the VR4131's SIU unit). 169720050224 Minor updates. Adding dummy PReP, macppc, and DB64360 modes. 1698 Continuing on the device registry rewrite. 169920050225 Continuing on the device stuff. 170020050226 Continuing more on the device rewrite. 1701 Separating the "testmips" machine into testmips and baremips 1702 (and similarly with the ppc machine). 1703 Redesigning the device registry again :-) 1704 Adding a "device" command to the config file parser. 1705 Adding "device add" and "device remove" to the debugger. 1706 Removing pcidevs.h, because it was almost unused. 170720050228 Correcting the Sprite disk image url in the documentation. 170820050301 Adding an URISC cpu emulation mode (single-opcode machine). 170920050303 Adding some files to the experiments directory (rssb_as.c, 1710 rssb_as.README, urisc_test.s). 1711 Continuing on the device stuff. 171220050304 Minor documentation update. Also, the SPARC, PPC, and URISC 1713 modes are now enabled by default in the configure script. 1714 Some minor PPC updates (adding a VGA device to the bebox 1715 emulation mode). 171620050305 Moving the static i386 bintrans runchunk code snippet (and the 1717 others) to be dynamically generated. (This allows the code to 1718 compile on i386 with old gcc.) 1719 Loading PPC64 ELFs now sets R2 to the TOC base. 1720 Changing the name of the emulator from mips64emul to GXemul. 1721 Splitting out the configuration file part of the documentation 1722 into its own file (configfiles.html). 172320050306 Some really minor documentation updates. 1724 Adding a -D command line option (for "fully deterministic" 1725 behaviour). 172620050308 Minor PPC updates. Adding a dummy OpenFirmware emulation layer. 172720050309 Adding a hack for systems without inet_pton (such as Cygwin in 1728 Windows) as suggested by Soohyun Cho. (And updating the 1729 configure script too.) 1730 Adding a dummy HPPA cpu family. 1731 Some more OpenFirmware updates. 1732 Faster loading of badly aligned ELF regions. 173320050311 Minor updates. Adding a dummy "NEC MobilePro 780" hpcmips 1734 machine mode; disabling direct bintrans access to framebuffers 1735 that are not 4K page aligned. 173620050312 Adding an ugly KIU hack to the VR41xx device (which enables 1737 NetBSD/hpcmips MobilePro 780 keyboard input). 173820050313 Adding a dummy "pcic" device (a pcmcia card controller). 1739 Adding a dummy Alpha cpu emulation mode. 1740 Fixing a strcmp length bug (thanks to Alexander Yurchenko for 1741 noticing the bug). 174220050314 Some minor bintrans-related updates in preparation for a new 1743 bintrans subsystem: command line option -b now means "old 1744 bintrans", -B means "disable bintrans", and using no option at 1745 all selects "new bintrans". 1746 Better generation of MAC addresses when emulating multiple 1747 machines and/or NICs. 1748 Minor documentation updates (regarding configuration files). 174920050315 Adding dummy standby, suspend, and hibernate MIPS opcodes. 1750 RTC interrupt hack for VR4121 (hpcmips). 1751 Enough of the pcic is now emulated to let NetBSD/hpcmips detect 1752 a PCMCIA harddisk controller card (but there is no support for 1753 ISA/PCMCIA interrupts yet). 1754 Adding preliminary instructions on how to install 1755 NetBSD/hpcmips. 1756 Continuing the attempt to get harddisks working with interrupts 1757 (pcic, wdc on hpcmips). 175820050318 Minor updates. (Fixing disassembly of MIPS bgtz etc., 1759 continuing on the device cleanup, ...) 176020050319 Minor updates. 176120050320 Minor updates. 176220050322 Various minor updates. 176320050323 Some more minor updates. 176420050328 VR41xx-related updates (keyboard stuff: the space key and 1765 shifted and ctrled keys are now working in userland (ie 1766 NetBSD/hpcmips' ramdisk installer). 1767 Also adding simple cursor key support to the VR41xx kiu. 176820050329 Some progress on the wdc. 1769 Updating the documentation of how to (possibly) install 1770 NetBSD/hpcmips, once it is working. 1771 Adding delays before wdc interrupts; this allows NetBSD 1772 2.0/hpcmips to be successfully installed! 1773 Mirroring physical addresses 0x8....... to 0x00000000 on 1774 hpcmips; this makes it possible to run X11 inside 1775 NetBSD/hpcmips :-) 1776 Updating the documentation regarding NetBSD/hpcmips. 1777 Fixing 16-bit vs 15-bit color in dev_fb. 177820050330 Print a warning when the user attempts to load a gzipped 1779 file. (Thanks to Juan RP for making me aware of this "bug".) 178020050331 Importing aic7xxx_reg.h from NetBSD. 1781 Adding a "-x" command line option, which forces xterms for 1782 each emulated serial port to always be opened. 1783 Adding a MobilePro 770 mode (same as 780, but different 1784 framebuffer address which allows bintrans = fast scrolling), 1785 and a MobilePro 800 (with 800x600 pixels framebuffer :-). 178620050401 Minor updates. 178720050402 Minor updates. (The standby and suspend instructions are 1788 bintransed as NOPs, and some minor documentation updates.) 178920050403 Adding an Agenda VR3 mode, and playing around with a Linux 1790 kernel image, but not much success yet. 1791 Changing BIFB_D16_FFFF -> BIFB_D16_0000 for the hpcmips 1792 framebuffers, causing NetBSD to boot with correct colors. 1793 New syntax for loading raw files: loadaddr:skiplen: 1794 initialpc:filename. (This is necessary to boot the Linux VR3 1795 kernels.) 1796 The Linux VR3 kernel boots in both serial console mode and 1797 using the framebuffer, but it panics relatively early. 179820050404 Continuing on the AHC, and some other minor updates. 179920050405 Adding a note in doc/experimental.html about "root1.2.6.cramfs" 1800 (thanks to Alec Voropay for noticing that it wasn't part 1801 of root1.2.6.kernel-8.00). 1802 Also adding a note about another cramfs image. 1803 -o options are now added to the command line passed to the 1804 Linux kernel, when emulating the VR3. 1805 Adding a MobilePro 880 mode, and a dummy IBM WorkPad Z50 mode. 180620050406 Connecting the VR3 serial controller to irq 9 (Linux calls this 1807 irq 17), and some other interrupt-related cleanups. 1808 Reducing the memory overhead per bintranslated page. (Hopefully 1809 this makes things faster, or at least not slower...) 181020050407 Some more cleanup regarding command line argument passing for 1811 the hpcmips modes. 1812 Playing with Linux kernels for MobilePro 770 and 800; they get 1813 as far as mounting a root filesystem, but then crash. 1814 Doing some testing for the next release. 1815 1816============== RELEASE 0.3.1 ============== 1817 181820050408 Some minor updates to the wdc. Linux now doesn't complain 1819 anymore if a disk is non-present. 182020050409 Various minor fixes (a bintrans bug, and some other things). 1821 The wdc seems to work with Playstation2 emulation, but there 1822 is a _long_ annoying delay when disks are detected. 1823 Fixing a really important bintrans bug (when devices and RAM 1824 are mixed within 4KB pages), which was triggered with 1825 NetBSD/playstation2 kernels. 182620050410 Adding a dummy dev_ps2_ether (just so that NetBSD doesn't 1827 complain as much during bootup). 1828 Symbols starting with '$' are now ignored. 1829 Renaming dev_ps2_ohci.c to dev_ohci.c, etc. 183020050411 Moving the bintrans-cache-isolation check from cpu_mips.c to 1831 cpu_mips_coproc.c. (I thought this would give a speedup, but 1832 it's not noticable.) 1833 Better playstation2 sbus interrupt code. 1834 Skip ahead many ticks if the count register is read manually. 1835 (This increases the speed of delay-loops that simply read 1836 the count register.) 183720050412 Updates to the playstation2 timer/interrupt code. 1838 Some other minor updates. 183920050413 NetBSD/cobalt runs from a disk image :-) including userland; 1840 updating the documentation on how to install NetBSD/cobalt 1841 using NetBSD/pmax (!). 1842 Some minor bintrans updates (no real speed improvement) and 1843 other minor updates (playstation2 now uses the -o options). 184420050414 Adding a dummy x86 (and AMD64) mode. 184520050415 Adding some (32-bit and 16-bit) x86 instructions. 1846 Adding some initial support for non-SCSI, non-IDE floppy 1847 images. (The x86 mode can boot from these, more or less.) 1848 Moving the devices/ and include/ directories to src/devices/ 1849 and src/include/, respectively. 185020050416 Continuing on the x86 stuff. (Adding pc_bios.c and some simple 1851 support for software interrupts in 16-bit mode.) 185220050417 Ripping out most of the x86 instruction decoding stuff, trying 1853 to rewrite it in a cleaner way. 1854 Disabling some of the least working CPU families in the 1855 configure script (sparc, x86, alpha, hppa), so that they are 1856 not enabled by default. 185720050418 Trying to fix the bug which caused problems when turning on 1858 and off bintrans interactively, by flushing the bintrans cache 1859 whenever bintrans is manually (re)enabled. 186020050419 Adding the 'lswi' ppc instruction. 1861 Minor updates to the x86 instruction decoding. 186220050420 Renaming x86 register name indices from R_xx to X86_R_xx (this 1863 makes building on Tru64 nicer). 186420050422 Adding a check for duplicate MIPS TLB entries on tlbwr/tlbwi. 186520050427 Adding screenshots to guestoses.html. 1866 Some minor fixes and testing for the next release. 1867 1868============== RELEASE 0.3.2 ============== 1869 187020050428 Disabling the "-fmove-all-movables" option in the configure 1871 script, because it causes the compile to fail on OpenBSD/sgi. 187220050502 Minor updates. 187320050503 Removing the WRT54G mode (it was bogus anyway), and adding a 1874 comment about Windows NT for MIPS in doc/experiments.html. 1875 Minor updates to the x86 instruction decoding. 187620050504 Adding some more x86 instructions. 1877 Adding support for reading files from ISO9660 CDROMs (including 1878 gzipped files). It's an ugly hack, but it seems to work. 1879 Various other minor updates (dev_vga.c, pc_bios.c etc). 188020050505 Some more x86-related updates. 1881 Beginning (what I hope will be) a major code cleanup phase. 1882 "bootris" (an x86 bootsector) runs :-) 188320050506 Adding some more x86 instructions. 188420050507 tmpnam => mkstemp. 1885 Working on a hack to allow VGA charcells to be shown even when 1886 not running with X11. 1887 Adding more x86 instructions. 188820050508 x86 32-bit SIB addressing fix, and more instructions. 188920050509 Adding more x86 instructions. 189020050510 Minor documentation updates, and other updates (x86 stuff etc.) 189120050511 More x86-related updates. 189220050513 Various updates, mostly x86-related. (Trying to fix flag 1893 calculation, factoring out the ugly shift/rotate code, and 1894 some other things.) 189520050514 Adding support for loading some old i386 a.out executables. 1896 Finally beginning the cleanup of machine/PROM/bios dependant 1897 info. 1898 Some minor documentation updates. 1899 Trying to clean up ARCBIOS stuff a little. 190020050515 Trying to make it possible to actually use more than one disk 1901 type per machine (floppy, ide, scsi). 1902 Trying to clean up the kbd vs PROM console stuff. (For PC and 1903 ARC emulation modes, mostly.) 1904 Beginning to add an 8259 interrupt controller, and connecting 1905 it to the x86 emulation. 190620050516 The first x86 interrupts seem to work (keyboard stuff). 1907 Adding a 8253/8254 programmable interval timer skeleton. 1908 FreeDOS now reaches a command prompt and can be interacted 1909 with. 191020050517 After some bugfixes, MS-DOS also (sometimes) reaches a 1911 command prompt now. 1912 Trying to fix the pckbc to work with MS-DOS' keyb.com, but no 1913 success yet. 191420050518 Adding a simple 32-bit x86 MMU skeleton. 191520050519 Some more work on the x86 stuff. (Beginning the work on paging, 1916 and various other fixes). 191720050520 More updates. Working on dev_vga (4-bit graphics modes), adding 1918 40 columns support to the PC bios emulation. 1919 Trying to add support for resizing windows when switching 1920 between graphics modes. 192120050521 Many more x86-related updates. 192220050522 Correcting the initial stack pointer's sign-extension for 1923 ARCBIOS emulation (thanks to Alec Voropay for noticing the 1924 error). 1925 Continuing on the cleanup (ARCBIOS etc). 1926 dev_vga updates. 192720050523 More x86 updates: trying to add some support for protected mode 1928 interrupts (via gate descriptors) and many other fixes. 1929 More ARCBIOS cleanup. 1930 Adding a device flag which indicates that reads cause no 1931 side-effects. (Useful for the "dump" command in the debugger, 1932 and other things.) 1933 Adding support for directly starting up x86 ELFs, skipping the 1934 bootloader stage. (Most ELFs, however, are not suitable for 1935 this.) 193620050524 Adding simple 32-bit x86 TSS task switching, but no privilege 1937 level support yet. 1938 More work on dev_vga. A small "Copper bars" demo works. :-) 1939 Adding support for Trap Flag (single-step exceptions), at least 1940 in real mode, and various other x86-related fixes. 194120050525 Adding a new disk image prefix (gH;S;) which can be used to 1942 override the default nr of heads and sectors per track. 194320050527 Various bug fixes, more work on the x86 mode (stack change on 1944 interrupts between different priv.levels), and some minor 1945 documentation updates. 194620050528 Various fixes (x86 stuff). 194720050529 More x86 fixes. An OpenBSD/i386 bootfloppy reaches userland 1948 and can be interacted with (although there are problems with 1949 key repetition). NetBSD/i386 triggers a serious CISC-related 1950 problem: instruction fetches across page boundaries, where 1951 the later part isn't actually part of the instruction. 195220050530 Various minor updates. (Documentation updates, etc.) 195320050531 Adding some experimental code (experiments/new_test_*) which 1954 could be useful for dynamic (but not binary) translation in 1955 the future. 195620050602 Adding a dummy ARM skeleton. 1957 Fixing the pckbc key repetition problem (by adding release 1958 scancodes for all keypresses). 195920050603 Minor updates for the next release. 196020050604 Release testing. Minor updates. 1961 1962============== RELEASE 0.3.3 ============== 1963 196420050604 There'll probably be a 0.3.3.1 release soon, with some very 1965 very tiny updates. 1966 1967============== RELEASE 0.3.3.1 ============== 1968 196920050609 Adding simple MIPS IPIs (to dev_mp). 197020050611 Adding an ugly hack to track down low-reference bugs 1971 (define TRACE_NULL_CRASHES, or configure --tracenull). 1972 Other minor updates. 197320050612 Adding a dummy evbmips mode. 1974 1975============== RELEASE 0.3.3.2 ============== 1976 197720050617 Experimenting some more with netbooting OpenBSD/sgi. Adding 1978 a hack which allows emulated ethernet networks to be 1979 distributed across multiple emulator processes. 198020050618 Minor updates (documentation, dummy YAMON emulation, etc). 198120050620 strcpy/strcat -> strlcpy/strlcat updates. 1982 Some more progress on evbmips (Malta). 198320050621 Adding a section to doc/configfiles.html about ethernet 1984 emulation across multiple hosts. 1985 Beginning the work on the ARM translation engine (using the 1986 dynamic-but-not-binary translation method). 1987 Fixing a bintrans bug: 0x9fc00000 should always be treated as 1988 PROM area, just as 0xbfc00000 is. 1989 Minor progress on Malta emulation (the PCI-ISA bus). 199020050622 NetBSD/evbmips can now be installed (using another emulated 1991 machine) and run (including userland and so on). :-) 1992 Spliting up the bintrans haddr_entry field into two (one for 1993 read, one for write). Probably not much of a speed increase, 1994 though. 1995 Updating some NetBSD 2.0 -> 2.0.2 in the documentation. 199620050623 Minor updates (documentation, the TODO file, etc). 1997 gzipped kernels are now always automagically gunzipped when 1998 loaded. 199920050624 Adding a dummy Playstation Portable (PSP) mode, just barely 2000 enough to run Hello World (in weird colors :-). 2001 Removing the -b command line option; old bintrans is enabled 2002 by default instead. It makes more sense. 2003 Trying to finally fix the non-working performance measurement 2004 thing (instr/second etc). 200520050625 Continuing on the essential basics for ARM emulation. Two 2006 instructions seem to work, a branch and a simple "mov". (The 2007 mov arguments are not correct yet.) Performance is definitely 2008 reasonable. 2009 Various other minor updates. 2010 Adding the ARM "bl" instruction. 2011 Adding support for combining multiple ARM instructions into one 2012 function call. ("mov" + "mov" is the only one implemented so 2013 far, but it seems to work.) 2014 Cleaning up some IP32 interrupt things (crime/mace); disabling 2015 the PS/2 keyboard controller on IP32, so that NetBSD/sgimips 2016 boots into userland again. 201720050626 Finally! NetBSD/sgimips netboots. Adding instructions to 2018 doc/guestoses.html on how to set up an nfs server etc. 2019 Various other minor fixes. 2020 Playstation Portable ".pbp" files can now be used directly. 2021 (The ELF part of the .pbp is extracted transparently.) 2022 Converting some sprintf -> snprintf. 2023 Adding some more instructions to the ARM disassembler. 202420050627 More ARM updates. Adding some simple ldr(b), str(b), 2025 cmps, and conditional branch instructions, enough to run 2026 a simple Hello World program. 2027 All ARM instructions are now inlined/generated for all possible 2028 condition codes. 2029 Adding add and sub, and more load/store instructions. 2030 Removing dummy files: cpu_alpha.c, cpu_hppa.c, and cpu_sparc.c. 2031 Some minor documentation updates; preparing for a 0.3.4 2032 release. Updating some URLs. 2033 2034============== RELEASE 0.3.4 ============== 2035 203620050628 Continuing the work on the ARM translation engine. end_of_page 2037 works. Experimenting with load/store translation caches 2038 (virtual -> physical -> host). 203920050629 More ARM stuff (memory access translation cache, mostly). This 2040 might break a lot of stuff elsewhere, probably some MIPS- 2041 related translation things. 204220050630 Many load/stores are now automatically generated and included 2043 into cpu_arm_instr.c; 1024 functions in total (!). 2044 Fixes based on feedback from Alec Voropay: only print 8 hex 2045 digits instead of 16 in some cases when emulating 32-bit 2046 machines; similar 8 vs 16 digit fix for breakpoint addresses; 2047 4Kc has 16 TLB entries, not 48; the MIPS config select1 2048 register is now printed with "reg ,0". 2049 Also changing many other occurances of 16 vs 8 digit output. 2050 Adding cache associativity fields to mips_cpu_types.h; updating 2051 some other cache fields; making the output of 2052 mips_cpu_dumpinfo() look nicer. 2053 Generalizing the bintrans stuff for device accesses to also 2054 work with the new translation system. (This might also break 2055 some MIPS things.) 2056 Adding multi-load/store instructions to the ARM disassembler 2057 and the translator, and some optimizations of various kinds. 205820050701 Adding a simple dev_disk (it can read/write sectors from 2059 disk images). 206020050712 Adding dev_ether (a simple ethernet send/receive device). 2061 Debugger command "ninstrs" for toggling show_nr_of_instructions 2062 during runtime. 2063 Removing the framebuffer logo. 206420050713 Continuing on dev_ether. 2065 Adding a dummy cpu_alpha (again). 206620050714 More work on cpu_alpha. 206720050715 More work on cpu_alpha. Many instructions work, enough to run 2068 a simple framebuffer fill test (similar to the ARM test). 206920050716 More Alpha stuff. 207020050717 Minor updates (Alpha stuff). 207120050718 Minor updates (Alpha stuff). 207220050719 Generalizing some Alpha instructions. 207320050720 More Alpha-related updates. 207420050721 Continuing on cpu_alpha. Importing rpb.h from NetBSD/alpha. 207520050722 Alpha-related updates: userland stuff (Hello World using 2076 write() compiled statically for FreeBSD/Alpha runs fine), and 2077 more instructions are now implemented. 207820050723 Fixing ldq_u and stq_u. 2079 Adding more instructions (conditional moves, masks, extracts, 2080 shifts). 208120050724 More FreeBSD/Alpha userland stuff, and adding some more 2082 instructions (inserts). 208320050725 Continuing on the Alpha stuff. (Adding dummy ldt/stt.) 2084 Adding a -A command line option to turn off alignment checks 2085 in some cases (for translated code). 2086 Trying to remove the old bintrans code which updated the pc 2087 and nr_of_executed_instructions for every instruction. 208820050726 Making another attempt att removing the pc/nr of instructions 2089 code. This time it worked, huge performance increase for 2090 artificial test code, but performance loss for real-world 2091 code :-( so I'm scrapping that code for now. 2092 Tiny performance increase on Alpha (by using ret instead of 2093 jmp, to play nice with the Alpha's branch prediction) for the 2094 old MIPS bintrans backend. 209520050727 Various minor fixes and cleanups. 209620050728 Switching from a 2-level virtual to host/physical translation 2097 system for ARM emulation, to a 1-level translation. 2098 Trying to switch from 2-level to 1-level for the MIPS bintrans 2099 system as well (Alpha only, so far), but there is at least one 2100 problem: caches and/or how they work with device mappings. 210120050730 Doing the 2-level to 1-level conversion for the i386 backend. 2102 The cache/device bug is still there for R2K/3K :( 2103 Various other minor updates (Malta etc). 2104 The mc146818 clock now updates the UIP bit in a way which works 2105 better with Linux for at least sgimips and Malta emulation. 2106 Beginning the work on refactoring the dyntrans system. 210720050731 Continuing the dyntrans refactoring. 2108 Fixing a small but serious host alignment bug in memory_rw. 2109 Adding support for big-endian load/stores to the i386 bintrans 2110 backend. 2111 Another minor i386 bintrans backend update: stores from the 2112 zero register are now one (or two) loads shorter. 2113 The slt and sltu instructions were incorrectly implemented for 2114 the i386 backend; only using them for 32-bit mode for now. 211520050801 Continuing the dyntrans refactoring. 2116 Cleanup of the ns16550 serial controller (removing unnecessary 2117 code). 2118 Bugfix (memory corruption bug) in dev_gt, and a patch/hack from 2119 Alec Voropay for Linux/Malta. 212020050802 More cleanup/refactoring of the dyntrans subsystem: adding 2121 phys_page pointers to the lookup tables, for quick jumps 2122 between translated pages. 2123 Better fix for the ns16550 device (but still no real FIFO 2124 functionality). 2125 Converting cpu_ppc to the new dyntrans system. This means that 2126 I will have to start from scratch with implementing each 2127 instruction, and figure out how to implement dual 64/32-bit 2128 modes etc. 2129 Removing the URISC CPU family, because it was useless. 213020050803 When selecting a machine type, the main type can now be omitted 2131 if the subtype name is unique. (I.e. -E can be omitted.) 2132 Fixing a dyntrans/device update bug. (Writes to offset 0 of 2133 a device could sometimes go unnoticed.) 2134 Adding an experimental "instruction combination" hack for 2135 ARM for memset-like byte fill loops. 213620050804 Minor progress on cpu_alpha and related things. 2137 Finally fixing the MIPS dmult/dmultu bugs. 2138 Fixing some minor TODOs. 213920050805 Generalizing the 8259 PIC. It now also works with Cobalt 2140 and evbmips emulation, in addition to the x86 hack. 2141 Finally converting the ns16550 device to use devinit. 2142 Continuing the work on the dyntrans system. Thinking about 2143 how to add breakpoints. 214420050806 More dyntrans updates. Breakpoints seem to work now. 214520050807 Minor updates: cpu_alpha and related things; removing 2146 dev_malta (as it isn't used any more). 2147 Dyntrans: working on general "show trace tree" support. 2148 The trace tree stuff now works with both the old MIPS code and 2149 with newer dyntrans modes. :) 2150 Continuing on Alpha-related stuff (trying to get *BSD to boot 2151 a bit further, adding more instructions, etc). 215220050808 Adding a dummy IA64 cpu family, and continuing the refactoring 2153 of the dyntrans system. 2154 Removing the regression test stuff, because it was more or 2155 less useless. 2156 Adding loadlinked/storeconditional type instructions to the 2157 Alpha emulation. (Needed for Linux/alpha. Not very well tested 2158 yet.) 215920050809 The function call trace tree now prints a per-function nr of 2160 arguments. (Semi-meaningless, since that data isn't read yet 2161 from the ELFs; some hardcoded symbols such as memcpy() and 2162 strlen() work fine, though.) 2163 More dyntrans refactoring; taking out more of the things that 2164 are common to all cpu families. 216520050810 Working on adding support for "dual mode" for PPC dyntrans 2166 (i.e. both 64-bit and 32-bit modes). 2167 (Re)adding some simple PPC instructions. 216820050811 Adding a dummy M68K cpu family. The dyntrans system isn't ready 2169 for variable-length ISAs yet, so it's completely bogus so far. 2170 Re-adding more PPC instructions. 2171 Adding a hack to src/file.c which allows OpenBSD/mac68k a.out 2172 kernels to be loaded. 2173 Beginning to add PPC loads/stores. So far they only work in 2174 32-bit mode. 217520050812 The configure file option "add_remote" now accepts symbolic 2176 host names, in addition to numeric IPv4 addresses. 2177 Re-adding more PPC instructions. 217820050814 Continuing to port back more PPC instructions. 2179 Found and fixed the cache/device write-update bug for 32-bit 2180 MIPS bintrans. :-) 2181 Triggered a really weird and annoying bug in Compaq's C 2182 compiler; ccc sometimes outputs code which loads from an 2183 address _before_ checking whether the pointer was NULL or not. 2184 (I'm not sure how to handle this problem.) 218520050815 Removing all of the old x86 instruction execution code; adding 2186 a new (dummy) dyntrans module for x86. 2187 Taking the first steps to extend the dyntrans system to support 2188 variable-length instructions. 2189 Slowly preparing for the next release. 219020050816 Adding a dummy SPARC cpu module. 2191 Minor updates (documentation etc) for the release. 2192 2193============== RELEASE 0.3.5 ============== 2194 219520050816 Some success in decoding the way the SGI O2 PROM draws graphics 2196 during bootup; lines/rectangles and bitmaps work, enough to 2197 show the bootlogo etc. :-) 2198 Adding more PPC instructions, and (dummy) BAT registers. 219920050817 Updating the pckbc to support scancode type 3 keyboards 2200 (required in order to interact with the SGI O2 PROM). 2201 Adding more PPC instructions. 220220050818 Adding more ARM instructions; general register forms. 2203 Importing armreg.h from NetBSD (ARM cpu ids). Adding a (dummy) 2204 CATS machine mode (using SA110 as the default CPU). 2205 Continuing on general dyntrans related stuff. 220620050819 Register forms for ARM load/stores. Gaah! The Compaq C Compiler 2207 bug is triggered for ARM loads as well, not just PPC :-( 2208 Adding full support for ARM PC-relative load/stores, and load/ 2209 stores where the PC register is the destination register. 2210 Adding support for ARM a.out binaries. 221120050820 Continuing to add more ARM instructions, and correcting some 2212 bugs. Continuing on CATS emulation. 2213 More work on the PPC stuff. 221420050821 Minor PPC and ARM updates. Adding more machine types. 221520050822 All ARM "data processing instructions" are now generated 2216 automatically. 221720050824 Beginning the work on the ARM system control coprocessor. 2218 Adding support for ARM halfword load/stores, and signed loads. 221920050825 Fixing an important bug related to the ARM condition codes. 2220 OpenBSD/zaurus and NetBSD/netwinder now print some boot 2221 messages. :) 2222 Adding a dummy SH (Hitachi SuperH) cpu family. 2223 Beginning to add some ARM virtual address translation. 2224 MIPS bugfixes: unaligned PC now cause an ADEL exception (at 2225 least for non-bintrans execution), and ADEL/ADES (not 2226 TLBL/TLBS) are used if userland tries to access kernel space. 2227 (Thanks to Joshua Wise for making me aware of these bugs.) 222820050827 More work on the ARM emulation, and various other updates. 222920050828 More ARM updates. 2230 Finally taking the time to work on translation invalidation 2231 (i.e. invalidating translated code mappings when memory is 2232 written to). Hopefully this doesn't break anything. 223320050829 Moving CPU related files from src/ to a new subdir, src/cpus/. 2234 Moving PROM emulation stuff from src/ to src/promemul/. 2235 Better debug instruction trace for ARM loads and stores. 223620050830 Various ARM updates (correcting CMP flag calculation, etc). 223720050831 PPC instruction updates. (Flag fixes, etc.) 223820050901 Various minor PPC and ARM instruction emulation updates. 2239 Minor OpenFirmware emulation updates. 224020050903 Adding support for adding arbitrary ARM coprocessors (with 2241 the i80321 I/O coprocessor as a first test). 2242 Various other ARM and PPC updates. 224320050904 Adding some SHcompact disassembly routines. 224420050907 (Re)adding a dummy HPPA CPU module, and a dummy i960 module. 224520050908 Began hacking on some Apple Partition Table support. 224620050909 Adding support for loading Mach-O (Darwin PPC) binaries. 224720050910 Fixing an ARM bug (Carry flag was incorrectly updated for some 2248 data processing instructions); OpenBSD/cats and NetBSD/ 2249 netwinder get quite a bit further now. 2250 Applying a patch to dev_wdc, and a one-liner to dev_pcic, to 2251 make them work better when emulating new versions of OpenBSD. 2252 (Thanks to Alexander Yurchenko for the patches.) 2253 Also doing some other minor updates to dev_wdc. (Some cleanup, 2254 and finally converting to devinit, etc.) 225520050912 IRIX doesn't have u_int64_t by default (noticed by Andreas 2256 <avr@gnulinux.nl>); configure updated to reflect this. 2257 Working on ARM register bank switching, CPSR vs SPSR issues, 2258 and beginning the work on interrupt/exception support. 225920050913 Various minor ARM updates (speeding up load/store multiple, 2260 and fixing a ROR bug in R(); NetBSD/cats now boots as far as 2261 OpenBSD/cats). 226220050917 Adding a dummy Atmel AVR (8-bit) cpu family skeleton. 226320050918 Various minor updates. 226420050919 Symbols are now loaded from Mach-O executables. 2265 Continuing the work on adding ARM exception support. 226620050920 More work on ARM stuff: OpenBSD/cats and NetBSD/cats reach 2267 userland! :-) 226820050921 Some more progress on ARM interrupt specifics. 226920050923 Fixing linesize for VR4121 (patch by Yurchenko). Also fixing 2270 linesizes/cachesizes for some other VR4xxx. 2271 Adding a dummy Acer Labs M1543 PCI-ISA bridge (for CATS) and a 2272 dummy Symphony Labs 83C553 bridge (for Netwinder), usable by 2273 dev_footbridge. 227420050924 Some PPC progress. 227520050925 More PPC progress. 227620050926 PPC progress (fixing some bugs etc); Darwin's kernel gets 2277 slightly further than before. 227820050928 Various updates: footbridge/ISA/pciide stuff, and finally 2279 fixing the VGA text scroll-by-changing-the-base-offset bug. 228020050930 Adding a dummy S3 ViRGE pci card for CATS emulation, which 2281 both NetBSD and OpenBSD detects as VGA. 2282 Continuing on Footbridge (timers, ISA interrupt stuff). 228320051001 Continuing... there are still bugs, probably interrupt- 2284 related. 228520051002 More work on the Footbridge (interrupt stuff). 228620051003 Various minor updates. (Trying to find the bug(s).) 228720051004 Continuing on the ARM stuff. 228820051005 More ARM-related fixes. 228920051007 FINALLY! Found and fixed 2 ARM bugs: 1 memory related, and the 2290 other was because of an error in the ARM manual (load multiple 2291 with the S-bit set should _NOT_ load usermode registers, as the 2292 manual says, but it should load saved registers, which may or 2293 may not happen to be usermode registers). 2294 NetBSD/cats and OpenBSD/cats seem to install fine now :-) 2295 except for a minor bug at the end of the OpenBSD/cats install. 2296 Updating the documentation, preparing for the next release. 229720051008 Continuing with release testing and cleanup. 2298 2299============== RELEASE 0.3.6 ============== 2300 230120051008 The bug was not because of faulty ARM documentation after all, 2302 but it was related to those parts of the code. 2303 Fixing the RTC (dev_mc146818) to work with CATS. 230420051009 Rewriting the R() function; now there are 8192 automatically 2305 generated smaller functions doing the same thing, but hopefully 2306 faster. This also fixes some bugs which were triggered when 2307 trying to compile GXemul inside itself. :-) 2308 Adding a dummy dev_lpt. 230920051010 Small hack to not update virtual translation tables if memory 2310 accesses are done with the NO_EXCEPTION flag; a time reduction 2311 of almost a factor 2 for a full NetBSD/cats install. :-) 231220051011 Passing -A as the default boot arg for CATS (works fine with 2313 OpenBSD/cats). 2314 2315============== RELEASE 0.3.6.1 ============== 2316 231720051012 Fixing the VGA cursor offset bug, and speeding up framebuffer 2318 redraws if character cells contain the same thing as during 2319 the last redraw. 232020051013 Adding a slow strd ARM instruction hack. 232120051017 Minor updates: Adding a dummy i80321 Verde controller (for 2322 XScale emulation), fixing the disassembly of the ARM "ldrd" 2323 instruction, adding "support" for less-than-4KB pages for ARM 2324 (by not adding them to translation tables). 232520051020 Continuing on some HPCarm stuff. A NetBSD/hpcarm kernel prints 2326 some boot messages on an emulated Jornada 720. 2327 Making dev_ram work better with dyntrans (speeds up some things 2328 quite a bit). 232920051021 Automatically generating some of the most common ARM load/store 2330 multiple instructions. 233120051022 Better statistics gathering for the ARM load/store multiple. 2332 Various other dyntrans and device updates. 233320051023 Various minor updates. 233420051024 Continuing; minor device and dyntrans fine-tuning. Adding the 2335 first "reasonable" instruction combination hacks for ARM (the 2336 cores of NetBSD/cats' memset and memcpy). 233720051025 Fixing a dyntrans-related bug in dev_vga. Also changing the 2338 dyntrans low/high access notification to only be updated on 2339 writes, not reads. Hopefully it will be enough. (dev_vga in 2340 charcell mode now seems to work correctly with both reads and 2341 writes.) 2342 Experimenting with gathering dyntrans statistics (which parts 2343 of emulated RAM that are actually executed), and adding 2344 instruction combination hacks for cache cleaning and a part of 2345 NetBSD's scanc() function. 234620051026 Adding a bitmap for ARM emulation which indicates if a page is 2347 (specifically) user accessible; loads and stores with the t- 2348 flag set can now use the translation arrays, which results in 2349 a measurable speedup. 235020051027 Dyntrans updates; adding an extra bitmap array for 32-bit 2351 emulation modes, speeding up the check whether a physical page 2352 has any code translations or not (O(n) -> O(1)). Doing a 2353 similar reduction of O(n) to O(1) by avoiding the scan through 2354 the translation entries on a translation update (32-bit mode 2355 only). 2356 Various other minor hacks. 235720051029 Quick release, without any testing at all. 2358 2359============== RELEASE 0.3.6.2 ============== 2360 236120051031 Adding disassembly support for more ARM instructions (clz, 2362 smul* etc), and adding a hack to support "new tiny" pages 2363 for StrongARM. 236420051101 Minor documentation updates (NetBSD 2.0.2 -> 2.1, and OpenBSD 2365 3.7 -> 3.8, and lots of testing). 2366 Changing from 1-sector PIO mode 0 transfers to 128-sector PIO 2367 mode 3 (in dev_wdc). 2368 Various minor ARM dyntrans updates (pc-relative loads from 2369 within the same page as the instruction are now treated as 2370 constant "mov"). 237120051102 Re-enabling instruction combinations (they were accidentally 2372 disabled). 2373 Dyntrans TLB entries are now overwritten using a round-robin 2374 scheme instead of randomly. This increases performance. 2375 Fixing a typo in file.c (thanks to Chuan-Hua Chang for 2376 noticing it). 2377 Experimenting with adding ATAPI support to dev_wdc (to make 2378 emulated *BSD detect cdroms as cdroms, not harddisks). 237920051104 Various minor updates. 238020051105 Continuing on the ATAPI emulation. Seems to work well enough 2381 for a NetBSD/cats installation, but not OpenBSD/cats. 2382 Various other updates. 238320051106 Modifying the -Y command line option to allow scaleup with 2384 certain graphic controllers (only dev_vga so far), not just 2385 scaledown. 2386 Some minor dyntrans cleanups. 238720051107 Beginning a cleanup up the PCI subsystem (removing the 2388 read_register hack, etc). 238920051108 Continuing the cleanup; splitting up some pci devices into a 2390 normal autodev device and some separate pci glue code. 239120051109 Continuing on the PCI bus stuff; all old pci_*.c have been 2392 incorporated into normal devices and/or rewritten as glue code 2393 only, adding a dummy Intel 82371AB PIIX4 for Malta (not really 2394 tested yet). 2395 Minor pckbc fix so that Linux doesn't complain. 2396 Working on the DEC 21143 NIC (ethernet mac rom stuff mostly). 2397 Various other minor fixes. 239820051110 Some more ARM dyntrans fine-tuning (e.g. some instruction 2399 combinations (cmps followed by conditional branch within the 2400 same page) and special cases for DPIs with regform when the 2401 shifter isn't used). 240220051111 ARM dyntrans updates: O(n)->O(1) for just-mark-as-non- 2403 writable in the generic pc_to_pointers function, and some other 2404 minor hacks. 2405 Merging Cobalt and evbmips (Malta) ISA interrupt handling, 2406 and some minor fixes to allow Linux to accept harddisk irqs. 240720051112 Minor device updates (pckbc, dec21143, lpt, ...), most 2408 importantly fixing the ALI M1543/M5229 so that harddisk irqs 2409 work with Linux/CATS. 241020051113 Some more generalizations of the PCI subsystem. 2411 Finally took the time to add a hack for SCSI CDROM TOCs; this 2412 enables OpenBSD to use partition 'a' (as needed by the OpenBSD 2413 installer), and Windows NT's installer to get a bit further. 2414 Also fixing dev_wdc to allow Linux to detect ATAPI CDROMs. 2415 Continuing on the DEC 21143. 241620051114 Minor ARM dyntrans tweaks; ARM cmps+branch optimization when 2417 comparing with 0, and generalizing the xchg instr. comb. 2418 Adding disassembly of ARM mrrc/mcrr and q{,d}{add,sub}. 241920051115 Continuing on various PPC things (BATs, other address trans- 2420 lation things, various loads/stores, BeBox emulation, etc.). 2421 Beginning to work on PPC interrupt/exception support. 242220051116 Factoring out some code which initializes legacy ISA devices 2423 from those machines that use them (bus_isa). 2424 Continuing on PPC interrupt/exception support. 242520051117 Minor Malta fixes: RTC year offset = 80, disabling a speed hack 2426 which caused NetBSD to detect a too fast cpu, and adding a new 2427 hack to make Linux detect a faster cpu. 2428 Continuing on the Artesyn PM/PPC emulation mode. 2429 Adding an Algor emulation skeleton (P4032 and P5064); 2430 implementing some of the basics. 2431 Continuing on PPC emulation in general; usage of unimplemented 2432 SPRs is now easier to track, continuing on memory/exception 2433 related issues, etc. 243420051118 More work on PPC emulation (tgpr0..3, exception handling, 2435 memory stuff, syscalls, etc.). 243620051119 Changing the ARM dyntrans code to mostly use cpu->pc, and not 2437 necessarily use arm reg 15. Seems to work. 2438 Various PPC updates; continuing on the PReP emulation mode. 243920051120 Adding a workaround/hack to dev_mc146818 to allow NetBSD/prep 2440 to detect the clock. 244120051121 More cleanup of the PCI bus (memory and I/O bases, etc). 2442 Continuing on various PPC things (decrementer and timebase, 2443 WDCs on obio (on PReP) use irq 13, not 14/15). 244420051122 Continuing on the CPC700 controller (interrupts etc) for PMPPC, 2445 and on PPC stuff in general. 2446 Finally! After some bug fixes to the virtual to physical addr 2447 translation, NetBSD/{prep,pmppc} 2.1 reach userland and are 2448 stable enough to be interacted with. 2449 More PCI updates; reverse-endian device access for PowerPC etc. 245020051123 Generalizing the IEEE floating point subsystem (moving it out 2451 from src/cpus/cpu_mips_coproc.c into a new src/float_emul.c). 2452 Input via slave xterms was sometimes not really working; fixing 2453 this for ns16550, and a warning message is now displayed if 2454 multiple non-xterm consoles are active. 2455 Adding some PPC floating point support, etc. 2456 Various interrupt related updates (dev_wdc, _ns16550, _8259, 2457 and the isa32 common code in machine.c). 2458 NetBSD/prep can now be installed! :-) (Well, with some manual 2459 commands necessary before running sysinst.) Updating the 2460 documentation and various other things to reflect this. 246120051124 Various minor documentation updates. 2462 Continuing the work on the DEC 21143 NIC. 246320051125 LOTS of work on the 21143. Both OpenBSD and NetBSD work fine 2464 with it now, except that OpenBSD sometimes gives a time-out 2465 warning. 2466 Minor documentation updates. 2467 2468============== RELEASE 0.3.7 ============== 2469 247020051126 Cobalt and PReP now work with the 21143 NIC. 2471 Continuing on Alpha dyntrans things. 2472 Fixing some more left-shift-by-24 to unsigned. 247320051127 Working on OpenFirmware emulation; major cleanup/redesign. 2474 Progress on MacPPC emulation: NetBSD detects two CPUs (when 2475 running with -n 2), framebuffer output (for text) works. 2476 Adding quick-hack Bandit PCI controller and "gc" interrupt 2477 controller for MacPPC. 247820051128 Changing from a Bandit to a Uni-North controller for macppc. 2479 Continuing on OpenFirmware and MacPPC emulation in general 2480 (obio controller, and wdc attached to the obio seems to work). 248120051129 More work on MacPPC emulation (adding a dummy ADB controller). 2482 Continuing the PCI bus cleanup (endianness and tag composition) 2483 and rewriting all PCI controllers' access functions. 248420051130 Various minor PPC dyntrans optimizations. 2485 Manually inlining some parts of the framebuffer redraw routine. 2486 Slowly beginning the conversion of the old MIPS emulation into 2487 dyntrans (but this will take quite some time to get right). 2488 Generalizing quick_pc_to_pointers. 248920051201 Documentation update (David Muse has made available a kernel 2490 which simplifies Debian/DECstation installation). 2491 Continuing on the ADB bus controller. 249220051202 Beginning a rewrite of the Zilog serial controller (dev_zs). 249320051203 Continuing on the zs rewrite (now called dev_z8530); conversion 2494 to devinit style. 2495 Reworking some of the input-only vs output-only vs input-output 2496 details of src/console.c, better warning messages, and adding 2497 a debug dump. 2498 Removing the concept of "device state"; it wasn't really used. 2499 Changing some debug output (-vv should now be used to show all 2500 details about devices and busses; not shown during normal 2501 startup anymore). 2502 Beginning on some SPARC instruction disassembly support. 250320051204 Minor PPC updates (WALNUT skeleton stuff). 2504 Continuing on the MIPS dyntrans rewrite. 2505 More progress on the ADB controller (a keyboard is "detected" 2506 by NetBSD and OpenBSD). 2507 Downgrading OpenBSD/arc as a guest OS from "working" to 2508 "almost working" in the documentation. 2509 Progress on Algor emulation ("v3" PCI controller). 251020051205 Minor updates. 251120051207 Sorting devices according to address; this reduces complexity 2512 of device lookups from O(n) to O(log n) in memory_rw (but no 2513 real performance increase (yet) in experiments). 251420051210 Beginning the work on native dyntrans backends (by making a 2515 simple skeleton; so far only for Alpha hosts). 251620051211 Some very minor SPARC updates. 251720051215 Fixing a bug in the MIPS mul (note: not mult) instruction, 2518 so it also works with non-64-bit emulation. (Thanks to Alec 2519 Voropay for noticing the problem.) 252020051216 More work on the fake/empty/simple/skeleton/whatever backend; 2521 performance doesn't increase, so this isn't really worth it, 2522 but it was probably worth it to prepare for a real backend 2523 later. 252420051219 More instr call statistics gathering and analysis stuff. 252520051220 Another fix for MIPS 'mul'. Also converting mul and {d,}cl{o,z} 2526 to dyntrans. 2527 memory_ppc.c syntax error fix (noticed by Peter Valchev). 2528 Beginning to move out machines from src/machine.c into 2529 individual files in src/machines (in a way similar to the 2530 autodev system for devices). 253120051222 Updating the documentation regarding NetBSD/pmax 3.0. 253220051223 - " - NetBSD/cats 3.0. 253320051225 - " - NetBSD/hpcmips 3.0. 253420051226 Continuing on the machine registry redesign. 2535 Adding support for ARM rrx (33-bit rotate). 2536 Fixing some signed/unsigned issues (exposed by gcc -W). 253720051227 Fixing the bug which prevented a NetBSD/prep 3.0 install kernel 2538 from starting (triggered when an mtmsr was the last instruction 2539 on a page). Unfortunately not enough to get the kernel to run 2540 as well as the 2.1 kernels did. 254120051230 Some dyntrans refactoring. 254220051231 Continuing on the machine registry redesign. 254320060101-10 Continuing... moving more machines. Moving MD interrupt stuff 2544 from machine.c into a new src/machines/interrupts.c. 254520060114 Adding various mvmeppc machine skeletons. 254620060115 Continuing on mvme* stuff. NetBSD/mvmeppc prints boot messages 2547 (for MVME1600) and reaches the root device prompt, but no 2548 specific hardware devices are emulated yet. 254920060116 Minor updates to the mvme1600 emulation mode; the Eagle PCI bus 2550 seems to work without much modification, and a 21143 can be 2551 detected, interrupts might work (but untested so far). 2552 Adding a fake MK48Txx (mkclock) device, for NetBSD/mvmeppc. 255320060121 Adding an aux control register for ARM. (A BIG thank you to 2554 Olivier Houchard for tracking down this bug.) 255520060122 Adding more ARM instructions (smulXY), and dev_iq80321_7seg. 255620060124 Adding disassembly of more ARM instructions (mia*, mra/mar), 2557 and some semi-bogus XScale and i80321 registers. 255820060201-02 Various minor updates. Moving the last machines out of 2559 machine.c. 256020060204 Adding a -c command line option, for running debugger commands 2561 before the simulation starts, but after all files have been 2562 loaded. 2563 Minor iq80321-related updates. 256420060209 Minor hacks (DEVINIT macro, etc). 2565 Preparing for the generalization of the 64-bit dyntrans address 2566 translation subsystem. 256720060216 Adding ARM ldrd (double-register load). 256820060217 Continuing on various ARM-related stuff. 256920060218 More progress on the ATA/wdc emulation for NetBSD/iq80321. 2570 NetBSD/evbarm can now be installed :-) Updating the docs, etc. 2571 Continuing on Algor emulation. 2572 2573============== RELEASE 0.3.8 ============== 2574 257520060219 Various minor updates. Removing the old MIPS16 skeleton code, 2576 because it will need to be rewritten for dyntrans anyway. 257720060220-22 Removing the non-working dyntrans backend support. 2578 Continuing on the 64-bit dyntrans virtual memory generalization. 257920060223 More work on the 64-bit vm generalization. 258020060225 Beginning on MIPS dyntrans load/store instructions. 2581 Minor PPC updates (64-bit load/store, etc). 2582 Fixes for the variable-instruction-length framework, some 2583 minor AVR updates (a simple Hello World program works!). 2584 Beginning on a skeleton for automatically generating documen- 2585 tation (for devices etc.). 258620060226 PPC updates (adding some more 64-bit instructions, etc). 2587 AVR updates (more instructions). 2588 FINALLY found and fixed the zs bug, making NetBSD/macppc 2589 accept the serial console. 259020060301 Adding more AVR instructions. 259120060304 Continuing on AVR-related stuff. Beginning on a framework for 2592 cycle-accurate device emulation. Adding an experimental "PAL 2593 TV" device (just a dummy so far). 259420060305 Adding more AVR instructions. 2595 Adding a dummy epcom serial controller (for TS7200 emulation). 259620060310 Removing the emul() command from configuration files, so only 2597 net() and machine() are supported. 2598 Minor progress on the MIPS dyntrans rewrite. 259920060311 Continuing on the MIPS dyntrans rewrite (adding more 2600 instructions, etc). 260120060315 Adding more instructions (sllv, srav, srlv, bgtz[l], blez[l], 2602 beql, bnel, slti[u], various loads and stores). 260320060316 Removing the ALWAYS_SIGNEXTEND_32 option, since it was rarely 2604 used. 2605 Adding more MIPS dyntrans instructions, and fixing bugs. 260620060318 Implementing fast loads/stores for MIPS dyntrans (big/little 2607 endian, 32-bit and 64-bit modes). 260820060320 Making MIPS dyntrans the default configure option; use 2609 "--enable-oldmips" to use the old bintrans system. 2610 Adding MIPS dyntrans dmult[u]; minor updates. 261120060322 Continuing... adding some more instructions. 2612 Adding a simple skeleton for demangling C++ "_ZN" symbols. 261320060323 Moving src/debugger.c into a new directory (src/debugger/). 261420060324 Fixing the hack used to load PPC ELFs (useful for relocated 2615 Linux/ppc kernels), and adding a dummy G3 machine mode. 261620060325-26 Beginning to experiment with GDB remote serial protocol 2617 connections; adding a -G command line option for selecting 2618 which TCP port to listen to. 261920060330 Beginning a major cleanup to replace things like "0x%016llx" 2620 with more correct "0x%016"PRIx64, etc. 2621 Continuing on the GDB remote serial protocol support. 262220060331 More cleanup, and some minor GDB remote progress. 262320060402 Adding a hack to the configure script, to allow compilation 2624 on systems that lack PRIx64 etc. 262520060406 Removing the temporary FreeBSD/arm hack in dev_ns16550.c and 2626 replacing it with a better fix from Olivier Houchard. 262720060407 A remote debugger (gdb or ddd) can now start and stop the 2628 emulator using the GDB remote serial protocol, and registers 2629 and memory can be read. MIPS only for now. 263020060408 More GDB progress: single-stepping also works, and also adding 2631 support for ARM, PowerPC, and Alpha targets. 2632 Continuing on the delay-slot-across-page-boundary issue. 263320060412 Minor update: beginning to add support for the SPARC target 2634 to the remote GDB functionality. 263520060414 Various MIPS updates: adding more instructions for dyntrans 2636 (eret, add), and making some exceptions work. Fixing a bug 2637 in dmult[u]. 2638 Implementing the first SPARC instructions (sethi, or). 263920060415 Adding "magic trap" instructions so that PROM calls can be 2640 software emulated in MIPS dyntrans. 2641 Adding more MIPS dyntrans instructions (ddiv, dadd) and 2642 fixing another bug in dmult. 264320060416 More MIPS dyntrans progress: adding [d]addi, movn, movz, dsllv, 2644 rfi, an ugly hack for supporting R2000/R3000 style faked caches, 2645 preliminary interrupt support, and various other updates and 2646 bugfixes. 264720060417 Adding more SPARC instructions (add, sub, sll[x], sra[x], 2648 srl[x]), and useful SPARC header definitions. 2649 Adding the first (trivial) x86/AMD64 dyntrans instructions (nop, 2650 cli/sti, stc/clc, std/cld, simple mov, inc ax). Various other 2651 x86 updates related to variable instruction length stuff. 2652 Adding unaligned loads/stores to the MIPS dyntrans mode (but 2653 still using the pre-dyntrans (slow) imlementation). 265420060419 Fixing a MIPS dyntrans exception-in-delay-slot bug. 2655 Removing the old "show opcode statistics" functionality, since 2656 it wasn't really useful and isn't implemented for dyntrans. 2657 Single-stepping (or running with instruction trace) now looks 2658 ok with dyntrans with delay-slot architectures. 265920060420 Minor hacks (removing the -B command line option when compiled 2660 for non-bintrans, and some other very minor updates). 2661 Adding (slow) MIPS dyntrans load-linked/store-conditional. 266220060422 Applying fixes for bugs discovered by Nils Weller's nwcc 2663 (static DEC memmap => now per machine, and adding an extern 2664 keyword in cpu_arm_instr.c). 2665 Finally found one of the MIPS dyntrans bugs that I've been 2666 looking for (copy/paste spelling error BIG vs LITTLE endian in 2667 cpu_mips_instr_loadstore.c for 16-bit fast stores). 2668 FINALLY found the major MIPS dyntrans bug: slti vs sltiu 2669 signed/unsigned code in cpu_mips_instr.c. :-) 2670 Adding more MIPS dyntrans instructions (lwc1, swc1, bgezal[l], 2671 ctc1, tlt[u], tge[u], tne, beginning on rdhwr). 2672 NetBSD/hpcmips can now reach userland when using dyntrans :-) 2673 Adding some more x86 dyntrans instructions. 2674 Finally removed the old Alpha-specific virtual memory code, 2675 and replaced it with the generic 64-bit version. 2676 Beginning to add disassembly support for SPECIAL3 MIPS opcodes. 267720060423 Continuing on the delay-slot-across-page-boundary issue; 2678 adding an end_of_page2 ic slot (like I had planned before, but 2679 had removed for some reason). 2680 Adding a quick-and-dirty fallback to legacy coprocessor 1 2681 code (i.e. skipping dyntrans implementation for now). 2682 NetBSD/hpcmips and NetBSD/pmax (when running on an emulated 2683 R4400) can now be installed and run. :-) (Many bugs left 2684 to fix, though.) 2685 Adding more MIPS dyntrans instructions: madd[u], msub[u]. 2686 Cleaning up the SPECIAL2 vs R5900/TX79/C790 "MMI" opcode 2687 maps somewhat (disassembly and dyntrans instruction decoding). 268820060424 Adding an isa_revision field to mips_cpu_types.h, and making 2689 sure that SPECIAL3 opcodes cause Reserved Instruction 2690 exceptions on MIPS32/64 revisions lower than 2. 2691 Adding the SPARC 'ba', 'call', 'jmpl/retl', 'and', and 'xor' 2692 instructions. 269320060425 Removing the -m command line option ("run at most x 2694 instructions") and -T ("single_step_on_bad_addr"), because 2695 they never worked correctly with dyntrans anyway. 2696 Freshening up the man page. 269720060428 Adding more MIPS dyntrans instructions: bltzal[l], idle. 2698 Enabling MIPS dyntrans compare interrupts. 269920060429 FINALLY found the weird dyntrans bug, causing NetBSD etc. to 2700 behave strangely: some floating point code (conditional 2701 coprocessor branches) could not be reused from the old 2702 non-dyntrans code. The "quick-and-dirty fallback" only appeared 2703 to work. Fixing by implementing bc1* for MIPS dyntrans. 2704 More MIPS instructions: [d]sub, sdc1, ldc1, dmtc1, dmfc1, cfc0. 2705 Freshening up MIPS floating point disassembly appearance. 270620060430 Continuing on C790/R5900/TX79 disassembly; implementing 128-bit 2707 "por" and "pextlw". 270820060504 Disabling -u (userland emulation) unless compiled as unstable 2709 development version. 2710 Beginning on freshening up the testmachine include files, 2711 to make it easier to reuse those files (placing them in 2712 src/include/testmachine/), and beginning on a set of "demos" 2713 or "tutorials" for the testmachine functionality. 2714 Minor updates to the MIPS GDB remote protocol stub. 2715 Refreshing doc/experiments.html and gdb_remote.html. 2716 Enabling Alpha emulation in the stable release configuration, 2717 even though no guest OSes for Alpha can run yet. 271820060505 Adding a generic 'settings' object, which will contain 2719 references to settable variables (which will later be possible 2720 to access using the debugger). 272120060506 Updating dev_disk and corresponding demo/documentation (and 2722 switching from SCSI to IDE disk types, so it actually works 2723 with current test machines :-). 272420060510 Adding a -D_LARGEFILE_SOURCE hack for 64-bit Linux hosts, 2725 so that fseeko() doesn't give a warning. 2726 Updating the section about how dyntrans works (the "runnable 2727 IR") in doc/intro.html. 2728 Instruction updates (some x64=1 checks, some more R5900 2729 dyntrans stuff: better mul/mult separation from MIPS32/64, 2730 adding ei and di). 2731 Updating MIPS cpuregs.h to a newer one (from NetBSD). 2732 Adding more MIPS dyntrans instructions: deret, ehb. 273320060514 Adding disassembly and beginning implementation of SPARC wr 2734 and wrpr instructions. 273520060515 Adding a SUN SPARC machine mode, with dummy SS20 and Ultra1 2736 machines. Adding the 32-bit "rd psr" instruction. 273720060517 Disassembly support for the general SPARC rd instruction. 2738 Partial implementation of the cmp (subcc) instruction. 2739 Some other minor updates (making sure that R5900 processors 2740 start up with the EIE bit enabled, otherwise Linux/playstation2 2741 receives no interrupts). 274220060519 Minor MIPS updates/cleanups. 274320060521 Moving the MeshCube machine into evbmips; this seems to work 2744 reasonably well with a snapshot of a NetBSD MeshCube kernel. 2745 Cleanup/fix of MIPS config0 register initialization. 274620060529 Minor MIPS fixes, including a sign-extension fix to the 2747 unaligned load/store code, which makes NetBSD/pmax on R3000 2748 work better with dyntrans. (Ultrix and Linux/DECstation still 2749 don't work, though.) 275020060530 Minor updates to the Alpha machine mode: adding an AlphaBook 2751 mode, an LCA bus (forwarding accesses to an ISA bus), etc. 275220060531 Applying a bugfix for the MIPS dyntrans sc[d] instruction from 2753 Ondrej Palkovsky. (Many thanks.) 275420060601 Minifix to allow ARM immediate msr instruction to not give 2755 an error for some valid values. 2756 More Alpha updates. 275720060602 Some minor Alpha updates. 275820060603 Adding the Alpha cmpbge instruction. NetBSD/alpha prints its 2759 first boot messages :-) on an emulated Alphabook 1. 276020060612 Minor updates; adding a dev_ether.h include file for the 2761 testmachine ether device. Continuing the hunt for the dyntrans 2762 bug which makes Linux and Ultrix on DECstation behave 2763 strangely... FINALLY found it! It seems to be related to 2764 invalidation of the translation cache, on tlbw{r,i}. There 2765 also seems to be some remaining interrupt-related problems. 276620060614 Correcting the implementation of ldc1/sdc1 for MIPS dyntrans 2767 (so that it uses 16 32-bit registers if the FR bit in the 2768 status register is not set). 276920060616 REMOVING BINTRANS COMPLETELY! 2770 Removing the old MIPS interpretation mode. 2771 Removing the MFHILO_DELAY and instruction delay stuff, because 2772 they wouldn't work with dyntrans anyway. 277320060617 Some documentation updates (adding "NetBSD-archive" to some 2774 URLs, and new Debian/DECstation installation screenshots). 2775 Removing the "tracenull" and "enable-caches" configure options. 2776 Improving MIPS dyntrans performance somewhat (only invalidate 2777 translations if necessary, on writes to the entryhi register, 2778 instead of doing it for all cop0 writes). 277920060618 More cleanup after the removal of the old MIPS emulation. 2780 Trying to fix the MIPS dyntrans performance bugs/bottlenecks; 2781 only semi-successful so far (for R3000). 278220060620 Minor update to allow clean compilation again on Tru64/Alpha. 278320060622 MIPS cleanup and fixes (removing the pc_last stuff, which 2784 doesn't make sense with dyntrans anyway, and fixing a cross- 2785 page-delay-slot-with-exception case in end_of_page). 2786 Removing the old max_random_cycles_per_chunk stuff, and the 2787 concept of cycles vs instructions for MIPS emulation. 2788 FINALLY found and fixed the bug which caused NetBSD/pmax 2789 clocks to behave strangely (it was a load to the zero register, 2790 which was treated as a NOP; now it is treated as a load to a 2791 dummy scratch register). 279220060623 Increasing the dyntrans chunk size back to 2793 N_SAFE_DYNTRANS_LIMIT, instead of N_SAFE_DYNTRANS_LIMIT/2. 2794 Preparing for a quick release, even though there are known 2795 bugs, and performance for non-R3000 MIPS emulation is very 2796 poor. :-/ 2797 Reverting to half the dyntrans chunk size again, because 2798 NetBSD/cats seemed less stable with full size chunks. :( 2799 NetBSD/sgimips 3.0 can now run :-) (With release 0.3.8, only 2800 NetBSD/sgimips 2.1 worked, not 3.0.) 2801 2802============== RELEASE 0.4.0 ============== 2803 280420060624 Replacing the error-prone machine type initialization stuff 2805 with something more reasonable. 2806 Finally removing the old "cpu_run" kludge; moving around stuff 2807 in machine.c and emul.c to better suit the dyntrans system. 2808 Various minor dyntrans cleanups (renaming translate_address to 2809 translate_v2p, and experimenting with template physpages). 281020060625 Removing the speed hack which separated the vph entries into 2811 two halves (code vs data); things seem a lot more stable now. 2812 Minor performance hack: R2000/R3000 cache isolation now only 2813 clears address translations when going into isolation, not 2814 when going out of it. 2815 Fixing the MIPS interrupt problems by letting mtc0 immediately 2816 cause interrupts. 2817 2818============== RELEASE 0.4.0.1 ============== 2819 282020060626 Continuing on SPARC emulation (beginning on the 'save' 2821 instruction, register windows, etc). 282220060629 Planning statistics gathering (new -s command line option), 2823 and renaming speed_tricks to allow_instruction_combinations. 282420060630 Some minor manual page updates. 2825 Various cleanups. 2826 Implementing the -s command line option. 282720060701 FINALLY found the bug which prevented Linux and Ultrix from 2828 running without the ugly hack in the R2000/R3000 cache isol 2829 code; it was the phystranslation hint array which was buggy. 2830 Removing the phystranslation hint code completely, for now. 283120060702 Minor dyntrans cleanups; invalidation of physpages now only 2832 invalidate those parts of a page that have actually been 2833 translated. (32 parts per page.) 2834 Some MIPS non-R3000 speed fixes. 2835 Experimenting with MIPS instruction combination for some 2836 addiu+bne+sw loops, and sw+sw+sw. 2837 Adding support (again) for larger-than-4KB pages in MIPS tlbw*. 2838 Continuing on SPARC emulation: adding load/store instructions. 283920060704 Fixing a virtual vs physical page shift bug in the new tlbw* 2840 implementation. Problem noticed by Jakub Jermar. (Many thanks.) 2841 Moving rfe and eret to cpu_mips_instr.c, since that is the 2842 only place that uses them nowadays. 284320060705 Removing the BSD license from the "testmachine" include files, 2844 placing them in the public domain instead; this enables the 2845 testmachine stuff to be used from projects which are 2846 incompatible with the BSD license for some reason. 284720060707 Adding instruction combinations for the R2000/R3000 L1 2848 I-cache invalidation code used by NetBSD/pmax 3.0, lui+addiu, 2849 various branches followed by addiu or nop, and jr ra followed 2850 by addiu. The time it takes to perform a full NetBSD/pmax R3000 2851 install on the laptop has dropped from 573 seconds to 539. :-) 285220060708 Adding a framebuffer controller device (dev_fbctrl), which so 2853 far can be used to change the fb resolution during runtime, but 2854 in the future will also be useful for accelerated block fill/ 2855 copy, and possibly also simplified character output. 2856 Adding an instruction combination for NetBSD/pmax' strlen. 285720060709 Minor fixes: reading raw files in src/file.c wasn't memblock 2858 aligned, removing buggy multi_sw MIPS instruction combination, 2859 etc. 286020060711 Adding a machine_qemu.c, which contains a "qemu_mips" machine. 2861 (It mimics QEMU's MIPS machine mode, so that a test kernel 2862 made for QEMU_MIPS also can run in GXemul... at least to some 2863 extent.) Adding a short section about how to run this mode to 2864 doc/guestoses.html. 286520060714 Misc. minor code cleanups. 286620060715 Applying a patch which adds getchar() to promemul/yamon.c 2867 (from Oleksandr Tymoshenko). 2868 Adding yamon.h from NetBSD, and rewriting yamon.c to use it 2869 (instead of ugly hardcoded numbers) + some cleanup. 287020060716 Found and fixed the bug which broke single-stepping of 64-bit 2871 programs between 0.4.0 and 0.4.0.1 (caused by too quick 2872 refactoring and no testing). Hopefully this fix will not 2873 break too many other things. 287420060718 Continuing on the 8253 PIT; it now works with Linux/QEMU_MIPS. 2875 Re-adding the sw+sw+sw instr comb (the problem was that I had 2876 ignored endian issues); however, it doesn't seem to give any 2877 big performance gain. 287820060720 Adding a dummy Transputer mode (T414, T800 etc) skeleton (only 2879 the 'j' and 'ldc' instructions are implemented so far). :-} 288020060721 Adding gtreg.h from NetBSD, updating dev_gt.c to use it, plus 2881 misc. other updates to get Linux 2.6 for evbmips/malta working 2882 (thanks to Alec Voropay for the details). 2883 FINALLY found and fixed the bug which made tlbw* for non-R3000 2884 buggy; it was a reference count problem in the dyntrans core. 288520060722 Testing stuff; things seem stable enough for a new release. 2886 2887============== RELEASE 0.4.1 ============== 2888 288920060723 More Transputer instructions (pfix, nfix, opr, mint, ldl, ldlp, 2890 eqc, rev, ajw, stl, stlf, sthf, sub, ldnl, ldnlp, ldpi, move, 2891 wcnt, add, bcnt). 2892 Adding more SPARC instructions (andcc, addcc, bl, rdpr). 2893 Progress on the igsfb framebuffer used by NetBSD/netwinder. 2894 Enabling 8-bit fills in dev_fb. 2895 NetBSD/netwinder 3.0.1 can now run from a disk image :-) 289620060724 Cleanup/performance fix for 64-bit virtual translation table 2897 updates (by removing the "timestamp" stuff). A full NetBSD/pmax 2898 3.0.1 install for R4400 has dropped from 667 seconds to 584 :) 2899 Fixing the igsfb "almost vga" color (it is 24-bit, not 18-bit). 2900 Adding some MIPS instruction combinations (3*lw, and 3*addu). 2901 The 8048 keyboard now turns off interrupt enable between the 2902 KBR_ACK and the KBR_RSTDONE, to work better with Linux 2.6. 2903 Not causing PPC DEC interrupts if PPC_NO_DEC is set for a 2904 specific CPU; NetBSD/bebox gets slightly further than before. 2905 Adding some more SPARC instructions: branches, udiv. 290620060725 Refreshing dev_pckbc.c a little. 2907 Cleanups for the SH emulation mode, and adding the first 2908 "compact" (16-bit) instructions: various simple movs, nop, 2909 shll, stc, or, ldc. 291020060726 Adding dummy "pcn" (AMD PCnet NIC) PCI glue. 291120060727 Various cleanups; removing stuff from cpu.h, such as 2912 running_translated (not really meaningful anymore), and 2913 page flags (breaking into the debugger clears all translations 2914 anyway). 2915 Minor MIPS instruction combination updates. 291620060807 Expanding the 3*sw and 3*lw MIPS instruction combinations to 2917 work with 2* and 4* too, resulting in a minor performance gain. 2918 Implementing a usleep hack for the RM52xx/MIPS32/MIPS64 "wait" 2919 instruction (when emulating 1 cpu). 292020060808 Experimenting with some more MIPS instruction combinations. 2921 Implementing support for showing a (hardcoded 12x22) text 2922 cursor in igsfb. 292320060809 Simplifying the NetBSD/evbmips (Malta) install instructions 2924 somewhat (by using a NetBSD/pmax ramdisk install kernel). 292520060812 Experimenting more with the MIPS 'wait' instruction. 2926 PCI configuration register writes can now be handled, which 2927 allow PCI IDE controllers to work with NetBSD/Malta 3.0.1 and 2928 NetBSD/cobalt 3.0.1. (Previously only NetBSD 2.1 worked.) 292920060813 Updating dev_gt.c based on numbers from Alec Voropay, to enable 2930 Linux 2.6 to use PCI on Malta. 2931 Continuing on Algor interrupt stuff. 293220060814 Adding support for routing ISA interrupts to two different 2933 interrupts, making it possible to run NetBSD/algor :-) 293420060814-15 Testing for the release. 2935 2936============== RELEASE 0.4.2 ============== 2937 293820060816 Adding a framework for emulated/virtual timers (src/timer.c), 2939 using only setitimer(). 2940 Rewriting the mc146818 to use the new timer framework. 294120060817 Adding a call to gettimeofday() every now and then (once every 2942 second, at the moment) to resynch the timer if it drifts. 2943 Beginning to convert the ISA timer interrupt mechanism (8253 2944 and 8259) to use the new timer framework. 2945 Removing the -I command line option. 294620060819 Adding the -I command line option again, with new semantics. 2947 Working on Footbridge timer interrupts; NetBSD/NetWinder and 2948 NetBSD/CATS now run at correct speed, but unfortunately with 2949 HUGE delays during bootup. 295020060821 Some minor m68k updates. Adding the first instruction: nop. :) 2951 Minor Alpha emulation updates. 295220060822 Adding a FreeBSD development specific YAMON environment 2953 variable ("khz") (as suggested by Bruce M. Simpson). 2954 Moving YAMON environment variable initialization from 2955 machine_evbmips.c into promemul/yamon.c, and adding some more 2956 variables. 2957 Continuing on the LCA PCI bus controller (for Alpha machines). 295820060823 Continuing on the timer stuff: experimenting with MIPS count/ 2959 compare interrupts connected to the timer framework. 296020060825 Adding bogus SCSI commands 0x51 (SCSICDROM_READ_DISCINFO) and 2961 0x52 (SCSICDROM_READ_TRACKINFO) to the SCSI emulation layer, 2962 to allow NetBSD/pmax 4.0_BETA to be installed from CDROM. 2963 Minor updates to the LCA PCI controller. 296420060827 Implementing a CHIP8 cpu mode, and a corresponding CHIP8 2965 machine, for fun. Disassembly support for all instructions, 2966 and most of the common instructions have been implemented: mvi, 2967 mov_imm, add_imm, jmp, rand, cls, sprite, skeq_imm, jsr, 2968 skne_imm, bcd, rts, ldr, str, mov, or, and, xor, add, sub, 2969 font, ssound, sdelay, gdelay, bogus skup/skpr, skeq, skne. 297020060828 Beginning to convert the CHIP8 cpu in the CHIP8 machine to a 2971 (more correct) RCA 180x cpu. (Disassembly for all 1802 2972 instructions has been implemented, but no execution yet, and 2973 no 1805 extended instructions.) 297420060829 Minor Alpha emulation updates. 297520060830 Beginning to experiment a little with PCI IDE for SGI O2. 2976 Fixing the cursor key mappings for MobilePro 770 emulation. 2977 Fixing the LK201 warning caused by recent NetBSD/pmax. 2978 The MIPS R41xx standby, suspend, and hibernate instructions now 2979 behave like the RM52xx/MIPS32/MIPS64 wait instruction. 2980 Fixing dev_wdc so it calculates correct (64-bit) offsets before 2981 giving them to diskimage_access(). 298220060831 Continuing on Alpha emulation (OSF1 PALcode). 298320060901 Minor Alpha updates; beginning on virtual memory pagetables. 2984 Removed the limit for max nr of devices (in preparation for 2985 allowing devices' base addresses to be changed during runtime). 2986 Adding a hack for MIPS [d]mfc0 select 0 (except the count 2987 register), so that the coproc register is simply copied. 2988 The MIPS suspend instruction now exits the emulator, instead 2989 of being treated as a wait instruction (this causes NetBSD/ 2990 hpcmips to get correct 'halt' behavior). 2991 The VR41xx RTC now returns correct time. 2992 Connecting the VR41xx timer to the timer framework (fixed at 2993 128 Hz, for now). 2994 Continuing on SPARC emulation, adding more instructions: 2995 restore, ba_xcc, ble. The rectangle drawing demo works :) 2996 Removing the last traces of the old ENABLE_CACHE_EMULATION 2997 MIPS stuff (not usable with dyntrans anyway). 299820060902 Splitting up src/net.c into several smaller files in its own 2999 subdirectory (src/net/). 300020060903 Cleanup of the files in src/net/, to make them less ugly. 300120060904 Continuing on the 'settings' subsystem. 3002 Minor progress on the SPARC emulation mode. 300320060905 Cleanup of various things, and connecting the settings 3004 infrastructure to various subsystems (emul, machine, cpu, etc). 3005 Changing the lk201 mouse update routine to not rely on any 3006 emulated hardware framebuffer cursor coordinates, but instead 3007 always do (semi-usable) relative movements. 300820060906 Continuing on the lk201 mouse stuff. Mouse behaviour with 3009 multiple framebuffers (which was working in Ultrix) is now 3010 semi-broken (but it still works, in a way). 3011 Moving the documentation about networking into its own file 3012 (networking.html), and refreshing it a bit. Adding an example 3013 of how to use ethernet frame direct-access (udp_snoop). 301420060907 Continuing on the settings infrastructure. 301520060908 Minor updates to SH emulation: for 32-bit emulation: delay 3016 slots and the 'jsr @Rn' instruction. I'm putting 64-bit SH5 on 3017 ice, for now. 301820060909-10 Implementing some more 32-bit SH instructions. Removing the 3019 64-bit mode completely. Enough has now been implemented to run 3020 the rectangle drawing demo. :-) 302120060912 Adding more SH instructions. 302220060916 Continuing on SH emulation (some more instructions: div0u, 3023 div1, rotcl/rotcr, more mov instructions, dt, braf, sets, sett, 3024 tst_imm, dmuls.l, subc, ldc_rm_vbr, movt, clrt, clrs, clrmac). 3025 Continuing on the settings subsystem (beginning on reading/ 3026 writing settings, removing bugs, and connecting more cpus to 3027 the framework). 302820060919 More work on SH emulation; adding an ldc banked instruction, 3029 and attaching a 640x480 framebuffer to the Dreamcast machine 3030 mode (NetBSD/dreamcast prints the NetBSD copyright banner :-), 3031 and then panics). 303220060920 Continuing on the settings subsystem. 303320060921 Fixing the Footbridge timer stuff so that NetBSD/cats and 3034 NetBSD/netwinder boot up without the delays. 303520060922 Temporarily hardcoding MIPS timer interrupt to 100 Hz. With 3036 'wait' support disabled, NetBSD/malta and Linux/malta run at 3037 correct speed. 303820060923 Connecting dev_gt to the timer framework, so that NetBSD/cobalt 3039 runs at correct speed. 3040 Moving SH4-specific memory mapped registers into its own 3041 device (dev_sh4.c). 3042 Running with -N now prints "idling" instead of bogus nr of 3043 instrs/second (which isn't valid anyway) while idling. 304420060924 Algor emulation should now run at correct speed. 3045 Adding disassembly support for some MIPS64 revision 2 3046 instructions: ext, dext, dextm, dextu. 304720060926 The timer framework now works also when the MIPS wait 3048 instruction is used. 304920060928 Re-implementing checks for coprocessor availability for MIPS 3050 cop0 instructions. (Thanks to Carl van Schaik for noticing the 3051 lack of cop0 availability checks.) 305220060929 Implementing an instruction combination hack which treats 3053 NetBSD/pmax' idle loop as a wait-like instruction. 305420060930 The ENTRYHI_R_MASK was missing in (at least) memory_mips_v2p.c, 3055 causing TLB lookups to sometimes succeed when they should have 3056 failed. (A big thank you to Juli Mallett for noticing the 3057 problem.) 3058 Adding disassembly support for more MIPS64 revision 2 opcodes 3059 (seb, seh, wsbh, jalr.hb, jr.hb, synci, ins, dins, dinsu, 3060 dinsm, dsbh, dshd, ror, dror, rorv, drorv, dror32). Also 3061 implementing seb, seh, dsbh, dshd, and wsbh. 3062 Implementing an instruction combination hack for Linux/pmax' 3063 idle loop, similar to the NetBSD/pmax case. 306420061001 Changing the NetBSD/sgimips install instructions to extract 3065 files from an iso image, instead of downloading them via ftp. 306620061002 More-than-31-bit userland addresses in memory_mips_v2p.c were 3067 not actually working; applying a fix from Carl van Schaik to 3068 enable them to work + making some other updates (adding kuseg 3069 support). 3070 Fixing hpcmips (vr41xx) timer initialization. 3071 Experimenting with O(n)->O(1) reduction in the MIPS TLB lookup 3072 loop. Seems to work both for R3000 and non-R3000. 307320061003 Continuing a little on SH emulation (adding more control 3074 registers; mini-cleanup of memory_sh.c). 307520061004 Beginning on a dev_rtc, a clock/timer device for the test 3076 machines; also adding a demo, and some documentation. 3077 Fixing a bug in SH "mov.w @(disp,pc),Rn" (the result wasn't 3078 sign-extended), and adding the addc and ldtlb instructions. 307920061005 Contining on SH emulation: virtual to physical address 3080 translation, and a skeleton exception mechanism. 308120061006 Adding more SH instructions (various loads and stores, rte, 3082 negc, muls.w, various privileged register-move instructions). 308320061007 More SH instructions: various move instructions, trapa, div0s, 3084 float, fdiv, ftrc. 3085 Continuing on dev_rtc; removing the rtc demo. 308620061008 Adding a dummy Dreamcast PROM module. (Homebrew Dreamcast 3087 programs using KOS libs need this.) 3088 Adding more SH instructions: "stc vbr,rn", rotl, rotr, fsca, 3089 fmul, fadd, various floating-point moves, etc. A 256-byte 3090 demo for Dreamcast runs :-) 309120061012 Adding the SH "lds Rm,pr" and bsr instructions. 309220061013 More SH instructions: "sts fpscr,rn", tas.b, and some more 3093 floating point instructions, cmp/str, and more moves. 3094 Adding a dummy dev_pvr (Dreamcast graphics controller). 309520061014 Generalizing the expression evaluator (used in the built-in 3096 debugger) to support parentheses and +-*/%^&|. 309720061015 Removing the experimental tlb index hint code in 3098 mips_memory_v2p.c, since it didn't really have any effect. 309920061017 Minor SH updates; adding the "sts pr,Rn", fcmp/gt, fneg, 3100 frchg, and some other instructions. Fixing missing sign- 3101 extension in an 8-bit load instruction. 310220061019 Adding a simple dev_dreamcast_rtc. 3103 Implementing memory-mapped access to the SH ITLB/UTLB arrays. 310420061021 Continuing on various SH and Dreamcast things: sh4 timers, 3105 debug messages for dev_pvr, fixing some virtual address 3106 translation bugs, adding the bsrf instruction. 3107 The NetBSD/dreamcast GENERIC_MD kernel now reaches userland :) 3108 Adding a dummy dev_dreamcast_asic.c (not really useful yet). 3109 Implementing simple support for Store Queues. 3110 Beginning on the PVR Tile Accelerator. 311120061022 Generalizing the PVR framebuffer to support off-screen drawing, 3112 multiple bit-depths, etc. (A small speed penalty, but most 3113 likely worth it.) 3114 Adding more SH instructions (mulu.w, fcmp/eq, fsub, fmac, 3115 fschg, and some more); correcting bugs in "fsca" and "float". 311620061024 Adding the SH ftrv (matrix * vector) instruction. Marcus 3117 Comstedt's "tatest" example runs :) (wireframe only). 3118 Correcting disassembly for SH floating point instructions that 3119 use the xd* registers. 3120 Adding the SH fsts instruction. 3121 In memory_device_dyntrans_access(), only the currently used 3122 range is now invalidated, and not the entire device range. 312320061025 Adding a dummy AVR32 cpu mode skeleton. 312420061026 Various Dreamcast updates; beginning on a Maple bus controller. 312520061027 Continuing on the Maple bus. A bogus Controller, Keyboard, and 3126 Mouse can now be detected by NetBSD and KOS homebrew programs. 3127 Cleaning up the SH4 Timer Management Unit, and beginning on 3128 SH4 interrupts. 3129 Implementing the Dreamcast SYSASIC. 313020061028 Continuing on the SYSASIC. 3131 Adding the SH fsqrt instruction. 3132 memory_sh.c now actually scans the ITLB. 3133 Fixing a bug in dev_sh4.c, related to associative writes into 3134 the memory-mapped UTLB array. NetBSD/dreamcast now reaches 3135 userland stably, and prints the "Terminal type?" message :-] 3136 Implementing enough of the Dreamcast keyboard to make NetBSD 3137 accept it for input. 3138 Enabling SuperH for stable (non-development) builds. 3139 Adding NetBSD/dreamcast to the documentation, although it 3140 doesn't support root-on-nfs yet. 314120061029 Changing usleep(1) calls in the debugger to usleep(10000) 3142 (according to Brian Foley, this makes GXemul run better on 3143 MacOS X). 3144 Making the Maple "Controller" do something (enough to barely 3145 interact with dcircus.elf). 314620061030-31 Some progress on the PVR. More test programs start running (but 3147 with strange output). 3148 Various other SH4-related updates. 314920061102 Various Dreamcast and SH4 updates; more KOS demos run now. 315020061104 Adding a skeleton dev_mb8696x.c (the Dreamcast's LAN adapter). 315120061105 Continuing on the MB8696x; NetBSD/dreamcast detects it as mbe0. 3152 Testing for the release. 3153 3154============== RELEASE 0.4.3 ============== 3155 315620061107 Adding a new disk image option (-d o...) which sets the ISO9660 3157 filesystem base offset; also making some other hacks to allow 3158 NetBSD/dreamcast and homebrew demos/games to boot directly 3159 from a filesystem image. 3160 Moving Dreamcast-specific stuff in the documentation to its 3161 own page (dreamcast.html). 3162 Adding a border to the Dreamcast PVR framebuffer. 316320061108 Adding a -T command line option (again?), for halting the 3164 emulator on unimplemented memory accesses. 316520061109 Continuing on various SH4 and Dreamcast related things. 3166 The emulator should now halt on more unimplemented device 3167 accesses, instead of just printing a warning, forcing me to 3168 actually implement missing stuff :) 316920061111 Continuing on SH4 and Dreamcast stuff. 3170 Adding a bogus Landisk (SH4) machine mode. 317120061112 Implementing some parts of the Dreamcast GDROM device. With 3172 some ugly hacks, NetBSD can (barely) mount an ISO image. 317320061113 NetBSD/dreamcast now starts booting from the Live CD image, 3174 but crashes randomly quite early on in the boot process. 317520061122 Beginning on a skeleton interrupt.h and interrupt.c for the 3176 new interrupt subsystem. 317720061124 Continuing on the new interrupt system; taking the first steps 3178 to attempt to connect CPUs (SuperH and MIPS) and devices 3179 (dev_cons and SH4 timer interrupts) to it. Many things will 3180 probably break from now on. 318120061125 Converting dev_ns16550, dev_8253 to the new interrupt system. 3182 Attempting to begin to convert the ISA bus. 318320061130 Incorporating a patch from Brian Foley for the configure 3184 script, which checks for X11 libs in /usr/X11R6/lib64 (which 3185 is used on some Linux systems). 318620061227 Adding a note in the man page about booting from Dreamcast 3187 CDROM images (i.e. that no external kernel is needed). 318820061229 Continuing on the interrupt system rewrite: beginning to 3189 convert more devices, adding abort() calls for legacy interrupt 3190 system calls so that everything now _has_ to be rewritten! 3191 Almost all machine modes are now completely broken. 319220061230 More progress on removing old interrupt code, mostly related 3193 to the ISA bus + devices, the LCA bus (on AlphaBook1), and 3194 the Footbridge bus (for CATS). And some minor PCI stuff. 3195 Connecting the ARM cpu to the new interrupt system. 3196 The CATS, NetWinder, and QEMU_MIPS machine modes now work with 3197 the new interrupt system :) 319820061231 Connecting PowerPC CPUs to the new interrupt system. 3199 Making PReP machines (IBM 6050) work again. 3200 Beginning to convert the GT PCI controller (for e.g. Malta 3201 and Cobalt emulation). Some things work, but not everything. 3202 Updating Copyright notices for 2007. 320320070101 Converting dev_kn02 from legacy style to devinit; the 3max 3204 machine mode now works with the new interrupt system :-] 320520070105 Beginning to convert the SGI O2 machine to the new interrupt 3206 system; finally converting O2 (IP32) devices to devinit, etc. 320720070106 Continuing on the interrupt system redesign/rewrite; KN01 3208 (PMAX), KN230, and Dreamcast ASIC interrupts should work again, 3209 moving out stuff from machine.h and devices.h into the 3210 corresponding devices, beginning the rewrite of i80321 3211 interrupts, etc. 321220070107 Beginning on the rewrite of Eagle interrupt stuff (PReP, etc). 321320070117 Beginning the rewrite of Algor (V3) interrupts (finally 3214 changing dev_v3 into devinit style). 321520070118 Removing the "bus" registry concept from machine.h, because 3216 it was practically meaningless. 3217 Continuing on the rewrite of Algor V3 ISA interrupts. 321820070121 More work on Algor interrupts; they are now working again, 3219 well enough to run NetBSD/algor. :-) 322020070122 Converting VR41xx (HPCmips) interrupts. NetBSD/hpcmips 3221 can be installed using the new interrupt system :-) 322220070123 Making the testmips mode work with the new interrupt system. 322320070127 Beginning to convert DEC5800 devices to devinit, and to the 3224 new interrupt system. 3225 Converting Playstation 2 devices to devinit, and converting 3226 the interrupt system. Also fixing a severe bug: the interrupt 3227 mask register on Playstation 2 is bitwise _toggled_ on writes. 322820070128 Removing the dummy NetGear machine mode and the 8250 device 3229 (which was only used by the NetGear machine). 3230 Beginning to convert the MacPPC GC (Grand Central) interrupt 3231 controller to the new interrupt system. 3232 Converting Jazz interrupts (PICA61 etc.) to the new interrupt 3233 system. NetBSD/arc can be installed again :-) 3234 Fixing the JAZZ timer (hardcoding it at 100 Hz, works with 3235 NetBSD and it is better than a completely dummy timer as it 3236 was before). 3237 Converting dev_mp to the new interrupt system, although I 3238 haven't had time to actually test it yet. 3239 Completely removing src/machines/interrupts.c, cpu_interrupt 3240 and cpu_interrupt_ack in src/cpu.c, and 3241 src/include/machine_interrupts.h! Adding fatal error messages 3242 + abort() in the few places that are left to fix. 3243 Converting dev_z8530 to the new interrupt system. 3244 FINALLY removing the md_int struct completely from the 3245 machine struct. 3246 SH4 fixes (adding a PADDR invalidation in the ITLB replacement 3247 code in memory_sh.c); the NetBSD/dreamcast LiveCD now runs 3248 all the way to the login prompt, and can be interacted with :-) 3249 Converting the CPC700 controller (PCI and interrupt controller 3250 for PM/PPC) to the new interrupt system. 325120070129 Fixing MACE ISA interrupts (SGI IP32 emulation). Both NetBSD/ 3252 sgimips' and OpenBSD/sgi's ramdisk kernels can now be 3253 interacted with again. 325420070130 Moving out the MIPS multi_lw and _sw instruction combinations 3255 so that they are auto-generated at compile time instead. 325620070131 Adding detection of amd64/x86_64 hosts in the configure script, 3257 for doing initial experiments (again :-) with native code 3258 generation. 3259 Adding a -k command line option to set the size of the dyntrans 3260 cache, and a -B command line option to disable native code 3261 generation, even if GXemul was compiled with support for 3262 native code generation for the specific host CPU architecture. 326320070201 Experimenting with a skeleton for native code generation. 3264 Changing the default behaviour, so that native code generation 3265 is now disabled by default, and has to be enabled by using 3266 -b on the command line. 326720070202 Continuing the native code generation experiments. 3268 Making PCI interrupts work for Footbridge again. 326920070203 More native code generation experiments. 3270 Removing most of the native code generation experimental code, 3271 it does not make sense to include any quick hacks like this. 3272 Minor cleanup/removal of some more legacy MIPS interrupt code. 327320070204 Making i80321 interrupts work again (for NetBSD/evbarm etc.), 3274 and fixing the timer at 100 Hz. 327520070206 Experimenting with removing the wdc interrupt slowness hack. 327620070207 Lowering the number of dyntrans TLB entries for MIPS from 3277 192 to 128, resulting in a minor speed improvement. 3278 Minor optimization to the code invalidation routine in 3279 cpu_dyntrans.c. 328020070208 Increasing (experimentally) the nr of dyntrans instructions per 3281 loop from 60 to 120. 328220070210 Commenting out (experimentally) the dyntrans_device_danger 3283 detection in memory_rw.c. 3284 Changing the testmips and baremips machines to use a revision 2 3285 MIPS64 CPU by default, instead of revision 1. 3286 Removing the dummy i960, IA64, x86, AVR32, and HP PA-RISC 3287 files, the PC bios emulation, and the Olivetti M700 (ARC) and 3288 db64360 emulation modes. 328920070211 Adding an "mp" demo to the demos directory, which tests the 3290 SMP functionality of the testmips machine. 3291 Fixing PReP interrupts some more. NetBSD/prep now boots again. 329220070216 Adding a "nop workaround" for booting Mach/PMAX to the 3293 documentation; thanks to Artur Bujdoso for the values. 3294 Converting more of the MacPPC interrupt stuff to the new 3295 system. 3296 Beginning to convert BeBox interrupts to the new system. 3297 PPC603e should NOT have the PPC_NO_DEC flag! Removing it. 3298 Correcting BeBox clock speed (it was set to 100 in the NetBSD 3299 bootinfo block, but should be 33000000/4), allowing NetBSD 3300 to start without using the (incorrect) PPC_NO_DEC hack. 330120070217 Implementing (slow) AltiVec vector loads and stores, allowing 3302 NetBSD/macppc to finally boot using the GENERIC kernel :-) 3303 Updating the documentation with install instructions for 3304 NetBSD/macppc. 330520070218-19 Regression testing for the release. 3306 3307============== RELEASE 0.4.4 ============== 3308 330920070224 Minor update to the initialization of the ns16550 in 3310 machine_walnut.c, to allow that machine type to boot with the 3311 new interrupt system (although it is still a dummy machine). 3312 Adding a wdc at 0x14000000 to machine_landisk.c, and fixing 3313 the SCIF serial interrupts of the SH4 cpu enough to get 3314 NetBSD/landisk booting from a disk image :-) Adding a 3315 preliminary install instruction skeleton to guestoses.html. 331620070306 Adding SH-IPL+G PROM emulation, and also passing the "end" 3317 symbol in r5 on bootup, for Landisk emulation. This is enough 3318 to get OpenBSD/landisk to install :) Adding a preliminary 3319 install instruction skeleton to the documentation. SuperH 3320 emulation is still shaky, though :-/ 332120070307 Fixed a strangeness in memory_sh.c (read/write was never 3322 returned for any page). (Unknown whether this fixes any actual 3323 problems, though.) 332420070308 dev_ram.c fix: invalidate code translations on writes to 3325 RAM, emulated as separate devices. Linux/dreamcast gets 3326 further in the boot process than before, but still bugs out 3327 in userland. 3328 Fixing bugs in the "stc.l gbr,@-rN" and "ldc.l @rN+,gbr" SuperH 3329 instructions (they should NOT check the MD bit), allowing the 3330 Linux/dreamcast Live CD to reach userland correctly :-) 333120070310 Changing the cpu name "Alpha" in src/useremul.c to "21364" to 3332 unbreak userland syscall emulation of FreeBSD/Alpha binaries. 333320070314 Applying a patch from Michael Yaroslavtsev which fixes the 3334 previous Linux lib64 patch to the configure script. 333520070315 Adding a (dummy) sun4v machine type, and SPARC T1 cpu type. 333620070316 Creating a new directory, src/disk, and moving diskimage.c 3337 to it. Separating out bootblock loading stuff from emul.c into 3338 new files in src/disk. 3339 Adding some more SPARC registers. 334020070318 Preparing/testing for a minirelease, 0.4.4.1. 3341 3342============== RELEASE 0.4.4.1 ============== 3343 334420070324 Adding a "--debug" option to the configure script, to disable 3345 optimizations in unstable development builds. 3346 Moving out SCSI-specific stuff from diskimage.c into a new 3347 diskimage_scsicmd.c. 3348 Applying Håvard Eidnes' patch for SCSICDROM_READ_DISKINFO and 3349 SCSICDROM_READ_TRACKINFO. (Not really tested yet.) 3350 Implementing disk image "overlays" (to allow simple roll-back 3351 to previous disk state). Adding a 'V' disk flag for this, and 3352 updating the man page and misc.html. 335320070325 Stability fix to cpu_dyntrans.c, when multiple physical pages 3354 share the same initial table entry. (The ppp == NULL check 3355 should be physpage_ofs == 0.) Bug found by analysing GXemul 3356 against a version patched for Godson. 3357 Fixing a second occurance of the same problem (also in 3358 cpu_dyntrans.c). 3359 Fixing a MAJOR physical page leak in cpu_dyntrans.c; pages 3360 weren't _added_ to the set of translated pages, they _replaced_ 3361 all previous pages. It's amazing that this bug has been able 3362 to live for this long. (Triggered when emulating >128MB RAM.) 336320070326 Removing the GDB debugging stub support; it was too hackish 3364 and ugly. 336520070328 Moving around some native code generation skeleton code. 336620070329 The -lm check in the configure script now also checks for sin() 3367 in addition to sqrt(). (Thanks to Nigel Horne for noticing that 3368 sqrt was not enough on Fedora Core 6.) (Not verified yet.) 336920070330 Fixing an indexing bug in dev_sh4.c, found by using gcc version 3370 4.3.0 20070323. 337120070331 Some more experimentation with native code generation. 337220070404 Attempting to fix some more SH4 SCIF interrupt bugs; rewriting 3373 the SH interrupt assertion/deassertion code somewhat. 337420070410 Splitting src/file.c into separate files in src/file/. 3375 Cleanup: Removing the dummy TS7200, Walnut, PB1000, and 3376 Meshcube emulation modes, and dev_epcom and dev_au1x00. 3377 Removing the experimental CHIP8/RCA180x code; it wasn't really 3378 working much lately, anyway. It was fun while it lasted. 3379 Also removing the experimental Transputer CPU support. 338020070412 Moving the section about how the dynamic translation system 3381 works from intro.html to a separate translation.html file. 3382 Minor SH fixes; attempting to get OpenBSD/landisk to run 3383 without randomly bugging out, but no success yet. 338420070413 SH SCI (serial bit interface) should now work together with a 3385 (new) RS5C313 clock device (for Landisk emulation). 338620070414 Moving Redhat/MIPS down from supported to experimental, in 3387 guestoses.html. 3388 Preparing for a new release; doing some regression testing etc. 3389 3390============== RELEASE 0.4.5 ============== 3391 339220070415 Landisk PCLOCK should be 33.33 MHz, not 50 MHz. (This makes 3393 the clock run at correct speed.) 3394 FINALLY found and fixed the bug which caused OpenBSD/landisk 3395 to randomly bug out: an &-sign was missing in the special case 3396 handling of FPSCR in the 'LDS.L @Rm+,FPSCR' instruction. 3397 Adding similar special case handling for 'LDC.L @Rm+,SR' 3398 (calling sh_update_sr() instead of just loading). 3399 Implementing the 'FCNVSD FPUL,DRn' and 'FCNVDS DRm,FPUL' 3400 SuperH instructions. 3401 The 'LDC Rm,SR' instruction now immediately breaks out of the 3402 dyntrans loop if an interrupt is to be triggered. 340320070416 In memory_rw.c, if mapping a page as writable, make sure to 3404 invalidate code translations even if the data access was a 3405 read. 3406 Minor SuperH updates. 340720070418 Removing the dummy M68K emulation mode. 3408 Minor SH update (turning unnecessary sts_mach_rn, sts_macl_rn, 3409 and sts_pr_rn instruction handlers into mov_rm_rn). 341020070419 Beginning to add a skeleton for an M88K mode: Adding a hack to 3411 allow OpenBSD/m88k a.out binaries to be loaded, and disassembly 3412 of a few simple 88K instructions. 3413 Commenting out the 'LDC Rm,SR' fix from a few days ago, because 3414 it made Linux/dreamcast bug out. 3415 Adding a hack to dev_sh4.c (an extra translation cache 3416 invalidation), which allows OpenBSD/landisk to boot ok after 3417 an install. Upgrading the Landisk machine mode to stable, 3418 updating documentation, etc. 341920070420 Experimenting with adding a PCI controller (pcic) to dev_sh4. 3420 Adding a dummy Realtek 8139C+ skeleton device (dev_rtl8139c). 3421 Implementing the first M88K instructions (br, or[.u] imm), and 3422 adding disassembly of some more instructions. 342320070421 Continuing a little on dev_rtl8139c. 342420070422 Implementing the 9346 EEPROM "read" command for dev_rtl8139c. 3425 Finally found and fixed an old bug in the log n symbol search 3426 (it sometimes missed symbols). Debug trace (-i, -t etc) should 3427 now show more symbols. :-) 342820070423 Continuing a little on M88K disassembly. 342920070428 Fixing a memset arg order bug in src/net/net.c (thanks to 3430 Nigel Horne for noticing the bug). 3431 Applying parts of a patch from Carl van Schaik to clear out 3432 bottom bits of MIPS addresses more correctly, when using large 3433 page sizes, and doing some other minor cleanup/refactoring. 3434 Fixing a couple of warnings given by gcc with the -W option (a 3435 few more warnings than just plain -Wall). 3436 Reducing SuperH dyntrans physical address space from 64-bit to 3437 32-bit (since SH5/SH64 isn't imlemented yet anyway). 3438 Adding address-to-symbol annotation to a few more instructions 3439 in the SuperH instruction trace output. 3440 Beginning regression testing for the next release. 3441 Reverting the value of SCIF_DELAYED_TX_VALUE from 1 to 2, 3442 because OpenBSD/landisk may otherwise hang randomly. 344320070429 The ugly hack/workaround to get OpenBSD/landisk booting without 3444 crashing does NOT work anymore (with the April 21 snapshot 3445 of OpenBSD/landisk). Strangely enough, removing the hack 3446 completely causes OpenBSD/landisk to work (!). 3447 More regression testing (re-testing everything SuperH-related, 3448 and some other things). 3449 Cobalt interrupts were actually broken; fixing by commenting 3450 out the DEC21143s in the Cobalt machine. 345120070430 More regression testing. 345220070501 Updating the OpenBSD/landisk install instructions to use 3453 4.1 instead of the current snapshot. 3454 GAAAH! OpenBSD/landisk 4.1 _needs_ the ugly hack/workaround; 3455 reintroducing it again. (The 4.1 kernel is actually from 3456 2007-03-11.) 3457 Simplifying the NetBSD/evbarm install instructions a bit. 3458 More regression testing. 3459 3460============== RELEASE 0.4.5.1 ============== 3461 346220070501 Continuing a little on m88k disassembly (control registers, 3463 more instructions). 3464 Adding a dummy mvme88k machine mode. 346520070502 Re-adding MIPS load/store alignment exceptions. 346620070503 Implementing more of the M88K disassembly code. 346720070504 Adding disassembly of some more M88K load/store instructions. 3468 Implementing some relatively simple M88K instructions (br.n, 3469 xor[.u] imm, and[.u] imm). 347020070505 Implementing M88K three-register and, or, xor, and jmp[.n], 3471 bsr[.n] including function call trace stuff. 3472 Applying a patch from Bruce M. Simpson which implements the 3473 SYSCON_BOARD_CPU_CLOCK_FREQ_ID object of the syscon call in 3474 the yamon PROM emulation. 347520070506 Implementing M88K bb0[.n] and bb1[.n], and skeletons for 3476 ldcr and stcr (although no control regs are implemented yet). 347720070509 Found and fixed the bug which caused Linux for QEMU_MIPS to 3478 stop working in 0.4.5.1: It was a faulty change to the MIPS 3479 'sc' and 'scd' instructions I made while going through gcc -W 3480 warnings on 20070428. 348120070510 Updating the Linux/QEMU_MIPS section in guestoses.html to 3482 use mips-test-0.2.tar.gz instead of 0.1. 3483 A big thank you to Miod Vallat for sending me M88K manuals. 3484 Implementing more M88K instructions (addu, subu, div[u], mulu, 3485 ext[u], clr, set, cmp). 348620070511 Fixing bugs in the M88K "and" and "and.u" instructions (found 3487 by comparing against the manual). 3488 Implementing more M88K instructions (mask[.u], mak, bcnd (auto- 3489 generated)) and some more control register details. 3490 Cleanup: Removing the experimental AVR emulation mode and 3491 corresponding devices; AVR emulation wasn't really meaningful. 3492 Implementing autogeneration of most M88K loads/stores. The 3493 rectangle drawing demo (with -O0) for M88K runs :-) 3494 Beginning on M88K exception handling. 3495 More M88K instructions: tb0, tb1, rte, sub, jsr[.n]. 3496 Adding some skeleton MVME PROM ("BUG") emulation. 349720070512 Fixing a bug in the M88K cmp instruction. 3498 Adding the M88K lda (scaled register) instruction. 3499 Fixing bugs in 64-bit (32-bit pairs) M88K loads/stores. 3500 Removing the unused tick_hz stuff from the machine struct. 3501 Implementing the M88K xmem instruction. OpenBSD/mvme88k gets 3502 far enough to display the Copyright banner :-) 3503 Implementing subu.co (guess), addu.co, addu.ci, ff0, and ff1. 3504 Adding a dev_mvme187, for MVME187-specific devices/registers. 3505 OpenBSD/mvme88k prints more boot messages. :) 350620070515 Continuing on MVME187 emulation (adding more devices, beginning 3507 on the CMMUs, etc). 3508 Adding the M88K and.c, xor.c, and or.c instructions, and making 3509 sure that mul, div, etc cause exceptions if executed when SFD1 3510 is disabled. 351120070517 Continuing on M88K and MVME187 emulation in general; moving 3512 the CMMU registers to the CPU struct, separating dev_pcc2 from 3513 dev_mvme187, and beginning on memory_m88k.c (BATC and PATC). 3514 Fixing a bug in 64-bit (32-bit pairs) M88K fast stores. 3515 Implementing the clock part of dev_mk48txx. 3516 Implementing the M88K fstcr and xcr instructions. 3517 Implementing m88k_cpu_tlbdump(). 3518 Beginning on the implementation of a separate address space 3519 for M88K .usr loads/stores. 352020070520 Removing the non-working (skeleton) Sandpoint, SonyNEWS, SHARK 3521 Dnard, and Zaurus machine modes. 3522 Experimenting with dyntrans to_be_translated read-ahead. It 3523 seems to give a very small performance increase for MIPS 3524 emulation, but a large performance degradation for SuperH. Hm. 352520070522 Disabling correct SuperH ITLB emulation; it does not seem to be 3526 necessary in order to let SH4 guest OSes run, and it slows down 3527 userspace code. 3528 Implementing "samepage" branches for SuperH emulation, and some 3529 other minor speed hacks. 353020070525 Continuing on M88K memory-related stuff: exceptions, memory 3531 transaction register contents, etc. 3532 Implementing the M88K subu.ci instruction. 3533 Removing the non-working (skeleton) Iyonix machine mode. 3534 OpenBSD/mvme88k reaches userland :-), starts executing 3535 /sbin/init's instructions, and issues a few syscalls, before 3536 crashing. 353720070526 Fixing bugs in dev_mk48txx, so that OpenBSD/mvme88k detects 3538 the correct time-of-day. 3539 Implementing a generic IRQ controller for the test machines 3540 (dev_irqc), similar to a proposed patch from Petr Stepan. 3541 Experimenting some more with translation read-ahead. 3542 Adding an "expect" script for automated OpenBSD/landisk 3543 install regression/performance tests. 354420070527 Adding a dummy mmEye (SH3) machine mode skeleton. 3545 FINALLY found the strange M88K bug I have been hunting: I had 3546 not emulated the SNIP value for exceptions occurring in 3547 branch delay slots correctly. 3548 Implementing correct exceptions for 64-bit M88K loads/stores. 3549 Address to symbol lookups are now disabled when M88K is 3550 running in usermode (because usermode addresses don't have 3551 anything to do with supervisor addresses). 355220070531 Removing the mmEye machine mode skeleton. 355320070604 Some minor code cleanup. 355420070605 Moving src/useremul.c into a subdir (src/useremul/), and 3555 cleaning up some more legacy constructs. 3556 Adding -Wstrict-aliasing and -fstrict-aliasing detection to 3557 the configure script. 355820070606 Adding a check for broken GCC on Solaris to the configure 3559 script. (GCC 3.4.3 on Solaris cannot handle static variables 3560 which are initialized to 0 or NULL. :-/) 3561 Removing the old (non-working) ARC emulation modes: NEC RD94, 3562 R94, R96, and R98, and the last traces of Olivetti M700 and 3563 Deskstation Tyne. 3564 Removing the non-working skeleton WDSC device (dev_wdsc). 356520070607 Thinking about how to use the host's cc + ld at runtime to 3566 generate native code. (See experiments/native_cc_ld_test.i 3567 for an example.) 356820070608 Adding a program counter sampling timer, which could be useful 3569 for native code generation experiments. 3570 The KN02_CSR_NRMMOD bit in the DECstation 5000/200 (KN02) CSR 3571 should always be set, to allow a 5000/200 PROM to boot. 357220070609 Moving out breakpoint details from the machine struct into 3573 a helper struct, and removing the limit on max nr of 3574 breakpoints. 357520070610 Moving out tick functions into a helper struct as well (which 3576 also gets rid of the max limit). 357720070612 FINALLY figured out why Debian/DECstation stopped working when 3578 translation read-ahead was enabled: in src/memory_rw.c, the 3579 call to invalidate_code_translation was made also if the 3580 memory access was an instruction load (if the page was mapped 3581 as writable); it shouldn't be called in that case. 358220070613 Implementing some more MIPS32/64 revision 2 instructions: di, 3583 ei, ext, dext, dextm, dextu, and ins. 358420070614 Implementing an instruction combination for the NetBSD/arm 3585 idle loop (making the host not use any cpu if NetBSD/arm 3586 inside the emulator is not using any cpu). 3587 Increasing the nr of ARM VPH entries from 128 to 384. 358820070615 Removing the ENABLE_arch stuff from the configure script, so 3589 that all included architectures are included in both release 3590 and development builds. 3591 Moving memory related helper functions from misc.c to memory.c. 3592 Adding preliminary instructions for netbooting NetBSD/pmppc to 3593 guestoses.html; it doesn't work yet, there are weird timeouts. 3594 Beginning a total rewrite of the userland emulation modes 3595 (removing all emulation modes, beginning from scratch with 3596 NetBSD/MIPS and FreeBSD/Alpha only). 359720070616 After fixing a bug in the DEC21143 NIC (the TDSTAT_OWN bit was 3598 only cleared for the last segment when transmitting, not all 3599 segments), NetBSD/pmppc boots with root-on-nfs without the 3600 timeouts. Updating guestoses.html. 3601 Removing the skeleton PSP (Playstation Portable) mode. 3602 Moving X11-related stuff in the machine struct into a helper 3603 struct. 3604 Cleanup of out-of-memory checks, to use a new CHECK_ALLOCATION 3605 macro (which prints a meaningful error message). 3606 Adding a COMMENT to each machine and device (for automagic 3607 .index comment generation). 3608 Doing regression testing for the next release. 3609 3610============== RELEASE 0.4.6 ============== 3611 361220070616 Implementing the MIPS32/64 revision 2 "ror" instruction. 361320070617 Adding a struct for each physpage which keeps track of which 3614 ranges within that page (base offset, length) that are 3615 continuously translatable. When running with native code 3616 generation enabled (-b), a range is added after each read- 3617 ahead loop. 3618 Experimenting with using the physical program counter sample 3619 data (implemented 20070608) together with the "translatable 3620 range" information, to figure out which physical address ranges 3621 would be worth translating to native code (if the number of 3622 samples falling within a range is above a certain threshold). 362320070618 Adding automagic building of .index comment files for 3624 src/file/, src/promemul/, src src/useremul/ as well. 3625 Adding a "has been translated" bit to the ranges, so that only 3626 not-yet-translated ranges will be sampled. 362720070619 Moving src/cpu.c and src/memory_rw.c into src/cpus/, 3628 src/device.c into src/devices/, and src/machine.c into 3629 src/machines/. 3630 Creating a skeleton cc/ld native backend module; beginning on 3631 the function which will detect cc command line, etc. 363220070620 Continuing on the native code generation infrastructure. 363320070621 Moving src/x11.c and src/console.c into a new src/console/ 3634 subdir (for everything that is console or framebuffer related). 3635 Moving src/symbol*.c into a new src/symbol/, which should 3636 contain anything that is symbol handling related. 363720070624 Making the program counter sampling threshold a "settings 3638 variable" (sampling_threshold), i.e. it can now be changed 3639 during runtime. 3640 Switching the RELEASE notes format from plain text to HTML. 3641 If the TMPDIR environment variable is set, it is used instead 3642 of "/tmp" for temporary files. 3643 Continuing on the cc/ld backend: simple .c code is generated, 3644 the compiler and linker are called, etc. 3645 Adding detection of host architecture to the configure script 3646 (again), and adding icache invalidation support (only 3647 implemented for Alpha hosts so far). 364820070625 Simplifying the program counter sampling mechanism. 364920070626 Removing the cc/ld native code generation stuff, program 3650 counter sampling, etc; it would not have worked well in the 3651 general case. 365220070627 Removing everything related to native code generation. 365320070629 Removing the (practically unusable) support for multiple 3654 emulations. (The single emulation allowed now still supports 3655 multiple simultaneous machines, as before.) 3656 Beginning on PCCTWO and M88K interrupts. 365720070723 Adding a dummy skeleton for emulation of M32R processors. 365820070901 Fixing a warning found by "gcc version 4.3.0 20070817 3659 (experimental)" on amd64. 366020070905 Removing some more traces of the old "multiple emulations" 3661 code. 3662 Also looking in /usr/local/include and /usr/local/lib for 3663 X11 libs, when running configure. 366420070909 Minor updates to the guest OS install instructions, in 3665 preparation for the NetBSD 4.0 release. 366620070918 More testing of NetBSD 4.0 RC1. 366720070920 Adding a section about HelenOS (for testarm and testmips) to 3668 the guestoses.html page. 366920071014 src/console/console.c now includes <sys/select.h> (thanks to 3670 Juli Mallett for noticing that this was required on Cygwin). 367120071017 Updating Sprite URL in guestoses.html. 367220071102 Updating the OpenBSD/landisk install instructions in 3673 guestoses.html from OpenBSD 4.1 to 4.2. 367420071112 Branching in CVS to a 0.4.6.1 version, separate from the main 3675 development. 3676------------------------------------------------------------------------------- 3677 (This is the C++ development branch.) 3678 EXPERIMENTALLY beginning to convert various source code 3679 files to C++ (.c to .cc); it will of course be a major 3680 undertaking to redesign the code so that it fits C++, but I 3681 think it will be worth it. (main.c => main.cc only so far.) 3682 Note: Release 0.4.6.1 will most likely be made from the code 3683 base as it was yesterday, plus perhaps some documentation 3684 updates. 3685 Adding configure options "--with-gui" and "--without-gui"; 3686 autodetection of gtkmm-2.4 >= 2.12.1. A binary "gxemul-gui" 3687 is hardlinked to "gxemul"; when started, it should (in the 3688 future) bring up a GUI version of GXemul. For now, it just 3689 displays a dummy GTK+ window. 369020071113 The dummy GUI now includes a menu bar. 369120071114 Minor manpage and Makefile updates. 3692 Building and running GXemul now requires both X11 and gtkmm. 3693 debug/fatal are moved from main.cc to misc.cc. 3694 main.cc now just calls the main emulator, which is moved to 3695 src/GXemul.cc. 369620071116 Reverting the stuff I did two days ago: gtkmm/X11 are now 3697 optional again. 3698 Finally adding "install" and "uninstall" Makefile targets. :) 3699 Moving the rest of main.cc (the main function) into GXemul.cc. 3700 Removing the old config file parser (src/emul_parse.c), 3701 and doc/configfiles.html. 3702 Moving remaining src/*.c{,c} into a new src/main/ directory. 3703 Beginning on separating the main GUI window into a "workspace" 3704 and a "debug console" area. 370520071117 Removing the dummy M32R skeleton again. 3706 Converting some .c files to .cc (without redesigning the code, 3707 just to make it use the C++ compiler): cpu_sparc.c, 3708 cpu_mips_coproc.c, memory_*.c. 3709 Converting most of src/cpus/. 3710 Converting src/net/*.c and src/promemul/*.c to *.cc. 371120071119 Converting src/file/*.c to *.cc. 371220071120 Removing remaining references to the old config file stuff in 3713 the documentaion. 371420071121 Converting src/useremul/*.c, src/symbol/*.c, and some 3715 remaining files in src/main/ to *.cc. (Still no redesign, 3716 simply converting to use the C++ compiler.) 371720071123 Beginning to converting src/machines/*.c to *.cc. 371820071124 Planning a new configuration file format; beginning on 3719 ConfigNode.{cc,h}. Adding doc/fileformat.html. 3720 Adding a "test" makefile target, for unit testing. "make 3721 install" runs the test target. 3722 Implementing a simple refcount_ptr class. 372320071127 configure now uses -g also for non-development builds. 3724 Incorporating Wu Yongwei's debug_new, for memory leak 3725 detection. 372620071209 Converting the remaining src/machine/*.c to *.cc. 3727 Converting src/debugger/*.c to *.cc. 372820071212 Including a Doxyfile, for doxygen generation (source code 3729 comments to HTML). 373020071213 Performing a VERY bold move: Removing pretty much everything of 3731 the old code. All CPUs, devices, documentation, PROM emulation 3732 modes, disk and file handling, console handling, the old 3733 debugger, etc. 3734 Thinking about the new Component framework. 373520071214 Updating the TODO (basically removing all 0.4.x stuff). 3736 Beginning on some Doxygen documentation for simple classes. 373720071217 Moving Doxygen documentation to doc/doxygen/html.... 3738 src/main/GXemul.cc is used for the "main page" of the 3739 generated Doxygen HTML documentation, so that is where all the 3740 general code concepts should be documented. 3741 Adding skeleton Action, ActionStack, and UnitTest frameworks. 374220071218 Continuing on the ActionStack and the UnitTest framework. 3743 Adding a small intro.html documentation page. 3744------------------------------------------------------------------------------- 3745 (This is the 0.4.x branch.) 374620071219 NetBSD 4.0 has been released. Doing regression testing of 3747 some systems listed on guestoses.html. 3748 Fixing an alignment bug in dev_vga, when allocating 1 byte. 3749 3750============== RELEASE 0.4.6.1 ============== 3751 3752------------------------------------------------------------------------------- 3753 (This is the C++ development branch.) 375420071221 Some extremely minor Doxygen comment updates. 375520071227 Adding StateVariable and StateVariableValue classes; writing 3756 unit tests, etc. 3757 The ActionStack now uses lists instead of vectors, for the 3758 undo and redo stack. (For O(1) undo/redo operations.) 3759 Continuing on the Component infrastructure: parent/child 3760 relationships, state variables, and serialization. 3761 Adding a simple Checksum class; useful as a helper for unit 3762 tests. 376320071228 Implementing a CreateComponent function, which when given a 3764 "component class name" creates a Component. 3765 Adding a simple EscapedString helper class, for generating and 3766 decoding C-style escaped strings. 3767 Simple deserialization works. :) 376820071229 Beginning on the CommandInterpreter class. 376920071231 Moving src/gui to src/ui/gtkmm, and creating src/ui/console. 3770 The idea is that all UIs, not only graphical ones, will share 3771 a common base class (the UI class), making it reasonably easy 3772 to add other GUIs later on if necessary. 3773 Moving printing of the startup "banner" to a UI member 3774 function. (No banner is currently displayed for the GTKMM UI 3775 though, because it would feel too heavy-weight.) 3776 The ConsoleUI shows a "GXemul> " prompt, but does not support 3777 input yet. 377820080101 Continuing on the ConsoleUI; it now reads input from stdin and 3779 sends it to a CommandInterpreter. Simple handling of CTRL-C, 3780 CTRL-Z, and treating DEL as backspace. 3781 Adding a Command base class, and adding the first command, 3782 which is "quit" :-). 3783 Simplifying the syntax of the UNITTEST macro. 378420080102 Adding a section about GXemul being Free Software to intro.html 3785 (same as in previous versions of GXemul). 3786 Implementing CommandInterpreter::RunCommand, so that commands 3787 can be executed. "help", "quit", and "version" work 3788 interactively now :) 378920080103 CTRL-A/E (for start/end of line) and CTRL-B/F (for back/ 3790 forward cursor movement) now work in the console UI. 3791 Mapping ANSI/VTxxx/xterm cursor keys (escape + [ + misc) to 3792 CTRL-A/E/B/F/N/P. 3793 Adding command history support to the CommandInterpreter. 3794 Classes that perform unit tests using the UNITTESTS(classname) 3795 macro are now tested (almost) automagically by 3796 UnitTest::RunTests(). (.h files must still be included.) 379720080104 Connecting cursor up/down keys to the command history. 3798 Adding Component::Clone. (Not really used yet.) 3799 Adding CTRL-D support to the command interpreter (remove 3800 character to the right). 3801 Actions will now be placed in src/main/actions/. 3802 Implementing an AddComponentAction. 380320080105 Beginning on TAB completion in the CommandInterpreter. 3804 Implementing the UndoCommand and the RedoCommand. 3805 Adding CTRL-K (kill end of line) to the command interpreter. 3806 Implementing RemoveComponentAction. 380720080106 Classes that use UNITTESTS(classname) are now fully auto 3808 tested, no need to manually include .h files anymore. (This 3809 relies on the fact that .h files have names that are exactly 3810 the same as the class name they represent, otherwise it would 3811 not work that well.) Updating some Doxygen comments to reflect 3812 the current state of automagic unit testing. 3813 Renaming TODO to doc/TODO.html. 3814 Changing the Doxyfile to include full .cc source code in 3815 the built documentation. 381620080107 The "tree" command now shows a fancy ASCII tree of components. 3817 Beginning on the "add" command (AddComponentCommand). 3818 Components now get names based on their class name, followed 3819 by a zero-based increasing integer, e.g. dummy0, dummy1, etc. 3820 when added (if they don't already have a unique name). 382120080108 TAB complete of empty string now shows all available commands. 3822 Implementing Component helpers: GeneratePath and LookupPath. 3823 The "add" command now takes path into account, but it must be 3824 a complete path from the root component (i.e. "root.blahblah"). 3825 Component::Serialize now serializes into a std::stringstream 3826 instead of returning a plain string. 382720080109 Implementing Component::FindPathByPartialMatch (helper func.). 3828 The "add" command now uses FindPathByPartialMatch for the 3829 where-to-add argument. 3830 Tab completion now expands component names :) also using 3831 FindPathByPartialMatch. (Syntax of different parts of a 3832 command line are not taken into account yet, though, so it 3833 also for example tries to expand the argument of the "help" 3834 command as a component name.) 3835 Component::Serialize now serializes into an ostream instead 3836 of a stringstream. 3837 Implementing the "save" command. 3838 CTRL-T now runs a "status" command (not yet implemented), 3839 instead of using a status line hack of its own. 3840 Implementing ClearEmulationAction and LoadEmulationAction. 3841 Implementing the "close" and "load" commands. 384220080110 Making the LoadEmulationAction undo-able (in the case the new 3843 component was added to the tree, and did not entierly 3844 replace the root component). 384520080112 The gxemul binary can now be started with a config file as 3846 an argument, which causes it to be loaded. The default RunState 3847 is now Running on startup, and -V is used to set it to Paused. 3848 Adding a NullUI, so that the result of GXemul::GetUI() does 3849 not have to be checked all the time. 3850 Creating a ComponentFactory; moving Component::CreateComponent 3851 to ComponentFactory::CreateComponent. 3852 Reworking how components are created, in preparation for 3853 getting "templates" (such as the testmips machine) to work. 3854 A list of Components is now generated by the configure script, 3855 so that all .h files with a COMPONENT(name) command in 3856 src/include/components/ (including template machines, etc) will 3857 be creatable using ComponentFactory::CreateComponent. 3858 The -E command line option now works :-) 385920080113 Adding a "quiet mode" to the GXemul class, set to true by the 3860 -q command line option. 3861 Adding some more simple commands: continue, list-components. 3862------------------------------------------------------------------------------- 3863 (This is the 0.4.x branch.) 386420080118 Applying a WDC patch from Oleksandr Tymoshenko (dev_wdc.c and 3865 bus_pci.c), fixing the order of 16-bit words within 32-bit 3866 words in the identify struct, and not clearing the error on 3867 reads from the error register anymore. 3868 3869============== RELEASE 0.4.6.2 ============== 3870 3871------------------------------------------------------------------------------- 3872 (This is the C++ branch.) 387320080119 Adding a generic GetAttribute function to components. Planned 3874 attributes are "template", "stable", "machine", "description", 3875 and "contributors". Unimplemented attributes result in an empty 3876 string being returned from GetAttribute. 3877 Moving the ASCII tree generator from TreeCommand.cc to 3878 Component::GenerateTreeDump. 3879 Documentation of available machine templates and all components 3880 is now automagically generated on a "make documentation". 3881 (doc/machines.html and doc/components.html.) 3882------------------------------------------------------------------------------- 3883 (This is the 0.4.x branch.) 388420080120 Some minor OpenFirmware fixes: Adding a "memory" property to 3885 "/chosen", adding a dummy claim() service. 3886------------------------------------------------------------------------------- 3887 (This is the C++ branch.) 388820080120 Adding CTRL-W handling (remove current/last word) to the 3889 CommandInterpreter. 3890 The machines.html and components.html documentation pages now 3891 point to individual doc/machine_XXX.html and component_XXX.html 3892 pages, if they exist. 389320080122 Beginning to rewrite the component state variable 3894 implementation a bit, in preparation for serialization/ 3895 deserialization, undo/redo, and "run backwards" with data 3896 tightly tied to components. 389720080123 Continuing on the state variable stuff. Both strings and 3898 integers (8-bit through 64-bit, signed and unsigned) can be 3899 used as state variables so far, but more unit tests are needed. 3900 Component classes can now also be registered runtime. (This is 3901 needed to enable meaningful unit testing of some things, 3902 such as cloning of dummy unit test components.) 390320080124 Moving doc/machine_*.html and component_*.html into subdirs. 390420080129 Re-adding detection of host arch (ABI) to the configure script. 390520080203 Continuing on state variables (unit tests etc). 3906------------------------------------------------------------------------------- 3907 (This is the 0.4.x branch.) 390820080205 Switching order of DINCLUDE and XINCLUDE in 3909 src/devices/Makefile (thanks to Ning Zhao for the tip). 3910------------------------------------------------------------------------------- 3911 (This is the C++ branch.) 391220080210 Adding -D_GLIBCXX_DEBUG -D_GLIBCXX_DEBUG_PEDANTIC to CFLAGS for 3913 debug builds. 391420080222 Beginning on the main run loop, GXemul::ExecuteCycles. 3915------------------------------------------------------------------------------- 3916 (This is the 0.4.x branch.) 391720080222 Adding a DEV_DISK_OFFSET_HIGH32 register, for reading/writing 3918 the top 32 bits of the offset register (useful for emulated 3919 32-bit archs), as suggested by Julian Elischer. 3920 3921============== RELEASE 0.4.6.3 ============== 3922 3923------------------------------------------------------------------------------- 3924 (This is the C++ branch.) 392520080226 Implementing an IRInstruction base class, and some initial 3926 IR instructions (simple adds, moves, stores). 392720080227 Continuing on IRInstruction stuff; unit tests to see that 3928 automatic native code generation kicks in, etc. 3929 Implementing a simple IRBlockCache, which is just a linear 3930 memory range with PROT_EXEC, which is reset when it overflows. 3931 Beginning on a (so far dummy) IRNativeAMD64 code generator. 3932 Adding a configure option for disabling native code generation 3933 support completely. 393420080229 Rethinking how the IR stuff should work: I'll probably use 3935 simple and traditional interpretation by default (read instr, 3936 decode, execute), and only let native code generation via some 3937 form of IR kick in when necessary. Two advantages: it will be 3938 easier to add new cpu types (because an interpretation switch/ 3939 case block is very easy to understand), and there will be no 3940 waste of memory (for IR data) for code which is not commonly 3941 used. 3942 Removing IRBlock and IRInstruction, but keeping IRBlockCache 3943 and IRNativeAMD64 for later. 3944 The IRBlockCache can now be resized during runtime (and it 3945 expands automatically if necessary). 394620080314 Working on the main loop, GXemul::ExecuteCycles(), which should 3947 call each component's Run function in suitable proportions. 3948 Adding a CPUComponent base class, from which MIPS_CPUComponent 3949 inherits. 395020080316 Switching from CVS to SVN. 3951 Adding a test to the configure script for the "-ansi" compiler 3952 option; implementing a simple parse_number to replace strtoull 3953 to make everything build with -ansi. Various minor fixes to 3954 make -ansi work on a Debian GNU/Linux system (using CXXFLAGS 3955 instead of CFLAGS in Makefiles, and probe MAP_ANON in the 3956 configure script using $CXX, not $CC). 3957 Moving NativeTranslationExists and LookupCurrentCodePage from 3958 MIPS_CPUComponent to CPUComponent; these are intended to be 3959 used from most CPU components. 3960 Removing lots of "cd .." stuff from the Makefiles; GNU make 3961 did not work too well with them. Hopefully this will make 3962 tracking down compile problems on GNU/Linux machines easier. 396320080317 Beginning on an AddressDataBus abstract class/interface, which 3964 e.g. the RAM component will implement. 396520080320 Continuing on the RAMComponent class. 396620080321 "make install" now installs .desktop and icon files. 3967 More work on the RAMComponent class: endianness for loads and 3968 stores larger than 8 bits, some simple unit tests. 396920080322 Adding a preliminary toolbar to the GTKMM GUI. 3970 Upgrading configure script check for gtkmm-2.4 from version 3971 2.12.1 to 2.12.5. (Maybe not stricly necessary, but that's what 3972 I am currently using for development.) 397320080323 Experimenting with graying out the Undo and Redo actions in 3974 the GUI (by querying the ActionStack). 397520080324 Making the code compile cleanly with GNU C++' -pedantic. The 3976 only module where -pedantic is not used is src/ir/, which needs 3977 to cast e.g. uint8_t* to function pointer (for runtime 3978 generated code). 3979 Beginning on a mainbus (MainbusComponent), which will forward 3980 reads and writes to other devices (such as RAM). 398120080325 Making the counter in the ReferenceCountable class mutable, 3982 because const objects also need to be reference countable. 3983 Attempting to fix a bug related to the integer types passed 3984 to UnitTest::Assert. (Problem noticed by Hollis Blanchard.) 3985 Fixing arguments to and return handling of mmap(). (Also 3986 noticed by Hollis.) 398720080328 Making everything build using SunStudio (Sun C++ 5.9). 3988 Implementing support for Double state variables. 3989 CPU speed is now a state variable, in CPUComponent. 3990 Cleaning up the CFLAGS/CXXFLAGS/COPTIM/CWARNINGS mess in the 3991 configure script and Makefile.skel files; only CXXFLAGS (and 3992 CXXFLAGSBASE) are used from now on. Also removing some other 3993 unused legacy stuff from the configure script. 399420080329 Minor fixes to make the source code build with a 20080321 3995 snapshot of GCC 4.4. 399620080330 Continuing on the GTKMM GUI (File->Open/Save/Save As show 3997 file chooser dialogs, and Edit->Undo/Redo execute the "undo" 3998 and "redo" commands). "File->New from Blank" and "Go/Continue" 3999 also have bare-bones implementations. 4000 Continuing on mainbus related things; moving the mips_cpu in 4001 the testmips machine so that it is placed on the mainbus. 4002 Adding a MemoryMappedComponent base class, which all memory- 4003 mapped components should inherit. (The canonical example is 4004 the RAMComponent class.) 4005 The mainbus can now forward reads and writes to memory-mapped 4006 child components. 400720080401 Continuing on the mainbus (writing unit tests). 4008 Reintroduce the 'bool' state variable type. 4009 Adding a 'writeProtected' state bool for the RAMComponent, to 4010 emulate ROM behavior in a simple way. 401120080402 Creating a src/include/thirdparty directory. Moving debug_new.h 4012 etc there. Also importing exec_elf.h from NetBSD [HEAD], and 4013 updating doc/RELEASE.html to reflect the location of thirdparty 4014 imports. 4015 Implementing the initial framework for I18N/localization. The 4016 first translation is Swedish. :-) 401720080404 Making it possible to build with GTKMM 2.15.5 with --debug; 4018 note, however, that this produces memory leak warnings, so 4019 the GTKMM with --debug combination is not very useful yet. 4020 Implementing basic support for updating the UI when some things 4021 change: Undo/Redo-applicability, the name of the emulation, and 4022 the RunState. (As UI::UpdateUI().) 4023 Removing all old CVS $Id$ tags; they are not useful anymore. 4024 The GTKMM GUI EmulationDesignArea now shows some dummy circles 4025 (one for each component in the emulation setup). 402620080405 Beginning on a FileLoader class, for loading binaries (e.g. 4027 ELFs). Also adding a test/ directory, where small test files 4028 used for unit tests may be stored. ELF program segments are 4029 loaded, but no additional information yet (entry point etc.). 4030 Catching std::exception at the outermost level, in order to 4031 print a reasonable message if the application crashes. 4032 Instead of loading binaries into an AddressDataBus, they are 4033 now loaded into a Component, which, if it has a "pc" state 4034 variable, is set to the entry point. Starting gxemul with 4035 -E testmips test/FileLoader_ELF_MIPS actually attempts to 4036 start running the binary now :-) 4037 Some more work on the GTKMM GUI: the debug output window now 4038 shows debug messages and commands being executed. 403920080406 Adding a section about Model-View-Controller to the source 4040 code documentation main page, and a simple picture of what the 4041 component tree may look like. 4042 Introducing "visible class names" in addition to the normal 4043 class name, for components. This makes mips_cpu0 show up as 4044 just cpu0, which is much nicer. 4045 uint16_t, 32_t, and 64_t state variables are now outputted in 4046 hexadecimal form in ToString(), for readability. 4047 The ListComponents command now shows the short description of 4048 each command. 4049 Links are now generated from component names in machines.html 4050 to corresponding component_xxx.html pages. 4051 Beginning on internal support for instruction disassembly (not 4052 user-accessible yet). 405320080407 Continuing on the instruction disassembly stuff; importing 4054 some MIPS defines from GXemul 0.4.6.3. 405520080409 Implementing support in the CommandInterpreter for running 4056 methods on components. If a component name is "executed" with 4057 no method name given, the component tree is dumped. (This means 4058 that there is no need for the 'tree' command anymore, so it 4059 has been removed.) 4060 Implementing the first component method: "unassemble" for the 4061 CPUComponent. 4062 GTKMM GUI test: Connecting to the "activate" signal of a text 4063 entry, so that commands are executed once ENTER is pressed; 4064 this does not work with tab-completion and command line 4065 editing though, since only ENTER is signaled. 406620080410 CPUComponent's unassemble method now remembers where it last 4067 unassembled, and starts at m_pc if it is the first time it 4068 is executed. 4069 Porting more MIPS-related code from GXemul 0.4.6.3; some 4070 more instructions can be disassembled now. 407120080412 Implementing tab-completion of methods on components. 4072 Executing a component name without any method name, which 4073 results in the component tree being dumped, will now also 4074 dump all of the component's state variables. 4075 Continuing on porting GXemul 0.4.6.3's MIPS disassembly code. 4076 The GTKMM GUI can now be shut down by the "quit" command. 407720080413 Introducing a new RunState (NotRunning). Making the GTKMM GUI 4078 Run/Pause buttons stay down while in the Running/Paused 4079 runstates. (Also making the icons smaller by not showing text 4080 labels, and enabling tooltips instead. Looks/feels nicer.) 4081 Implementing an undoable ResetAction. 408220080416 GUI updates: Fixed-width font in the debug console, and it 4083 now scrolls to bottom on text output. 408420080419 AddComponentAction must not remember component references 4085 (for undo/redo); instead it now remember paths. 4086 Also implementing a similar fix for RemoveComponentAction. 408720080423 Action::Execute and Undo are now private, and only reachable 4088 from the ActionStack (now a friend class of Action). 408920080424 Upgrading configure script check for gtkmm-2.4 from version 4090 2.12.5 to 2.12.7, to be in synch with my system. 409120080426 The continue command now clears the Undo stack. 4092 State variable names of components can now be tab completed. 4093 "Running" a variable (e.g. cpu0.pc) will print its value. 409420080427 Continuing a little on tab completion of variable names. 4095 Implementing a "dirty flag" for the emulation; the GTKMM GUI 4096 now asks for confirmation before quitting, opening a new 4097 emulation, etc, if the model is dirty. 409820080501 Fixing LoadComponentAction so that it uses path names for 4099 Undo, and not reference pointers to components. 4100 Fixing a crash bug in CommandInterpreter when tab completing 4101 non-existant component names. 4102 Implementing a VariableAssignmentAction. No expressions yet, 4103 only simple values (numeric, strings, and boolean values). 410420080531 Refactoring the Component::AddVariable* functions into a 4105 single template function. 4106------------------------------------------------------------------------------- 4107 (This is the 0.4.x branch.) 410820080605 Fixing a corner case in ARM pc-relative loads, which was 4109 unimplemented before. (Triggered by doing builds of pkgsrc 4110 stuff inside emulated NetBSD/cats.) 411120080610 Applying a patch from Jiri Svoboda, which implements the 4112 ARM "bkpt" instruction. 4113 4114============== RELEASE 0.4.6.4 ============== 4115 411620080611 Correcting the ARM pc-relative load fix; the wrong address 4117 variable was used. Also, the pc-relative _load_ code was 4118 used for stores as well, which was completely incorrect. 4119 On ARM, since pc-relative loads are converted into immediate 4120 movs, on writes to pages that contain such translations, the 4121 ENTIRE page must be invalidated, not just the 1/32th that 4122 was code. This has now been implemented. 4123 4124============== RELEASE 0.4.6.5 ============== 4125 412620080808 Applying a patch from Kiyotaka Inaba which causes an ARM UND 4127 exception to be generated by the instruction word 0xe6000011, 4128 which is needed by gdb when running inside the emulator. 4129 Also enabling ARM UND exceptions for ARM floating point 4130 instructions (needed by both Linux and NetBSD/arm). 4131------------------------------------------------------------------------------- 4132 (This is the C++ branch.) 413320080810 Implementing a basic Trigger framework. 413420080812 Continuing on Triggers; it's now possible to use static 4135 member functions as callback functions. Beginning to connect 4136 triggers to the GTKMM GUI. 4137------------------------------------------------------------------------------- 4138 (This is the 0.4.x branch.) 413920081103 Fix for a free() bug in bootblock_iso9660.c. 4140 Updating the OpenBSD/landisk installation instructions from 4141 4.2 to 4.4, after verifying that it works. 414220081104 NOTE: I'm throwing away the C++ rewrite attempt ("0.5.x"), 4143 moving back gxemul-legacy to gxemul/trunk. The old C++ 4144 rewrite attempt is archived under gxemul/branches/. 414520081109 Updating most NetBSD 4.0 install instructions to 4.0.1. 4146 4147============== RELEASE 0.4.6.6 ============== 4148 414920081114 Adding the M88K 'add' instruction for immediate values 4150 (add_imm in cpu_m88k_instr.c). 4151 Continuing on dev_pcc2 (used by mvme187). 4152 Working on M88K interrupts. Very unstable so far; OpenBSD/ 4153 mvme88k bugs out randomly after the first few interrupts. 415420081115 More work on dev_pcc2. 4155 Found the "random" failure bug: the M88K interrupt handling 4156 code didn't execute the interrupted instruction, but skipped 4157 it instead. 4158 Fixing a bug in the implementation of the m88k 'ext' 4159 instruction (it worked like extu!). 4160 Adding disassembly of all 88100 floating point instructions. 4161 Minor updates to make the code build with GCC "4.4.0 20081017". 416220081116 Implementing the m88k flt.ss, flt.ds, trnc.ss, trnc.sd, and 4163 fadd.dds floating point instructions. 416420081121 Updating the HelenOS version in the documentation to 0.3.0. 4165 Continuing on 88100 interrupt/exception handling. 416620081125 Bringing back the dummy machine_iyonix.c, which was removed 4167 in SVN rev. 4866. 4168 Fixing a bug in ARM pc-relative loads, when loading within 4169 the same page as the pc. 417020081126 Continuing on the Iyonix mode: connecting initial i80321 4171 interrupts, and importing NetBSD/iyonix' bootconfig.h. 417220081127 Importing iopi2creg.h from NetBSD (ARM Xscale I2C registers). 4173 Implementing the SH4 fsrra instruction, 1/sqrt(x), and the 4174 fipr instruction (vector dot-product). 417520081203 Using register names in dev_clmpcc, but no actual progress on 4176 getting OpenBSD/mvme88k to boot further. 4177 FINALLY found the M88K bug I've been hunting: conditional 4178 branches with delay slots did not set the delay target address 4179 correctly in the case the branch was _not_ taken. 418020081204 Interrupt exceptions (in cpu_dyntrans.c) are no longer 4181 generated while single-stepping. (It was too annoying.) 418220081206 Implementing rudimentary tx/rx interrupts for clmpcc; 4183 OpenBSD/mvme88k can input/output stuff in userland now :) 4184 Implementing the "max negative number" condition of the 4185 M88K bcnd instruction. 4186 Implementing the M88K triadic register 'rot' instruction. 4187 The FIP != NIP+4 situation in the M88K rte instruction is now 4188 supported (i.e. executing one instruction from the pipeline, 4189 and then continuing somewhere else). 4190 Continuing on Dreamcast PowerVR register names, etc. 419120081208 Beginning on a osiop (NCR 53C710 SCSI) device skeleton. 419220081210 The SH4 Store Queue memory area is 0x04000000 long, not 0x40. 419320081211 OpenBSD/m88k's badaddr() should now be able to detect 4194 invalid addresses; memory_rw.c causes exceptions on reads 4195 that fail (but no actual address is supplied yet). 419620081212 Moving the Dreamcast PowerVR2 DMA handling from 4197 dev_dreamcast_g2 to dev_pvr, where it belongs. 419820081213 Continuing on SH4 and PowerVR2 DMA. 4199 Moving the unsupported guest OSes from guestoses.html to a 4200 new page, unsupported.html, for clarity. 4201 Continuing on the NCR 53C710 SCSI controller (dev_osiop.c). 420220081217 Beginning on implementing the SCRIPTS instruction set for 4203 dev_osiop. 420420081219 Continuing a little bit on the osiop SCRIPTS ISA. 420520081221 Implementing an instruction combination for M88K idle loop 4206 detection (works with OpenBSD/mvme88k). 4207 Adding a dummy LUNA 88K machine mode (machine_luna88k.c). 420820081229 Continuing on the osiop SCRIPTS ISA. 420920081231 More progress on dev_osiop.c. 421020090101 FINALLY the osiop works well enough to let OpenBSD detect 4211 SCSI devices! :-) 4212 After some more hacking, everything is finally stable enough 4213 to allow OpenBSD/mvme88k to be installed onto a disk image! 421420090102 Optimizing the osiop SCSI device a bit; a default scripted 4215 install of OpenBSD/mvme88k has dropped from 30 minutes to 10. 4216 Fixing a bug which was caused by instructions like subu.co 4217 with a destination register of r0 being treated as nop. 4218 Various updates to make the source code build better on 4219 Linux (Ubuntu 8.10), and with GNU make. 4220 4221============== RELEASE 0.4.7 ============== 4222 422320090103 Merging fixes from the main trunk. 422420090122 Merging in fdiv.sss and fadd.dsd from the main trunk. 422520090123 NetBSD/hpcmips can now be installed and run using serial 4226 console (i.e. without -X), in addition to using the 4227 framebuffer. 4228 4229============== RELEASE 0.4.7.1 ============== 4230 423120090215 Updating the guest OS page for HelenOS 0.4.0. 423220090513 Fixing the MIPS tne, teq, tge, tgeu, tlt, and tltu instructions 4233 to allow non-zero "code" values. 4234 Adding a new Linux/Malta "variant 2" entry to the unsupported 4235 guest OS page. 423620090518 Changing the 8253 interrupt mechanism to assert interrupts 4237 regardless of "mode" bits, causing Linux/Malta to get further. 4238 Hacking on piix4 a bit to attempt to please Linux/Malta; 4239 interrupts are lost. 424020090610 Making configuration files work again! (Thanks to Wu Kan for 4241 noticing this bug.) 424220090611 Documentation updates (NetBSD 5 etc). 424320090621 Adding a hack for the pcc2 PSCALEADJ register, making it 4244 possible to install and run OpenBSD/mvme88k 4.5. 4245 NetBSD/evbmips, /sgimips, and /cobalt 5.0 have been verified 4246 to work. 4247 4248============== RELEASE 0.4.7.2 ============== 4249 425020090626 Attempting to switch from C to C++ (_WITHOUT_ starting over 4251 from scratch). Step 1: Rename all .c files to .cc. 2. Rename 4252 all occurances of 'template' and 'class' to other things. 4253 Step 3: Fix malloc/realloc cast errors. 4254- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 4255 NOTE: From here on, stuff was merged piece by piece from the 4256 experimental C++ branch to the trunk; only the trunk is used 4257 from this point. 4258- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 425920090627 Continuing on the C to C++ switch. 4260 Updating the OpenBSD/mvme88k regression test expect script 4261 from 4.4 to 4.5. 4262 Everything now builds with "make -j X". 426320090628 Moving src/*.cc into a new directory, src/main/. 4264 Finally adding the "make install" target (again). 4265 Moving TODO and RELEASE notes to doc/. 4266 Adding Doxygen documentation generation (again). 426720090703 Moving more C++ code from the old branch into the main trunk. 4268 (UnitTest, Component*, StateVariable, debug_new, ...) 4269 Removing bogus/unfinished archs (Alpha, SPARC, M32R) and 4270 the skeleton "userland emulation". 427120090704 Moving thirdparty includes into src/include/thirdparty/. 427220090705 Beginning to import various Components from the experimental 4273 C++ branch (starting with the MVME187Machine). 4274 Removing more bogus/unfinished code: Bebox and Luna88k. 4275 Attempting to move in more code from the experimental C++ 4276 branch: the GXemul main class, command interpreter and related 4277 commands, file loader, UIs, etc. 427820090710 Moving in more code. 4279 Added a note in guestoses.html that all current modes are 4280 legacy modes, using the old framework. 4281 Updating the OpenBSD/landisk regression test expect script 4282 from 4.1 to 4.5. 4283 Attempting to connect -V and -e so that the new framework is 4284 used for new template machines. 4285 Making everything build on Linux (missing includes etc.). 4286 Removing all $CC stuff from configure (only $CXX remains). 4287 Merging in the automated component and machine HTML 4288 documentation stuff from the C++ branch. 4289 Applying a patch from Izumi Tsutsui which makes NetBSD/hpcmips 4290 work well with the clock again. 429120090711 Applying another patch from Izumi Tsutsui, for setting the 4292 ARCBIOS OSLOADPARTITION environment variable in a more correct 4293 way. (Also updating the guest OS page for NetBSD/arc 5.0.) 4294 Updating the NetBSD/pmax regression test expect scripts from 4295 3.1 to 5.0 (for both R3000 and R4400). 4296 Moving regression test expect scripts to the test/ directory. 4297 Creating a regression test expect script for NetBSD/arc 5.0. 429820090712 Adding a dummy "testm88k" machine for the new framework. 4299 Updating the install instructions for NetBSD/cobalt to use the 4300 RAMDISK installer (thanks to Izumi Tsutsui for noticing). 430120090713 Beginning on an a.out FileLoader for the new framework. 430220090714 Continuing on the a.out FileLoader. 430320090716 a.out (big-endian only so far) can now be loaded into 4304 AddressDataBus objects. 4305 Modifying the "load" command so that it can load both component 4306 trees _and_ other binaries (ELFs etc) into components. 4307 Merging in a lot of TODO entries from the old C++ branch's TODO 4308 file. 430920090717 Implementing the 'move' command for moving components. 4310 Removing the 'dirty flag' concept (it wasn't really used). 4311 Adding a .dump method to the RAMComponent, for dumping raw 4312 (physical) memory contents. 4313 Adding a similar .dump method to the CPUComponent, for dumping 4314 the virtual memory space. (Note that this can have side 4315 effects, when reading from devices...) 4316 Implementing the 'copy' command, for cloning components. 431720090718 Updating the man page to reflect new command line options vs 4318 legacy options. 4319 Adding a .registers method to the CPUComponent for dumping CPU 4320 registers; implementing specifics for MIPS and M88K. 4321 Enabling simple variable assignment [again]. 4322 Implementing (in a ugly hack-ish way) serialization support 4323 for the RAM component, using a "custom" StateVariable type. 4324 Beginning to implement a "pre run check" mechanism. 432520090720 Implementing PreRunCheck for CPU components (they need to have 4326 an address/data bus, either as a child or as a parent, to run). 432720090721 Implementing PreRunCheck for MainBusComponent. 4328 At startup, a suitable part of the component tree is now shown. 4329 Adding a GenerateShortestPossiblePath method on Component. 4330 Adding a helper for outputting pre-0.6.0 style debug messages 4331 from components ("[ componentname: message ]"). 4332 Tab completion (in the CommandInterpreter) now uses shortest 4333 path, whenever possible, instead of full paths. 433420090722 Implementing a new concept of "on reset commands"; beginning on 4335 extending the ELF loader for symbol loading support. 433620090723 Moving 'step' and 'time' concepts from the GXemul class to a 4337 new component, the RootComponent. 4338 Minor configure script fixes (allow --without-unittests etc.). 4339 Removing the "NotRunning" run state. 4340 Adding dummy "step", "backward-step", and "continue-backwards" 4341 commands. 4342 Implementing support for re-executing commands without args 4343 ("step" and "backward-step" so far). 434420090724 The CPUComponent's .unassemble and .dump methods, and the 4345 RAMComponent's .dump method, are now also re-executable. 4346 CPU endianness is now serialized (as a bool, not enum). 4347 Beginning to work on cycle execution! 434820090725 The step command now takes an argument (default is 1). 434920090726 Removing the "global time" concept. 4350 Adding a helper for debug message indentation. 4351 Adding an "accuracy" variable to the RootComponent, which must 4352 be set to either "cycle" or "sloppy". 4353 Implementing pre-run-checks for M88K and MIPS cpus, for 4354 checking the r0 and zr registers, respectively. 435520090727 When single-stepping, all state change (except for Custom 4356 StateVariables such as RAM contents) is now displayed. 4357 Porting the 88100 disassembly code from the old implementation 4358 to the new. 4359 Moving old main files into src/old_main/ (for clarity). 436020090728 Including screenshots in auto generated machines.html. 4361 Finally managed to implement cycle-accurate continuous 4362 execution of multiple components at different speeds. :-) 4363 RAMComponent now clears ram on reset. 4364 Implementing a symbol registry for the new framework (which 4365 is per CPU). 436620090729 Slowly beginning to reimplement dyntrans in C++: Beginning on 4367 the CPUComponent::DyntransExecute core loop, and some 4368 basic structures. MIPS and M88K cpus call DyntransExecute. 436920090731 Continuing on the new dyntrans core. The first instruction (a 4370 M88K subu) can be executed on a dummy IC page. 4371 [Re]implementing some simple MIPS and M88K instructions. 4372 Arguments can now be passed during component creation, e.g. 4373 nr CPUs, CPU model, or ram amount for a template machine. 4374 Adding a 'raw' file loader, and a dummy SGI IP32 template. 437520090801 Two MIPS16 instructions can be disassembled; disassembly 4376 address is now not necessarily the same as m_pc (e.g. on 4377 MIPS16, the lowest bit is cleared). 4378 Beginning on implementing branches: the MIPS "b" instruction, 4379 with delay slot (both continuous execution, and single-stepping 4380 with pause in the middle of the branch, etc). 4381 Continuing on the dyntrans core loop (inlined instruction calls 4382 first, then run a few remaining calls). 438320090802 Implementing a skeleton implementation for the backward-step 4384 command (but since variable write handlers aren't implemented 4385 yet, it doesn't really work). 4386 Updating the Introduction chapter in the documentation with 4387 a section about the New framework. 4388 Beginning on M88K bsr and jmp.n instruction implementations, 4389 function call trace support, etc. 439020090803 Continuing on function call trace support. 439120090804 Using anonymous unions and ptrdiff_t, to avoid overloading 4392 pointers and size_t members unsafely, and other size_t usage. 4393 (Thanks to Weinholt for commenting on this.) 439420090807 Getting rid of the last 'delete' call (in MainbusComponent, 4395 there was a _pointer_ to a memory map, instead of just a 4396 memory map). The new GXemul framework is thus completely free 4397 of malloc/free and manual delete. (mmap/munmap are, for natural 4398 reasons, used though by the RAMComponent.) 4399 Separating out the dyntrans specific parts of CPUComponent into 4400 another base class, CPUDyntransComponent, so that it in theory 4401 is possible to implement non-dyntrans CPUs. 4402 Partial support for choosing MIPS ABI (affects disassembly and 4403 register dumps, mostly). 440420090810 Beginning on variable write handlers: MIPS zr register is 4405 read-only, MIPS' model can now be changed correctly, and 4406 root.accuracy can only be assigned "cycle" or "sloppy". 440720090814 Continuing on write handlers for variables (root.step), 4408 beginning on component tree snapshotting (using Clone). The 4409 backward-step command now works reasonably well (but the only 4410 snapshot taken so far is at step=0). 441120090815 Reimplementing the M88K br, or_imm, or.u_imm, cmp, cmp_imm, 4412 and_imm, and.u_imm, mask_imm, mask.u_imm, mak, mak_imm, 4413 mulu_imm, xor_imm, and xor.u_imm instructions. 441420090819 Base OTHERLIBS in configure on LDFLAGS. 441520090821 Updating the TODO with thoughts/plans for the "plugin" part 4416 of the new framework. 441720090822 Beginning on a doc/framework.html, describing the new 4418 framework concepts to end-users. 441920090905 Continuing on the dyntrans core: page allocation. 442020091207 The dev_ether MAC address can now be read. 442120091212 Updating the OpenBSD/landisk install instructions in 4422 guestoses.html from OpenBSD 4.5 to 4.6. 442320091219 Include _GLIBCXX_DEBUG and _GLIBCXX_DEBUG_PEDANTIC defines in 4424 debug builds, to potentially catch some STL misuses. 4425 If valgrind is found by the configure script, it is used when 4426 running 'make test'. If there is any output from valgrind -q 4427 (i.e. errors), then make test fails. 442820100127 Patch from Tassilo Philipp to enable PPC's fabs instruction. 4429 Patch from Yana to use return value from net_ethernet_rx() 4430 correctly in dev_ether.c. 443120100128 Adding a check (for "make test") to see that delete isn't 4432 used. Only a few exceptions are allowed. 443320100129 Reimplementing the (non-specialized) M88K bsr instruction. 4434 Continuing on the dyntrans core: page allocation. The basics 4435 (page allocation and LRU deallocation) have been implemented, 4436 but not really tested in practice yet. 443720100130 Reimplementing the M88K ldcr instruction, and a slow version 4438 of the st instruction (store 32-bit word). 4439 Updating guest OS documentation (NetBSD/landisk 4.0.1 to 4440 5.0.1, NetBSD/pmax 5.0 to 5.0.1, NetBSD/arc 5.0 to 5.0.1, 4441 NetBSD/cobalt 5.0 to 5.0.1). 4442 Renaming old testmips to oldtestmips, so that the name 4443 testmips can be used by the new framework. 444420100131 Reimplementing a slow version of the st.d M88K instruction. 4445 "Quiet mode" is now turned off, if dropping into the debugger, 4446 both by using -V and by triggering unimplemented instructions. 4447 The m88k_cpu now takes a creation argument called r31, for the 4448 initial stack pointer value. (Needed to run the rectangle 4449 drawing demo, which assumes a valid r31 on startup.) 4450 Reimplementing the M88K bsr.n instruction, including single- 4451 stepping scenarios. 445220100202 Reimplementing generic M88K loads/stores using templates. (In 4453 the old implementation, these were constructed using build- 4454 time generated define/include magic to simulate a template- 4455 style mechanism in C). 4456 Reimplementing the M88K divu d,s1,imm instruction. 4457 Reimplementing the M88K lda.* instruction. 445820100203 Beginning on reimplementing M88K bb0.n and bb1.n; only the 4459 non-singlestepping variant done so far. 446020100204 bb0.n and bb1.n should now also work when single-stepping. 4461 Implementing the non-singlestep variant of M88K jmp.n. 4462 Beginning on the M88K bcnd.n instruction. 446320100205 Continuing on bcnd.n. The testm88k rectangle drawing demo 4464 now runs :) both when running continuously, and when 4465 single-stepping. (No graphical output yet, of course.) 446620100206 Reimplementing the M88K ext and extu instructions. 4467 Reimplementing the M88K bb0 and bb1 non-delayslot 4468 instructions, including samepage variants. 4469 Reimplementing the M88K stcr, jmp, and tb0 and tb1 4470 instructions. 4471 Fixing a bug in the MRU list in DyntransTranslationCache. 4472 Fixing disassembly of tb0 and tb1, and implementing the 4473 rest of the bcnd conditions. 4474 Beginning on reimplementing MIPS (slow) loads/stores, 4475 and reimplementing the MIPS addu, subu, srl, xor, multu, 4476 mfhi, mflo, mthi, and mtlo instructions. 447720100207 Reimplementing the MIPS slt and sltu instructions, various 4478 branch instructions, and fixing some bugs; the rectangle 4479 drawing demo for testmips runs in the new framework :) 4480 Switching function call trace on/off during runtime now 4481 clears [individual] translation pages. 448220100213 Working on dyntrans abort peculiarities (in the middle of 4483 delay-slots, etc). 448420100214 Preparing for a quick 0.6.0 release. 4485 4486============== RELEASE 0.6.0 ============== 4487 448820100214 Fixing order of machine.html and components.html generation, 4489 relative to individual machines from skeleton files. 449020100220 Improve install path guessing (DESTDIR and MANDIR) based on 4491 feedback from Tom Callaway. 4492 Moving the multiple identical instances of parse_number and 4493 SplitStringIntoVector to a new StringHelper class, and adding 4494 some unit tests. 4495 Adding a PluginDescriptor class, for parsing plugin descriptor 4496 strings (component:plugin(args):filename etc). 4497 Beginning on the new plugin mechanism: adding an 'attach' 4498 command, to be used instead of 'load'. 449920100222 Scrapping the "plugin" concept; the already existing component 4500 framework should hopefully be enough as it is. 450120100314 Updating doc/translation.html with more examples on how the 4502 dyntrans system works (in pre-0.6.x and in 0.6.x). 450320100319 Fixing flawed mymkstemp by also passing O_CREAT | O_EXCL (used 4504 on systems without mkstemp) (reported as Debian bug #574537). 450520100322 const fixes, enabling builds using GCC's -Wcast-qual. 4506 Fixes to allow build using GCC's -Wshadow. 450720100326 Running 'make test' will now treat memory leaks as test 4508 failure (in debug builds only). Also fixing a memory leak. 450920100406 Bogus hack to machine_evbmips.cc to let RTEMS print some boot 4510 messages (again?) for mvme5500. 451120100806 nbjoerg on #GXemul (FreeNode) noticed an easy way to trigger 4512 an unhandled case in memory_sh.cc; applying a potential fix. 451320100830 Updating the OpenBSD/landisk guest operating system install 4514 instructions from 4.6 to 4.7. 4515 Improved the "pretty print" of components in the tree dump, 4516 by moving it out to a per-component virtual function. 451720100901 Beginning on CacheComponent (a generic memory cache component). 451820100910 The mechanism for detecting when to assert MIPS compare 4519 interrupts could sometimes stop delivering interrupts, if the 4520 count register was read. Fixed by keeping track of how many 4521 times the register is read and reverting it before doing the 4522 count/compare interrupt assert check. (Thanks to Jakub Jermar 4523 for noticing this bug using HelenOS.) 452420100912 Updating the NetBSD/hpcmips guest operating system install 4525 instructions from 4.0.1 to 5.0.2, and the NetBSD/algor install 4526 instructions from 3.1 to 5.0.2. 452720110212 Updating the NetBSD/pmax install instructions: 5.0.2 -> 5.1. 4528 Updating OpenBSD/landisk instructions: 4.7 -> 4.8. 452920110606 Updating the documentation on how to start Dreamcast binaries, 4530 and updating from NetBSD/dreamcast 5.0.1 to 5.1. 453120110609 Adding automagic guessing of Dreamcast ISO filesystem offset, 4532 so that Linux/dreamcast can be booted without specifying the 4533 offset. 4534 Booting Dreamcast via bootblock now uses software PROM starting 4535 point instead of calling a particular bootblock address, making 4536 it possible to run a complete boot sequence in more cases. 4537 When unimplemented SuperH instructions cause an abort failure, 4538 GXemul now drops into the debugger instead of calling exit() 4539 (if started with -K). 454020110610 In SH4 instruction trace, include address in printout in a few 4541 more cases than before. 4542 Make NetBSD/dreamcast etc. boot correctly with 480 pixels in 4543 the y direction (random read hack from PDTRA). 4544 Use the 8x16 font as a fake Dreamcast ROM font. 4545 Adding fake/skeleton Dreamcast ROM SYSINFO_INIT, SYSINFO_ID, 4546 FLASHROM_INIT, and FLASHROM_READ calls. 454720110616 Adding Dreamcast devices as symbols, so that runtime debugging 4548 will show meaningful names instead of just addresses, when 4549 reading and writing device registers. 455020110621 Adding "trace" versions of SuperH bsr and bsrf_rn instructions. 4551 Adding the first SuperH instruction combination for speeding 4552 up a variable read loop (bt_samepage_wait_for_variable). 455320110622 Continuing on Dreamcast and SuperH emulation: the SH4 DMA 4554 channel numbers were off-by-one (but didn't really have any 4555 negative effect). Experimenting with end-of-DMA mechanism in 4556 dev_pvr. Adding a second device thing at 0x005f7c00, which 4557 seems to be a PVR DMA register range, but not much used? 455820110623 Found a bug in the SH4 fsca instruction: the angle argument for 4559 sin and cos was incorrectly calculated. "dcfighting.bin" and 4560 "gltest.bin" (two "homebrew" Dreamcast programs) now look much 4561 more like on the real Dreamcast. 4562 Various other small Dreamcast and/or SH4 related updates. 456320110624 Updating OpenBSD/landisk installation instructions: 4.8 -> 4.9. 456420110626 Moving Dreamcast BIOS emulation entry points to 0x8c000100+ofs, 4565 so they are not "in the way" of the real BIOS' data area at 4566 0x8c000000-0x8c0000ff. Some other minor Dreamcast fixes. 4567 Moving GDROM DMA register handling into dev_dreamcast_gdrom. 4568 Fixing a bug in the SH4 fipr instruction (inner product): the 4569 rm and rn registers were reversed! 4570 Implementing fmov_rm_frn for double-sized register access. 457120110702 dev_ram now has a "trace" flag. Useful for figuring out e.g. 4572 when/if a program accesses certain memory ranges. 4573 Continuing on Dreamcast PVR (graphics) emulation; implementing 4574 software triangle rendering, so that some demo programs (such 4575 as Comstedt's "tatest", KOS' "gltest.bin" and "dcfighting.bin") 4576 now render solid polygons. Color is random though, and no 4577 textures yet. 457820110706 Implementing register pair variant of SuperH fmov_frm_rn, 4579 adding implementations of "LDS Rm,MACH", and "LDS Rm,MACL". 458020110902 Reviving the old legacy Alpha CPU support, which was removed 4581 20090703 (i.e. NOT using the new framework). 458220110906 Slowly continuing on the Alpha emulation mode: going through 4583 the existing virtual memory and PALcode stuff. 458420120120 Avoid crash in cpu_ppc_instr_loadstore.cc for 64-bit emulation 4585 (since only 32-bit access is actually implemented); fallback 4586 to generic (slow) access. 4587 Minor OpenFirmware and SPR fixes to reach further with a 4588 FreeBSD/powerpc 9.0 kernel (-Xe g4). 4589 Updating the NetBSD/pmax install instructions: 5.1 -> 5.1.1. 4590 Updating the NetBSD/cobalt install instructions 5.0.1 to 5.1.1. 4591 Redirect PowerPC SPRs 0x10c/10d to 0x11c/11d (Time Base). 459220120121 Updating OpenBSD/landisk installation instructions: 4.9 -> 5.0. 459320120507 Adding a patch from Juli Mallett for MIPS rdhwr reg 29. 459420120617 Adding a patch from James Peacock for ARM MSR fields. 459520120724 Adding a patch from David Brownlee (mkstemp on NetBSD), and 4596 trying to make things build without warnings with GCC 4.6.x. 459720120731 Adding a patch from David Brownlee: a more reasonable TOC is 4598 returned in dev_dreamcast_gdrom.cc (for NetBSD/dreamcast). 459920120906 Adding a patch from George Koehler to fix DHCP response bug. 460020120922 Fixing an ARM instruction encoding bug: for shifter_operand 4601 immediates, the carry bit should be set to bit 31 of the 4602 shifter_operand if and only if rotate_imm != 0. I've added 4603 detection for the case when this would bug out (although I 4604 have never seen it happen yet), and fixed a bug which did 4605 happen: for short register formats (i.e. no shift or other 4606 complex things), the code should not be run, but it was run 4607 anyway, leading to wrong Carry flag results for e.g. the TST 4608 instruction. This was triggered when running int64_t modulo. 460920130907 Updating NetBSD/dreamcast test instructions: 5.1 -> 6.1.1. 4610 Updating NetBSD/pmax install instructions: 5.1.1 -> 6.1.1. 461120131006 Adding a dummy Raspberry Pi machine mode. 461220131109 Updating OpenBSD/landisk install instructions: 5.0 -> 5.4. 461320140803 Some cleanup and minor progress of the Dreamcast PVR graphics. 4614 (The graphics displayed when attempting to run the original 4615 ROM now looks more reasonable.) 4616 Updating NetBSD/dreamcast test instructions: 6.1.1 -> 6.1.4. 4617 Updating NetBSD/pmax install instructions: 6.1.1 -> 6.1.4. 4618 Renaming machine mvme187 to mvme187old to avoid collision. 4619 Enabling ELF file support for 88K experiments. 462020140805 Fixing color bug in dev_pvr.cc simpleline, which is used when 4621 rendering Gouraud shaded triangles. 462220140810 Beginning on disassembly of ARM THUMB (16-bit) encoding. 462320140815 Adding rudimentary culling of clockwise / counter-clockwise 4624 polygons in the PVR rendering code. 462520140816 Fixing console.cc so that it doesn't complain about buffer 4626 overrun when pasting a lot of data. 4627 4628============== RELEASE 0.6.0.1 ============== 4629 463020150312 Making old framework config files work again (@filename). 463120180203 Reviving the (dummy) Luna 88K machine mode from r5458. 463220180204 Continuing on LUNA 88K stuff; some initial fake PROM putchar 4633 functionality for experimenting with OpenBSD/luna88k. 463420180205 Some initial OpenBSD/luna88k syscnputc() output works (hack). 463520180206 Adding enough of a hack to let OpenBSD/luna88k distinguish 4636 between LUNA 88K and 88K2, by faking FUSE_ROM string. 463720180207 Adding a semi-broken framebuffer for LUNA 88K. 463820180208 Making the code build with reasonably modern GNU C++ (6.4) 4639 and clang (3.4.1), although there are lots of warnings. 4640 Updating NetBSD/pmax install instructions: 6.1.4 -> 7.1.1. 464120180209 Making OpenBSD/luna88k print some more things, by faking 4642 more things in dev_luna88k.cc. 464320180214 Minor fixes for LUNA 88K. 4644 88K disasm shows "nop" instead of "or r0,r0,r0" now. 4645 OpenBSD/luna88k 5.2 (an older version) now reaches userland 4646 :-) issuing syscalls, but not 6.2 yet :-( and since no 4647 interrupts are implemented yet, it doesn't really do much. 4648 Removing notes about "legacy modes" in the documentation, 4649 since it was too ugly and those modes are pretty much the 4650 main focus of end-users of GXemul still. 465120180219 Basic interrupt controller and timer interrupt for LUNA88K. 465220180220 Minor progress on the LUNA88K framebuffer. 465320180223 Serial controller interrupt progress for LUNA88K; some 4654 interaction can be done with OpenBSD/luna88k ramdisk user- 4655 land but it is shaky. 465620180302 Fixing bug in dev_mp when returning amount of memory (it 4657 was truncated to 32 bits). Found during YCX5 development. 465820180410 Adding a dummy skeleton for an Intel i960 CPU component 4659 using the new framework. 466020180418 Adding dummy skeletons for a Cyclone/VH (i960VH) evaluation 4661 board, and the HP 700/RX X-terminal (i960CA). 466220180419 Implementing basic disassembly of some i960 instructions 4663 (only the CTRL group so far), and basic register dump 4664 functionality. 466520180420 i960 MEM and COBR instruction group disassembly has now 4666 been implemented. 466720180422 Adding a simple b.out file loader for i960 binaries, but 4668 no support for symbols yet. 4669 Beginning to add some REG instruction disassembly (i960). 467020180423 Implementing the rest of i960CA REG instruction disasm. 467120180424 Beginning to implement i960 dyntrans instructions (a simple 4672 'b' branch and a simple 'mov lit,reg' so far). 467320180428 Implementing happy case of an "lda" i960 instruction which has 4674 an extra displacement word, i.e. non-standard dyntrans 4675 instruction length. 467620180503 Implementing i960 lda with immediate 12-bit offset, and 4677 dummy (nop) sysctl cache invalidation (msg type 0x01). 467820180613 Fixing an old TODO for invalidating translation caches when 4679 using non-4KB pages for MIPS. This makes HelenOS 0.7.1/malta 4680 boot further than before. 468120180614 Removing an old TODO regarding MIPS count/compare interrupts; 4682 this causes HelenOS on Malta to run much faster (while 4683 NetBSD/evbmips (malta) and /cobalt are not worse off than 4684 before). 4685 Updating NetBSD/evmbips and /cobalt installation instructions 4686 to 7.1.2 (with a note about clock not being correct). 4687 More work on the other-than-4KB bug fix. 468820180618 Doubling DEFAULT_DYNTRANS_CACHE_SIZE from 48 to 96 MB. 4689 Updating more NetBSD install instructions to 7.1.2. 469020180619 When reading disk sectors from the 'disk' device (for e.g. 4691 testmips), automatically move to the next sector after 4692 reading (or writing). 4693 Allow testmips programs to detect whether the X11 framebuffer 4694 is in use or not (returns 0x0 as resolution if not). 469520180706 Adding a dummy VoCore machine skeleton using the old framework 4696 (with the wrong CPU type 4KEc instead of 24K). 469720180707 Implementing the rorv (aka rotrv?) MIPS instruction. 469820180725 More clang fixes. 469920180726 Minor progress on booting Linux/VoCore. MIPS rdhwr CC is 4700 implemented as reading the COP0_COUNT register. 470120180819 Applying a patch from Andreas Gustafsson (gson) for the MIPS 4702 div and ddiv instructions, which checks for divide overflow 4703 manually before doing the divide. 470420180820 Updating the Sprite/DECstation URLs. 470520180821 DECstation 5000/125 "3MIN" mode has been broken for quite 4706 a while; attempting to rewrite/resurrect it. 470720180822 Rewrote/refactored enough of the dec_ioasic code to make the 4708 5000/125's original PROM output its first boot messages again 4709 (and NetBSD/pmax and OpenBSD/pmax too). 471020180823 Continuing on making 5000/125 emulation work again: rewriting 4711 the interrupt code for the scc serial controller, and 4712 connecting TURBOchannel graphics cards. 4713 Fixing the LK201 keyboard self-test codes so that the 5000/125 4714 PROM doesn't complain. 4715 4716============== RELEASE 0.6.0.2 ============== 4717 471820180910 Running the SGI O2 PROM works a little bit again, with some 4719 hacks (updating the documentation). 472020180917 OpenBSD/landisk 6.3 guest OS install instruction update. 472120180918 Fixing a regression bug which was introduced September 2012 4722 (svn r5805), regarding shifted immediate values, which caused 4723 OpenBSD/cats to fail during install. 472420180920 Making ARM disassembly show THUMB instructions, if the lowest 4725 bit of the address is 1. (They can not be executed yet though.) 4726 Fixing broken "print" command. Oops. 4727 Implement some more THUMB disassembly. 4728 Fail rather than silently treating ARM instructions beginning 4729 with 0xf as nops. 4730 Allow the emulator to start in THUMB mode (lowest pc bit set). 473120180921 Continuing on ARM THUMB disassembly. 4732 Beginning to implement very slow THUMB interpretation (not 4733 dyntrans). Horrible performance-wise, but better than nothing. 473420180924 Oops, forgot to add machine_rpi.cc back in 20131006. 473520180925 Cleaning up some more files on make clean_all. Thanks to 4736 Göran Weinholt for noticing. 473720180927 Fixing big-endian ARM loads/stores (except perhaps double-word 4738 loads and stores); probably slows everything down a bit. 473920181001 Continuing on the slow THUMB instruction interpretation. 474020181008 Disk images added using -d for SGI modes are now SCSI, not IDE. 4741 Importing newer crimereg.h and crmfbreg.h from NetBSD. 474220181009 Moving around SGI O2 graphics code, in preparation for making 4743 more use of the "new" NetBSD defines. 474420181011 SGI O2 GBE now switches resolution if the OS wants it (i.e. 4745 Linux/O2), rather than requiring a recompile. 4746 Also, detection of Linux' "tweaked" (linear) mode, thus 4747 avoiding a recompile when experimenting with Linux/O2. 4748 NetBSD can now show some output on the O2 framebuffer too. 474920181012 Fixing a bug in the generic X11 framebuffer output, so that 4750 scaledown is preserved even when a guest OS switches resultion 4751 at runtime. 4752 Continuing on the SGI O2 graphics; when the nr of tiles or 4753 "partial pixels" is in mismatch with the screen resolution, 4754 the skewed result now looks the same as on my real physical O2. 475520181013 More SGI O2 graphics work: TLBs. OpenBSD can now show graphical 4756 console messages. 475720181015 Some more emulated O2 registers now return the same values as 4758 my real O2 does. 4759 Refactoring the O2 "output" to always be 24-bit, separate from 4760 the emulated framebuffer tiles (which may be e.g. 8 bit). 4761 NetBSD's colors (RG3B2 mode) are now probably more correct. 4762 Changing from 64 to 128 MB ram for the O2; this matches what 4763 my real O2 has, and it is now detected correctly both by OSes 4764 and the PROM. 4765 Implementing the O2's GBE cursor; both bitmap and crosshair 4766 modes work exactly like on the real machine now. 4767 Finally fixed the bug which caused scroll-up to not work when 4768 running the O2's PROM. 476920181016 More work on the O2 graphics; managed to get rid of the Linux 4770 tweaked special case rendering mode. 4771 Splitting the O2 GBE into a GBE part and a Rendering Engine 4772 part. 477320181017 Refactored the register representation in dev_sgi_ip32's crime 4774 interrupt controller. 4775 Adding a horrible hack to enable the use of a RAM_MIRROR at 4776 0x40000000 (for SGI O2 emulation). 477720181018 Updating the OpenBSD/sgi installation instructions (still 4778 in unsupported.html though, and still only diskless). 477920181019 Fixing some 8242 key encodings (used by the SGI O2 mode). 4780 Better memory bank stuff for SGI O2 (128 vs 256 MB RAM). 4781 Taking the FR bit of the MIPS status register into account to 4782 use 64-bit floating point registers rather than pairs of 32-bit 4783 registers (need for OpenBSD/sgi to work). 4784 Moving OpenBSD/sgi from unsupported.html to guestoes.html. 478520181022 Fixing broken MACE interrupt mechanism for SGI O2. 478620181025 Implementing MTE_MODE_COPY in the SGI O2 memory transfer engine 4787 to allow NetBSD to scroll up the framebuffer. 4788 Made the pckbc work with NetBSD/sgimips. 4789 Only allow SGI O2 MTE memory fills to pages that are in a TLB. 479020181026 Some cleanup and refactoring of the O2 rendering engine and 4791 other things. 4792 ARCS environment fixes (better values for diskless booting). 479320181030 Updating NetBSD/sgimips guest OS instructions to version 8.0. 4794 Some progress on the hw accelerated graphics operations used 4795 by NetBSD/sgimips' Xorg driver. 479620181031 Better separation of pckbc scancode translation tables 1, 2, 4797 and 3, and beginning to play around with PS/2 mouse movement. 479820181101 Fixes to the SGI O2 mec ethernet implementation's register 4799 alignment to correctly support mixed 32/64-bit access. 480020181102 Adding some PHY/MII related parts of the O2 mec device (not 4801 needed by NetBSD/OpenBSD it seems, but by the O2 PROM). 480220181106 Splitting SGI O2 rectangle drawing and line drawing into 4803 separate parts; NetBSD/sgimips' Xorg now looks reasonable. 480420181107 Progress on PS/2 mouse emulation; NetBSD accepts it as "pms0 4805 at macekbc0" in the SGI O2 emulation mode. (No actual host 4806 mouse input yet though.) 480720181108 Implementing host X11 mouse input for the pckbc device. 480820181112 More work on the O2 rendering engine Raster Ops. Moving windows 4809 within NetBSD's X11 now looks as it should. 481020181115 Changing the PCI product ID for the AIC7880 SCSI controller in 4811 the SGI O2 emulation mode to match my real O2 (0x9004, 0x8078). 481220181120 Continuing on SGI O2 graphics: "overlays" (seem to always be 4813 8 bits deep?). 481420181121 Getting rid of a hack in the O2 rendering code for "stipple 4815 patterns", by looking at the "stipple mode" register. 481620181122 Fixing an old very annoying bug where floating point number 4817 0x0 was interpreted as 2.22507e-308 rather than 0.0. Thanks to 4818 Maya Rashish (coypu@SDF.ORG) for reporting the bug. 481920181203 Beginning on test/floatingpoint infrastructure. Fixing some 4820 more floating point bugs. 4821 4822============== RELEASE 0.6.1 ============== 4823 482420181217 Implementing the ARM uxtb instruction. 4825 Implementing a simple Android boot.img file loader, and two 4826 dummy Android ARM machines ("Sony Xperia Mini" and "Finow X5 4827 Air"). 4828 Treating ARM dsb/dmb/isb instructions as NOPs for now. 482920190101 Implementing the ARM v7 movt and movw instructions. 483020190103 Implementing the ARM sxth, uxth, bfi, and ubfx instructions. 483120190110 Adding disassembly (but not execution yet) of ARM uxtab, uxtah, 4832 ldrex, and strex instructions. 483320190112 Making sure that when writing to mirrored RAM, any dyntrans 4834 translations made in either the mirror or mirrored ranges are 4835 invalidated. 483620190122 Beginning on a hack to allow emulated SGI O2 machines have more 4837 than 256 MB of RAM. Works with OpenBSD/sgi so far. 483820190206 Implementing the ARM ldrex/strex (load-linked / store- 4839 conditional) instructions, and mls (multiply-and-subtract). 484020190218 Implementing the ARM rev, uxtab, and uxtah instructions. 484120190224 Implementing the ARM sbfx instruction. 484220190227 Adding a skeleton RISC-V CPU and RISC-V "virt" machine. 4843 Refactoring some parts of the new framework to deal better 4844 with variable length instructions during disassembly. 484520190306 Applying a patch from Andreas Gustafsson (gson) to set the 4846 SA_RESTART flag in the timer sigaction call. 484720190417 Applying most of NetBSD's patches for the gxemul package (all 4848 except two). 484920190418 Adding 512 KB ROM at 0xfff80000 in the HP 700/RX machine. 485020190422 Implementing the i960 "mov reg,reg" instruction. 485120190502 Adding a section to the documentation about how to use the 4852 emulator as a debugger (breakpoints, unassembling, single- 4853 stepping, inspecting registers, and so on). 485420190515 Making sure that when invalidating virtual addresses in 4855 the dyntrans cache, take into account that not all CPUs can 4856 use all 64 bits for virtual addresses. This fixes a very old 4857 bug which affected Glatt MU/MK. Unfortunate side effect means 4858 that internal cache invalidation goes from O(1) to O(n) for 4859 64-bit address spaces. :-( 486020190519 Better fix for the issue found four days ago, taking 32-bit 4861 addressing (UX=0) on 64-bit MIPS CPUs into account. The cache 4862 invalidation code is now O(1) again. :-) 486320190520 Unfortunately, to make everything work with all guest OSes 4864 with many different kinds of CPUs (R3000, R4000, R10000), 4865 the invalidation is now O(n) again, but it works. 486620190521 De-emphasizing the new framework in the man page and in the 4867 help/usage message produced when running gxemul with no 4868 arguments, focusing on the old/legacy framework. 4869 Removing the MIPS CPU emulation and testmips machines from 4870 the new framework completely. Any MIPS enhancements and bug 4871 fixes will go into the old framework only. 4872 Renaming oldtestmips back to testmips. 487320190523 Starting to move guest OS installation instructions into 4874 individual machine pages, rather than having all of them 4875 randomly in the general guest OS page. 487620190525 Adding detection of /opt/X11/{include,lib} in the configure 4877 script, to build with X11 on MacOS with XQuartz installed 4878 (thanks to eschatologist in the #GXemul IRC channel on 4879 FreeNode for noticing this). 488020190530 Removing the "QEMU_MIPS" machine mode, which was useful back 4881 in 2006 to compare performance against QEMU's MIPS emulation. 488220190601 The fix 2018-06-13 for translation invalidation when using 4883 larger than 4 KB pages, which made HelenOS/malta run further, 4884 caused a regressions which broke NetBSD/hpcmips (on VR4121 4885 CPUs, which have 1 KB native page size). A bit of cleanup seems 4886 to have fixed this, so that both NetBSD/hpcmips and 4887 HelenOS/malta work now. 4888 Applying a fix for the ARM sbc and rsc instructions from 4889 Joergen Nilsson. 489020190606 Changing PCI device nr from 9 to 10 for the PIIX4 controller 4891 in the Malta emulation mode, to match a real dmesg from 4892 NetBSD/malta. 4893 Fixing disassembly of the MIPS TGEI, TGEIU, TLTI, TLTIU, TEQI, 4894 and TNEI instructions (NetBSD's pkgsrc patch had it wrong!). 4895 Implementing the MIPS TGEI, TGEIU, TLTI, TLTIU, TEQI, and TNEI 4896 instructions (but have not really tested them). 4897 Updating NetBSD/evbmips (Malta) installation instructions from 4898 7.1.2 to 8.0 (which needs the tgeiu instruction to boot). 4899 Fixing pmax bootpath bug (thanks for Andreas Gustafsson for 4900 figuring out what the problem was). 490120190610 Adding a memory range (ROM) dumping tool for HP 700/RX to the 4902 experiments directory. 490320190611 Expanding the MIPS lw/sw 2-, 3-, and 4-instruction combinations 4904 (when loading/storing using the same base register) so that 4905 they are used also when emulating 64-bit CPUs such as the 4906 R4400. (Note: still lw/sw, i.e. 32-bit loads and stores, NOT 4907 ld/sd.) Also stretching it to 5-instruction-sequences. 490820190614 Adding __builtin_expect (likely/unlikely) detection to the 4909 configure script. 4910 4911============== RELEASE 0.6.2 ============== 4912 491320190626 Rounding up disk image sizes to full cylinders; fixes a bug 4914 where guest OSes could fail to read the end of e.g. a .tar.gz 4915 file supplied as a disk image on the command line. 491620201006 Applying a rather large patch from Jason Thorpe for using 4917 /dev/tap devices in addition to the existing networking modes. 4918 The patch also consists of enhancements to the DEC21143 and 4919 Lance ethernet devices to perform packet filtering. 492020201015 Adding support for masks for memory mapped components in the 4921 new framework. Used so far by the HP 700/RX, which has 2 MB 4922 RAM repeated throughout 0x30000000..0x3fffffff. 492320201101 bootblock.cc now parses SGI disk boot blocks, and tries to 4924 load the OSLoader (sash), if booting without an explicitly 4925 provided OS kernel. 492620201103 The ECOFF file loader can now (barely) load relocated binaries, 4927 such as "sash" from an IRIX installation on my real O2. 492820201105 Some minor refactoring of arcbios environment variables etc, 4929 to attempt to get emulated O2 boot-from-disk image (or cdrom 4930 image) to work better. 493120210116 Include ASID and VPN2 in MIPS load/store misalignment 4932 exceptions (patch from Nick Hudson). 493320210123 Adding a patch from Luchezar Georgiev for missing variant of 4934 rot for 88100 (immediate argument), and for missing addu_cio 4935 and subu_cio instructions. 4936 Inspired by Luchezar Georgiev's patch for subu_cio, a closer 4937 look at the subu borrow bit resulted in a bug fix which finally 4938 allows a OpenBSD/luna88k 6.8 ramdisk to boot all the way to 4939 userland. 494020210127 Writing some ugly glue code to connect the Lance Ethernet 4941 device (dev_le) to the LUNA88K machine. An OpenBSD/luna88k 6.8 4942 ramdisk can now (barely) reach the internet using TCP/IPv4. 494320210130 Writing guest OS install instructions for running OpenBSD/ 4944 luna88k with root-on-nfs, which involves using NetBSD/pmax as 4945 an NFS server and OpenBSD/sgi (!) to run MAKEDEV. 494620210207 Fixing a spelling mistake in the 88K fdiv.sss instruction, 4947 making self-compilation of [an older version of] GXemul inside 4948 OpenBSD/luna88k get further. 494920210209 Adding keyboard support to dev_luna88k. 495020210213 Implementing exception cases in 88K xmem_slow implementation. 495120210214 Implementing the fdiv.dss 88K instruction. 495220210215 Implementing the fsub.sss 88K instruction. 4953 4954============== RELEASE 0.6.3 ============== 4955