-
Notifications
You must be signed in to change notification settings - Fork 5
/
HISTORY
4627 lines (4543 loc) · 235 KB
/
HISTORY
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
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