1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 594 595 596 597 598 599 600 601 602 603 604 605 606 607 608 609 610 611 612 613 614 615 616 617 618 619 620 621 622 623 624 625 626 627 628 629 630 631 632 633 634 635 636 637 638 639 640 641 642 643 644 645 646 647 648 649 650 651 652 653 654 655 656 657 658 659 660 661 662 663 664 665 666 667 668 669 670 671 672 673 674 675 676 677 678 679 680 681 682 683 684 685 686 687 688 689 690 691 692 693 694 695 696 697 698 699 700 701 702 703 704 705 706 707 708 709 710 711 712 713 714 715 716 717 718 719 720 721 722 723 724 725 726 727 728 729 730 731 732 733 734 735 736 737 738 739 740 741 742 743 744 745 746 747 748 749 750 751 752 753 754 755 756 757 758 759 760 761 762 763 764 765 766 767 768 769 770 771 772 773 774 775 776 777 778 779 780 781 782 783 784 785 786 787 788 789 790 791 792 793 794 795 796 797 798 799 800 801 802 803 804 805 806 807 808 809 810 811 812 813 814 815 816 817 818 819 820 821 822 823 824 825 826 827 828 829 830 831 832 833 834 835 836 837 838 839 840 841 842 843 844 845 846 847 848 849 850 851 852 853 854 855 856 857 858 859 860 861 862 863 864 865 866 867 868 869 870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911 912 913 914 915 916 917 918 919 920 921 922 923 924 925 926 927 928 929 930 931 932 933 934 935 936 937 938 939 940 941 942 943 944 945 946 947 948 949 950 951 952 953 954 955 956 957 958 959 960 961 962 963 964 965 966 967 968 969 970 971 972 973 974 975 976 977 978 979 980 981 982 983 984 985 986 987 988 989 990 991 992 993 994 995 996 997 998 999 1000 1001 1002 1003 1004 1005 1006 1007 1008 1009 1010 1011 1012 1013 1014 1015 1016 1017 1018 1019 1020 1021 1022 1023 1024 1025 1026 1027 1028 1029 1030 1031 1032 1033 1034 1035 1036 1037 1038 1039 1040 1041 1042 1043 1044 1045 1046 1047 1048 1049 1050 1051 1052 1053 1054 1055 1056 1057 1058 1059 1060 1061 1062 1063 1064 1065 1066 1067 1068 1069 1070 1071 1072 1073 1074 1075 1076 1077 1078 1079 1080 1081 1082 1083 1084 1085 1086 1087 1088 1089 1090 1091 1092 1093 1094 1095 1096 1097 1098 1099 1100 1101 1102 1103 1104 1105 1106 1107 1108 1109 1110 1111 1112 1113 1114 1115 1116 1117 1118 1119 1120 1121 1122 1123 1124 1125 1126 1127 1128 1129 1130 1131 1132 1133 1134 1135 1136 1137 1138 1139 1140 1141 1142 1143 1144 1145 1146 1147 1148 1149 1150 1151 1152 1153 1154 1155 1156 1157 1158 1159 1160 1161 1162 1163 1164 1165 1166 1167 1168 1169 1170 1171 1172 1173 1174 1175 1176 1177 1178 1179 1180 1181 1182 1183 1184 1185 1186 1187 1188 1189 1190 1191 1192 1193 1194 1195 1196 1197 1198 1199 1200 1201 1202 1203 1204 1205 1206 1207 1208 1209 1210 1211 1212 1213 1214 1215 1216 1217 1218 1219 1220 1221 1222 1223 1224 1225 1226 1227 1228 1229 1230 1231 1232 1233 1234 1235 1236 1237 1238 1239 1240 1241 1242 1243 1244 1245 1246 1247 1248 1249 1250 1251 1252 1253 1254 1255 1256 1257 1258 1259 1260 1261 1262 1263 1264 1265 1266 1267 1268 1269 1270 1271 1272 1273 1274 1275 1276 1277 1278 1279 1280 1281 1282 1283 1284 1285 1286 1287 1288 1289 1290 1291 1292 1293 1294 1295 1296 1297 1298 1299 1300 1301 1302 1303 1304 1305 1306 1307 1308 1309 1310 1311 1312 1313 1314 1315 1316 1317 1318 1319 1320 1321 1322 1323 1324 1325 1326 1327 1328 1329 1330 1331 1332 1333 1334 1335 1336 1337 1338 1339 1340 1341 1342 1343 1344 1345 1346 1347 1348 1349 1350 1351 1352 1353 1354 1355 1356 1357 1358 1359 1360 1361 1362 1363 1364 1365 1366 1367 1368 1369 1370 1371 1372 1373 1374 1375 1376 1377 1378 1379 1380 1381 1382 1383 1384 1385 1386 1387 1388 1389 1390 1391 1392 1393 1394 1395 1396 1397 1398 1399 1400 1401 1402 1403 1404 1405 1406 1407 1408 1409 1410 1411 1412 1413 1414 1415 1416 1417 1418 1419 1420 1421 1422 1423 1424 1425 1426 1427 1428 1429 1430 1431 1432 1433 1434 1435 1436 1437 1438 1439 1440 1441 1442 1443 1444 1445 1446 1447 1448 1449 1450 1451 1452 1453 1454 1455 1456 1457
|
$Id: HISTORY,v 1.468 2005/01/12 07:42:37 debug Exp $
HISTORY of mips64emul
---------------------
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 nave 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 ==============
|