Parent Directory | Revision Log
++ trunk/HISTORY (local) $Id: HISTORY,v 1.676 2005/04/07 15:14:55 debug Exp $ Changelog for GXemul: --------------------- 20030829 Skeleton. ELF stuff. Some instructions. 20030830 Simple test programs using +-*/^|&%, function calls, loops, and stuff like that work. 20030903 Adding more instructions, fixing some bugs. 20030907 Making adding of memory mapped devices easier, although the framework isn't built for speed. Adding a -q switch to turn of debug output. 20030911 Trying to fix some bugs. Minor changes. Some COP0 registers are now meaningful. 20030919 Making APs (non-bootstrap cpus) available via a simple 'mp' device. Implementing ll/lld and sc/scd (for atomic memory updates, needed by MP operating systems). 20030923 Minor updates: more instructions (divu, mulu, lwu, perhaps some more), and opcode usage statistics. 20030924 If the next instruction is nullified (for 'branch likely' type of instructions), counters for delays etc are now decreased as they should. Adding some comments. Adding instructions: movz, movn. Adding a simple mandelbrot test to mipstest.c. 20030925 Adding instructions: bltzl, bgezl, lh, lhu, sh, mfc*, mtc*. Adding a dummy instructions: sync, cache. Adding minimal DECstation PROM functionality: printf() and getsysid() callback functions. Beginning work on address translation. 20030927 Adding some more cop0 functionality (tlb stuff). Adding mc146818 real-time clock. (Skeleton stuff.) 20030928 Adding a dc7085 serial console device (dummy, but enough to output chars to the screen). NetBSD uses this for the MIPSMATE 5100. 20030929 Working on the TLB stuff. Adding instructions: srlv, tlbwr, tlbr, tlbp, eret. 20030930 Trying to find a bug which causes NetBSD to bug out, but it is really hard. Adding some a.out support (for loading an old OpenBSD 2.8/pmax kernel image). Adding instructions: lwc*, ldc*, swc1 and swc3. Beginning to add special code to handle the differences between R4000 (the default emulation) and R2000/R3000. 20031001 Symbol listings produced by 'nm -S' can be used to show symbolic names for addresses. (-S) 20031002 Fixing the i/d fake cache for R2000/R3000. It's still just an ugly hack, though. Fixing minor bugs to make the 3100 emulation use the dc device (serial console) correctly. So far, 5100 and 3100 are the only ones that get far enough to print stuff, when booting NetBSD. 20031004 Adding skeleton Cobalt machine emulation (-E). Adding a dummy ns16550 serial controller, used by the Cobalt machine emulation. 20031006 Adding unaligned load/store instructions (lwl, lwr, ldl, ldr, swl, swr, sdl, sdr), although they are not tested yet. Fixed a "data modified on freelist" bug when running NetBSD/cobalt: setting the top bit of the index register when a tlbp fails (as the R4000 manual says) isn't sufficient, I had to clear the low bits as well. Adding break and syscall instructions, but they are not tested yet. Adding a 'gt' device, faking a PCI bus, for the Cobalt emulation. 20031008 Adding initial support for HPCmips (-F), a framebuffer device using X11. NetBSD/hpcmips can output pixels to the framebuffer, but that's about it. 20031009 Fixing the NetBSD/pmax bug: the "0/tftp/netbsd" style bootstring was only passed correctly in the bootinfo block, it needs to be passed as argv[0] as well. Adding instructions: mtlo, mthi. Rearrangning the source tree layout. Adding console input functionality. The NetBSD/cobalt kernel's ddb can now be interacted with. 20031010 Adding experimental (semi-useless) -t option, to show a function call tree while a program runs. Linux/cobalt now prints a few messages, but then hangs at "Calibrating delay loop..." unless an ugly hack is used (setting a word of memory at 0x801e472c to non-zero). 20031013 Adding a framebuffer device used in DECstation 3100; VFB01 for mono is implemented so far, not yet the VFB02 (color) variant. Rewriting the framebuffer device so that it is usable by both HPCmips and DECstation emulation. 20031014 Minor fixes. Everything should compile and run ok both with and without X11. 20031015 Adding support for ECOFF binary images; text, data, and symbols are loaded. (Playing around with ultrixboot and ultrix kernels.) 20031016 The DECstation argv,argc stuff must be at 0xa0000000, not 0x80000000, or Ultrix kernels complain. Adding R2000/R3000 'rfe' instruction. Implementing more R2K/R3K tlb specific stuff, so that NetBSD boots and uses the tlb correctly, but much of it is ugly. (Needs to be separated in a cleaner way.) ECOFF symbols sizes are now calculated, so that offsets within symbols are usable. 20031017 DECstation bootstrings now automatically include the correct name of the kernel that is booting. Ultrix boots a bit. 20031018 ELF symbols are now read automatically from the binary. -t trace looks a bit better (string arguments are shown). Trying to get initial R5900 stuff working (the 128-bit CPU used in Playstation 2). Fixing a minor bug to make the VFB02 (color framebuffer) device work better, but it is still just 256 grayscales, not real color. Ultrix can now use the framebuffer (it calls it PMAX-CFB). A machine can now consist of CPUs of different types. Adding instructions: daddi, mov_xxx, mult_xx. The xxx instructions are not documented MIPS64 instructions, but NetBSD/playstation2 uses them. Perhaps VR5432 instructions? Adding sign-extension to 32-bit mult. Adding Playstation 2 devices: dmac (DMA controller), gs (Graphic something?), and gif (graphics something else, which has access to the PS2's framebuffer). NetBSD/playstation2 works a bit, and prints a few bootup messages. 20031020 The cpu_type field of the cpu struct now contains usable values in a much better form than before. This simplifies adding of new CPU types. 20031021 Fixing an interrupt related bug: pc_last was used, but for interrupts this was incorrect. Fixed now. Fixing a load/store related bug: if a load into a register was aborted due to an exception, the register was still modified. The mc146818 rtc now reads its time from the system's time() function. Fixing another exception bug: if loading an instruction caused an exception, something bogus happened as the emulator tried to execute the instruction anyway. This has been fixed now. 20031023 Adding a quick hack which skips "while (reg --) ;" kind of loops. NetBSD/pmax suddenly reached userland (!), but only once and attempts to repeat it have failed. I believe it is problems with my interrupt handling system. 20031024 Adding 8-bit color palette support to the framebuffer. Connecting the pmax vdac device to the framebuffer's rgb palette. Fixing a bug in the dc device, so that console input is possible; interaction with NetBSD/pmax's built-in kernel debugger works now. Symbol sizes for file formats where symbol size isn't included are now calculated regardless of file format. Physical memory space can now be smaller than 64 bits, improving emulation speed a bit. Doing other minor performance enhancements by moving around some statements in critical parts of the code. 20031025 Minor changes to the dc device. 20031026 Adding support for reading symbols directly from a.out files. (Works with OpenBSD/pmax binaries.) Hardware devices may now register "tick functions" at specific cycle intervals in a generic fashion. All four channels of the dc serial controller device should now work; playing around with keyboard scan code generation when using the DECstation framebuffer. Making various (speed) improvements to the framebuffer device. 20031027 Playing around with the sii SCSI controller. 20031028 Minor fixes. Adding an SGI emulation mode (-G), and some ARCBIOS stuff, which SGIs seem to use. Adding getbitmap() to the DEC prom emulation layer, so some more -D x models become more usable. Adding a dummy 'ssc' serial console device for DECsystem 5400 emulation. Playing around with TURBOchannel stuff. 20031030 Minor fixes. Adding the sub instruction. (Not tested yet?) Sign-extending the results of multu, addi,addiu, add,addu,sub,subu,mfcZ. Adding a colorplanemask device for DECstation 3100. Fixed the NetBSD/pmax bug: I had forgotten to reset asid_match to 0 between tlb entry checks. :-) Now userland runs nicely... 20031031 Fixing more bugs: unaligned load/store could fail because of an exception, but registers could be "half updated". This has been fixed now. (As a result, NetBSD/pmax can now run with any of r2000,r3000,r4000, r4400, or r5000.) Adding some R5K and R10000 stuff. (Note: R5K is NOT R5000. Weird.) Adding dummy serial console (scc) for MAXINE. MAXINE also works with framebuffer, but there is no color palette yet (only black and white output). 20031101 Moving code chunks around to increase performance by a few percent. The opcode statistics option (-s) now shows opcode names, and not just numbers. :-) Fixing the bug which caused NetBSD/pmax to refuse input in serial console mode, but not in keyboard/ framebuffer mode: the osconsole environment variable wasn't set correctly. Adding DEC PROM getchar() call. The transmitter scanner of the dc device now scans all four channels at once, for each tick, so serial output is (approximately) 4 times faster. 20031103 Adding a dummy BT459 vdac device, which does nothing but allows a PMAG-BA turbochannel graphics card to be used as framebuffer. Several DECstation machines (-D 2, 3, and 4) can now use TURBOchannel option card framebuffers as console, for output. (Keyboard input is still not implemented for those models.) Only PMAG-AA (1280x1024x8) and PMAG-BA (1024x864x8), both using BT459 vdac, have been tested so far. Modifying the X11 routines so that several framebuffer windows now can be used simultaneously (if several graphics option cards are to be emulated concurrently). 20031104 DEC MIPSMATE 5100 (KN230) interrupts are shared between devices. I've added an ugly hack to allow that to work, which makes it possible to boot NetBSD into userland with serial console. 20031106 Removing the -S (symbol) option, as symbol files can now be given in any order together with other file names to be loaded. cookin tipped me about using (int64_t) (int32_t) casts instead of manually sign-extending values. Casting sometimes increases performance, sometimes decreases. It's tricky. Importing mips64emul into CVS. 20031107 Adding a generic ARC emulation mode. Increasing performance of the framebuffer by not updating it (or the XImage) if a write to the framebuffer contains exactly what is already in it. (This improves scrolling speed and initialization.) Adding initial MIPS16 support. Adding initial disk image support (-d command line option), but this will not be used until I get some kind of SCSI-controller emulation working. 20031108 Adding the first MIPS16 instructions: "move y,X", "ld y,D(x)", and "daddiu S,K" (but the last one doesn't work yet). Fixing the console environment variable for Enough of the 'asc' controller is now implemented to let NetBSD get past scsi disk detection when no disk images are used. DECstation machine type 2; both serial console and graphical console work now. Other X-windows bit-depths than 24 bits work now, but colors are still not correct in non-24 bit modes. Keypresses in X framebuffer windows are now translated into console keypresses. (Normal keys, but not cursor keys or other special keys.) 20031111 Adding support for X11 using non-24-bit output. 20031120 Adding X11 mouse event to emulated mouse event translation, but it's not tested yet. Trying to get more of the SCSI controller emulation to work. 20031124 Raw binaries can now be loaded into memory. 20031204 Adding srec binary support. 20031220 Adding some super-ugly arcbios emulation code. Making some progress on the SGI and ARC machine emulations. 20031222 SGI and ARC progress. Multiple CPUs are now added to the arcbios component tree (although NetBSD cannot actually use more than one). 20031228 Adding 'crime' and 'macepci' fake devices for SGI emulation. Finally implementing the cop0 'compare' register. Improvements to the ns16550 device, but it is still incomplete. SGI userland is now reached, but interaction is broken (due to the buggy ns16550). 20031229 Adding some more instructions: teq, dsllv Adding a Nintendo 64 emulation mode (skeleton). Adding R4300 and R12000 to the cpu list. 20031230 Adding bltzal, bltzall, bgezal, bgezall (not really tested yet). Fixing the 16550 serial controller device (by not supporting fifo, so in fact it emulates a 16450 instead). This causes NetBSD/sgimips to run nicely into userland, sysinst, and so on. Some ARC/RD94 interrupts seem to work ok now, but i/o interrupts are still not correctly implemented. NetBSD/arc userland is reached and can be interacted with, but there's no sysinst (?). 20040103 Trying to get some Irix stuff to work, but it's hard. Fixing some Cobalt/linux problems. 20040104 Adding a dummy 8250 device, so that Linux/sgimips can output console messages. Adding dmultu. (The same as dmult, so I'm not sure it's correct. Perhaps dmultu is correct and dmult is wrong...) Fixing a bug in unaligned load/stores of 64-bit values (a cast was needed). Linux/sgimips in 64-bit works a bit more than before. Adding simple (polled) input functionality to dev_zs. Making some progress on SGI-IP22 (IP32 still works best, though). Fixing the mc146818 clock device in ARC/NEC and SGI emulation modes, the year field was not correct. Adding a fake 'pref' instruction (lwc3). 20040106 Separating out memory.h from misc.h. Refactoring of a lot of small code fragments. The PCI bus device is now shared between Cobalt, SGI, and ARC. Support for RAM mirroring (dev_ram.c, not really tested yet). Ugly hack to select the largest of ELF string symbol tables, if there are more than one. Memory hole fix for ARCBIOS, and a fix for very large (>= 4GB) amounts of emulated RAM. TGA (DEC 21030) PCI graphics device. NetBSD/arc can boot with this card and use it as a framebuffer console. 20040107 Adding a fix (partly incorrect) to daddi, to allow Linux/sgimips to boot in 64-bit mode. 20040108 Fixing a sll/nop bug (rd==0 for nop, not sa==0 as before). 20040109 Trying to get an SGI-IP32 PROM image to boot. 20040110 Faking R10000 cache things. The PROM image boots, although it takes almost forever for it to realize that there is no keyboard. The 'gbe' SGI-IP32 graphics device works enough to display the Linux framebuffer penguin in the upper left corner :-) 20040111 -p and -P addresses can now be given as symbol names, not just numeric values. Experimenting with adding a PCIIDE (dev_wdc) controller to the Cobalt emulation. 20040120 Adding src/bintrans.c. No code yet, but this is a place for ideas to be written down. Increasing performance a little bit by inlining the check for interrupts (which occurs for every instruction). 20040124 Experimenting with pure userland (syscall) emulation. 20040127 Fixes for compiling under Solaris. 20040206 Some bintrans experiments. 20040209 Adding some simple Ultrix userland emulation syscalls. 20040211 Adding decprom_dump_txt_to_bin.c to the experiments/ dir. Adding a section to doc/ on how to use DECstation PROM dumps. Adding a hello world example to doc/ as well. 20040218 TURBOchannel slots that are empty now return a DBE exception, so that Ultrix and DECstation PROMs don't complain about broken TURBOchannel ROMs. Working some more on the machine-dependant interrupt stuff. 20040219 Trying out some Linux/DECstation kernels (semi-successfully). 20040222 YES! I finally found the bug that caused Linux/SGI-IP32 to only work on Alpha, not on 32-bit machines. It was a shift left, probably done using 6 bits on alpha, 5 bits on 32-bit machines. 20040223 Some minimal DEC KN5800 progress; Ultrix prints some boot messages, detects 16 XMI R3000 cpus, and get a NULL panic. It's all fake, though, the CPUs don't actually work. Still, better than nothing :-) 20040225 An Ultrix OSF1 kernel with a ramdisk now boots :-) (It was a problem with ultrixboot not giving the same arguments as NetBSD's boot program.) 20040225(later) Fixing a bug in the DECstation dc serial device; digits 0-9 were translated to numeric keypad 0-9, not the normal 0-9. (This caused Ultrix to print escape sequences instead of digits.) 20040226 Some progress on machine-dependant interrupt delivery for -D7 (Maxine) and -D4, and some more 'scc' serial controller featuers are implemented (but no interrupts/ dma/keyboard/mouse stuff yet). 20040228 Progress on the scc controller; -D4 works in both serial console mode and with keyboard (graphical console), but no mouse yet. 20040301 SGI mace interrupts are now done using the new machine- independant interrupt system. 20040303 Fixing an R5900 bug; the lowest 6 bits have special meaning for coprocessor functions, not just 5 bits as on non-R5900 CPUs. (This fixes a bug which caused NetBSD to crash.) 20040304 Adding enough (fake) DMA capabilities to the ioasic device to allow Ultrix to print boot messages in the -D3, -D4, and -D7 modes, and also print graphical console messages in -D4 and -D7 modes. -D11 (DEC5500) polled getchar added (to the 'ssc' device). Adding the 'madd' instruction (including R5900 weird stuff). 20040304(later) Playstation 2's GIF can now copy 640x16 pixel chunks, allowing NetBSD to scroll up the framebuffer. The cursor also works better now. Playstation 2 bootinfo RTC data should now be passed correctly to the running kernel. DECstation rtc year should be either 72 or 73, anything else will cause Ultrix to give a warning about invalid year. 20040306 Combining playstation2's dmac, interrupt, and timer devices into one (ps2_stuff). Adding some R5900 instructions: mfsa, mtsa, pmfhi, pmflo, por, lq, and sq. (Most of them are just guesses, though.) Implementing my own XImage putpixel routine, which can be inlined... significantly faster than normal XPutPixel. :-) 20040307 Implementing the basic functionality of a "PMAG-CA" pixelstamp accellerated framebuffer device. Works with NetBSD and Ultrix, but no cursor or color support. 20040308 PMAG-CA, -DA, and -FA pixelstamps seem to work now. Adding a hack to allow a pmax/mach kernel to be loaded (it's a COFF file with 0 (!) sections). Initial test of bt459 + framebuffer cursor support. 20040309 Fixes/updates of dev_dec5800 and dev_ssc (and dev_decxmi) allow a KN5800 Ultrix-OSF1-ramdisk kernel to boot all the way into userland and be interacted with. The bt459 cursor should now look semi-nice, but it is still a bit fake. 20040310 Moving the DEC CCA stuff from src/machine.c into a separate device file (devices/dev_deccca.c). An ugly hack added to allow some more OSF/1 kernels (almost a.out, but without many of the header fields) to load. 20040314 Adding PMAG-JA and PMAG-RO (1280x1024 x 8-bit) TURBOchannel graphics devices. They work in Ultrix, but only monochrome and no cursor, because there are no ramdacs or such yet. 20040315 Pixelstamp solid fill now supports colors other than just zero-fill. Adding a (new) regression test skeleton. 20040321 Some really minor updates. 20040323 Fixes to allow SGI-IP20 and IP22 to work a bit better (aliased memory), and adding "private" firmware-like vectors to arcbios emul. An IP22 Irix kernel gets far enough to print an assertion warning (and then double panics). :-) 20040324 Adding a generalization hack to the SCC serial controller to work with SGI-IP19 (in addition to DECstations). Adding the 'sdc1' instruction. Some progress on various SGI emulation modes. 20040325 Minor updates. 20040326 Fixed a 'madd' bug (r5900). NetBSD/playstation2 now reaches userland correctly. And a simple fix which allows NetBSD timer interrupts to be triggered; NetBSD uses T_MODE_CMPE (compare), while Linux uses _OVFE (overflow). 20040328 Linux on Playstation 2 boots a bit. The Playstation 2 graphics controller has been extended to work better with NetBSD, and to include some Linux support as well. Some interrupt handling enhancements on Playstation 2, needed for Linux' dma. 128-bit loads and stores (lq and sq) are allowed, although the top half of quadwords are not modified by other instructions. (Linux uses lq and sq.) Big-endian X Windows servers now display correct rgb color, not bgr as before. 20040330 Some minor updates to the documentation. 20040401 Adding a dummy ps2 OHCI device. 20040402 Progress on the asc SCSI controller. 20040406 Hack to allow ./configure, make to work on HP-UX B.11.00 on HPPA-RISC, gcc 3.3.2. (Does not work with HP's cc.) More progress on the asc SCSI controller. Fixing INQUIRY, adding READ_CAPACITY, adding READ. Works a bit with NetBSD and some (but not all) Ultrix kernels, on DECstation type 2. Adding WRITE, SYNCRONIZE_CACHE. Mounting disks works in NetBSD :-) It is a bit buggy, though. Or something else is buggy. 20040407 The bug is triggered by gunzip during NetBSD/pmax install. 20040408 Fixing a bug (non-nul-terminated string) which caused X11 cursors to not display on Solaris. Unnecessary X11 redraws are skipped (removes some weird delays that existed before), and cursors are redrawn on window exposure. (The cursor functionality has been moved from dev_fb.c to x11.c.) 20040411 Fixing the DC7085 device so that Ultrix doesn't behave weird if both tx and rx interrupts occur at the same time. More advancements on the asc SCSI controller. More disk image filename prefixes are now recognized; c (for CD-ROM, as before), d for disk, b for boot device, r for read-only, and 0-7 for scsi id. Mounting disks works in Ultrix. Installing to disk usually crashes for various reasons, but an OSF/1 install gets relatively far (similar to the NetBSD/pmax install). 20040412 Trying to find the bug. 20040415 Finally found and fixed the bug; SCSI reads and writes (actually, any data in or data out) can be split up into multiple DMA transfers. That stuff was only partially implemented, and the part that was implemented was buggy. It works now. NetBSD/pmax and Ultrix 4.3 seems to like the SCSI stuff enough to install almost all the way. 20040415 (more) Adding a hack which allows a host's cdrom device to be used as a cdrom device inside the emulator, eg /dev/cd0c. Making the cycle counter int64_t instead of long, as a 'long' overflows too easily on 32-bit machines. (The bug is still there, though.) I've now verified that a full NetBSD/pmax install can be done. If using a PMAG-AA graphics board, startx brings up X :-) mips64emul can be compiled inside NetBSD inside mips64emul, and it can run NetBSD in that environment. (I'm getting dizzy... :-) 20040417 Moving some coprocessor stuff from cpu.c to coproc.c. 20040424 Adding a BT455 vdac for PMAG-AA. Black and white are now rendered correctly in Xpmax. Adding colormap support to the BT459 device, for PMAG-BA. 20040425 Fixing a buffer length bug, which caused an Ultrix 4.5 install to bug out on an i386 host. 20040429 FPU experiments. 20040502 More FPU experiments. Speedup for exception debug messages: in quiet mode, debug messages were still evaluated, which took a relatively large amount of time. 20040503 Most FPU stuff fixed, but there is at least one known bug left; ps axu in NetBSD triggers it (ps loops forever). 20040504 A default install of Ultrix 4.5 succeeded! It boots up with a graphical login. Fixing the keyboard repetition bug (a lk201 "up" (release) scancode is now sent after every key). 20040505 Both CR and LF now produce the same lk201 scancode, so that pressing 'enter' works as expected in Ultrix. 20040506 Adding a vaddr to paddr translation cache, causing a speedup of perhaps 50% or more. 20040507 Fixing PMAG-BA color for Ultrix. (Ultrix relies on interrupts coming from the TURBOchannel slot to update the palette.) 20040508 Fixing cursor positioning for PMAG-BA. 20040511 Prints current nr of instructions per seconds, not only average, when using -N. 20040515 Some more bintrans experiments. 20040606 Adding ARCBIOS GetReadStatus() and Read(). Adding some instructions: tlt, tltu, tge, tgeu, tne. 20040607 Adding the dsub instruction. Some minimal progress on SGI-IP30 emulation. Applying a patch from Juli Mallett to src/file.c (I'm not sure yet if it breaks or fixes anything). Some minor fixes for SGI-IP22 (such as faked board revision numbers). 20040608 ll/sc should now fail if any unrelated load/store occurs. Minor changes to the configure script. Adding some ifdefs around code which is not often used (the mfhi/mflo delay, and the last_used TLB experimental code); this might cause a tiny speedup. 20040609 Minor fixes. 20040610 Various minor SGI fixes (64-bit ARCS stuff, progress on the CRIME/MACE interrupt system, and some other random things). 20040611 More crime/mace progress, and some more work on pckbc. KN5800 progress: adding a XMI->BI adapter device; a disk controller is detected (but it is just a dummy so far). 20040612 Adding "dev_unreadable", which simplifies making memory areas unreadable. (NetBSD on SGI-IP22 no longer detects non-existant hpc1 and hpc2 busses.) Implementing rudimentary support for IP22 "local0" and "local1" interrupts, and "mappable" local interrupts. Some progress on the WDSC SCSI controller on IP22, enough to let NetBSD get past the disk detection and enter userland! :-) The zs (zilog serial) device now works well enough to let NetBSD/sgimips be interacted with on IP22. :-) (Though it is very ugly and hardcoded.) 20040613 IP32 didn't work last night, because there were too many tick functions registered. That has been increased now. Trying out NetBSD/sgimips 2.0 beta kernels. There are some differences compared to 1.6.2, which I'm trying to solve. Interrupt fixes for IP32: _serial and _misc are different. Separation of IP22 (Full-house) and IP24 (Guiness). 20040614 Modifying the memory layout for IP20,22,24,26 (RAM is now offset by 128MB, leaving room for EISA registers and such), and moving around some code chunks. This is not well tested yet, but seems to work. Moving parts of the tiny translation cache, as suggested by Juli Mallett. It seems that the speedup isn't as apparent as it was a few weeks ago, though. :-( Speedups due to not translating addresses into symbol names unless the symbol name is actually printed. Added support for loading old big-endian (Irix) ECOFF kernels (0x60 0x01 as the first two bytes). 20040615 (late) Adding enough SGI IP20 (Indigo) support to let NetBSD 2.0 enter userland :-) No interrupt specifics are implemented yet, so it hangs while doing terminal output. 20040618 Experimenting with the WDSC SCSI controller for IP20,22,24. 20040620 Adding a program which converts SGI prom dumps from text capture to binary, and some hacks to try to make such an IP22 PROM to work better in the emulator. 20040621 Removing the Nintendo 64 emulation mode, as it is too uninteresting to support. Adding SCSI tape device support (read-only, so far). Fixing a bug which caused the cursor to be corrupted if new data was written to the framebuffer, but the cursor wasn't moved. 20040622(early) Finally! Making progress on the SCSI tape stuff; when going past the end of a file, automagically switch to the beginning of the next. 20040622(late) Trying to track down the last SCSI tape bugs. Removing _all_ dynamic binary translation code (bintrans), starting from scratch again. 20040623(early) Performing a general code cleanup (comments, fixing stuff that led to compiler warnings, ...). Disabling MIPS16 support by default, and making it a configure time option to enable it (--mips16). This gives a few percent speed increase overall. Increasing performance by assuming that instruction loads (reading from memory) will be at the same page as the last load. (Several percent speedup.) Moving the list of kernels that can be found on the net from README to doc/. 20040624 Finally! I found and fixed the bug which caused 'ps', 'top', 'xclock', and other programs in NetBSD/pmax to behave weird. Increasing performance by a few percent by running as many instructions in a row as possible, before checking for hardware ticks. When booting from SCSI tapes on DECstation, the bootstring now contains 'tz' instead of 'rz'. Adding a second ARC machine mode, "Acer PICA-61", -A2. Disabling the support for "instruction delays" by default (it has to be enabled manually in misc.h now, but is never used anywhere anyway). Other minor optimizations (moving around stuff in the cpu struct in misc.h, and caching cpu->pc in cpu.c). Separating the tiny translation cache into two, one for code and one for data. This gives a few percent speed increase. 20040625(early) I think now is a good time for a "feature freeze", to let the code stabilize and then make some kind of first release. 20040625(later) Adding a -v (verbose) command line option. If -v is not specified, the emulator goes into -q (quiet) mode just before it starts to execute MIPS code. 20040627 The configure script now adds -fomit-frame-pointer to the compile flags if the $CC seems to be able to handle that. Found and fixed a serious interrupt bug in BT459 (Ultrix' behaviour required a hack, which was incorrect), so performance for machines using the PMAG-BA framebuffer is now improved. For X11 bitdepths other than 8 or 24, a warning message is printed at startup. A number of other minor fixes, optimizations, updated comments and so on. Adding a BUGS file, a list of known bugs. Adding a minimal man page, doc/mips64emul.1. 20040628 Hacks for faking the existance of a second level cache (ARCBIOS and other places). An important fix for dc7085: tx interrupts should happen before rx interrupts, not the other way around as it was before. (This speeds up NetBSD boot on DECstation, and fixes a bug which Ultrix triggered on heavy keyboard input.) A couple of other minor fixes. Framebuffer fix: there was a bug which caused the rightmost/ bottom pixel to sometimes not be updated, when running in scaledown mode. This is now fixed. Adding a small program which removes "zero holes" from harddisk image files. 20040629 More minor fixes. 20040629(later) Adding -A3 (NEC RISCstation 2200) (this is similar to the 2250 model that NetBSD/arc can already boot all the way into userland and be interacted with), and -A4 (Deskstation Tyne). Some more minor fixes. 20040630 Adding support for 15 and 16 bits X11 framebuffers, and converting from XYPixmap to ZPixmap (this fixes the problem of updates appearing in "layers" on some X servers). The pixels in the mouse cursor (for BT459) are now colored as the emulated OS sets them, although no transparency masking is done on the edges of the cursor yet. (In plain English: the mouse cursor is no longer just a white solid square, you can actually see the mouse cursor image on the white square.) ============== RELEASE 0.1 ============== 20040701 The -j option now takes a name, the of the kernel as passed on to the bootloader. ("netbsd" is the default name.) Adding support to load bootstrap code directly from a disk image, for DECstation. Both NetBSD/pmax and Ultrix boot straight of a disk image now, with no need to supply a kernel filename on the command line. (Ultrix still needs -j vmunix, though, to boot from /vmunix instead of /netbsd.) 20040702 Minor bugfix (some new untested code for X11 keypresses was incorrect). 20040702(later) Adding an ugly hack for CDROMs in FreeBSD; if an fread() isn't done at a 2048-byte aligned offset, it will fail. The hack tries to read at 2048-byte aligned offsets and move around buffers to make it work. Adding video off (screen blanking) support to BT459. ============== RELEASE 0.1.1 ============== 20040702(later) Cleanup to remove compiler warnings (Compaq's cc, Solaris' cc, and gcc 3.3.3/3.3.4 in Linux), mostly by putting ULL on large numeric constants. Better support for scaledown of BT459 cursors, but still not color-averaging. Beginning the work on adding better memory latency support (instruction delays), enabled by the --delays configure option. 20040703 Modifications to the configure script so that a config.h file is created, containing things that were passed along as -Dxxx on each cc command line before. More work on instruction latency support; trying to separate the concepts of nr of cycles and nr of instructions. 20040704 Working on R2000/R3000 caches. Adding a '--caches' option to the configure script. Various small optimizations. R3000 caches finally work. (I know that there is at least one bug, regarding interrupt response.) 20040705 Working on the 'le' device, and on a generic (device independant) networking framework. le can transmit and receive packets, and the network framework fakes ARP responses from a fake gateway machine (at a fixed ip address, 10.0.0.254). Adding a '-c' command line option, which makes emulated_hz automatically adjust itself to the current number of emulated cycles per host CPU second (measured at regular intervals). 20040707 Removing the '-c' option again, and making it the default behaviour of the emulator to automatically adjust clock interrupts to runtime speed (as long as it is above 1 MHz). (This can be overridden by specifying a static clock rate with the -I option.) Updating the doc/ stuff a bit. Generalization of the DECstation bootblock loading, to work with Sprite/pmax. Lots of other minor modifications to make Sprite work, such as adding support for DECstation "jump table" PROM functions, in addition to the old callback functions. Sprite boots from a disk image, starting the kernel if the argument "-j vmsprite" is used, but it seems to not like the DBE exceptions caused by reading empty TURBOchannel slots. :-/ 20040708 Minor changes and perhaps some tiny speed improvements. The Lance chip is (apparently) supposed to set the length of received packets to len+4. (I've not found this in any documentation, but this is what NetBSD expects.) So now, ICMP echo replies work :-) UDP works in the outgoing direction, in the incoming direction, tcpdump can see the packets but they seem to be ignored anyway. (Weird.) Adding a separate virtual-address-to-host-page translation cache, 1-entry for loads, 1-entry for stores. (For now, it only works on R4000 as there are conflicts with cache usage on R3000). Changing the lower clock speed bound from 1 MHz to 1.5 MHz. 20040709 Incoming UDP checksums were wrong, but are now set to zero and NetBSD inside the emulator now accepts the packets (eg. nameserver responses). Host lookups and even tftp file transfers (using UDP) work now :-) Adding a section on Networking to the Technical documentation, and a preliminary NetBSD/pmax install instruction for network installs to the User documentation. Some updates to the man page. 20040709(later) Fix to the TURBOchannel code to allow Sprite to get past the card detection. Seems to still work with Ultrix and NetBSD. This also makes Linux/DECstation properly recognize both the Lance controller and the SCSI controller. Linux 2.4.26 from Debian boots nicely in framebuffer mode :-) 20040710 Some bits in the KN02 CSR that were supposed to be readonly weren't. That has been fixed, and this allows Linux/DECstation to get past SCSI detection. :-) Minor updates to the ASC controller, which makes Linux and OpenBSD/pmax like the controller enough to be able to access SCSI devices. OpenBSD/pmax boots from a disk image for the first time. :-) Linux detects SCSI disks, but I have no bootable Linux diskimage to test this with. Updating the doc/ to include instructions on how to install OpenBSD/pmax onto a disk image. Naively added a PMAGB-BA (1280x1024x8) in hopes that it would basically be a PMAG-BA (1024x864x8) in higher resolution, but it didn't work that way. I'll have to look into this later. Adding a -o option, useful for selecting '-s' (single user mode) during OpenBSD install and other things. After a lot of debugging, a serious bug related to the tiny cache was found; Linux just changes the ASID and returns when switching between processes in some occasions without actually _writing_ to the TLB, and I had forgotten to invalidate the tiny cache on such a change. 20040711(early) I've been trying to repeat the OpenBSD install from yesterday, but appart from the first initial install (which was successful), I've only been able to do one more. Several attempts have failed with a filesystem panic in the middle of install. I'm not sure why. 20040711 I found the "bug": wget downloaded the simpleroot28.fs.gz file as read-only, and gunzip preserved those flags. Thus, OpenBSD's installer crashed as it didn't get its writes through to the disk. Parts of the 1280x1024x8 PMAGB-BA graphics card has been implemented, it works (unaccelerated) in NetBSD and OpenBSD, but Ultrix does not seem to like it. Cleaned up the BT459 cursor offset stuff a bit. Trying to make the emulated mouse coordinates follow the host's mouse' coordinates (for lk201, DECstation), by "de-accelerating" the data sent to the emulated OS. 20040711(later) Fix so that Sprite detects the PMAG-BA correctly. Adding some stuff about NFS via UDP to the documentation. Fixed the 'update flag' for seconds, so now Sprite doesn't crash because of timer-related issues anymore. Fixing KN02 interrupt masks a bit more, to make Sprite not crash. Sprite now runs quite well. 20040712 Working on IP/UDP fragementation issues. Incoming UDP packets from the outside world can now be broken up into fragments for the guest OS. (This allows, for example, OpenBSD/pmax to be installed via nfs.) Outgoing fragmented packets are NOT yet handled. Linux doesn't use 64-bit file offsets by default, which is needed when using large disk images (more than 2GB), so the configure script has now been modified to add necessary compiler flags for Linux. 20040713 Trying out some minor optimizations. Refreshing the UDP implementation in src/net.c a little. 20040714 Updating the documentation a little on how to experiment with a Debian Linux install kernel for DECstations. A 'mini.iso' Linux image for DECstation has different fields at offsets 0x10 and 0x14, so I'm guessing that the first is the load address and the second is the initial PC value. Hopefully this doesn't break anything. Some initial TCP hacks, but not much is working yet. Some updates for IP30: The load/store 1-entry cache didn't work too well with IP30 memory, so it's only turned on for "MMU4K" now. (This needs to be fixed some better way.) Adding a hack which allows Linux/Octane to use ARC write() and getchild() on IP30. Linux uses ARCBIOS_SPB_SIGNATURE as a 64-bit field, it was 32-bit before. Making ugly hacks to the arcbios emulation to semi-support 64-bit equivalents of 32-bit structures. 20040716 Minor fixes to the configure script (and a few other places) to make the sources compile out-of-the-box on HP-UX (ia64 and HPPA), old OpenBSD/pmax (inside the emulator itself), and Tru64 (OSF/1) on Alpha. A couple of other minor fixes. 20040717 A little TCP progress; OpenBSD/pmax likes my SYN+ACK replies, and tries to send out data, but NetBSD/pmax just drops the SYN+ACK packets. Trial-and-error led me to change the 64-bit ARCS component struct again (Linux/IP30 likes it now). I'm not sure about all of the offsets yet, but some things seem to work. More 64-bit ARCS updates (memory descriptors etc). Better memory offset fix for IP30, similar to how I did it for IP22 etc. (Hopefully this doesn't break anything else.) Adding a MardiGras graphics controller skeleton for SGI-IP30 (dev_sgi_mardigras.c). Thanks to Stanislaw Skowronek for dual-licensing mgras.h. Finally rewrote get_symbol_name() to O(log n) instead of O(n) (Stanislaw's Linux kernel had so many symbols that tracing with the old get_symbol_name() was unbareably slow). Removing all of the experimental tlbmod tag optimization code (the 1-entry load/store cache), as it causes more trouble than the performance gain was worth. 20040718 The MardiGras device works well enough to let Linux draw the SGI logo and output text. A bunch of other minor changes. 20040719 Trying to move out all of the instruction_trace stuff from the main cpu loop (for two reasons: a little performance gain, and to make it easier to add a GUI later on). 20040720 Finally found and fixed the ethernet/tcp bug. The hardware address is comprised of 6 bytes, where the _first_ byte should have a zero as the lowest bit, not the last byte. (This causes NetBSD and Linux running in the emulator to accept my SYN+ACK packets.) Getting the first nameserver address from /etc/resolv.conf. (This is not used yet, but could be useful if/when I add internal DHCP support.) Working more on the TCP stuff; TCP seems to be almost working, the only immediate problem left is that the guest OS gets stuck in the closing and last-ack states, when it shouldn't. It is now possible to install NetBSD and OpenBSD via ftp. :-) 20040721 Trying to fix the last-ack bug, by sending an RST after the end of a connection. (Probably not a correct fix, but seems to work?) Adding a my_fseek() function, which works like fseek() but with off_t instead of long, so that large disk images can be used on systems where long is 32 bits. 20040722 Trying to fix some more TCP related bugs. 20040725 Changing the inlined asm statement in bintrans_alpha.c into a call to a hardcoded array of bytes that do the same thing (an instruction cache invalidation). This allows the same invalidation code to be used regardless of compiler. Some other minor changes. 20040726 Minor updates. The configure script is now more verbose. A Debian/IP22 Linux tftp boot kernel requires ARCS memory to be FreeMemory, not FreeContiguous. (This should still work with other SGI and ARC OSes.) Fix for ARCS write(), so it returns good write count and success result (0). Some hacks to the IP22 memory controller, to fake 72MB RAM in bank 0. The IP22 Debian kernel reaches userland (ramdisk) when run with -G24 -M72 -CR4400, if a special hack is done to the zs device. 20040730 Removing mgras.h, as I'm not sure a file dual-licensed this way would work. (Dual-licensing as two separate files would work though.) Preparing for the upcoming release (0.2). 20040801 Fixing the 512 vs 2048 cdrom sector size bug; I hadn't implemented the mode select SCSI command. (It still isn't really implemented.) A bug which crashes the emulator is triggered when run with new NetBSD 2.0_BETA snapshots on a Linux/i386 host. I'm not sure why. UDP packets sent to the gateway (at 10.0.0.254) are now forwarded to the machine that the host uses as its nameserver. Some other minor fixes. ============== RELEASE 0.2 ============== 20040803 A post-3.5 OpenBSD/sgimips kernel snapshot with ramdisk seems to boot fine in the emulator, all the way to userland, and can be interacted with. Adding a -y option, used to set how many (random) instructions to run from each CPU at max (useful for SMP instruction interleave experiments). Importing a 8x16 console font from FreeBSD (vt220l.816). Adding a skeleton for a 80x25 text console device (dev_vga), useful for some ARC modes. (Character output is possible, but no cursor yet.) Adding a dev_zero device (returns zeroes on read). OpenBSD/arc 2.3 can get all the way to userland with -A4 (if the wdc devices are commented out) but bugs out there, probably because of interrupt issues. Adding a -A5 ARC emulation mode (Microsoft-Jazz, "MIPS Magnum") which NetBSD seems to like. No interrupt specifics yet, so it hangs while waiting for SCSI. 20040804 Some dev_mp updates. The -y switch has to do with number of cycles, not number of instructions; variable names have been changed to reflect this. 20040805 Minor updates. Adding some more CPU types/names, but they are probably bogus. Adding a MeshCube emulation mode. Just a skeleton so far, but enough to let a Linux kernel print some boot messages. Adding the 'deret' instruction. 20040806 Adding include/impactsr-bsd.h (a newer version of what was in mgras.h before, and this time with only a BSD-style license), but it is not used yet. 20040810 Some Au1500 updates. 20040811 Adding the 'clz', 'clo', 'dclz', and 'dclo' special2 (MIPS32 and MIPS64) instructions. More Au1500 updates. 20040812 Using fseeko(), when it is available. Other minor updates. Adding a NetGear WG602 emulation mode skeleton (-g); after a lot of trial and error, a Linux kernel (WG602_V1715.img) gets all the way to userland, but hangs there. 20040818 Adding signal handlers to better cope with CTRL-Z and CTRL-C. Adding a simple interactive single-step debugger which is activated by CTRL-C. (Commands so far: continue, dump, help, itrace, quit, registers, step, trace, version) 20040818(later) Adding a 'tlbdump' debugger command, and some other minor fixes. 20040819 Minor updates. Adding an 'unassemble' debugger command. 20040822 Minor updates to the regression testing framework. 20040824 Minor updates based on feedback from Alec Voropay (configure script updates for Cygwin and documentation). 20040826 Minor updates. Adding a cursor to the VGA text console device. Changing all old 11:22:..55:66 ethernet macs to 10:20..60, still hardcoded though. 20040828 Minor updates. 20040829 mips64emul is 1 year old today :-) 20040901 tests/README now lists "all" MIPS opcodes. This list should be updated whenever a new opcode is implemented, or when a regression test is added. (A combination of instructions from the TX79 manual, the GNU assembler, and the MIPS64 manual). Hopefully I haven't missed too many. Adding a section on regression testing to doc/technical.html. 20040902 Finally beginning the work on separating out the stuff from main.c into a "struct emul". Very time-consuming. Some minor fixes for LL/SC on R10000. 20040905 Moving more stuff from main.c into struct emul. Unfortunately, it seems that this causes a slowdown of the emulator. Userland emulation is now only used if --userland is used when running configure. Modifying src/symbol.c to not use global variables. 20040906 Minor update. 20040914 Using $COPTIM when detecting which compiler flags to use in the configure script. (This makes sure that combinations of flags should work.) There'll probably be a 0.2.1 release some time soon, but I'll do some more clean-up first. Minor update to the detection of ECOFF files, but I don't like it; sometimes the endianness of the magic value seems to be swapped, but it doesn't have to do with endianness of the actual data? 20040916 Minor updates. Adding an Example section to the manpage, but as I'm not really familiar with manpage formatting, it will need to be rewritten later. 20040917 Finally making the coprocessor instructions disassemblable even when not running. Doing some testing for the 0.2.1 release. ============== RELEASE 0.2.1 ============== 20040923 Updating the documentation about how to (try to) install Debian GNU/Linux. 20040924 Some more updates to the documentation. 20040925 Adding overflow stuff to 'add' and 'sub'. 20040926 Minor updates: possibly a fix to 'sltiu' (the imm value should be treated as signed, and then converted to unsigned, according to the MIPS64 manual), and removing the 'last_was_rfe' stuff (again). OpenBSD/arc used speed-hack jumps with other deltas than just +/- 1 (it used -3 iirc), so the jump speedhack should now support any delta. Also adding bgtzl and blezl as possible instructions for the speed-hack jumps. (This needs to be tested more.) 20040928 Minor updates. Some ARC stuff ("arcdiag" runs now). cpu_register_dump() now also dumps coprocessor registers. 20040929 More ARC updates. Making the code look a tiny bit nicer than before. "arcdiag.ip22" works for -G22 (SGI-IP22). Apparently the overflow support in the 'add' instruction was incorrect, so I disabled it. 20041002 Trying to install Ultrix in the emulator, but the installer crashes; found (and fixed) the bug rather quickly: the "fix" I implemented a few days ago for the 'sub' instruction (according to the MIPS64 manual) caused the bug. 20041004 Changing the behaviour of the -j command line option. The default is now "" (or taken from the last filename given on the command line), not "netbsd". In practice, this doesn't change much, except that -j netbsd.pmax is no longer needed when installing NetBSD. Adding a COMPILE_DATE string to config.h. 20041007 Adding a NEC RISCserver 4200 model (-A6), and some more updates to the ARC component tree generator. 20041008 The 'll' instruction should be signed, not unsigned as before. This (and some other minor fixes) causes Irix on SGI-IP32 (O2) to actually boot far enough to print its first boot messages :) Working on some new dynamic bintrans code. Enough is now implemented so that the 'nop' instruction is translated and there is support for Alpha, i386 and UltraSparc backends, but performance is about 50% worse than when running without bintrans. (This is as expected, though.) 20041009 Minor updates to the documentation. Using mprotect() to make sure that the code created dynamically by the bintrans subsystem is allowed to be executed. (This affects newer OpenBSD systems, and possibly others.) The translated code chunks now only get one argument passed to them, the (struct cpu *) of the current cpu. 20041010 Hack to dev_le.c which makes Ultrix accept the initialization of the LANCE controller. (This goes against the LANCE documentation though.) In src/net.c, a fix for Ultrix (which seems to send larger ethernet packets than the actual TCP/IP contents). The hack to dev_le.c and this fix is enough to let Ultrix access the Internet. For DECstation, when booting without a disk image (or when "-O" is used on the command line), use "tftp" instead of "rzX" for the boot string. 20041011 Adding cache size variables to the emul struct, so that these can be set on a per-machine basis (or potentially manually on the command line). 20041012 Mach/PMAX now passes the LK201 keyboard self-test (although the keyboard ID is still bogus). 20041013 Minor updates. Hacks to the ASC SCSI controller for Mach/PMAX, hopefully this will not break support for other OSes. 20041014 Minor fix to src/emul.c for reading bootblocks at the end of a disk or cdrom image (thanks to Alexandru Lazar for making me aware of this). Adding "gets()" to src/dec_prom.c. Working a bit on ARC stuff. Importing pica.h from NetBSD. Minor updates to the ARC component tree for PICA-61. Adding a dev_jazz.c (mostly for PICA-61). Renaming dev_jazz.c into dev_pica.c. Working on PICA timer and interrupt specifics. 20041016 Adding some dummy entries to lk201.c to reduce debug output. Some bintrans updates (don't run in delay slots or nullified slots, read directly from host memory and not via memory_rw(), try mmap() before malloc() at startup, and many other minor updates). Adding bintrans_mips.c for 64-bit MIPS hosts, but it is not used yet. 20041017 Minor updates. 20041018 Update to dev_mc146818 to allow Mach to boot a bit further. The "hardware random" in dev_mp.c now returns up to 64 bits of random. 20041019 Minor updates to the way cache sizes are used throughout the code. Should be mostly ok for R[234]x00. src/file.c now loads files using NO_EXCEPTIONS. Whether this is good or bad, I'm not sure. 20041020 Adding a Linksys WRT54G emulation skeleton (-H). 20041021 Minor updates. R1[024]000 cache size bits in the config register should now be ok. Trying to make dev_asc.c work better with PICA. More work on PICA interrupts (but they are broken now). 20041022 Generalizing the dev_vga text console device so that it can be used in other resolutions than just 80x25. Works with OpenBSD/arc. emul->boot_string_argument is now empty by default (except for DECstation modes, where it is "-a"). Speedup of dev_ram by using mmap() instead of malloc(). Using mmap() in memory.c as well, which reduces memory usage when emulating large memory sizes if the memory isn't actually written to. 20041023 Minor updates. 20041024 Updates to the PC-style keyboard controller, used by PICA. Updates to the PICA (Jazz) interrupt system. Both NetBSD/arc and OpenBSD/arc now reach userland with PICA emulation, and can be interacted with (there are a few programs on the INSTALL kernel ramdisks). In the case of OpenBSD, a VGA text console and PC-style keyboard controller is used, NetBSD runs on serial console. Adding a framework for DMA transfer for the ASC SCSI controller. Implementing a R4030 DMA controller for PICA, enough to let OpenBSD/arc and NetBSD/arc be installed on an emulated Pica. :-) Updates to the documentation. 20041025 Working on ISA interrupts for PICA. Adding an Olivetti M700 emulation mode (-A7). Better separation of PICA and M700 stuff (which I accidentally mixed up before, I thought the M700 Linux kernel would also work on PICA because it almost booted). Writing a skeleton G364 framebuffer for M700, enough to show the Linux penguin and some text, although scrolling isn't correctly implemented yet. Adding a dummy SONIC (ethernet) device, dev_sn, for PICA. Fixing the passing of OSLOADOPTIONS for ARC, the default is now "-aN" which works fine with OpenBSD/arc and NetBSD/arc. 20041027 Minor updates. 20041029 Adding a Sony NeWS "newsmips" emulation mode skeleton (-f). Found and fixed a bug which prevented Linux/IP32 from running (the speed-hack-jump-optimization fix I made a few weeks ago was buggy). Adding the trunc.w.fmt and trunc.l.fmt instructions, although the are probably not really tested yet. Changes to how floating point values are handled in src/coproc.c, but right now it is probably very unstable. 20041101 I had accidentally removed the instructions on how to install Ultrix from doc/index.html. They are back now. Adding a -Z option, which makes it easier to run dual- or tripple-head with Ultrix. (Default nr of graphics cards without -X is 0, with -X is 1.) Minor update which makes it possible to switch to the left monitor when running tripple-head, not just right as before. When using more than one framebuffer window, and the host's mouse cursor is in a different window than the emulated mouse cursor, the emulated mouse will now try to move "very far", so that it in practice changes screen. Running Ultrix with dual- and tripple-head now feels really great. 20041101(later) OpenBSD/arc and Linux/Olivetti-M700 don't both work at the same time with the speed-hack stuff. So, from now on, you need to add -J for Linux, and add nothing for openbsd. 20041102 Minor update for OSF/1 V4.0 (include sys/time.h in src/net.c and add -D_POSIX_PII_SOCKET to the C compiler flags). 20041103 Minor updates for the release. For some reason, Mach/PMAX caused the emulator to bug out on SunOS/sparc64 (compiled in 64-bit mode); a minor update/hack to dev_asc fixed this. ============== RELEASE 0.2.2 ============== 20041103 Minor updates. 20041104 Minor updates. 20041105 Running with different framebuffer windows on different X11 displays works now (even with different bit depths and endiannesses on different displays). A new command line option (-z) adds DISPLAYs that should be used. Update regarding how DECstation BT459 cursors are used; transparency :-) and some other bug fixes. 20041106 More bt459 updates. The cursor color seems to be correct for NetBSD, OpenBSD, Ultrix, and Sprite. Some minor bintrans updates (redesigning some things). 20041107 More bintrans updates (probably broken for non-Alpha targets). Moving doc/mips64emul.1 to man/. 20041108 Some updates. 20041109 More updates. Bintrans experiments mostly. 20041110 Some minor bintrans updates. 20041111 Minor updates. 20041112 A little rewrite of the bintrans system (again :-), this time a lot more naďve and non-optimizing, in order to support delay slots in a much simpler way. Ultrix 4.5 boots into a usable desktop on my home machine in 3min 28sec, compared to 6-8 minutes without bintrans. 20041113 Some minor bintrans updates. 20041114 More bintrans updates. Ultrix now boots in exactly 3 minutes on my home machine. 20041115 More bintrans updates. 20041116 Bintrans updates. 20041117 Working on dev_dec_ioasic and related issues. Adding support for letting translated code access devices in some cases (such as framebuffers). 20041118 Moving some MIPS registers into Alpha registers, which gives a speed improvement. Beginning to write an i386 bintrans backend. Skeleton stuff works, lui, jr/jalr, addiu/daddiu/andi/ori/xori, j/jal, addu/daddu/subu/xor/or/nor/and. 20041119 dsubu/sll/srl/sra, rfe,mfc0,dmfc0, beq,bne, delayed branches. Some load/store (but not for bigendian emulation yet.) Time to reach Ultrix 4.5's graphical login on a 2.8 GHz Xeon host is now down to 20 seconds! Adding bgez, bltz, bgtz, and blez to the i386 backend. 20041120 Minor updates (bintrans related mostly). Time to reach Ultrix login on the Xeon is now 11 seconds. Adding 'mult', 'multu' and a some parts of mtc0 to the Alpha backend. The transparency updates to the X11 cursor support made the OpenBSD/arc cursor disappear; that has been fixed now. Unfortunately, something with Acer Pica emulation is broken when bintrans is enabled. 20041121 Making tlbwr, tlbwi, tlbp, tlbr callable directly from translated code. Adding sltiu, slti, slt, and sltu to the i386 backend. 20041122 More bintrans updates. With the Alpha backend, the status and entryhi registers can (in some cases) be written without exiting to the main loop. Ultrix boot time until a usable desktop is reached is about 1 min 35 seconds on the 533 MHz pca56. Adding srlv, srav, and sllv to the i386 backend. 20041123 Removing the special handling of high physical addresses for DECstation emulation from the main memory handling code, and replacing it with a mirror device instead. (This results in a tiny increase in performance, and cleaner code.) Various minor updates. 20041124 Ripping out _all_ bintrans load/store code, because I have a new idea I'd like to try out. A total rewrite of the load/store system. It works when emulating 32-bit MIPS, but not for 64-bit code yet. Some minor updates to the dev_fb, but no speed improvement. Making the 'le' ethernet device' SRAM work with bintrans. 20041125 Various updates. Adding a little "bootup logo" to the framebuffer. There is now one translate_address() for R3000-style MMUs, and one for the other types. (This gives a tiny speed improvement.) 20041126 Minor updates, bintrans. Fixing the bug which caused OpenBSD/arc (R4000) to bug out; it was introduced between the 7:th and 10:th of November when moving up the check for interrupts to above the code which runs bintrans code, in src/cpu.c. Adding movn and movz to the Alpha bintrans backend. 20041127 Various minor updates. 20041128 Making the R2000/R3000 caches work with bintrans, even in isolated mode. (Not true cache emulation, but it works with NetBSD/pmax, OpenBSD/pmax, and Ultrix.) Making the default cache size for R3000 4KB instr, 4 KB data; a real R3000 could have 64KB each, but emulated OSes run faster when they think the cache is smaller :-) Updates to the i386 backend: the nr of executed instructions is now placed in ebp at all times, and some support for mtc0 similar to how it is done in the Alpha backend has been added. A full NetBSD/pmax 1.6.2 install can now be done in 5 minutes 35 seconds, on a 2.8 GHz Xeon host (with -bD2 -M20). Adding mult and multu to the i386 bintrans backend. Reducing the number of malloc/free calls used by the diskimage subsystem. 20041129 Minor updates to the Alpha bintrans backend. 20041130 Trying to fix the bug which prevents Linux from working with bintrans. It _seems_ to work now. (Pages could in some cases be written to after they were translated, but that has been fixed now.) A couple of other minor fixes. Minor updates to the Alpha backend (directly using Alpha registers in some cases, instead of loading into temporaries). Updates to the i386 backend (special hacks for 32-bit MIPS emulation, which are fast on i386, for example only updating half of the pc register). 20041201 More updates to the i386 backend, similar to those yesterday. Preparing for release 0.2.3. Adding a generic load/store mechanism, which is used when the 32-bit optimized version cannot be used (for R4000 etc). ============== RELEASE 0.2.3 ============== 20041202 If ALWAYS_SIGNEXTEND_32 is defined in misc.h, and an incorrectly extended register is detected, the emulator now exits instead of continues. Removing the LAST_USED_TLB_EXPERIMENT stuff. Minor updates to work better with Windows NT's ARCINST.EXE; printing 0x9b via arcbios becomes ESC + '[', and the ARC memory descriptor stuff has been generalized a bit more. Adding arbios hacks for Open(), Seek(), GetRelativeTime(), and Read() to allow WinNT's SETUPLDR to read the filesystem on the diskimage used for booting. 20041203 Adding a terminal emulation layer which converts arcbios stdout writes to "VGA text console" cell characters. Seems to work with Windows NT and arcdiag. Adding a 8x8 font to dev_vga. Adding more ARC components to the component tree (for PICA emulation). 20041204 Minor updates. More updates to dev_vga. Adding a 8x10 font. Adding a hack so that the framebuffer logo is visible at startup with dev_vga. (It disappears at the first scroll.) A minor fix for a bug which was triggered when running dual- or tripple-head, on 2 or 3 actual X11 displays. 20041205 Fixing a bintrans bug. Some other minor updates (some of them bintrans related). 20041206 Moving the web page to http://gavare.se. Adding a hack for mmap() which supports anonymous mapping using /dev/zero, but not using MAP_ANON{,YMOUS}. Separating out opcodes.h, cop0.h, and cpu_types.h from misc.h. 20041207 Minor bintrans update. (In some cases, it isn't necessary to return to the main loop, when translating from a new page.) Some other minor i386 bintrans backend optimizations. And some other minor updates. i386 backend update: the lowest 32 bits of the pc register are now placed in an i386 register. 20041208 Adding GetConfigurationData() and some support for config data, to src/arcbios.c. Adding a bogus 0xbd SCSI command (used by Windows NT). It is not listed in http://www.danbbs.dk/~dino/SCSI/SCSI2-D.html. If the framebuffer cursor contains more than 1 color, then the host's X11 cursor disappears. (Nice for DECstation emulation with emulated X.) For ARC and SGI emulation, if an exception occurs before an exception handler is installed, the emulator now exits nicely (as suggested by Alec Voropay). A couple of minor updates to the ARCBIOS emulation subsystem. The single step debugger is now automatically entered when all CPUs have stopped running, unless there was a clean shutdown of some kind (PROM halt() call, or similar). Adding a -V option for starting up in a paused state, into the single-step debugger. Adding a note about 'mmon' to the documentation (http://www.brouhaha.com/~eric/software/mmon/). 20041209 Fixes to devices/console.c which makes cursor keys and such a bit more reliable. ARCBIOS hack/update which creates memory descriptors _after_ loading the executable. (Seems to work with OpenBSD/arc, NetBSD/arc, arcdiag, IRIX, NetBSD/sgimips, OpenBSD/sgi, and some Windows NT executables.) ARCBIOS support for cursor keys (ESC + '[' ==> 0x9b). A bintrans update (for 32-bit emulation) which speeds up jumps between pages, if code is already translated. Changing the default bintrans cache from 20 to 24 MB. 20041210 Optimizing unaligned load/stores a little bit in src/cpu.c. Omiting the check for nr of executed bintrans instructions on some forward jumps. Adding the 'syscall' and 'break' instructions to the bintrans backends. Allowing more bits of the status register to be written to from within inside translated code, on R3000. Getting rid of the final pixel when hiding the host's mouse cursor. store_buf() now copies data 8 or 4 bytes at a time, when possible. (This speeds up emulated ROM disk reads, etc.) Tiny bug fix: coprocessor unusable exceptions are now also generated (for coproc 1..3) even when in kernel mode, if the coprocessors are not enabled. This allows a Debian installation to proceed further than before. (It's still very unstable, though.) 20041212 Updating doc/index.html with better Debian installation instructions. If SLOWSERIALINTERRUPTS is defined at compile time, interrupts from the dc7085 device will not come as often as they normally do. This makes Debian seem more stable. Decreasing the bintrans cache to 20 MB again. Updating some files in preparation for a 0.2.4 release. 20041213 Updating the docs on how to install NetBSD 2.0/pmax, and also some updates to the section on installing Debian. 32-bit bintrans backend optimization: don't inline large chunks of code, such as general jumps. 20041214 Minor fix for coproc unusable for R4000 (it's the PC that, matters, not the KSU bits). Separating out the debugger from emul.c into debugger.c. Rewriting parts of the debugger. Removing the -U command line option, as it wasn't really useful. Also removing the -P option. Renaming all instances of dumppoint to breakpoint, as that is what it really is. When a breakpoint is reached, the single-step debugger is entered, instead of just turning on instruction trace. Adding a 'breakpoints' debugger command. Better fix for coproc unusable on R4000: the KSU bits matter, but the ERL and EXL bits override that. Fix which allows Debian to boot directly from a disk image (with DELO). (It reads multiple separate areas from disk.) Update to the SLOWSERIALINTERRUPTS stuff, making it even slower. Fixes based on feedback from Alec Voropay (-Q with ARC emulation skips the setup of arcbios data structures in memory, and no sign-extension _after_ writing a 32-bit value to a 64-bit coproc 0 register). Adding a 'devices' command to the debugger. The 'registers' and 'tlbdump' commands now take an optional argument (a cpu id). Adding rudimentary tab-completion and cursor key stuff to debugger_readline(). Adding some more debugger commands: 'bintrans' and 'machine'. 20041215 Adding a 'devstate' command; implementing a skeleton for a state function for the bt459 device. Implementing yet another variant of the SLOWSERIALINTERRUPTS stuff. Implementing more of the different exception offsets (taking CAUSE_IV and STATUS_BEV into account). hpc_bootinfo should now be correctly filled on big-endian hosts. Always shift left by 12, not by pageshift, to get physical addresses on MMU4K etc. (Thanks to Alec Voropay for noticing this.) 20041216 The KN02's CSR can now be read from bintranslated code. Adding a dummy dev_sgi_mec. 20041217 The default framebuffer and model settings for -F (hpcmips) should now be almost like Cassiopeia E-500. Changing -DSLOWSERIALINTERRUPTS into a command line option, -U. 20041218 Continuing a little bit on the mec controller. Removing lots of #include <math.h> that weren't really used. 20041219 Fixing stuff that broke because of the pageshift bugfix. Adding an argument to the s (step) debugger command, for doing more than 1 step at a time. ARCBIOS components representing disk images are now created to actually match the disk images in use, and some other arcbios-related updates; adding a dummy GetComponent(). Adding a 'lookup' command to the debugger, for symbol lookups. Adding a "NEC Express RISCserver" mode (NEC-R96, -A8). Adding a dummy ARCBIOS GetFileInformation(), GetTime(), and SetEnvironmentVariable(). 20041220 Improved command line editing (including command history) in the debugger. Separating some more .h files from each other, and fixing some Solaris compiler warnings. 20041221 Minor updates. 20041222 Minor updates; hpcmips (BE300, VR41xx) stuff. The 'register' debugger command is now 'reg', and it can be used to modify registers, not just read them. The syntax for hpcmips (-F) is now -F xx, where xx is a machine model identifier. (1 = BE300.) 20041223 Some really minor updates. 20041226 Minor updates to doc/index.html (NetBSD 1.6.2 -> 2.0, and some other rearrangements). Many updates to the debugger (better register manipulation, breakpoint manipulation, and other updates). Fix to dev_cons.c to allow the regression tests to work again. The configure script now tries to detect the presence of a MIPS cross compiler. (Used by "make regtest".) Regression tests are now run both with and without bintrans. 20041227 Some hacks to the VR41xx code to allow Linux for BE300 to get far enough to show the penguin on the framebuffer. 20041228 Merging dev_kn01_csr.c and dev_vdac.c into dev_kn01.c. 20041229 Various updates to the debugger (nicer tlb output and other things). Some floating point fixes in src/coproc.c (mov is not an arithmetic instruction), and in src/cpu.c (ldcX/sdcX in 32-bit mode uses register pairs). '-O' now also affects the bootstring for SGI and ARC emulation. Bintrans updates (slightly faster 32-bit load/store on alpha). Updates to the i386 backend too, but no real speed improvement. 20041230 Cleaning up parts of the 64-bit virtual-to-physical code for R10000, and per-machine default TLB entries can now be set for SGI and ARC machines. Fix: SGI-IP27 is ARC64, not ARCS. 20050101 Minor updates. 20050102 Minor updates. Fixing a 32-bit 'addu' bug in the bintrans backends. Allowing fast load/stores even in 64-bit bintrans mode, if the top 32 bits are either 0x00000000 or 0xffffffff (for Alpha only). Re-enabling ctc0/cfc0 (but what do they do?). Adding beql, bnel, blezl, and bgtzl to the Alpha backend. 20050103 Adding fast 32-bit load/store for 64-bit mode emulation to the i386 backend too (similar to the Alpha code). Not really tested yet, though. Adding an incomplete regression test case for lwl/lwr/ldl/ldr. Playing around with bintranslated lwl and lwr for Alpha. 20040104 Changing many occurances of pica to jazz. Various other updates. 20050105 Fixing some more bintrans bugs (both Alpha and i386). Unaligned stores that cause tlb refill exceptions should now cause TLBS exceptions, not TLBL. Adding experimental swl and swr to the Alpha backend. Adding lwl, lwr, swl, and swr to the i386 backend. 20050106 Adding another hpcmips model (Casio E-105, -F2), and doing some updates to the VR41xx code. NetBSD/hpcmips prints some boot messages. 20050108 Minor updates. 20050109 dev_dec5500_ioboard.c and dev_sgec.c => dev_kn220.c. dev_crime.c, _mace.c, and _macepci.c => dev_sgi_ip32.c. Also adding dev_sgi_mec, _ust, and _mte into dev_sgi_ip32.c. A slight license change. Still revised BSD-style, though. memory_v2p.c is now included separately for MMU10K and MMU8K. Fixing a NS16550 bug, triggered by NetBSD 2.0, but not 1.6.2. Refreshing the UltraSPARC bintrans backend skeleton. Merging dev_decbi, _deccca, and _decxmi into dev_dec5800.c. Sparc backend instructions done so far: mthi/mtlo/mfhi/mflo, lui, addu, daddu, subu, dsubu, and, or, nor, xor, sll, dsll, srl, and sra. Adding more sparc backend instructions: addiu, daddiu, xori, ori, andi, srlv, srav, sllv, slt, sltu, slti, sltiu. 20050110 Changing the default bintrans cache to 16 MB, and some other minor updates. Adding div and divu to the i386 backend (but not Alpha yet). More work on ARCBIOS emulation. Trying to find a bug which affects Linux on Playstation 2 in bintrans mode. 20050111 Moving around some Playstation 2 stuff, but I haven't found the bug yet. It is triggered by load/stores. More ARCBIOS updates, enough to let Windows NT partition disks in some rudimentary fashion. 20050112 Testing for release 0.2.4. Fixes to suppress compiler warnings. ============== RELEASE 0.2.4 ============== 20050113 Minor updates. 20050114 Fix to the Alpha bintrans backend to allow compilation with old versions of gcc (2.95.4). ============== RELEASE 0.2.4.1 ============== 20050115 Various updates and fixes: some IP32 stuff, the debugger, ns16550 loopback tx isn't transmitted out anymore, ... Removing old/broken R10000 cache hacks, which weren't really used. 20050116 Minor updates to the documentation on using PROM images. Adding ARCBIOS function 0x100 (used by IRIX when returning from main, but undocumented). MC146818 updates (mostly SGI-related). ARCS64 updates (testing with an OpenBSD snapshot in IP27 mode). This causes Linux/IP30 to not work. Maybe IP27 and IP30 differ, even though both are 64-bit? Removing some nonsensical ARCS64 code from machine.c. Better handling of 128MB and 512MB memory offsets used by various SGI models. Trying to revert the ARCS64 changes (OpenBSD/sgi does seem to be aware of 64-bit vs 32-bit data structures in _some_ places, but not all), to make Linux/IP30 work again. Adding "power off" capability to the RTC, as used on IP32 (and possibly IP30 and others). Some IP30 updates. 20050117 Debugger updates (symbolic register names instead of just rX, and using %08x instead of %016llx when emulating 32-bit CPUs in more places than before). Removing the dummy sgi_nasid and sgi_cpuinfo devices. Also using symbolic names for coprocessor 0 registers. Adding DEV_MP_MEMORY to dev_mp.c. Adding a 'put' command to the debugger. ARCBIOS function 0x100 used by IRIX seems to _NOT_ be a ReturnFromMain(), but something else undocumented. The count and compare registers are now 32-bit in all places, as they should be. (This causes, among other things, OpenBSD/sgi to not hang randomly in userspace anymore.) On breakpoints, the debugger is now entered _at_ the instruction at the breakpoint, not after it. Some cursor keys now work when inputed via X. Refreshing the MC146818 device a bit more. 20050118 Trying to add some support for less-than-4KB virtual pages, used by at least VR4131. Thanks to Alexander Yurchenko for noticing this. (I'm assuming for now that all R41xx work this way, which is not necessarily true.) It doesn't really work yet though. Renicing the "loading files" messages and other things displayed during startup. Changing the disassembly output of ori, xori, and andi to unsigned hex immediate, instead of decimal (as suggested by Alec Voropay). configure-script update for HP-UX, and switching from using inet_aton() to inet_pton() (as suggested by Nils Weller). Also adding -lnsl on Solaris, if required by inet_pton(). Lots of minor R4100-related updates. 20050119 Correcting the R4100 config register in src/coproc.c, and a minor update to dev_vr41xx. Finally began a redesign/remodelling/cleanup that I have had in mind for quite some time... moving many things that were in struct emul into a new struct machine. Userland emulation now works with bintrans. Refreshing the LANCE controller (dev_le.c). Fixing the LK201 keyboard id. 20050120 Continuing on the remodelling/cleanup. Fixing the SCSI bug (which was triggered sometimes by NetBSD 2.0/pmax on Linux/i386 hosts). Adding a speed-limit hack to the mc146818 device when running in DECstation mode (limiting to emulated 30 MHz clock, so that Ultrix doesn't freak out). Adding an ugly workaround for the floating-point bug which is triggered when running NetBSD/pmax 2.0 on an Alpha host. The count/compare interrupt will not be triggered now, if the compare register is left untouched. Many, many other fixes... 20050121 Continuing the remodelling/cleanup. (Mostly working on the network stack, and on moving towards multiple emulations with multiple machines per emulation.) Fixbug: not clearing lowest parts of lo0 and hi on tlbr (seems to increase performance when emulating Linux?). 20050122 Continuing the remodelling/cleanup. Linux on DECstation uses a non-used part of the RTC registers for the year value; this is supported now, so Linux thinks it is 2005 and not 2000. Began hacking on something to reply to Debian's DHCP requests, but it's not working yet. 20050123 Continuing the remodelling/cleanup. 20050124 Continuing the remodelling/cleanup. Converting the dev_vga charcell memory to support direct bintrans access (similar to how dev_fb works), and fixing a couple of bintrans bugs in the process. The emulator now compiles under OpenBSD/arc 2.3 without crashing (mostly due to the bintrans fixes, but also some minor updates to the configure script). 20050125 Continuing the remodelling/cleanup. The '-a' option was missing in the Hello World example in the documentation. (Thanks to Soohyun Cho for noticing this.) 20050126 Continuing the remodelling/cleanup. Moving around stuff in the header files, etc. Adding a '-K' command line option, which forces the debugger to be entered at the exit of a simulation, regardless of failure or success. Beginning to work on the config file parser. Splitting doc/index.html into experiments.html, guestoses.html, intro.html, and misc.html. Updating the man page and adding a skeleton section about the configure files to doc/misc.html. 20050127 Minor documentation updates. 20050128 Continuing the remodelling/cleanup, mostly working on the config file parser (adding a couple of machine words, enough to run simple emulations, and adding support for multi-line comments using tuborgs). Removing some command line options for the least working emulation modes (-e, -f, -g, -E, -H), adding new -E and -e options for selecting machine type. Moving global variables from src/x11.c into struct machine (a bit buggy, but it seems to almost work). 20050129 Removing the Playstation 2 mode (-B) and hpcmips modes (-F) from the command line as well. Changing the -T command line option from meaning "trace on bad address" to meaning "enter the single-step debugger on bad address". More updates to the configuration file parser (nested tuborg comments, more options, ...). Making -s a global setting, not just affecting one machine. Trying to fix the X11 event stuff... but it's so ugly that it must be rewritten later. Continuing the multi-emul cleanup. Bugfixes and other updates to dev_vga. 20050130 Continuing the remodelling/cleanup. Finally moving out the MIPS dependant stuff of the cpu struct into its own struct. Renaming cpu.c to cpu_mips.c, and cpu_common.c to cpu.c. Adding a dummy cpu_ppc.c. Removing the UltraSPARC bintrans backend. Many other minor updates. src/file.c should now be free from MIPS-dependancies. 20050131 Continuing a little bit more on src/file.c. PPC ELFs can now be loaded, it seems. Continuing on src/cpu_ppc.c. 'mips' is undefined by the configure script, if it is defined by default. (Fixes build on at least OpenBSD/arc and NetBSD/arc, where gcc defines 'mips'.) A couple of other minor fixes. Removing the "Changing framebuffer resolution" section from doc/misc.h (because it's buggy and not very useful anway). Adding a mystrtoull(), used on systems where there is no strtoull() in libc. Adding 'add_x11_display' to the configure file parser (corresponding to the -z command line option). Continuing the multi-emul machine cleanup. 20050201 Minor updates (man page, RELEASE, README). Continuing the cleanup. Adding a 'name' field to the emul struct, and adding a command to the debugger ("focus") to make it possible to switch focus to different machines (in different emuls). Beginning to work on the PPC disassembler etc. Hello World for linux-ppc64 can be disassembled :-) 20050202 Adding a hack for reading symbols from Microsoft's variant of COFF files. Adding a dummy cpu_sparc.c and include/cpu_sparc.h. Cleaning up more to support multiple cpu families. Various other minor updates. Fixing another old-gcc-on-Alpha problem. 20050203 Bintrans cache size is now variable, settable by a new configuration file option 'bintrans_size'. The debugger can now theoretically call disassembler functions for cpu families with non-fixed instruction word length. Working more on the mec controller. It now works well enough to let both NetBSD/sgimips and OpenBSD/sgi connect to the outside world using ftp :-) Continuing on the cleanup of the networking subsystem. 20050204 Continuing the cleanup. Working on a way to use separate xterms for serial ports and other console input, when emulating multiple machines (or one machine with multiple serial lines active). 20050205 Minor documentation updates. 20050206 Moving console.c from devices/ to src/, and continuing the work on using separate windows for each serial console. Trying to get OpenBSD/sgi to boot with root-on-nfs on an emulated NetBSD/pmax server, but no success in setting up the server yet. 20050207 Continuing on the console cleanup. Adding a 'start_paused' configuration file option, and a 'pause' command to the debugger. 20050208 Everything now builds with --withoutmips. Continuing on the documentation on how to run OpenBSD/sgi, but no actual success yet. sizeof => (int)sizeof in the configure script (as suggested by Nils Weller). 20050209 Adding a check for -lm to the configure script. Continuing on the cleanup: trying to make memory_rw non-MIPS dependant. Trying to make a better fix for the cdrom-block-size problems on FreeBSD. (It now works with a Windows NT 4.0 cdrom in my drive.) Began a clean-up of the userland subsystem. 20050210 Continuing the userland cleanup. IBM's Hello World example for Linux/PPC64 runs fine now. 20050211 Continuing the cleanup. Removing the --userland configure option (because support for userland is always included now). Working more on getting OpenBSD/sgi to boot with root on nfs. (Booting with the ramdisk kernel, and mounting root via nfs works, but not yet from the generic kernel.) Major update to the manpage. Removing the -G command line option (SGI modes). 20050212 Updating the documentation (experimental devices: dev_cons and dev_mp, better hello.c, and some other things). 20050213 Some minor fixes: documentation, 80 columns in some source files, better configure script options. Adding some more PPC instructions. Added a NOFPU flag to the MIPS cpu flags, so that executing FPU instructions on for example VR4xxx will fail (as suggested by Alexander Yurchenko). 20050214 Implementing more PPC instructions. Adding dev_pmppc. 20050215 Continuing the work on PPC emulation. Adding a (mostly non- working) NetBSD/powerpc userland mode, a (buggy) show_trace_tree thing (simliar to the MIPS version). 20050216 Continuing... 20050218 Continuing the clean-up. (Merging the devices and devstate debugger commands, more 80-column cleanup, some documentation updates, ...). 20050219 Removing the -D, -A, and -a command line options. Updating the documentation, in preparation for the next release. Adding interrupt stuff to dev_cons. Single-stepping now looks/works better with bintrans enabled. Beginning the first phase of release testing; various minor updates to make everything build cleanly on Solaris. 20050220 Continuing testing for the release... ============== RELEASE 0.3 ============== 20050221 Minor updates. Some more clean-up. Beginning on the new device registry stuff. 20050222 Continuing on the device stuff, and doing various other kinds of clean-up. Adding a dummy BeBox mode. Making the pc register common for all cpu families. Adding some more PPC instructions and fixing some bugs. 20050223 Continuing on the BeBox stuff, and adding more instructions. Adding an ns16550 to the VR4131 emulation (which is probably a close enough fake to the VR4131's SIU unit). 20050224 Minor updates. Adding dummy PReP, macppc, and DB64360 modes. Continuing on the device registry rewrite. 20050225 Continuing on the device stuff. 20050226 Continuing more on the device rewrite. Separating the "testmips" machine into testmips and baremips (and similarly with the ppc machine). Redesigning the device registry again :-) Adding a "device" command to the config file parser. Adding "device add" and "device remove" to the debugger. Removing pcidevs.h, because it was almost unused. 20050228 Correcting the Sprite disk image url in the documentation. 20050301 Adding an URISC cpu emulation mode (single-opcode machine). 20050303 Adding some files to the experiments directory (rssb_as.c, rssb_as.README, urisc_test.s). Continuing on the device stuff. 20050304 Minor documentation update. Also, the SPARC, PPC, and URISC modes are now enabled by default in the configure script. Some minor PPC updates (adding a VGA device to the bebox emulation mode). 20050305 Moving the static i386 bintrans runchunk code snippet (and the others) to be dynamically generated. (This allows the code to compile on i386 with old gcc.) Loading PPC64 ELFs now sets R2 to the TOC base. Changing the name of the emulator from mips64emul to GXemul. Splitting out the configuration file part of the documentation into its own file (configfiles.html). 20050306 Some really minor documentation updates. Adding a -D command line option (for "fully deterministic" behaviour). 20050308 Minor PPC updates. Adding a dummy OpenFirmware emulation layer. 20050309 Adding a hack for systems without inet_pton (such as Cygwin in Windows) as suggested by Soohyun Cho. (And updating the configure script too.) Adding a dummy HPPA cpu family. Some more OpenFirmware updates. Faster loading of badly aligned ELF regions. 20050311 Minor updates. Adding a dummy "NEC MobilePro 780" hpcmips machine mode; disabling direct bintrans access to framebuffers that are not 4K page aligned. 20050312 Adding an ugly KIU hack to the VR41xx device (which enables NetBSD/hpcmips MobilePro 780 keyboard input). 20050313 Adding a dummy "pcic" device (a pcmcia card controller). Adding a dummy Alpha cpu emulation mode. Fixing a strcmp length bug (thanks to Alexander Yurchenko for noticing the bug). 20050314 Some minor bintrans-related updates in preparation for a new bintrans subsystem: command line option -b now means "old bintrans", -B means "disable bintrans", and using no option at all selects "new bintrans". Better generation of MAC addresses when emulating multiple machines and/or NICs. Minor documentation updates (regarding configuration files). 20050315 Adding dummy standby, suspend, and hibernate MIPS opcodes. RTC interrupt hack for VR4121 (hpcmips). Enough of the pcic is now emulated to let NetBSD/hpcmips detect a PCMCIA harddisk controller card (but there is no support for ISA/PCMCIA interrupts yet). Adding preliminary instructions on how to install NetBSD/hpcmips. Continuing the attempt to get harddisks working with interrupts (pcic, wdc on hpcmips). 20050318 Minor updates. (Fixing disassembly of MIPS bgtz etc., continuing on the device cleanup, ...) 20050319 Minor updates. 20050320 Minor updates. 20050322 Various minor updates. 20050323 Some more minor updates. 20050328 VR41xx-related updates (keyboard stuff: the space key and shifted and ctrled keys are now working in userland (ie NetBSD/hpcmips' ramdisk installer). Also adding simple cursor key support to the VR41xx kiu. 20050329 Some progress on the wdc. Updating the documentation of how to (possibly) install NetBSD/hpcmips, once it is working. Adding delays before wdc interrupts; this allows NetBSD 2.0/hpcmips to be successfully installed! Mirroring physical addresses 0x8....... to 0x00000000 on hpcmips; this makes it possible to run X11 inside NetBSD/hpcmips :-) Updating the documentation regarding NetBSD/hpcmips. Fixing 16-bit vs 15-bit color in dev_fb. 20050330 Print a warning when the user attempts to load a gzipped file. (Thanks to Juan RP for making me aware of this "bug".) 20050331 Importing aic7xxx_reg.h from NetBSD. Adding a "-x" command line option, which forces xterms for each emulated serial port to always be opened. Adding a MobilePro 770 mode (same as 780, but different framebuffer address which allows bintrans = fast scrolling), and a MobilePro 800 (with 800x600 pixels framebuffer :-). 20050401 Minor updates. 20050402 Minor updates. (The standby and suspend instructions are bintransed as NOPs, and some minor documentation updates.) 20050403 Adding an Agenda VR3 mode, and playing around with a Linux kernel image, but not much success yet. Changing BIFB_D16_FFFF -> BIFB_D16_0000 for the hpcmips framebuffers, causing NetBSD to boot with correct colors. New syntax for loading raw files: loadaddr:skiplen: initialpc:filename. (This is necessary to boot the Linux VR3 kernels.) The Linux VR3 kernel boots in both serial console mode and using the framebuffer, but it panics relatively early. 20050404 Continuing on the AHC, and some other minor updates. 20050405 Adding a note in doc/experimental.html about "root1.2.6.cramfs" (thanks to Alec Voropay for noticing that it wasn't part of root1.2.6.kernel-8.00). Also adding a note about another cramfs image. -o options are now added to the command line passed to the Linux kernel, when emulating the VR3. Adding a MobilePro 880 mode, and a dummy IBM WorkPad Z50 mode. 20050406 Connecting the VR3 serial controller to irq 9 (Linux calls this irq 17), and some other interrupt-related cleanups. Reducing the memory overhead per bintranslated page. (Hopefully this makes things faster, or at least not slower...) 20050407 Some more cleanup regarding command line argument passing for the hpcmips modes. Playing with Linux kernels for MobilePro 770 and 800; they get as far as mounting a root filesystem, but then crash. Doing some testing for the next release. ============== RELEASE 0.3.1 ==============
1 | /* gxemul: $Id: aic7xxx_reg.h,v 1.2 2005/03/30 22:57:34 debug Exp $ */ |
2 | /* See NetBSD's aic7xxx_reg.h for more info. */ |
3 | |
4 | #ifndef AIC7XXX_REG_H |
5 | #define AIC7XXX_REG_H |
6 | |
7 | /* |
8 | * DO NOT EDIT - This file is automatically generated |
9 | * from the following source files: |
10 | * |
11 | * $NetBSD: aic7xxx_reg.h,v 1.2 2003/04/19 19:27:50 fvdl Exp $ |
12 | * $NetBSD: aic7xxx_reg.h,v 1.2 2003/04/19 19:27:50 fvdl Exp $ |
13 | */ |
14 | #if 0 |
15 | typedef int (ahc_reg_print_t)(u_int, u_int *, u_int); |
16 | typedef struct ahc_reg_parse_entry { |
17 | char *name; |
18 | uint8_t value; |
19 | uint8_t mask; |
20 | } ahc_reg_parse_entry_t; |
21 | #endif |
22 | |
23 | #if AIC_DEBUG_REGISTERS |
24 | ahc_reg_print_t ahc_scsiseq_print; |
25 | #else |
26 | #define ahc_scsiseq_print(regvalue, cur_col, wrap) \ |
27 | ahc_print_register(NULL, 0, "SCSISEQ", 0x00, regvalue, cur_col, wrap) |
28 | #endif |
29 | |
30 | #if AIC_DEBUG_REGISTERS |
31 | ahc_reg_print_t ahc_sxfrctl0_print; |
32 | #else |
33 | #define ahc_sxfrctl0_print(regvalue, cur_col, wrap) \ |
34 | ahc_print_register(NULL, 0, "SXFRCTL0", 0x01, regvalue, cur_col, wrap) |
35 | #endif |
36 | |
37 | #if AIC_DEBUG_REGISTERS |
38 | ahc_reg_print_t ahc_sxfrctl1_print; |
39 | #else |
40 | #define ahc_sxfrctl1_print(regvalue, cur_col, wrap) \ |
41 | ahc_print_register(NULL, 0, "SXFRCTL1", 0x02, regvalue, cur_col, wrap) |
42 | #endif |
43 | |
44 | #if AIC_DEBUG_REGISTERS |
45 | ahc_reg_print_t ahc_scsisigo_print; |
46 | #else |
47 | #define ahc_scsisigo_print(regvalue, cur_col, wrap) \ |
48 | ahc_print_register(NULL, 0, "SCSISIGO", 0x03, regvalue, cur_col, wrap) |
49 | #endif |
50 | |
51 | #if AIC_DEBUG_REGISTERS |
52 | ahc_reg_print_t ahc_scsisigi_print; |
53 | #else |
54 | #define ahc_scsisigi_print(regvalue, cur_col, wrap) \ |
55 | ahc_print_register(NULL, 0, "SCSISIGI", 0x03, regvalue, cur_col, wrap) |
56 | #endif |
57 | |
58 | #if AIC_DEBUG_REGISTERS |
59 | ahc_reg_print_t ahc_scsirate_print; |
60 | #else |
61 | #define ahc_scsirate_print(regvalue, cur_col, wrap) \ |
62 | ahc_print_register(NULL, 0, "SCSIRATE", 0x04, regvalue, cur_col, wrap) |
63 | #endif |
64 | |
65 | #if AIC_DEBUG_REGISTERS |
66 | ahc_reg_print_t ahc_scsiid_print; |
67 | #else |
68 | #define ahc_scsiid_print(regvalue, cur_col, wrap) \ |
69 | ahc_print_register(NULL, 0, "SCSIID", 0x05, regvalue, cur_col, wrap) |
70 | #endif |
71 | |
72 | #if AIC_DEBUG_REGISTERS |
73 | ahc_reg_print_t ahc_scsidatl_print; |
74 | #else |
75 | #define ahc_scsidatl_print(regvalue, cur_col, wrap) \ |
76 | ahc_print_register(NULL, 0, "SCSIDATL", 0x06, regvalue, cur_col, wrap) |
77 | #endif |
78 | |
79 | #if AIC_DEBUG_REGISTERS |
80 | ahc_reg_print_t ahc_scsidath_print; |
81 | #else |
82 | #define ahc_scsidath_print(regvalue, cur_col, wrap) \ |
83 | ahc_print_register(NULL, 0, "SCSIDATH", 0x07, regvalue, cur_col, wrap) |
84 | #endif |
85 | |
86 | #if AIC_DEBUG_REGISTERS |
87 | ahc_reg_print_t ahc_stcnt_print; |
88 | #else |
89 | #define ahc_stcnt_print(regvalue, cur_col, wrap) \ |
90 | ahc_print_register(NULL, 0, "STCNT", 0x08, regvalue, cur_col, wrap) |
91 | #endif |
92 | |
93 | #if AIC_DEBUG_REGISTERS |
94 | ahc_reg_print_t ahc_optionmode_print; |
95 | #else |
96 | #define ahc_optionmode_print(regvalue, cur_col, wrap) \ |
97 | ahc_print_register(NULL, 0, "OPTIONMODE", 0x08, regvalue, cur_col, wrap) |
98 | #endif |
99 | |
100 | #if AIC_DEBUG_REGISTERS |
101 | ahc_reg_print_t ahc_targcrccnt_print; |
102 | #else |
103 | #define ahc_targcrccnt_print(regvalue, cur_col, wrap) \ |
104 | ahc_print_register(NULL, 0, "TARGCRCCNT", 0x0a, regvalue, cur_col, wrap) |
105 | #endif |
106 | |
107 | #if AIC_DEBUG_REGISTERS |
108 | ahc_reg_print_t ahc_clrsint0_print; |
109 | #else |
110 | #define ahc_clrsint0_print(regvalue, cur_col, wrap) \ |
111 | ahc_print_register(NULL, 0, "CLRSINT0", 0x0b, regvalue, cur_col, wrap) |
112 | #endif |
113 | |
114 | #if AIC_DEBUG_REGISTERS |
115 | ahc_reg_print_t ahc_sstat0_print; |
116 | #else |
117 | #define ahc_sstat0_print(regvalue, cur_col, wrap) \ |
118 | ahc_print_register(NULL, 0, "SSTAT0", 0x0b, regvalue, cur_col, wrap) |
119 | #endif |
120 | |
121 | #if AIC_DEBUG_REGISTERS |
122 | ahc_reg_print_t ahc_clrsint1_print; |
123 | #else |
124 | #define ahc_clrsint1_print(regvalue, cur_col, wrap) \ |
125 | ahc_print_register(NULL, 0, "CLRSINT1", 0x0c, regvalue, cur_col, wrap) |
126 | #endif |
127 | |
128 | #if AIC_DEBUG_REGISTERS |
129 | ahc_reg_print_t ahc_sstat1_print; |
130 | #else |
131 | #define ahc_sstat1_print(regvalue, cur_col, wrap) \ |
132 | ahc_print_register(NULL, 0, "SSTAT1", 0x0c, regvalue, cur_col, wrap) |
133 | #endif |
134 | |
135 | #if AIC_DEBUG_REGISTERS |
136 | ahc_reg_print_t ahc_sstat2_print; |
137 | #else |
138 | #define ahc_sstat2_print(regvalue, cur_col, wrap) \ |
139 | ahc_print_register(NULL, 0, "SSTAT2", 0x0d, regvalue, cur_col, wrap) |
140 | #endif |
141 | |
142 | #if AIC_DEBUG_REGISTERS |
143 | ahc_reg_print_t ahc_sstat3_print; |
144 | #else |
145 | #define ahc_sstat3_print(regvalue, cur_col, wrap) \ |
146 | ahc_print_register(NULL, 0, "SSTAT3", 0x0e, regvalue, cur_col, wrap) |
147 | #endif |
148 | |
149 | #if AIC_DEBUG_REGISTERS |
150 | ahc_reg_print_t ahc_scsiid_ultra2_print; |
151 | #else |
152 | #define ahc_scsiid_ultra2_print(regvalue, cur_col, wrap) \ |
153 | ahc_print_register(NULL, 0, "SCSIID_ULTRA2", 0x0f, regvalue, cur_col, wrap) |
154 | #endif |
155 | |
156 | #if AIC_DEBUG_REGISTERS |
157 | ahc_reg_print_t ahc_simode0_print; |
158 | #else |
159 | #define ahc_simode0_print(regvalue, cur_col, wrap) \ |
160 | ahc_print_register(NULL, 0, "SIMODE0", 0x10, regvalue, cur_col, wrap) |
161 | #endif |
162 | |
163 | #if AIC_DEBUG_REGISTERS |
164 | ahc_reg_print_t ahc_simode1_print; |
165 | #else |
166 | #define ahc_simode1_print(regvalue, cur_col, wrap) \ |
167 | ahc_print_register(NULL, 0, "SIMODE1", 0x11, regvalue, cur_col, wrap) |
168 | #endif |
169 | |
170 | #if AIC_DEBUG_REGISTERS |
171 | ahc_reg_print_t ahc_scsibusl_print; |
172 | #else |
173 | #define ahc_scsibusl_print(regvalue, cur_col, wrap) \ |
174 | ahc_print_register(NULL, 0, "SCSIBUSL", 0x12, regvalue, cur_col, wrap) |
175 | #endif |
176 | |
177 | #if AIC_DEBUG_REGISTERS |
178 | ahc_reg_print_t ahc_sxfrctl2_print; |
179 | #else |
180 | #define ahc_sxfrctl2_print(regvalue, cur_col, wrap) \ |
181 | ahc_print_register(NULL, 0, "SXFRCTL2", 0x13, regvalue, cur_col, wrap) |
182 | #endif |
183 | |
184 | #if AIC_DEBUG_REGISTERS |
185 | ahc_reg_print_t ahc_scsibush_print; |
186 | #else |
187 | #define ahc_scsibush_print(regvalue, cur_col, wrap) \ |
188 | ahc_print_register(NULL, 0, "SCSIBUSH", 0x13, regvalue, cur_col, wrap) |
189 | #endif |
190 | |
191 | #if AIC_DEBUG_REGISTERS |
192 | ahc_reg_print_t ahc_shaddr_print; |
193 | #else |
194 | #define ahc_shaddr_print(regvalue, cur_col, wrap) \ |
195 | ahc_print_register(NULL, 0, "SHADDR", 0x14, regvalue, cur_col, wrap) |
196 | #endif |
197 | |
198 | #if AIC_DEBUG_REGISTERS |
199 | ahc_reg_print_t ahc_seltimer_print; |
200 | #else |
201 | #define ahc_seltimer_print(regvalue, cur_col, wrap) \ |
202 | ahc_print_register(NULL, 0, "SELTIMER", 0x18, regvalue, cur_col, wrap) |
203 | #endif |
204 | |
205 | #if AIC_DEBUG_REGISTERS |
206 | ahc_reg_print_t ahc_selid_print; |
207 | #else |
208 | #define ahc_selid_print(regvalue, cur_col, wrap) \ |
209 | ahc_print_register(NULL, 0, "SELID", 0x19, regvalue, cur_col, wrap) |
210 | #endif |
211 | |
212 | #if AIC_DEBUG_REGISTERS |
213 | ahc_reg_print_t ahc_scamctl_print; |
214 | #else |
215 | #define ahc_scamctl_print(regvalue, cur_col, wrap) \ |
216 | ahc_print_register(NULL, 0, "SCAMCTL", 0x1a, regvalue, cur_col, wrap) |
217 | #endif |
218 | |
219 | #if AIC_DEBUG_REGISTERS |
220 | ahc_reg_print_t ahc_targid_print; |
221 | #else |
222 | #define ahc_targid_print(regvalue, cur_col, wrap) \ |
223 | ahc_print_register(NULL, 0, "TARGID", 0x1b, regvalue, cur_col, wrap) |
224 | #endif |
225 | |
226 | #if AIC_DEBUG_REGISTERS |
227 | ahc_reg_print_t ahc_spiocap_print; |
228 | #else |
229 | #define ahc_spiocap_print(regvalue, cur_col, wrap) \ |
230 | ahc_print_register(NULL, 0, "SPIOCAP", 0x1b, regvalue, cur_col, wrap) |
231 | #endif |
232 | |
233 | #if AIC_DEBUG_REGISTERS |
234 | ahc_reg_print_t ahc_brdctl_print; |
235 | #else |
236 | #define ahc_brdctl_print(regvalue, cur_col, wrap) \ |
237 | ahc_print_register(NULL, 0, "BRDCTL", 0x1d, regvalue, cur_col, wrap) |
238 | #endif |
239 | |
240 | #if AIC_DEBUG_REGISTERS |
241 | ahc_reg_print_t ahc_seectl_print; |
242 | #else |
243 | #define ahc_seectl_print(regvalue, cur_col, wrap) \ |
244 | ahc_print_register(NULL, 0, "SEECTL", 0x1e, regvalue, cur_col, wrap) |
245 | #endif |
246 | |
247 | #if AIC_DEBUG_REGISTERS |
248 | ahc_reg_print_t ahc_sblkctl_print; |
249 | #else |
250 | #define ahc_sblkctl_print(regvalue, cur_col, wrap) \ |
251 | ahc_print_register(NULL, 0, "SBLKCTL", 0x1f, regvalue, cur_col, wrap) |
252 | #endif |
253 | |
254 | #if AIC_DEBUG_REGISTERS |
255 | ahc_reg_print_t ahc_busy_targets_print; |
256 | #else |
257 | #define ahc_busy_targets_print(regvalue, cur_col, wrap) \ |
258 | ahc_print_register(NULL, 0, "BUSY_TARGETS", 0x20, regvalue, cur_col, wrap) |
259 | #endif |
260 | |
261 | #if AIC_DEBUG_REGISTERS |
262 | ahc_reg_print_t ahc_ultra_enb_print; |
263 | #else |
264 | #define ahc_ultra_enb_print(regvalue, cur_col, wrap) \ |
265 | ahc_print_register(NULL, 0, "ULTRA_ENB", 0x30, regvalue, cur_col, wrap) |
266 | #endif |
267 | |
268 | #if AIC_DEBUG_REGISTERS |
269 | ahc_reg_print_t ahc_disc_dsb_print; |
270 | #else |
271 | #define ahc_disc_dsb_print(regvalue, cur_col, wrap) \ |
272 | ahc_print_register(NULL, 0, "DISC_DSB", 0x32, regvalue, cur_col, wrap) |
273 | #endif |
274 | |
275 | #if AIC_DEBUG_REGISTERS |
276 | ahc_reg_print_t ahc_cmdsize_table_tail_print; |
277 | #else |
278 | #define ahc_cmdsize_table_tail_print(regvalue, cur_col, wrap) \ |
279 | ahc_print_register(NULL, 0, "CMDSIZE_TABLE_TAIL", 0x34, regvalue, cur_col, wrap) |
280 | #endif |
281 | |
282 | #if AIC_DEBUG_REGISTERS |
283 | ahc_reg_print_t ahc_mwi_residual_print; |
284 | #else |
285 | #define ahc_mwi_residual_print(regvalue, cur_col, wrap) \ |
286 | ahc_print_register(NULL, 0, "MWI_RESIDUAL", 0x38, regvalue, cur_col, wrap) |
287 | #endif |
288 | |
289 | #if AIC_DEBUG_REGISTERS |
290 | ahc_reg_print_t ahc_next_queued_scb_print; |
291 | #else |
292 | #define ahc_next_queued_scb_print(regvalue, cur_col, wrap) \ |
293 | ahc_print_register(NULL, 0, "NEXT_QUEUED_SCB", 0x39, regvalue, cur_col, wrap) |
294 | #endif |
295 | |
296 | #if AIC_DEBUG_REGISTERS |
297 | ahc_reg_print_t ahc_msg_out_print; |
298 | #else |
299 | #define ahc_msg_out_print(regvalue, cur_col, wrap) \ |
300 | ahc_print_register(NULL, 0, "MSG_OUT", 0x3a, regvalue, cur_col, wrap) |
301 | #endif |
302 | |
303 | #if AIC_DEBUG_REGISTERS |
304 | ahc_reg_print_t ahc_dmaparams_print; |
305 | #else |
306 | #define ahc_dmaparams_print(regvalue, cur_col, wrap) \ |
307 | ahc_print_register(NULL, 0, "DMAPARAMS", 0x3b, regvalue, cur_col, wrap) |
308 | #endif |
309 | |
310 | #if AIC_DEBUG_REGISTERS |
311 | ahc_reg_print_t ahc_seq_flags_print; |
312 | #else |
313 | #define ahc_seq_flags_print(regvalue, cur_col, wrap) \ |
314 | ahc_print_register(NULL, 0, "SEQ_FLAGS", 0x3c, regvalue, cur_col, wrap) |
315 | #endif |
316 | |
317 | #if AIC_DEBUG_REGISTERS |
318 | ahc_reg_print_t ahc_saved_scsiid_print; |
319 | #else |
320 | #define ahc_saved_scsiid_print(regvalue, cur_col, wrap) \ |
321 | ahc_print_register(NULL, 0, "SAVED_SCSIID", 0x3d, regvalue, cur_col, wrap) |
322 | #endif |
323 | |
324 | #if AIC_DEBUG_REGISTERS |
325 | ahc_reg_print_t ahc_saved_lun_print; |
326 | #else |
327 | #define ahc_saved_lun_print(regvalue, cur_col, wrap) \ |
328 | ahc_print_register(NULL, 0, "SAVED_LUN", 0x3e, regvalue, cur_col, wrap) |
329 | #endif |
330 | |
331 | #if AIC_DEBUG_REGISTERS |
332 | ahc_reg_print_t ahc_lastphase_print; |
333 | #else |
334 | #define ahc_lastphase_print(regvalue, cur_col, wrap) \ |
335 | ahc_print_register(NULL, 0, "LASTPHASE", 0x3f, regvalue, cur_col, wrap) |
336 | #endif |
337 | |
338 | #if AIC_DEBUG_REGISTERS |
339 | ahc_reg_print_t ahc_waiting_scbh_print; |
340 | #else |
341 | #define ahc_waiting_scbh_print(regvalue, cur_col, wrap) \ |
342 | ahc_print_register(NULL, 0, "WAITING_SCBH", 0x40, regvalue, cur_col, wrap) |
343 | #endif |
344 | |
345 | #if AIC_DEBUG_REGISTERS |
346 | ahc_reg_print_t ahc_disconnected_scbh_print; |
347 | #else |
348 | #define ahc_disconnected_scbh_print(regvalue, cur_col, wrap) \ |
349 | ahc_print_register(NULL, 0, "DISCONNECTED_SCBH", 0x41, regvalue, cur_col, wrap) |
350 | #endif |
351 | |
352 | #if AIC_DEBUG_REGISTERS |
353 | ahc_reg_print_t ahc_free_scbh_print; |
354 | #else |
355 | #define ahc_free_scbh_print(regvalue, cur_col, wrap) \ |
356 | ahc_print_register(NULL, 0, "FREE_SCBH", 0x42, regvalue, cur_col, wrap) |
357 | #endif |
358 | |
359 | #if AIC_DEBUG_REGISTERS |
360 | ahc_reg_print_t ahc_complete_scbh_print; |
361 | #else |
362 | #define ahc_complete_scbh_print(regvalue, cur_col, wrap) \ |
363 | ahc_print_register(NULL, 0, "COMPLETE_SCBH", 0x43, regvalue, cur_col, wrap) |
364 | #endif |
365 | |
366 | #if AIC_DEBUG_REGISTERS |
367 | ahc_reg_print_t ahc_hscb_addr_print; |
368 | #else |
369 | #define ahc_hscb_addr_print(regvalue, cur_col, wrap) \ |
370 | ahc_print_register(NULL, 0, "HSCB_ADDR", 0x44, regvalue, cur_col, wrap) |
371 | #endif |
372 | |
373 | #if AIC_DEBUG_REGISTERS |
374 | ahc_reg_print_t ahc_shared_data_addr_print; |
375 | #else |
376 | #define ahc_shared_data_addr_print(regvalue, cur_col, wrap) \ |
377 | ahc_print_register(NULL, 0, "SHARED_DATA_ADDR", 0x48, regvalue, cur_col, wrap) |
378 | #endif |
379 | |
380 | #if AIC_DEBUG_REGISTERS |
381 | ahc_reg_print_t ahc_kernel_qinpos_print; |
382 | #else |
383 | #define ahc_kernel_qinpos_print(regvalue, cur_col, wrap) \ |
384 | ahc_print_register(NULL, 0, "KERNEL_QINPOS", 0x4c, regvalue, cur_col, wrap) |
385 | #endif |
386 | |
387 | #if AIC_DEBUG_REGISTERS |
388 | ahc_reg_print_t ahc_qinpos_print; |
389 | #else |
390 | #define ahc_qinpos_print(regvalue, cur_col, wrap) \ |
391 | ahc_print_register(NULL, 0, "QINPOS", 0x4d, regvalue, cur_col, wrap) |
392 | #endif |
393 | |
394 | #if AIC_DEBUG_REGISTERS |
395 | ahc_reg_print_t ahc_qoutpos_print; |
396 | #else |
397 | #define ahc_qoutpos_print(regvalue, cur_col, wrap) \ |
398 | ahc_print_register(NULL, 0, "QOUTPOS", 0x4e, regvalue, cur_col, wrap) |
399 | #endif |
400 | |
401 | #if AIC_DEBUG_REGISTERS |
402 | ahc_reg_print_t ahc_kernel_tqinpos_print; |
403 | #else |
404 | #define ahc_kernel_tqinpos_print(regvalue, cur_col, wrap) \ |
405 | ahc_print_register(NULL, 0, "KERNEL_TQINPOS", 0x4f, regvalue, cur_col, wrap) |
406 | #endif |
407 | |
408 | #if AIC_DEBUG_REGISTERS |
409 | ahc_reg_print_t ahc_tqinpos_print; |
410 | #else |
411 | #define ahc_tqinpos_print(regvalue, cur_col, wrap) \ |
412 | ahc_print_register(NULL, 0, "TQINPOS", 0x50, regvalue, cur_col, wrap) |
413 | #endif |
414 | |
415 | #if AIC_DEBUG_REGISTERS |
416 | ahc_reg_print_t ahc_arg_1_print; |
417 | #else |
418 | #define ahc_arg_1_print(regvalue, cur_col, wrap) \ |
419 | ahc_print_register(NULL, 0, "ARG_1", 0x51, regvalue, cur_col, wrap) |
420 | #endif |
421 | |
422 | #if AIC_DEBUG_REGISTERS |
423 | ahc_reg_print_t ahc_arg_2_print; |
424 | #else |
425 | #define ahc_arg_2_print(regvalue, cur_col, wrap) \ |
426 | ahc_print_register(NULL, 0, "ARG_2", 0x52, regvalue, cur_col, wrap) |
427 | #endif |
428 | |
429 | #if AIC_DEBUG_REGISTERS |
430 | ahc_reg_print_t ahc_last_msg_print; |
431 | #else |
432 | #define ahc_last_msg_print(regvalue, cur_col, wrap) \ |
433 | ahc_print_register(NULL, 0, "LAST_MSG", 0x53, regvalue, cur_col, wrap) |
434 | #endif |
435 | |
436 | #if AIC_DEBUG_REGISTERS |
437 | ahc_reg_print_t ahc_scsiseq_template_print; |
438 | #else |
439 | #define ahc_scsiseq_template_print(regvalue, cur_col, wrap) \ |
440 | ahc_print_register(NULL, 0, "SCSISEQ_TEMPLATE", 0x54, regvalue, cur_col, wrap) |
441 | #endif |
442 | |
443 | #if AIC_DEBUG_REGISTERS |
444 | ahc_reg_print_t ahc_data_count_odd_print; |
445 | #else |
446 | #define ahc_data_count_odd_print(regvalue, cur_col, wrap) \ |
447 | ahc_print_register(NULL, 0, "DATA_COUNT_ODD", 0x55, regvalue, cur_col, wrap) |
448 | #endif |
449 | |
450 | #if AIC_DEBUG_REGISTERS |
451 | ahc_reg_print_t ahc_ha_274_biosglobal_print; |
452 | #else |
453 | #define ahc_ha_274_biosglobal_print(regvalue, cur_col, wrap) \ |
454 | ahc_print_register(NULL, 0, "HA_274_BIOSGLOBAL", 0x56, regvalue, cur_col, wrap) |
455 | #endif |
456 | |
457 | #if AIC_DEBUG_REGISTERS |
458 | ahc_reg_print_t ahc_seq_flags2_print; |
459 | #else |
460 | #define ahc_seq_flags2_print(regvalue, cur_col, wrap) \ |
461 | ahc_print_register(NULL, 0, "SEQ_FLAGS2", 0x57, regvalue, cur_col, wrap) |
462 | #endif |
463 | |
464 | #if AIC_DEBUG_REGISTERS |
465 | ahc_reg_print_t ahc_scsiconf_print; |
466 | #else |
467 | #define ahc_scsiconf_print(regvalue, cur_col, wrap) \ |
468 | ahc_print_register(NULL, 0, "SCSICONF", 0x5a, regvalue, cur_col, wrap) |
469 | #endif |
470 | |
471 | #if AIC_DEBUG_REGISTERS |
472 | ahc_reg_print_t ahc_intdef_print; |
473 | #else |
474 | #define ahc_intdef_print(regvalue, cur_col, wrap) \ |
475 | ahc_print_register(NULL, 0, "INTDEF", 0x5c, regvalue, cur_col, wrap) |
476 | #endif |
477 | |
478 | #if AIC_DEBUG_REGISTERS |
479 | ahc_reg_print_t ahc_hostconf_print; |
480 | #else |
481 | #define ahc_hostconf_print(regvalue, cur_col, wrap) \ |
482 | ahc_print_register(NULL, 0, "HOSTCONF", 0x5d, regvalue, cur_col, wrap) |
483 | #endif |
484 | |
485 | #if AIC_DEBUG_REGISTERS |
486 | ahc_reg_print_t ahc_ha_274_biosctrl_print; |
487 | #else |
488 | #define ahc_ha_274_biosctrl_print(regvalue, cur_col, wrap) \ |
489 | ahc_print_register(NULL, 0, "HA_274_BIOSCTRL", 0x5f, regvalue, cur_col, wrap) |
490 | #endif |
491 | |
492 | #if AIC_DEBUG_REGISTERS |
493 | ahc_reg_print_t ahc_seqctl_print; |
494 | #else |
495 | #define ahc_seqctl_print(regvalue, cur_col, wrap) \ |
496 | ahc_print_register(NULL, 0, "SEQCTL", 0x60, regvalue, cur_col, wrap) |
497 | #endif |
498 | |
499 | #if AIC_DEBUG_REGISTERS |
500 | ahc_reg_print_t ahc_seqram_print; |
501 | #else |
502 | #define ahc_seqram_print(regvalue, cur_col, wrap) \ |
503 | ahc_print_register(NULL, 0, "SEQRAM", 0x61, regvalue, cur_col, wrap) |
504 | #endif |
505 | |
506 | #if AIC_DEBUG_REGISTERS |
507 | ahc_reg_print_t ahc_seqaddr0_print; |
508 | #else |
509 | #define ahc_seqaddr0_print(regvalue, cur_col, wrap) \ |
510 | ahc_print_register(NULL, 0, "SEQADDR0", 0x62, regvalue, cur_col, wrap) |
511 | #endif |
512 | |
513 | #if AIC_DEBUG_REGISTERS |
514 | ahc_reg_print_t ahc_seqaddr1_print; |
515 | #else |
516 | #define ahc_seqaddr1_print(regvalue, cur_col, wrap) \ |
517 | ahc_print_register(NULL, 0, "SEQADDR1", 0x63, regvalue, cur_col, wrap) |
518 | #endif |
519 | |
520 | #if AIC_DEBUG_REGISTERS |
521 | ahc_reg_print_t ahc_accum_print; |
522 | #else |
523 | #define ahc_accum_print(regvalue, cur_col, wrap) \ |
524 | ahc_print_register(NULL, 0, "ACCUM", 0x64, regvalue, cur_col, wrap) |
525 | #endif |
526 | |
527 | #if AIC_DEBUG_REGISTERS |
528 | ahc_reg_print_t ahc_sindex_print; |
529 | #else |
530 | #define ahc_sindex_print(regvalue, cur_col, wrap) \ |
531 | ahc_print_register(NULL, 0, "SINDEX", 0x65, regvalue, cur_col, wrap) |
532 | #endif |
533 | |
534 | #if AIC_DEBUG_REGISTERS |
535 | ahc_reg_print_t ahc_dindex_print; |
536 | #else |
537 | #define ahc_dindex_print(regvalue, cur_col, wrap) \ |
538 | ahc_print_register(NULL, 0, "DINDEX", 0x66, regvalue, cur_col, wrap) |
539 | #endif |
540 | |
541 | #if AIC_DEBUG_REGISTERS |
542 | ahc_reg_print_t ahc_allones_print; |
543 | #else |
544 | #define ahc_allones_print(regvalue, cur_col, wrap) \ |
545 | ahc_print_register(NULL, 0, "ALLONES", 0x69, regvalue, cur_col, wrap) |
546 | #endif |
547 | |
548 | #if AIC_DEBUG_REGISTERS |
549 | ahc_reg_print_t ahc_none_print; |
550 | #else |
551 | #define ahc_none_print(regvalue, cur_col, wrap) \ |
552 | ahc_print_register(NULL, 0, "NONE", 0x6a, regvalue, cur_col, wrap) |
553 | #endif |
554 | |
555 | #if AIC_DEBUG_REGISTERS |
556 | ahc_reg_print_t ahc_allzeros_print; |
557 | #else |
558 | #define ahc_allzeros_print(regvalue, cur_col, wrap) \ |
559 | ahc_print_register(NULL, 0, "ALLZEROS", 0x6a, regvalue, cur_col, wrap) |
560 | #endif |
561 | |
562 | #if AIC_DEBUG_REGISTERS |
563 | ahc_reg_print_t ahc_flags_print; |
564 | #else |
565 | #define ahc_flags_print(regvalue, cur_col, wrap) \ |
566 | ahc_print_register(NULL, 0, "FLAGS", 0x6b, regvalue, cur_col, wrap) |
567 | #endif |
568 | |
569 | #if AIC_DEBUG_REGISTERS |
570 | ahc_reg_print_t ahc_sindir_print; |
571 | #else |
572 | #define ahc_sindir_print(regvalue, cur_col, wrap) \ |
573 | ahc_print_register(NULL, 0, "SINDIR", 0x6c, regvalue, cur_col, wrap) |
574 | #endif |
575 | |
576 | #if AIC_DEBUG_REGISTERS |
577 | ahc_reg_print_t ahc_dindir_print; |
578 | #else |
579 | #define ahc_dindir_print(regvalue, cur_col, wrap) \ |
580 | ahc_print_register(NULL, 0, "DINDIR", 0x6d, regvalue, cur_col, wrap) |
581 | #endif |
582 | |
583 | #if AIC_DEBUG_REGISTERS |
584 | ahc_reg_print_t ahc_function1_print; |
585 | #else |
586 | #define ahc_function1_print(regvalue, cur_col, wrap) \ |
587 | ahc_print_register(NULL, 0, "FUNCTION1", 0x6e, regvalue, cur_col, wrap) |
588 | #endif |
589 | |
590 | #if AIC_DEBUG_REGISTERS |
591 | ahc_reg_print_t ahc_stack_print; |
592 | #else |
593 | #define ahc_stack_print(regvalue, cur_col, wrap) \ |
594 | ahc_print_register(NULL, 0, "STACK", 0x6f, regvalue, cur_col, wrap) |
595 | #endif |
596 | |
597 | #if AIC_DEBUG_REGISTERS |
598 | ahc_reg_print_t ahc_targ_offset_print; |
599 | #else |
600 | #define ahc_targ_offset_print(regvalue, cur_col, wrap) \ |
601 | ahc_print_register(NULL, 0, "TARG_OFFSET", 0x70, regvalue, cur_col, wrap) |
602 | #endif |
603 | |
604 | #if AIC_DEBUG_REGISTERS |
605 | ahc_reg_print_t ahc_sram_base_print; |
606 | #else |
607 | #define ahc_sram_base_print(regvalue, cur_col, wrap) \ |
608 | ahc_print_register(NULL, 0, "SRAM_BASE", 0x70, regvalue, cur_col, wrap) |
609 | #endif |
610 | |
611 | #if AIC_DEBUG_REGISTERS |
612 | ahc_reg_print_t ahc_bctl_print; |
613 | #else |
614 | #define ahc_bctl_print(regvalue, cur_col, wrap) \ |
615 | ahc_print_register(NULL, 0, "BCTL", 0x84, regvalue, cur_col, wrap) |
616 | #endif |
617 | |
618 | #if AIC_DEBUG_REGISTERS |
619 | ahc_reg_print_t ahc_dscommand0_print; |
620 | #else |
621 | #define ahc_dscommand0_print(regvalue, cur_col, wrap) \ |
622 | ahc_print_register(NULL, 0, "DSCOMMAND0", 0x84, regvalue, cur_col, wrap) |
623 | #endif |
624 | |
625 | #if AIC_DEBUG_REGISTERS |
626 | ahc_reg_print_t ahc_bustime_print; |
627 | #else |
628 | #define ahc_bustime_print(regvalue, cur_col, wrap) \ |
629 | ahc_print_register(NULL, 0, "BUSTIME", 0x85, regvalue, cur_col, wrap) |
630 | #endif |
631 | |
632 | #if AIC_DEBUG_REGISTERS |
633 | ahc_reg_print_t ahc_dscommand1_print; |
634 | #else |
635 | #define ahc_dscommand1_print(regvalue, cur_col, wrap) \ |
636 | ahc_print_register(NULL, 0, "DSCOMMAND1", 0x85, regvalue, cur_col, wrap) |
637 | #endif |
638 | |
639 | #if AIC_DEBUG_REGISTERS |
640 | ahc_reg_print_t ahc_busspd_print; |
641 | #else |
642 | #define ahc_busspd_print(regvalue, cur_col, wrap) \ |
643 | ahc_print_register(NULL, 0, "BUSSPD", 0x86, regvalue, cur_col, wrap) |
644 | #endif |
645 | |
646 | #if AIC_DEBUG_REGISTERS |
647 | ahc_reg_print_t ahc_dspcistatus_print; |
648 | #else |
649 | #define ahc_dspcistatus_print(regvalue, cur_col, wrap) \ |
650 | ahc_print_register(NULL, 0, "DSPCISTATUS", 0x86, regvalue, cur_col, wrap) |
651 | #endif |
652 | |
653 | #if AIC_DEBUG_REGISTERS |
654 | ahc_reg_print_t ahc_hs_mailbox_print; |
655 | #else |
656 | #define ahc_hs_mailbox_print(regvalue, cur_col, wrap) \ |
657 | ahc_print_register(NULL, 0, "HS_MAILBOX", 0x86, regvalue, cur_col, wrap) |
658 | #endif |
659 | |
660 | #if AIC_DEBUG_REGISTERS |
661 | ahc_reg_print_t ahc_hcntrl_print; |
662 | #else |
663 | #define ahc_hcntrl_print(regvalue, cur_col, wrap) \ |
664 | ahc_print_register(NULL, 0, "HCNTRL", 0x87, regvalue, cur_col, wrap) |
665 | #endif |
666 | |
667 | #if AIC_DEBUG_REGISTERS |
668 | ahc_reg_print_t ahc_haddr_print; |
669 | #else |
670 | #define ahc_haddr_print(regvalue, cur_col, wrap) \ |
671 | ahc_print_register(NULL, 0, "HADDR", 0x88, regvalue, cur_col, wrap) |
672 | #endif |
673 | |
674 | #if AIC_DEBUG_REGISTERS |
675 | ahc_reg_print_t ahc_hcnt_print; |
676 | #else |
677 | #define ahc_hcnt_print(regvalue, cur_col, wrap) \ |
678 | ahc_print_register(NULL, 0, "HCNT", 0x8c, regvalue, cur_col, wrap) |
679 | #endif |
680 | |
681 | #if AIC_DEBUG_REGISTERS |
682 | ahc_reg_print_t ahc_scbptr_print; |
683 | #else |
684 | #define ahc_scbptr_print(regvalue, cur_col, wrap) \ |
685 | ahc_print_register(NULL, 0, "SCBPTR", 0x90, regvalue, cur_col, wrap) |
686 | #endif |
687 | |
688 | #if AIC_DEBUG_REGISTERS |
689 | ahc_reg_print_t ahc_intstat_print; |
690 | #else |
691 | #define ahc_intstat_print(regvalue, cur_col, wrap) \ |
692 | ahc_print_register(NULL, 0, "INTSTAT", 0x91, regvalue, cur_col, wrap) |
693 | #endif |
694 | |
695 | #if AIC_DEBUG_REGISTERS |
696 | ahc_reg_print_t ahc_error_print; |
697 | #else |
698 | #define ahc_error_print(regvalue, cur_col, wrap) \ |
699 | ahc_print_register(NULL, 0, "ERROR", 0x92, regvalue, cur_col, wrap) |
700 | #endif |
701 | |
702 | #if AIC_DEBUG_REGISTERS |
703 | ahc_reg_print_t ahc_clrint_print; |
704 | #else |
705 | #define ahc_clrint_print(regvalue, cur_col, wrap) \ |
706 | ahc_print_register(NULL, 0, "CLRINT", 0x92, regvalue, cur_col, wrap) |
707 | #endif |
708 | |
709 | #if AIC_DEBUG_REGISTERS |
710 | ahc_reg_print_t ahc_dfcntrl_print; |
711 | #else |
712 | #define ahc_dfcntrl_print(regvalue, cur_col, wrap) \ |
713 | ahc_print_register(NULL, 0, "DFCNTRL", 0x93, regvalue, cur_col, wrap) |
714 | #endif |
715 | |
716 | #if AIC_DEBUG_REGISTERS |
717 | ahc_reg_print_t ahc_dfstatus_print; |
718 | #else |
719 | #define ahc_dfstatus_print(regvalue, cur_col, wrap) \ |
720 | ahc_print_register(NULL, 0, "DFSTATUS", 0x94, regvalue, cur_col, wrap) |
721 | #endif |
722 | |
723 | #if AIC_DEBUG_REGISTERS |
724 | ahc_reg_print_t ahc_dfwaddr_print; |
725 | #else |
726 | #define ahc_dfwaddr_print(regvalue, cur_col, wrap) \ |
727 | ahc_print_register(NULL, 0, "DFWADDR", 0x95, regvalue, cur_col, wrap) |
728 | #endif |
729 | |
730 | #if AIC_DEBUG_REGISTERS |
731 | ahc_reg_print_t ahc_dfraddr_print; |
732 | #else |
733 | #define ahc_dfraddr_print(regvalue, cur_col, wrap) \ |
734 | ahc_print_register(NULL, 0, "DFRADDR", 0x97, regvalue, cur_col, wrap) |
735 | #endif |
736 | |
737 | #if AIC_DEBUG_REGISTERS |
738 | ahc_reg_print_t ahc_dfdat_print; |
739 | #else |
740 | #define ahc_dfdat_print(regvalue, cur_col, wrap) \ |
741 | ahc_print_register(NULL, 0, "DFDAT", 0x99, regvalue, cur_col, wrap) |
742 | #endif |
743 | |
744 | #if AIC_DEBUG_REGISTERS |
745 | ahc_reg_print_t ahc_scbcnt_print; |
746 | #else |
747 | #define ahc_scbcnt_print(regvalue, cur_col, wrap) \ |
748 | ahc_print_register(NULL, 0, "SCBCNT", 0x9a, regvalue, cur_col, wrap) |
749 | #endif |
750 | |
751 | #if AIC_DEBUG_REGISTERS |
752 | ahc_reg_print_t ahc_qinfifo_print; |
753 | #else |
754 | #define ahc_qinfifo_print(regvalue, cur_col, wrap) \ |
755 | ahc_print_register(NULL, 0, "QINFIFO", 0x9b, regvalue, cur_col, wrap) |
756 | #endif |
757 | |
758 | #if AIC_DEBUG_REGISTERS |
759 | ahc_reg_print_t ahc_qincnt_print; |
760 | #else |
761 | #define ahc_qincnt_print(regvalue, cur_col, wrap) \ |
762 | ahc_print_register(NULL, 0, "QINCNT", 0x9c, regvalue, cur_col, wrap) |
763 | #endif |
764 | |
765 | #if AIC_DEBUG_REGISTERS |
766 | ahc_reg_print_t ahc_crccontrol1_print; |
767 | #else |
768 | #define ahc_crccontrol1_print(regvalue, cur_col, wrap) \ |
769 | ahc_print_register(NULL, 0, "CRCCONTROL1", 0x9d, regvalue, cur_col, wrap) |
770 | #endif |
771 | |
772 | #if AIC_DEBUG_REGISTERS |
773 | ahc_reg_print_t ahc_qoutfifo_print; |
774 | #else |
775 | #define ahc_qoutfifo_print(regvalue, cur_col, wrap) \ |
776 | ahc_print_register(NULL, 0, "QOUTFIFO", 0x9d, regvalue, cur_col, wrap) |
777 | #endif |
778 | |
779 | #if AIC_DEBUG_REGISTERS |
780 | ahc_reg_print_t ahc_scsiphase_print; |
781 | #else |
782 | #define ahc_scsiphase_print(regvalue, cur_col, wrap) \ |
783 | ahc_print_register(NULL, 0, "SCSIPHASE", 0x9e, regvalue, cur_col, wrap) |
784 | #endif |
785 | |
786 | #if AIC_DEBUG_REGISTERS |
787 | ahc_reg_print_t ahc_qoutcnt_print; |
788 | #else |
789 | #define ahc_qoutcnt_print(regvalue, cur_col, wrap) \ |
790 | ahc_print_register(NULL, 0, "QOUTCNT", 0x9e, regvalue, cur_col, wrap) |
791 | #endif |
792 | |
793 | #if AIC_DEBUG_REGISTERS |
794 | ahc_reg_print_t ahc_sfunct_print; |
795 | #else |
796 | #define ahc_sfunct_print(regvalue, cur_col, wrap) \ |
797 | ahc_print_register(NULL, 0, "SFUNCT", 0x9f, regvalue, cur_col, wrap) |
798 | #endif |
799 | |
800 | #if AIC_DEBUG_REGISTERS |
801 | ahc_reg_print_t ahc_scb_base_print; |
802 | #else |
803 | #define ahc_scb_base_print(regvalue, cur_col, wrap) \ |
804 | ahc_print_register(NULL, 0, "SCB_BASE", 0xa0, regvalue, cur_col, wrap) |
805 | #endif |
806 | |
807 | #if AIC_DEBUG_REGISTERS |
808 | ahc_reg_print_t ahc_scb_cdb_ptr_print; |
809 | #else |
810 | #define ahc_scb_cdb_ptr_print(regvalue, cur_col, wrap) \ |
811 | ahc_print_register(NULL, 0, "SCB_CDB_PTR", 0xa0, regvalue, cur_col, wrap) |
812 | #endif |
813 | |
814 | #if AIC_DEBUG_REGISTERS |
815 | ahc_reg_print_t ahc_scb_residual_sgptr_print; |
816 | #else |
817 | #define ahc_scb_residual_sgptr_print(regvalue, cur_col, wrap) \ |
818 | ahc_print_register(NULL, 0, "SCB_RESIDUAL_SGPTR", 0xa4, regvalue, cur_col, wrap) |
819 | #endif |
820 | |
821 | #if AIC_DEBUG_REGISTERS |
822 | ahc_reg_print_t ahc_scb_scsi_status_print; |
823 | #else |
824 | #define ahc_scb_scsi_status_print(regvalue, cur_col, wrap) \ |
825 | ahc_print_register(NULL, 0, "SCB_SCSI_STATUS", 0xa8, regvalue, cur_col, wrap) |
826 | #endif |
827 | |
828 | #if AIC_DEBUG_REGISTERS |
829 | ahc_reg_print_t ahc_scb_target_phases_print; |
830 | #else |
831 | #define ahc_scb_target_phases_print(regvalue, cur_col, wrap) \ |
832 | ahc_print_register(NULL, 0, "SCB_TARGET_PHASES", 0xa9, regvalue, cur_col, wrap) |
833 | #endif |
834 | |
835 | #if AIC_DEBUG_REGISTERS |
836 | ahc_reg_print_t ahc_scb_target_data_dir_print; |
837 | #else |
838 | #define ahc_scb_target_data_dir_print(regvalue, cur_col, wrap) \ |
839 | ahc_print_register(NULL, 0, "SCB_TARGET_DATA_DIR", 0xaa, regvalue, cur_col, wrap) |
840 | #endif |
841 | |
842 | #if AIC_DEBUG_REGISTERS |
843 | ahc_reg_print_t ahc_scb_target_itag_print; |
844 | #else |
845 | #define ahc_scb_target_itag_print(regvalue, cur_col, wrap) \ |
846 | ahc_print_register(NULL, 0, "SCB_TARGET_ITAG", 0xab, regvalue, cur_col, wrap) |
847 | #endif |
848 | |
849 | #if AIC_DEBUG_REGISTERS |
850 | ahc_reg_print_t ahc_scb_dataptr_print; |
851 | #else |
852 | #define ahc_scb_dataptr_print(regvalue, cur_col, wrap) \ |
853 | ahc_print_register(NULL, 0, "SCB_DATAPTR", 0xac, regvalue, cur_col, wrap) |
854 | #endif |
855 | |
856 | #if AIC_DEBUG_REGISTERS |
857 | ahc_reg_print_t ahc_scb_datacnt_print; |
858 | #else |
859 | #define ahc_scb_datacnt_print(regvalue, cur_col, wrap) \ |
860 | ahc_print_register(NULL, 0, "SCB_DATACNT", 0xb0, regvalue, cur_col, wrap) |
861 | #endif |
862 | |
863 | #if AIC_DEBUG_REGISTERS |
864 | ahc_reg_print_t ahc_scb_sgptr_print; |
865 | #else |
866 | #define ahc_scb_sgptr_print(regvalue, cur_col, wrap) \ |
867 | ahc_print_register(NULL, 0, "SCB_SGPTR", 0xb4, regvalue, cur_col, wrap) |
868 | #endif |
869 | |
870 | #if AIC_DEBUG_REGISTERS |
871 | ahc_reg_print_t ahc_scb_control_print; |
872 | #else |
873 | #define ahc_scb_control_print(regvalue, cur_col, wrap) \ |
874 | ahc_print_register(NULL, 0, "SCB_CONTROL", 0xb8, regvalue, cur_col, wrap) |
875 | #endif |
876 | |
877 | #if AIC_DEBUG_REGISTERS |
878 | ahc_reg_print_t ahc_scb_scsiid_print; |
879 | #else |
880 | #define ahc_scb_scsiid_print(regvalue, cur_col, wrap) \ |
881 | ahc_print_register(NULL, 0, "SCB_SCSIID", 0xb9, regvalue, cur_col, wrap) |
882 | #endif |
883 | |
884 | #if AIC_DEBUG_REGISTERS |
885 | ahc_reg_print_t ahc_scb_lun_print; |
886 | #else |
887 | #define ahc_scb_lun_print(regvalue, cur_col, wrap) \ |
888 | ahc_print_register(NULL, 0, "SCB_LUN", 0xba, regvalue, cur_col, wrap) |
889 | #endif |
890 | |
891 | #if AIC_DEBUG_REGISTERS |
892 | ahc_reg_print_t ahc_scb_tag_print; |
893 | #else |
894 | #define ahc_scb_tag_print(regvalue, cur_col, wrap) \ |
895 | ahc_print_register(NULL, 0, "SCB_TAG", 0xbb, regvalue, cur_col, wrap) |
896 | #endif |
897 | |
898 | #if AIC_DEBUG_REGISTERS |
899 | ahc_reg_print_t ahc_scb_cdb_len_print; |
900 | #else |
901 | #define ahc_scb_cdb_len_print(regvalue, cur_col, wrap) \ |
902 | ahc_print_register(NULL, 0, "SCB_CDB_LEN", 0xbc, regvalue, cur_col, wrap) |
903 | #endif |
904 | |
905 | #if AIC_DEBUG_REGISTERS |
906 | ahc_reg_print_t ahc_scb_scsirate_print; |
907 | #else |
908 | #define ahc_scb_scsirate_print(regvalue, cur_col, wrap) \ |
909 | ahc_print_register(NULL, 0, "SCB_SCSIRATE", 0xbd, regvalue, cur_col, wrap) |
910 | #endif |
911 | |
912 | #if AIC_DEBUG_REGISTERS |
913 | ahc_reg_print_t ahc_scb_scsioffset_print; |
914 | #else |
915 | #define ahc_scb_scsioffset_print(regvalue, cur_col, wrap) \ |
916 | ahc_print_register(NULL, 0, "SCB_SCSIOFFSET", 0xbe, regvalue, cur_col, wrap) |
917 | #endif |
918 | |
919 | #if AIC_DEBUG_REGISTERS |
920 | ahc_reg_print_t ahc_scb_next_print; |
921 | #else |
922 | #define ahc_scb_next_print(regvalue, cur_col, wrap) \ |
923 | ahc_print_register(NULL, 0, "SCB_NEXT", 0xbf, regvalue, cur_col, wrap) |
924 | #endif |
925 | |
926 | #if AIC_DEBUG_REGISTERS |
927 | ahc_reg_print_t ahc_scb_64_spare_print; |
928 | #else |
929 | #define ahc_scb_64_spare_print(regvalue, cur_col, wrap) \ |
930 | ahc_print_register(NULL, 0, "SCB_64_SPARE", 0xc0, regvalue, cur_col, wrap) |
931 | #endif |
932 | |
933 | #if AIC_DEBUG_REGISTERS |
934 | ahc_reg_print_t ahc_seectl_2840_print; |
935 | #else |
936 | #define ahc_seectl_2840_print(regvalue, cur_col, wrap) \ |
937 | ahc_print_register(NULL, 0, "SEECTL_2840", 0xc0, regvalue, cur_col, wrap) |
938 | #endif |
939 | |
940 | #if AIC_DEBUG_REGISTERS |
941 | ahc_reg_print_t ahc_status_2840_print; |
942 | #else |
943 | #define ahc_status_2840_print(regvalue, cur_col, wrap) \ |
944 | ahc_print_register(NULL, 0, "STATUS_2840", 0xc1, regvalue, cur_col, wrap) |
945 | #endif |
946 | |
947 | #if AIC_DEBUG_REGISTERS |
948 | ahc_reg_print_t ahc_scb_64_btt_print; |
949 | #else |
950 | #define ahc_scb_64_btt_print(regvalue, cur_col, wrap) \ |
951 | ahc_print_register(NULL, 0, "SCB_64_BTT", 0xd0, regvalue, cur_col, wrap) |
952 | #endif |
953 | |
954 | #if AIC_DEBUG_REGISTERS |
955 | ahc_reg_print_t ahc_cchaddr_print; |
956 | #else |
957 | #define ahc_cchaddr_print(regvalue, cur_col, wrap) \ |
958 | ahc_print_register(NULL, 0, "CCHADDR", 0xe0, regvalue, cur_col, wrap) |
959 | #endif |
960 | |
961 | #if AIC_DEBUG_REGISTERS |
962 | ahc_reg_print_t ahc_cchcnt_print; |
963 | #else |
964 | #define ahc_cchcnt_print(regvalue, cur_col, wrap) \ |
965 | ahc_print_register(NULL, 0, "CCHCNT", 0xe8, regvalue, cur_col, wrap) |
966 | #endif |
967 | |
968 | #if AIC_DEBUG_REGISTERS |
969 | ahc_reg_print_t ahc_ccsgram_print; |
970 | #else |
971 | #define ahc_ccsgram_print(regvalue, cur_col, wrap) \ |
972 | ahc_print_register(NULL, 0, "CCSGRAM", 0xe9, regvalue, cur_col, wrap) |
973 | #endif |
974 | |
975 | #if AIC_DEBUG_REGISTERS |
976 | ahc_reg_print_t ahc_ccsgaddr_print; |
977 | #else |
978 | #define ahc_ccsgaddr_print(regvalue, cur_col, wrap) \ |
979 | ahc_print_register(NULL, 0, "CCSGADDR", 0xea, regvalue, cur_col, wrap) |
980 | #endif |
981 | |
982 | #if AIC_DEBUG_REGISTERS |
983 | ahc_reg_print_t ahc_ccsgctl_print; |
984 | #else |
985 | #define ahc_ccsgctl_print(regvalue, cur_col, wrap) \ |
986 | ahc_print_register(NULL, 0, "CCSGCTL", 0xeb, regvalue, cur_col, wrap) |
987 | #endif |
988 | |
989 | #if AIC_DEBUG_REGISTERS |
990 | ahc_reg_print_t ahc_ccscbram_print; |
991 | #else |
992 | #define ahc_ccscbram_print(regvalue, cur_col, wrap) \ |
993 | ahc_print_register(NULL, 0, "CCSCBRAM", 0xec, regvalue, cur_col, wrap) |
994 | #endif |
995 | |
996 | #if AIC_DEBUG_REGISTERS |
997 | ahc_reg_print_t ahc_ccscbaddr_print; |
998 | #else |
999 | #define ahc_ccscbaddr_print(regvalue, cur_col, wrap) \ |
1000 | ahc_print_register(NULL, 0, "CCSCBADDR", 0xed, regvalue, cur_col, wrap) |
1001 | #endif |
1002 | |
1003 | #if AIC_DEBUG_REGISTERS |
1004 | ahc_reg_print_t ahc_ccscbctl_print; |
1005 | #else |
1006 | #define ahc_ccscbctl_print(regvalue, cur_col, wrap) \ |
1007 | ahc_print_register(NULL, 0, "CCSCBCTL", 0xee, regvalue, cur_col, wrap) |
1008 | #endif |
1009 | |
1010 | #if AIC_DEBUG_REGISTERS |
1011 | ahc_reg_print_t ahc_ccscbcnt_print; |
1012 | #else |
1013 | #define ahc_ccscbcnt_print(regvalue, cur_col, wrap) \ |
1014 | ahc_print_register(NULL, 0, "CCSCBCNT", 0xef, regvalue, cur_col, wrap) |
1015 | #endif |
1016 | |
1017 | #if AIC_DEBUG_REGISTERS |
1018 | ahc_reg_print_t ahc_scbbaddr_print; |
1019 | #else |
1020 | #define ahc_scbbaddr_print(regvalue, cur_col, wrap) \ |
1021 | ahc_print_register(NULL, 0, "SCBBADDR", 0xf0, regvalue, cur_col, wrap) |
1022 | #endif |
1023 | |
1024 | #if AIC_DEBUG_REGISTERS |
1025 | ahc_reg_print_t ahc_ccscbptr_print; |
1026 | #else |
1027 | #define ahc_ccscbptr_print(regvalue, cur_col, wrap) \ |
1028 | ahc_print_register(NULL, 0, "CCSCBPTR", 0xf1, regvalue, cur_col, wrap) |
1029 | #endif |
1030 | |
1031 | #if AIC_DEBUG_REGISTERS |
1032 | ahc_reg_print_t ahc_hnscb_qoff_print; |
1033 | #else |
1034 | #define ahc_hnscb_qoff_print(regvalue, cur_col, wrap) \ |
1035 | ahc_print_register(NULL, 0, "HNSCB_QOFF", 0xf4, regvalue, cur_col, wrap) |
1036 | #endif |
1037 | |
1038 | #if AIC_DEBUG_REGISTERS |
1039 | ahc_reg_print_t ahc_snscb_qoff_print; |
1040 | #else |
1041 | #define ahc_snscb_qoff_print(regvalue, cur_col, wrap) \ |
1042 | ahc_print_register(NULL, 0, "SNSCB_QOFF", 0xf6, regvalue, cur_col, wrap) |
1043 | #endif |
1044 | |
1045 | #if AIC_DEBUG_REGISTERS |
1046 | ahc_reg_print_t ahc_sdscb_qoff_print; |
1047 | #else |
1048 | #define ahc_sdscb_qoff_print(regvalue, cur_col, wrap) \ |
1049 | ahc_print_register(NULL, 0, "SDSCB_QOFF", 0xf8, regvalue, cur_col, wrap) |
1050 | #endif |
1051 | |
1052 | #if AIC_DEBUG_REGISTERS |
1053 | ahc_reg_print_t ahc_qoff_ctlsta_print; |
1054 | #else |
1055 | #define ahc_qoff_ctlsta_print(regvalue, cur_col, wrap) \ |
1056 | ahc_print_register(NULL, 0, "QOFF_CTLSTA", 0xfa, regvalue, cur_col, wrap) |
1057 | #endif |
1058 | |
1059 | #if AIC_DEBUG_REGISTERS |
1060 | ahc_reg_print_t ahc_dff_thrsh_print; |
1061 | #else |
1062 | #define ahc_dff_thrsh_print(regvalue, cur_col, wrap) \ |
1063 | ahc_print_register(NULL, 0, "DFF_THRSH", 0xfb, regvalue, cur_col, wrap) |
1064 | #endif |
1065 | |
1066 | #if AIC_DEBUG_REGISTERS |
1067 | ahc_reg_print_t ahc_sg_cache_shadow_print; |
1068 | #else |
1069 | #define ahc_sg_cache_shadow_print(regvalue, cur_col, wrap) \ |
1070 | ahc_print_register(NULL, 0, "SG_CACHE_SHADOW", 0xfc, regvalue, cur_col, wrap) |
1071 | #endif |
1072 | |
1073 | #if AIC_DEBUG_REGISTERS |
1074 | ahc_reg_print_t ahc_sg_cache_pre_print; |
1075 | #else |
1076 | #define ahc_sg_cache_pre_print(regvalue, cur_col, wrap) \ |
1077 | ahc_print_register(NULL, 0, "SG_CACHE_PRE", 0xfc, regvalue, cur_col, wrap) |
1078 | #endif |
1079 | |
1080 | |
1081 | #define SCSISEQ 0x00 |
1082 | #define TEMODE 0x80 |
1083 | #define SCSIRSTO 0x01 |
1084 | |
1085 | #define SXFRCTL0 0x01 |
1086 | #define DFON 0x80 |
1087 | #define DFPEXP 0x40 |
1088 | #define FAST20 0x20 |
1089 | #define CLRSTCNT 0x10 |
1090 | #define SPIOEN 0x08 |
1091 | #define SCAMEN 0x04 |
1092 | #define CLRCHN 0x02 |
1093 | |
1094 | #define SXFRCTL1 0x02 |
1095 | #define STIMESEL 0x18 |
1096 | #define BITBUCKET 0x80 |
1097 | #define SWRAPEN 0x40 |
1098 | #define ENSTIMER 0x04 |
1099 | #define ACTNEGEN 0x02 |
1100 | #define STPWEN 0x01 |
1101 | |
1102 | #define SCSISIGO 0x03 |
1103 | #define CDO 0x80 |
1104 | #define IOO 0x40 |
1105 | #define MSGO 0x20 |
1106 | #define ATNO 0x10 |
1107 | #define SELO 0x08 |
1108 | #define BSYO 0x04 |
1109 | #define REQO 0x02 |
1110 | #define ACKO 0x01 |
1111 | |
1112 | #define SCSISIGI 0x03 |
1113 | #define P_DATAIN_DT 0x60 |
1114 | #define P_DATAOUT_DT 0x20 |
1115 | #define ATNI 0x10 |
1116 | #define SELI 0x08 |
1117 | #define BSYI 0x04 |
1118 | #define REQI 0x02 |
1119 | #define ACKI 0x01 |
1120 | |
1121 | #define SCSIRATE 0x04 |
1122 | #define SXFR 0x70 |
1123 | #define SXFR_ULTRA2 0x0f |
1124 | #define SOFS 0x0f |
1125 | #define WIDEXFER 0x80 |
1126 | #define ENABLE_CRC 0x40 |
1127 | #define SINGLE_EDGE 0x10 |
1128 | |
1129 | #define SCSIID 0x05 |
1130 | #define SCSIOFFSET 0x05 |
1131 | #define SOFS_ULTRA2 0x7f |
1132 | |
1133 | #define SCSIDATL 0x06 |
1134 | |
1135 | #define SCSIDATH 0x07 |
1136 | |
1137 | #define STCNT 0x08 |
1138 | |
1139 | #define OPTIONMODE 0x08 |
1140 | #define OPTIONMODE_DEFAULTS 0x03 |
1141 | #define AUTORATEEN 0x80 |
1142 | #define AUTOACKEN 0x40 |
1143 | #define ATNMGMNTEN 0x20 |
1144 | #define BUSFREEREV 0x10 |
1145 | #define EXPPHASEDIS 0x08 |
1146 | #define SCSIDATL_IMGEN 0x04 |
1147 | #define AUTO_MSGOUT_DE 0x02 |
1148 | #define DIS_MSGIN_DUALEDGE 0x01 |
1149 | |
1150 | #define TARGCRCCNT 0x0a |
1151 | |
1152 | #define CLRSINT0 0x0b |
1153 | #define CLRSELDO 0x40 |
1154 | #define CLRSELDI 0x20 |
1155 | #define CLRSELINGO 0x10 |
1156 | #define CLRSWRAP 0x08 |
1157 | #define CLRIOERR 0x08 |
1158 | #define CLRSPIORDY 0x02 |
1159 | |
1160 | #define SSTAT0 0x0b |
1161 | #define TARGET 0x80 |
1162 | #define SELDO 0x40 |
1163 | #define SELDI 0x20 |
1164 | #define SELINGO 0x10 |
1165 | #define SWRAP 0x08 |
1166 | #define IOERR 0x08 |
1167 | #define SDONE 0x04 |
1168 | #define SPIORDY 0x02 |
1169 | #define DMADONE 0x01 |
1170 | |
1171 | #define CLRSINT1 0x0c |
1172 | #define CLRSELTIMEO 0x80 |
1173 | #define CLRATNO 0x40 |
1174 | #define CLRSCSIRSTI 0x20 |
1175 | #define CLRBUSFREE 0x08 |
1176 | #define CLRSCSIPERR 0x04 |
1177 | #define CLRPHASECHG 0x02 |
1178 | #define CLRREQINIT 0x01 |
1179 | |
1180 | #define SSTAT1 0x0c |
1181 | #define SELTO 0x80 |
1182 | #define ATNTARG 0x40 |
1183 | #define SCSIRSTI 0x20 |
1184 | #define PHASEMIS 0x10 |
1185 | #define BUSFREE 0x08 |
1186 | #define SCSIPERR 0x04 |
1187 | #define PHASECHG 0x02 |
1188 | #define REQINIT 0x01 |
1189 | |
1190 | #define SSTAT2 0x0d |
1191 | #define SFCNT 0x1f |
1192 | #define OVERRUN 0x80 |
1193 | #define SHVALID 0x40 |
1194 | #define EXP_ACTIVE 0x10 |
1195 | #define CRCVALERR 0x08 |
1196 | #define CRCENDERR 0x04 |
1197 | #define CRCREQERR 0x02 |
1198 | #define DUAL_EDGE_ERR 0x01 |
1199 | |
1200 | #define SSTAT3 0x0e |
1201 | #define SCSICNT 0xf0 |
1202 | #define U2OFFCNT 0x7f |
1203 | #define OFFCNT 0x0f |
1204 | |
1205 | #define SCSIID_ULTRA2 0x0f |
1206 | |
1207 | #define SIMODE0 0x10 |
1208 | #define ENSELDO 0x40 |
1209 | #define ENSELDI 0x20 |
1210 | #define ENSELINGO 0x10 |
1211 | #define ENIOERR 0x08 |
1212 | #define ENSWRAP 0x08 |
1213 | #define ENSDONE 0x04 |
1214 | #define ENSPIORDY 0x02 |
1215 | #define ENDMADONE 0x01 |
1216 | |
1217 | #define SIMODE1 0x11 |
1218 | #define ENSELTIMO 0x80 |
1219 | #define ENATNTARG 0x40 |
1220 | #define ENSCSIRST 0x20 |
1221 | #define ENPHASEMIS 0x10 |
1222 | #define ENBUSFREE 0x08 |
1223 | #define ENSCSIPERR 0x04 |
1224 | #define ENPHASECHG 0x02 |
1225 | #define ENREQINIT 0x01 |
1226 | |
1227 | #define SCSIBUSL 0x12 |
1228 | |
1229 | #define SXFRCTL2 0x13 |
1230 | #define ASYNC_SETUP 0x07 |
1231 | #define AUTORSTDIS 0x10 |
1232 | #define CMDDMAEN 0x08 |
1233 | |
1234 | #define SCSIBUSH 0x13 |
1235 | |
1236 | #define SHADDR 0x14 |
1237 | |
1238 | #define SELTIMER 0x18 |
1239 | #define TARGIDIN 0x18 |
1240 | #define STAGE6 0x20 |
1241 | #define STAGE5 0x10 |
1242 | #define STAGE4 0x08 |
1243 | #define STAGE3 0x04 |
1244 | #define STAGE2 0x02 |
1245 | #define STAGE1 0x01 |
1246 | |
1247 | #define SELID 0x19 |
1248 | #define SELID_MASK 0xf0 |
1249 | #define ONEBIT 0x08 |
1250 | |
1251 | #define SCAMCTL 0x1a |
1252 | #define SCAMLVL 0x03 |
1253 | #define ENSCAMSELO 0x80 |
1254 | #define CLRSCAMSELID 0x40 |
1255 | #define ALTSTIM 0x20 |
1256 | #define DFLTTID 0x10 |
1257 | |
1258 | #define TARGID 0x1b |
1259 | |
1260 | #define SPIOCAP 0x1b |
1261 | #define SOFT1 0x80 |
1262 | #define SOFT0 0x40 |
1263 | #define SOFTCMDEN 0x20 |
1264 | #define EXT_BRDCTL 0x10 |
1265 | #define SEEPROM 0x08 |
1266 | #define EEPROM 0x04 |
1267 | #define ROM 0x02 |
1268 | #define SSPIOCPS 0x01 |
1269 | |
1270 | #define BRDCTL 0x1d |
1271 | #define BRDDAT7 0x80 |
1272 | #define BRDDAT6 0x40 |
1273 | #define BRDDAT5 0x20 |
1274 | #define BRDDAT4 0x10 |
1275 | #define BRDSTB 0x10 |
1276 | #define BRDCS 0x08 |
1277 | #define BRDDAT3 0x08 |
1278 | #define BRDDAT2 0x04 |
1279 | #define BRDRW 0x04 |
1280 | #define BRDCTL1 0x02 |
1281 | #define BRDRW_ULTRA2 0x02 |
1282 | #define BRDCTL0 0x01 |
1283 | #define BRDSTB_ULTRA2 0x01 |
1284 | |
1285 | #define SEECTL 0x1e |
1286 | #define EXTARBACK 0x80 |
1287 | #define EXTARBREQ 0x40 |
1288 | #define SEEMS 0x20 |
1289 | #define SEERDY 0x10 |
1290 | #define SEECS 0x08 |
1291 | #define SEECK 0x04 |
1292 | #define SEEDO 0x02 |
1293 | #define SEEDI 0x01 |
1294 | |
1295 | #define SBLKCTL 0x1f |
1296 | #define DIAGLEDEN 0x80 |
1297 | #define DIAGLEDON 0x40 |
1298 | #define AUTOFLUSHDIS 0x20 |
1299 | #define ENAB40 0x08 |
1300 | #define SELBUSB 0x08 |
1301 | #define ENAB20 0x04 |
1302 | #define SELWIDE 0x02 |
1303 | #define XCVR 0x01 |
1304 | |
1305 | #define BUSY_TARGETS 0x20 |
1306 | #define TARG_SCSIRATE 0x20 |
1307 | |
1308 | #define ULTRA_ENB 0x30 |
1309 | #define CMDSIZE_TABLE 0x30 |
1310 | |
1311 | #define DISC_DSB 0x32 |
1312 | |
1313 | #define CMDSIZE_TABLE_TAIL 0x34 |
1314 | |
1315 | #define MWI_RESIDUAL 0x38 |
1316 | #define TARG_IMMEDIATE_SCB 0x38 |
1317 | |
1318 | #define NEXT_QUEUED_SCB 0x39 |
1319 | |
1320 | #define MSG_OUT 0x3a |
1321 | |
1322 | #define DMAPARAMS 0x3b |
1323 | #define PRELOADEN 0x80 |
1324 | #define WIDEODD 0x40 |
1325 | #define SCSIEN 0x20 |
1326 | #define SDMAENACK 0x10 |
1327 | #define SDMAEN 0x10 |
1328 | #define HDMAEN 0x08 |
1329 | #define HDMAENACK 0x08 |
1330 | #define DIRECTION 0x04 |
1331 | #define FIFOFLUSH 0x02 |
1332 | #define FIFORESET 0x01 |
1333 | |
1334 | #define SEQ_FLAGS 0x3c |
1335 | #define NOT_IDENTIFIED 0x80 |
1336 | #define NO_CDB_SENT 0x40 |
1337 | #define TARGET_CMD_IS_TAGGED 0x40 |
1338 | #define DPHASE 0x20 |
1339 | #define TARG_CMD_PENDING 0x10 |
1340 | #define CMDPHASE_PENDING 0x08 |
1341 | #define DPHASE_PENDING 0x04 |
1342 | #define SPHASE_PENDING 0x02 |
1343 | #define NO_DISCONNECT 0x01 |
1344 | |
1345 | #define SAVED_SCSIID 0x3d |
1346 | |
1347 | #define SAVED_LUN 0x3e |
1348 | |
1349 | #define LASTPHASE 0x3f |
1350 | #define PHASE_MASK 0xe0 |
1351 | #define P_MESGIN 0xe0 |
1352 | #define P_STATUS 0xc0 |
1353 | #define P_MESGOUT 0xa0 |
1354 | #define P_COMMAND 0x80 |
1355 | #define P_DATAIN 0x40 |
1356 | #define P_BUSFREE 0x01 |
1357 | #define P_DATAOUT 0x00 |
1358 | #define CDI 0x80 |
1359 | #define IOI 0x40 |
1360 | #define MSGI 0x20 |
1361 | |
1362 | #define WAITING_SCBH 0x40 |
1363 | |
1364 | #define DISCONNECTED_SCBH 0x41 |
1365 | |
1366 | #define FREE_SCBH 0x42 |
1367 | |
1368 | #define COMPLETE_SCBH 0x43 |
1369 | |
1370 | #define HSCB_ADDR 0x44 |
1371 | |
1372 | #define SHARED_DATA_ADDR 0x48 |
1373 | |
1374 | #define KERNEL_QINPOS 0x4c |
1375 | |
1376 | #define QINPOS 0x4d |
1377 | |
1378 | #define QOUTPOS 0x4e |
1379 | |
1380 | #define KERNEL_TQINPOS 0x4f |
1381 | |
1382 | #define TQINPOS 0x50 |
1383 | |
1384 | #define ARG_1 0x51 |
1385 | #define RETURN_1 0x51 |
1386 | #define SEND_MSG 0x80 |
1387 | #define SEND_SENSE 0x40 |
1388 | #define SEND_REJ 0x20 |
1389 | #define MSGOUT_PHASEMIS 0x10 |
1390 | #define EXIT_MSG_LOOP 0x08 |
1391 | #define CONT_MSG_LOOP 0x04 |
1392 | #define CONT_TARG_SESSION 0x02 |
1393 | |
1394 | #define ARG_2 0x52 |
1395 | #define RETURN_2 0x52 |
1396 | |
1397 | #define LAST_MSG 0x53 |
1398 | |
1399 | #define SCSISEQ_TEMPLATE 0x54 |
1400 | #define ENSELO 0x40 |
1401 | #define ENSELI 0x20 |
1402 | #define ENRSELI 0x10 |
1403 | #define ENAUTOATNO 0x08 |
1404 | #define ENAUTOATNI 0x04 |
1405 | #define ENAUTOATNP 0x02 |
1406 | |
1407 | #define DATA_COUNT_ODD 0x55 |
1408 | |
1409 | #define HA_274_BIOSGLOBAL 0x56 |
1410 | #define INITIATOR_TAG 0x56 |
1411 | #define HA_274_EXTENDED_TRANS 0x01 |
1412 | |
1413 | #define SEQ_FLAGS2 0x57 |
1414 | #define TARGET_MSG_PENDING 0x02 |
1415 | #define SCB_DMA 0x01 |
1416 | |
1417 | #define SCSICONF 0x5a |
1418 | #define HWSCSIID 0x0f |
1419 | #define HSCSIID 0x07 |
1420 | #define TERM_ENB 0x80 |
1421 | #define RESET_SCSI 0x40 |
1422 | #define ENSPCHK 0x20 |
1423 | |
1424 | #define INTDEF 0x5c |
1425 | #define VECTOR 0x0f |
1426 | #define EDGE_TRIG 0x80 |
1427 | |
1428 | #define HOSTCONF 0x5d |
1429 | |
1430 | #define HA_274_BIOSCTRL 0x5f |
1431 | #define BIOSDISABLED 0x30 |
1432 | #define BIOSMODE 0x30 |
1433 | #define CHANNEL_B_PRIMARY 0x08 |
1434 | |
1435 | #define SEQCTL 0x60 |
1436 | #define PERRORDIS 0x80 |
1437 | #define PAUSEDIS 0x40 |
1438 | #define FAILDIS 0x20 |
1439 | #define FASTMODE 0x10 |
1440 | #define BRKADRINTEN 0x08 |
1441 | #define STEP 0x04 |
1442 | #define SEQRESET 0x02 |
1443 | #define LOADRAM 0x01 |
1444 | |
1445 | #define SEQRAM 0x61 |
1446 | |
1447 | #define SEQADDR0 0x62 |
1448 | |
1449 | #define SEQADDR1 0x63 |
1450 | #define SEQADDR1_MASK 0x01 |
1451 | |
1452 | #define ACCUM 0x64 |
1453 | |
1454 | #define SINDEX 0x65 |
1455 | |
1456 | #define DINDEX 0x66 |
1457 | |
1458 | #define ALLONES 0x69 |
1459 | |
1460 | #define NONE 0x6a |
1461 | |
1462 | #define ALLZEROS 0x6a |
1463 | |
1464 | #define FLAGS 0x6b |
1465 | #define ZERO 0x02 |
1466 | #define CARRY 0x01 |
1467 | |
1468 | #define SINDIR 0x6c |
1469 | |
1470 | #define DINDIR 0x6d |
1471 | |
1472 | #define FUNCTION1 0x6e |
1473 | |
1474 | #define STACK 0x6f |
1475 | |
1476 | #define TARG_OFFSET 0x70 |
1477 | |
1478 | #define SRAM_BASE 0x70 |
1479 | |
1480 | #define BCTL 0x84 |
1481 | #define ACE 0x08 |
1482 | #define ENABLE 0x01 |
1483 | |
1484 | #define DSCOMMAND0 0x84 |
1485 | #define CACHETHEN 0x80 |
1486 | #define DPARCKEN 0x40 |
1487 | #define MPARCKEN 0x20 |
1488 | #define EXTREQLCK 0x10 |
1489 | #define INTSCBRAMSEL 0x08 |
1490 | #define RAMPS 0x04 |
1491 | #define USCBSIZE32 0x02 |
1492 | #define CIOPARCKEN 0x01 |
1493 | |
1494 | #define BUSTIME 0x85 |
1495 | #define BOFF 0xf0 |
1496 | #define BON 0x0f |
1497 | |
1498 | #define DSCOMMAND1 0x85 |
1499 | #define DSLATT 0xfc |
1500 | #define HADDLDSEL1 0x02 |
1501 | #define HADDLDSEL0 0x01 |
1502 | |
1503 | #define BUSSPD 0x86 |
1504 | #define DFTHRSH 0xc0 |
1505 | #define DFTHRSH_75 0x80 |
1506 | #define STBOFF 0x38 |
1507 | #define STBON 0x07 |
1508 | |
1509 | #define DSPCISTATUS 0x86 |
1510 | #define DFTHRSH_100 0xc0 |
1511 | |
1512 | #define HS_MAILBOX 0x86 |
1513 | #define HOST_MAILBOX 0xf0 |
1514 | #define HOST_TQINPOS 0x80 |
1515 | #define SEQ_MAILBOX 0x0f |
1516 | |
1517 | #define HCNTRL 0x87 |
1518 | #define POWRDN 0x40 |
1519 | #define SWINT 0x10 |
1520 | #define IRQMS 0x08 |
1521 | #define PAUSE 0x04 |
1522 | #define INTEN 0x02 |
1523 | #define CHIPRST 0x01 |
1524 | #define CHIPRSTACK 0x01 |
1525 | |
1526 | #define HADDR 0x88 |
1527 | |
1528 | #define HCNT 0x8c |
1529 | |
1530 | #define SCBPTR 0x90 |
1531 | |
1532 | #define INTSTAT 0x91 |
1533 | #define SEQINT_MASK 0xf1 |
1534 | #define OUT_OF_RANGE 0xe1 |
1535 | #define NO_FREE_SCB 0xd1 |
1536 | #define SCB_MISMATCH 0xc1 |
1537 | #define MISSED_BUSFREE 0xb1 |
1538 | #define MKMSG_FAILED 0xa1 |
1539 | #define DATA_OVERRUN 0x91 |
1540 | #define PERR_DETECTED 0x81 |
1541 | #define BAD_STATUS 0x71 |
1542 | #define HOST_MSG_LOOP 0x61 |
1543 | #define PDATA_REINIT 0x51 |
1544 | #define IGN_WIDE_RES 0x41 |
1545 | #define NO_MATCH 0x31 |
1546 | #define PROTO_VIOLATION 0x21 |
1547 | #define SEND_REJECT 0x11 |
1548 | #define INT_PEND 0x0f |
1549 | #define BAD_PHASE 0x01 |
1550 | #define BRKADRINT 0x08 |
1551 | #define SCSIINT 0x04 |
1552 | #define CMDCMPLT 0x02 |
1553 | #define SEQINT 0x01 |
1554 | |
1555 | #define ERROR 0x92 |
1556 | #define CIOPARERR 0x80 |
1557 | #define PCIERRSTAT 0x40 |
1558 | #define MPARERR 0x20 |
1559 | #define DPARERR 0x10 |
1560 | #define SQPARERR 0x08 |
1561 | #define ILLOPCODE 0x04 |
1562 | #define ILLSADDR 0x02 |
1563 | #define ILLHADDR 0x01 |
1564 | |
1565 | #define CLRINT 0x92 |
1566 | #define CLRPARERR 0x10 |
1567 | #define CLRBRKADRINT 0x08 |
1568 | #define CLRSCSIINT 0x04 |
1569 | #define CLRCMDINT 0x02 |
1570 | #define CLRSEQINT 0x01 |
1571 | |
1572 | #define DFCNTRL 0x93 |
1573 | |
1574 | #define DFSTATUS 0x94 |
1575 | #define PRELOAD_AVAIL 0x80 |
1576 | #define DFCACHETH 0x40 |
1577 | #define FIFOQWDEMP 0x20 |
1578 | #define MREQPEND 0x10 |
1579 | #define HDONE 0x08 |
1580 | #define DFTHRESH 0x04 |
1581 | #define FIFOFULL 0x02 |
1582 | #define FIFOEMP 0x01 |
1583 | |
1584 | #define DFWADDR 0x95 |
1585 | |
1586 | #define DFRADDR 0x97 |
1587 | |
1588 | #define DFDAT 0x99 |
1589 | |
1590 | #define SCBCNT 0x9a |
1591 | #define SCBCNT_MASK 0x1f |
1592 | #define SCBAUTO 0x80 |
1593 | |
1594 | #define QINFIFO 0x9b |
1595 | |
1596 | #define QINCNT 0x9c |
1597 | |
1598 | #define CRCCONTROL1 0x9d |
1599 | #define CRCONSEEN 0x80 |
1600 | #define CRCVALCHKEN 0x40 |
1601 | #define CRCENDCHKEN 0x20 |
1602 | #define CRCREQCHKEN 0x10 |
1603 | #define TARGCRCENDEN 0x08 |
1604 | #define TARGCRCCNTEN 0x04 |
1605 | |
1606 | #define QOUTFIFO 0x9d |
1607 | |
1608 | #define SCSIPHASE 0x9e |
1609 | #define DATA_PHASE_MASK 0x03 |
1610 | #define STATUS_PHASE 0x20 |
1611 | #define COMMAND_PHASE 0x10 |
1612 | #define MSG_IN_PHASE 0x08 |
1613 | #define MSG_OUT_PHASE 0x04 |
1614 | #define DATA_IN_PHASE 0x02 |
1615 | #define DATA_OUT_PHASE 0x01 |
1616 | |
1617 | #define QOUTCNT 0x9e |
1618 | |
1619 | #define SFUNCT 0x9f |
1620 | #define ALT_MODE 0x80 |
1621 | |
1622 | #define SCB_BASE 0xa0 |
1623 | |
1624 | #define SCB_CDB_PTR 0xa0 |
1625 | #define SCB_CDB_STORE 0xa0 |
1626 | #define SCB_RESIDUAL_DATACNT 0xa0 |
1627 | |
1628 | #define SCB_RESIDUAL_SGPTR 0xa4 |
1629 | |
1630 | #define SCB_SCSI_STATUS 0xa8 |
1631 | |
1632 | #define SCB_TARGET_PHASES 0xa9 |
1633 | |
1634 | #define SCB_TARGET_DATA_DIR 0xaa |
1635 | |
1636 | #define SCB_TARGET_ITAG 0xab |
1637 | |
1638 | #define SCB_DATAPTR 0xac |
1639 | |
1640 | #define SCB_DATACNT 0xb0 |
1641 | #define SG_HIGH_ADDR_BITS 0x7f |
1642 | #define SG_LAST_SEG 0x80 |
1643 | |
1644 | #define SCB_SGPTR 0xb4 |
1645 | #define SG_RESID_VALID 0x04 |
1646 | #define SG_FULL_RESID 0x02 |
1647 | #define SG_LIST_NULL 0x01 |
1648 | |
1649 | #define SCB_CONTROL 0xb8 |
1650 | #define SCB_TAG_TYPE 0x03 |
1651 | #define TARGET_SCB 0x80 |
1652 | #define STATUS_RCVD 0x80 |
1653 | #define DISCENB 0x40 |
1654 | #define TAG_ENB 0x20 |
1655 | #define MK_MESSAGE 0x10 |
1656 | #define ULTRAENB 0x08 |
1657 | #define DISCONNECTED 0x04 |
1658 | |
1659 | #define SCB_SCSIID 0xb9 |
1660 | #define TID 0xf0 |
1661 | #define TWIN_TID 0x70 |
1662 | #define OID 0x0f |
1663 | #define TWIN_CHNLB 0x80 |
1664 | |
1665 | #define SCB_LUN 0xba |
1666 | #define LID 0xff |
1667 | |
1668 | #define SCB_TAG 0xbb |
1669 | |
1670 | #define SCB_CDB_LEN 0xbc |
1671 | |
1672 | #define SCB_SCSIRATE 0xbd |
1673 | |
1674 | #define SCB_SCSIOFFSET 0xbe |
1675 | |
1676 | #define SCB_NEXT 0xbf |
1677 | |
1678 | #define SCB_64_SPARE 0xc0 |
1679 | |
1680 | #define SEECTL_2840 0xc0 |
1681 | #define CS_2840 0x04 |
1682 | #define CK_2840 0x02 |
1683 | #define DO_2840 0x01 |
1684 | |
1685 | #define STATUS_2840 0xc1 |
1686 | #define BIOS_SEL 0x60 |
1687 | #define ADSEL 0x1e |
1688 | #define EEPROM_TF 0x80 |
1689 | #define DI_2840 0x01 |
1690 | |
1691 | #define SCB_64_BTT 0xd0 |
1692 | |
1693 | #define CCHADDR 0xe0 |
1694 | |
1695 | #define CCHCNT 0xe8 |
1696 | |
1697 | #define CCSGRAM 0xe9 |
1698 | |
1699 | #define CCSGADDR 0xea |
1700 | |
1701 | #define CCSGCTL 0xeb |
1702 | #define CCSGDONE 0x80 |
1703 | #define CCSGEN 0x08 |
1704 | #define SG_FETCH_NEEDED 0x02 |
1705 | #define CCSGRESET 0x01 |
1706 | |
1707 | #define CCSCBRAM 0xec |
1708 | |
1709 | #define CCSCBADDR 0xed |
1710 | |
1711 | #define CCSCBCTL 0xee |
1712 | #define CCSCBDONE 0x80 |
1713 | #define ARRDONE 0x40 |
1714 | #define CCARREN 0x10 |
1715 | #define CCSCBEN 0x08 |
1716 | #define CCSCBDIR 0x04 |
1717 | #define CCSCBRESET 0x01 |
1718 | |
1719 | #define CCSCBCNT 0xef |
1720 | |
1721 | #define SCBBADDR 0xf0 |
1722 | |
1723 | #define CCSCBPTR 0xf1 |
1724 | |
1725 | #define HNSCB_QOFF 0xf4 |
1726 | |
1727 | #define SNSCB_QOFF 0xf6 |
1728 | |
1729 | #define SDSCB_QOFF 0xf8 |
1730 | |
1731 | #define QOFF_CTLSTA 0xfa |
1732 | #define SCB_QSIZE 0x07 |
1733 | #define SCB_QSIZE_256 0x06 |
1734 | #define SCB_AVAIL 0x40 |
1735 | #define SNSCB_ROLLOVER 0x20 |
1736 | #define SDSCB_ROLLOVER 0x10 |
1737 | |
1738 | #define DFF_THRSH 0xfb |
1739 | #define WR_DFTHRSH 0x70 |
1740 | #define WR_DFTHRSH_MAX 0x70 |
1741 | #define WR_DFTHRSH_90 0x60 |
1742 | #define WR_DFTHRSH_85 0x50 |
1743 | #define WR_DFTHRSH_75 0x40 |
1744 | #define WR_DFTHRSH_63 0x30 |
1745 | #define WR_DFTHRSH_50 0x20 |
1746 | #define WR_DFTHRSH_25 0x10 |
1747 | #define RD_DFTHRSH_MAX 0x07 |
1748 | #define RD_DFTHRSH 0x07 |
1749 | #define RD_DFTHRSH_90 0x06 |
1750 | #define RD_DFTHRSH_85 0x05 |
1751 | #define RD_DFTHRSH_75 0x04 |
1752 | #define RD_DFTHRSH_63 0x03 |
1753 | #define RD_DFTHRSH_50 0x02 |
1754 | #define RD_DFTHRSH_25 0x01 |
1755 | #define WR_DFTHRSH_MIN 0x00 |
1756 | #define RD_DFTHRSH_MIN 0x00 |
1757 | |
1758 | #define SG_CACHE_SHADOW 0xfc |
1759 | #define SG_ADDR_MASK 0xf8 |
1760 | #define ODD_SEG 0x04 |
1761 | #define LAST_SEG 0x02 |
1762 | #define LAST_SEG_DONE 0x01 |
1763 | |
1764 | #define SG_CACHE_PRE 0xfc |
1765 | |
1766 | |
1767 | #define TARGET_DATA_IN 0x01 |
1768 | #define STATUS_BUSY 0x08 |
1769 | #define BUS_16_BIT 0x01 |
1770 | #define TID_SHIFT 0x04 |
1771 | #define SCB_UPLOAD_SIZE 0x20 |
1772 | #define HOST_MAILBOX_SHIFT 0x04 |
1773 | #define MAX_OFFSET_ULTRA2 0x7f |
1774 | #define SCB_LIST_NULL 0xff |
1775 | #define HOST_MSG 0xff |
1776 | #define MAX_OFFSET 0xff |
1777 | #define BUS_32_BIT 0x02 |
1778 | #define CMD_GROUP_CODE_SHIFT 0x05 |
1779 | #define BUS_8_BIT 0x00 |
1780 | #define CCSGRAM_MAXSEGS 0x10 |
1781 | #define STATUS_QUEUE_FULL 0x28 |
1782 | #define MAX_OFFSET_8BIT 0x0f |
1783 | #define SCB_DOWNLOAD_SIZE_64 0x30 |
1784 | #define MAX_OFFSET_16BIT 0x08 |
1785 | #define TARGET_CMD_CMPLT 0xfe |
1786 | #define SG_SIZEOF 0x08 |
1787 | #define SCB_DOWNLOAD_SIZE 0x20 |
1788 | #define SEQ_MAILBOX_SHIFT 0x00 |
1789 | #define CCSGADDR_MAX 0x80 |
1790 | #define STACK_SIZE 0x04 |
1791 | |
1792 | |
1793 | /* Downloaded Constant Definitions */ |
1794 | #define SG_PREFETCH_CNT 0x04 |
1795 | #define SG_PREFETCH_ADDR_MASK 0x06 |
1796 | #define SG_PREFETCH_ALIGN_MASK 0x05 |
1797 | #define QOUTFIFO_OFFSET 0x00 |
1798 | #define INVERTED_CACHESIZE_MASK 0x03 |
1799 | #define CACHESIZE_MASK 0x02 |
1800 | #define QINFIFO_OFFSET 0x01 |
1801 | #define DOWNLOAD_CONST_COUNT 0x07 |
1802 | |
1803 | |
1804 | /* Exported Labels */ |
1805 | |
1806 | #endif /* AIC7XXX_REG_H */ |
ViewVC Help | |
Powered by ViewVC 1.1.26 |