1
2Appendix D Release History
3**************************
4
5vmips-1.5.1 was released on 20 August 2018.  User-visible changes in
6version 1.5 (since version 1.5.1):
7
8   * Bug fixes:
9
10   * A pair of time calculations in the clock device were revised to
11     avoid triggering compile-time errors in newer C++11-compliant
12     compilers.
13
14   vmips-1.5 was released on 17 November 2014.  User-visible changes in
15version 1.5 (since version 1.4.1):
16
17   * New features/improvements:
18
19   * VMIPS now includes a basic direct-mapped cache simulation. The
20     cache isolation and cache swap bits in the CP0 Status register are
21     now honored.
22
23   * The boot monitor distributed with VMIPS now sets up a dummy
24     `argv[0]' value for the loaded program. Also, it halts by entering
25     an infinite loop rather than attempting to execute a `break'
26     instruction when it encounters an unexpected exception.
27
28   * The setup assembly routine distributed with VMIPS has been made
29     more TLB-friendly. Identity virtual-to-physical mappings for the
30     first few pages of physical RAM are installed in the TLB at program
31     start time.
32
33   * When `-o excmsg' is on, TLB miss addresses will be printed to
34     stderr.
35
36   * When `-o ttydev=stdout' is specified, simulated program output
37     will be sent to VMIPS's standard output, even if it is not a tty.
38
39   * The interactor can now disassemble memory. Also, stepping in the
40     interactor now prints the PC after each step.
41
42   * VMIPS now supports more of the GDB remote serial protocol, in
43     support of the GDB `info threads' and `detach' commands. The debug
44     protocol TCP port is now configurable via the `-o debugport'
45     option. Also, if something halts the program while the debugger
46     interface is active, VMIPS will tell GDB that the program exited.
47
48   * Bug fixes:
49
50   * A bug was fixed in the debugger interface where disconnecting from
51     the debugger socket could cause vmips to enter an infinite loop.
52
53   * The interactor will refuse to dump raw memory words at
54     non-word-aligned addresses.
55
56   * The CP0 Cause register IP field is now recomputed whenever the
57     register is read, rather than only when exceptions happen. This
58     makes polling loops with interrupts disabled work correctly.
59
60   * A bug was fixed in the DECstation-compatible clock device which was
61     preventing some of its registers from being zeroed properly.
62
63   * Some endianness bugs were fixed in the generic memory-mapped device
64     code and in the DECstation-compatible serial device.
65
66   vmips-1.4.1 was released on 7 May 2013.  User-visible changes in
67version 1.4.1 (since version 1.4):
68
69   * Problems compiling VMIPS with gcc 4.7.x have been fixed.
70
71   * An error has been fixed in the documentation regarding the
72     installed location of the canned setup code.
73
74   * An error has been fixed in the Makefiles which was preventing the
75     canned setup code from being installed.
76
77   * An error has been fixed in the Makefiles which was preventing
78     CFLAGS and LDFLAGS from being set correctly in some cases.
79
80   vmips-1.4 was released on 29 January 2012.  User-visible changes in
81version 1.4 (since version 1.3.2):
82
83   * A new interaction facility was implemented. This allows you to
84     suspend the simulation, print registers and memory, and then
85     continue by running or single-stepping, without needing to use a
86     full-fledged debugger.
87
88   * Some of the memory-mapped I/O devices have had endianness bugs
89     fixed and debugging printouts removed.
90
91   * Certain coprocessor zero branch instructions no longer
92     unnecessarily cause reserved instruction exceptions.
93
94   * Other minor optimizations.
95
96   vmips-1.3.2 was released on 27 March 2007.  User-visible changes in
97version 1.3.2 (since version 1.3.1):
98
99   * A bug was fixed in the code which responded to address-translation
100     exceptions by loading the CP0 Context register. It was loading the
101     wrong virtual page number.
102
103   * Problems compiling VMIPS with gcc 4.1.x have been fixed.
104
105
106   vmips-1.3.1 was released on 5 January 2005.  User-visible changes in
107version 1.3.1 (since version 1.3):
108
109   * VMIPS now compiles and passes most of its regression tests under
110     Microsoft Windows using Cygwin. There is one known failure
111     (misc-tests/echo), but the failure stems from the testsuite, not
112     VMIPS; I suspect that my old version of Expect is at fault.
113
114   * The build status report script, `buildstat.sh', has been removed
115     from the distribution.  (Since it was broken in version 1.3 and no
116     one complained, we're assuming that no one will miss it much!)
117
118   * Two bugs in the testsuite that could have led to spurious test
119     failures have been fixed.
120
121   vmips-1.3 was released on 8 October 2004.  User-visible changes in
122version 1.3 (since version 1.2.2):
123
124   * The VMIPS code base has been cleaned up substantially. The most
125     important visible effect of this is that VMIPS compiles much more
126     quickly now.
127
128   * A new, experimental executable-file loader has been integrated.
129     Presently it is only usable for loading ECOFF files into the
130     kernel segments (0x80000000-0xbfffffff). The ROM monitor has a new
131     `call' command you can use to take advantage of this.
132
133   * Vmipstool can now disassemble binary instructions from the command
134     line, e.g.  `vmipstool --disassemble-word <pc> <instr>'.
135
136   * The `excmsg' option used to report all exceptions, including
137     things like clock interrupts. This made using `excmsg' in any
138     nontrivial kernel code almost impossible. Now you must also specify
139     'reportirq' to get reports of interrupt exceptions.
140
141   * The `haltjrra' option has been removed.
142
143   * The DECstation 5000/200-compatible CSR device now supports delivery
144     of interrupts from devices attached to CSR interrupt lines, such
145     as the DZ11 serial device.
146
147   * The DZ11 serial device now supports interrupt-driven I/O properly.
148     It previously only worked correctly if polling was used.
149
150   * The documentation has received the usual slight adjustments. In
151     addition, the test-suite documentation has been extensively
152     revised and integrated into the programmer's manual.
153
154   * The options-processing code has been revised slightly to print a
155     better error message when an invalid option is specified.
156
157   vmips-1.2.2 was released on 23 August 2004.  User-visible changes in
158version 1.2.2 (since version 1.2.1):
159
160   * A bug in the Makefiles and configure scripts has been fixed, where
161     some files would not be installed if you didn't configure with
162     cross compilation tools (using `--with-mips').
163
164   * Vladimir Machulsky found and fixed a bug in the debugger interface,
165     where the register file would be sent to gdb incorrectly. Thanks!
166
167   * VMIPS will no longer abort and dump core when bad command-line
168     rguments are passed to it.  Instead, it will print an error
169     message and exit with a non-zero exit code.
170
171   * A bug in the command-line option processor was fixed, where using a
172     completely empty `~/.vmipsrc' or the `-F /dev/null' option could
173     cause the options parser to parse garbage, usually resulting in
174     harmless, but annoying error messages.
175
176   vmips-1.2.1 was released on 26 July 2004.  User-visible changes in
177version 1.2.1 (since version 1.2):
178
179   * Fixed a bug where delay slot execution could be triggered even when
180     emulating a malformed jr (jump-register) instruction.
181
182   * Fixed a bug where, upon taking a TLB Miss exception, the ASID of
183     the page that could not be looked up would be overwritten (in the
184     CP0 EntryHi register) with garbage.
185
186   * Fixed a bug in VMIPS configurations with multiple interrupt
187     devices, where Interrupt Pending bits of the CP0 Cause from
188     previous interrupts could be left asserted even if the device that
189     asserted them had subsequently deasserted them.
190
191   * Fixed a bug where the memory dump file and ROM file would be opened
192     in text mode. They are now opened in binary mode.
193
194   vmips-1.2 was released on 26 June 2004.  User-visible changes in
195version 1.2 (since version 1.1.3):
196
197   * Many documentation updates have been made. Note that the
198     documentation has been relicensed under the MIT license, instead
199     of the GNU FDL.
200
201   * Many facets of VMIPS are now configurable at runtime, instead of at
202     compile time. For instance:
203
204     	It is now possible to build and install VMIPS without having
205     previously installed MIPS cross-compiler tools. In particular,
206     VMIPS now incorporates the portions of GNU libopcodes used to
207     implement the MIPS disassembler, so linking against an installed
208     version of libopcodes from GNU binutils is no longer necessary.
209
210     	It is now possible to switch the VMIPS CPU from big-endian to
211     little-endian mode or vice-versa using a command-line option.
212
213     	It is now possible to change the name of the configuration file
214     that VMIPS reads on startup using a command-line option. The `-o
215     configfile' option, which never worked, has been removed.
216
217   * vmipstool now shares command-line processing code with vmips. It
218     also has a new -swap-words option that allows you to byteswap all
219     the 4-byte words in a file.
220
221   * You can now specify numeric constants in command line options which
222     are multiples of 1024, 1024^2, or 1024^3 using the K, M, or G
223     suffixes.
224
225   * Several new emulated devices based on the DECstation 5000/200 have
226     been added.  In particular, it is no longer possible to disable
227     the serial device at compile time (or with `-o nousetty'), but you
228     can choose whether to use the DECstation serial chip or the
229     SPIM-compatible serial console (or neither) using new command-line
230     options. In addition, the ROM program distributed with VMIPS
231     supports a "boot environment" similar to that provided by the
232     DECstation PROM. The new DECstation-compatible devices have not
233     been comprehensively validated; they should be considered "beta"
234     quality at this point.
235
236   * There is a new tracing framework you can use to generate runtime
237     execution traces of programs that run in VMIPS. See the
238     documentation of the "tracing" command-line option and the other
239     options that begin with "trace" for more details.
240
241   * The VMIPS interface to GDB now supports the "remote Z-packet"
242     interface for setting breakpoints.
243
244   * VMIPS now prints more informative diagnostic messages about the
245     causes of bus errors and interrupts.
246
247   * You can now use ^C (your terminal's Interrupt key) to stop VMIPS
248     and break into the debugger, if the `-o debug' command line option
249     was set, or ^\ (your terminal's Quit key) to halt VMIPS in an
250     orderly manner at any time.
251
252   * The `--disable-debug' option to `configure' now strips the
253     compiled VMIPS binaries, although it has been documented to do
254     this for some time now.
255
256   vmips-1.1.3 was released on 24 October 2003.  User-visible changes
257in version 1.1.3 (since version 1.1.2):
258
259   * A bug in comparing large immediate constants near UINT_MAX using
260     the sltiu instruction has been fixed.
261
262   * A bug where the meaning of the `dirty' bit in TLB entries was
263     accidentally reversed has been fixed.
264
265   * A bug in specifying which bits are treated as writable in the CP0
266     EntryLo register by the tlbr instruction has been fixed. Thanks to
267     Mingyu Chen for pointing out these last two bugs.
268
269   vmips-1.1.2 was released on 20 August 2003.  User-visible changes in
270version 1.1.2 (since version 1.1.1):
271
272   * An instruction that turns on interrupts in the system control
273     coprocessor   (coprocessor 0) will no longer immediately take an
274     exception if an interrupt   is pending; now it will happen at
275     least one instruction later.
276
277   * When building VMIPS in debug mode, the coprocessor 0 Cause
278     register may no   longer contain random, non-clearable
279     interrupt-pending bits.
280
281   * The coprocessor 0 Cause register's interrupt-pending and
282     coprocessor-error   bits are now correctly updated when an
283     exception is taken.
284
285   * The VMIPS physical-memory manager will now allow you to place two
286     devices   directly adjacent to one another in memory; it used to
287     complain that they   overlapped, when they actually did not.
288
289   * A typo was fixed in the testsuite documentation.
290
291   vmips-1.1.1 was released on 16 June 2003.  User-visible changes in
292version 1.1.1 (since version 1.1):
293
294   * A bug involving shifts by 0 or 32 bits (e.g., using instructions
295     like srlv)   producing incorrect results has been fixed.
296
297   * The absence of an FPU attached to coprocessor slot 1 can now be
298     detected by user programs.
299
300   * The system control coprocessor (coprocessor 0) now returns the
301     correct ID   number for the R3000A processor in the PRId register.
302
303   * Emulation of store-byte and store-halfword operations for emulated
304     devices   that only support store-word should now work correctly
305     on byte-swapped   configurations.
306
307   * A bug in vmipstool which caused it to fail to find alternate
308     linker scripts   (supplied with the -ld-script option) has been
309     fixed.
310
311   * A gcc warning caused by a (harmless) comment in asm_regnames.h has
312      been quashed.
313
314   * A bug where little-endian vmips configurations would dump core when
315      the disassembler was used (e.g., when the instdump option was
316     turned on)   has been fixed.
317
318   * `configure' no longer ignores its -with-mips-include option.
319
320   vmips-1.1 was released on 14 March 2003.  User-visible changes in
321version 1.1 (since version 1.0.4):
322
323   * If you are using g++ to compile VMIPS, you must use g++ version
324     2.95   or later. Also, you must specify the -target option to
325     `configure',   with an argument that matches the -target option to
326     binutils   `configure'. See `INSTALL'.
327
328   * VMIPS now supports GNU standard -help and -version options.
329
330   * The manual now includes improved documentation for using gdb and
331     Insight to control VMIPS, a section on the differences between
332     SPIM's   console and the SPIM-compatible console device, a section
333     on proper   error reporting from VMIPS extensions, and many other
334     minor   revisions.
335
336   * Using gdb to control VMIPS is now much more robust in the face of
337     errors and exceptions.
338
339   * VMIPS 1.1 makes it possible to use the 2nd display/keyboard channel
340      of the SPIM-compatible console device, using the `ttydev2' option.
341
342   * VMIPS now includes a halt device, which can be used to halt the
343     simulator without using a special instruction.
344
345   * VMIPS 1.1 is much faster than VMIPS 1.0.4. This is due in large
346     part   to the efforts of Paul Twohey, who reimplemented the clock
347     and   SPIM-compatible console devices, and cleaned up the code a
348     bit.
349
350   * The VMIPS distribution now includes a regression test suite, based
351     on   DejaGNU (replaces the old test_code directory). In order to
352     support   this, the formats of lots of random messages that VMIPS
353     prints out   have changed.
354
355   * We now support 64-bit hosts (e.g., Alpha).
356
357   vmips-1.0.4 was released on 28 April 2002.  User-visible changes in
358version 1.0.4 (since version 1.0.3):
359
360   * Fixed bug where the first instruction of an interrupt handler
361     would be   executed twice in a row. Thanks to Paul Twohey.
362
363   * Workaround some problems in the way casts are used in VMIPS by
364     specifying   -fno-strict-aliasing to gcc in configure; this should
365     help avoid   miscompilations for now, until the code can be
366     rewritten for cast-safety.
367
368   * Fix bug where vmips would dereference a NULL pointer when trying
369     to use a   SPIMConsole device with a non-attached serial host.
370     Thanks to Paul Twohey.
371
372   * Reorder some tests in the SPIMConsole code for a slight speedup
373     when   interrupts are turned off.
374
375   * Fix bug where virtual page numbers were being incorrectly
376     interpreted   by the system control coprocessor, resulting in
377     excess TLB misses being   generated. Thanks to Sanjeev Datla.
378
379   vmips-1.0.3 was released on 12 January 2002.  User-visible changes
380in version 1.0.3 (since version 1.0.2):
381
382   * Fixed bug in debugger interface; TLB translations caused by the
383     debugger   trying to access user space could fail if the virtual
384     page number was   not 0.
385
386   * Fixed bugs in the following instructions: lb, lh, lwr, lwl, swr,
387     swl, nor.
388
389   * Clarified some especially confusing comments in the source code,
390     in one of the test cases, and in the testsuite README.
391
392   * The sample setup code now halts on all exceptions, including user
393     TLB   miss exceptions.
394
395   * Fixed some warnings compiling xmboot using recent versions of gcc.
396
397   vmips-1.0.2 was released on 17 December 2001.  User-visible changes
398in version 1.0.2 (since version 1.0.1):
399
400   * Add warning message to man page directing the interested reader to
401     the   Info manual.
402
403   * New default handling of `-o ttydev' option; manual updated.
404
405   * /etc/vmipsrc contains only comments by default.    These two fixes
406     work around a bug in Darwin select(2)'s tty handling.
407
408   * Only print host processor endianness if `-o bootmsg' is set.
409     Fixes bug where `-o bootmsg' should (but doesn't) turn this
410     message off.
411
412   * Remove test_code/testdev.S from the branch.    This is a test for
413     a feature (TestDev) which wasn't distributed with 1.0.x.
414
415   * Comment out extra tokens after #endif in
416     test_code/{sort.c,tester.c}.    Fixes bug where gcc 3.0 gives
417     warnings compiling these files.
418
419   vmips-1.0.1 was released on 27 November 2001.  User-visible changes
420in version 1.0.1 (since version 1.0):
421
422   * Fixed format-string bug in vmipstool.
423
424   * Fixed "extra tokens after #endif" warning in
425     sample_code/asm_regnames.h.
426
427   vmips-1.0 was released on 28 October 2001.  User-visible changes in
428version 1.0 (since version 0.9):
429
430   * A standard clock device has been added.
431
432   * The "vmipstool" front end to compilation tools was added, and most
433     of   the random scripts lying around have been consolidated into
434     it.
435
436   * The memory-mapped test device known as "TestDev" has been removed.
437
438   * Debian and Red Hat packaging files have been added.
439
440   * The installation procedure has been greatly improved.
441
442   * The VMIPS manual has been completed.
443
444   * Many, many bugs fixed as a result of a concerted attempt at testing
445      everything.  Doubtless, some bugs still remain.
446
447   * Some portability fixes.
448
449   * Dumping of the stack (when registers are dumped) now works.
450
451   * Many strange messages the debugger backend used to print out have
452     been   quelled. Also, killing the debugger connection should no
453     longer cause   a crash.
454
455   * vmips now supports -help, -version and -print-config command-line
456     options.
457
458   * The SPIM-compatible console device now works better when the host
459     machine is byte-swapped with respect to the MIPS target.
460
461   vmips-0.9 was released on 9 May 2001.  User-visible changes in
462version 0.9 (since version 20001014):
463
464   * vmips.debug is no longer built.
465
466   * Read-only memory is now really read-only.  This allowed us to add
467     debugger support for breakpoints in ROM.
468
469   * Debugger support for exception handling - CPU exceptions are now
470     delivered to your GDB, if it is attached, giving you a chance to
471     poke   around before the target is made aware of the condition.
472
473   * Many tasty configury updates, making it easier to build.
474
475   * Miscellaneous bugs fixed in many places.
476
477   * Branch on coprocessor 0 instructions now have defined behavior.
478
479   * Many places which erroneously had text after #endif in the source
480     have   been corrected to use comments instead, allowing you to
481     compile vmips   with newer C++ compilers.
482
483   * Some old test code that used to run at the beginning of every vmips
484      job has been removed, so you will no longer see the familiar
485     messages   it printed out.
486
487   User-visible changes since version 20000517:
488
489   * Emulating a little-endian MIPS on a big-endian host passes
490     preliminary   tests.  Build process queries MIPS tools for their
491     endianness   automatically.  Builds tested on Solaris SPARC, i386
492     Linux, FreeBSD   and HP-UX.  Distribution building (gmake
493     distcheck) almost works.
494
495   User-visible changes since version 19991114:
496
497   * Polling input and output via the SPIM-compatible console device
498     now work.
499
500   User-visible changes since version 19990829:
501
502   * Build processes seeks out MIPS tools; Installation documentation
503     now   briefly documents how to build cross tools.
504
505   User-visible changes since version 19990823:
506
507   * Spim console documentation completed; first attempt at spim
508     console code.
509
510   User-visible changes since version 19990801:
511
512   * Documentation Makefile.in has been built.
513
514   * Some documentation has been updated.
515
516   * VMIPS is being adapted to use GNU Autoconf and Automake.
517
518