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