|
|
1.1 ! root 1: /* ! 2: * Cisco 7200 (Predator) simulation platform. ! 3: */ ! 4: ! 5: 15-Aug-2005, the project is starting. ! 6: ! 7: 18-Aug-2005 ! 8: ----------- ! 9: - Added support for: sll, addu/subu. ! 10: - Fixed bugs with b... branch instructions (bad computation of new pc). ! 11: - Added patch recording for blocks. ! 12: - A sequence of MIPS instructions (without memory access instructions) ! 13: from IOS was successfully run ! (need to check correctness). ! 14: ! 15: 22-Aug-2005 ! 16: ----------- ! 17: - Implemented a basic memory subsystem with an mmaped file. ! 18: - Added memory access instructions (lb,lbu,lh,lhu,lw,lwu,ld,sb,sh,sw,sd). ! 19: - Added a cross-compiled test program. ! 20: ! 21: 23-Aug-2005 ! 22: ----------- ! 23: - Fixed slti, sltiu, slt instructions. ! 24: - Fixed memory endianness. ! 25: - Fixed host memory addressing (bad haddr computation). ! 26: ! 27: 24-Aug-2005 ! 28: ----------- ! 29: - Added a generic memory address lookup function. ! 30: - Added a minimal ELF loader. ! 31: ! 32: 28-Aug-2005 ! 33: ----------- ! 34: - ELF loader now loads files page per page. ! 35: - Added device support (with RAM support). ! 36: - Added MTS32 support for mapping of 4 Kb pages. ! 37: - Added MTS32 support for device mapping in kernel mode and generic ! 38: virtual to physical mapping (preparation for TLB). ! 39: - Added a dummy console driver. ! 40: - Added mult,multu,div,divu instructions. ! 41: ! 42: 29-Aug-2005 ! 43: ----------- ! 44: - Added a Red-Black trees module. ! 45: - Block locator uses RB tree module. ! 46: - It is now possible to run a program with multiple functions! ! 47: - ELF loader now support multiple program headers and entry point is ! 48: now used. ! 49: - Fixed x86 buffer adjustment. ! 50: - Modified console to be at the same address than c7200 DUART (to test ! 51: microcode). ! 52: - Memory access functions now update PC. ! 53: - Added sra, srl, sllv, srlv, srav instructions. ! 54: ! 55: 30-Aug-2005 ! 56: ----------- ! 57: - Added dsrl32, dsll32, dsra, dsrav, dsra32 instructions. ! 58: - Added bgtz, blez, bgez instructions. ! 59: - Fixed sltu instruction. ! 60: - ELF Entry point is now sign-extended. ! 61: - Added blezl, bgtzl instructions. ! 62: - Fixed the MIPS scanner to use unsigned 64-bits integers for addresses. ! 63: - Added unknown opcode management (basic, it just print the unhandled ! 64: opcode value and continues). ! 65: - Added cache instruction. ! 66: - Added bltzal, bltzall, bgezal, bgezall instructions. ! 67: ! 68: 31-Aug-2005 ! 69: ----------- ! 70: - Added System coprocessor (CP0) definitions. ! 71: - Added tlbr instruction. ! 72: - Added basic tlbwi instruction (doesn't change the MTS mappings now). ! 73: - Added dmfc0, dmtc0, mfc0, mtc0 instructions. ! 74: - Added TLB dump functions. ! 75: - Added dummy pref/prefi instructions. ! 76: - Added basic exception trigger. ! 77: - Added syscall, break instructions. ! 78: ! 79: 01-Sep-2005 ! 80: ----------- ! 81: - Fixed exception trigger. ! 82: - Added dmfc1, dmtc1, mfc1, mtc1, sdc1 instructions. ! 83: - Fixed the break instruction. ! 84: - Modified the memory handling to be more friendly with instructions ! 85: like sdc1 and for more safety in case of badly written device drivers. ! 86: - Added ldc1 instruction. ! 87: ! 88: 02-Sep-2005 ! 89: ----------- ! 90: - Fixed sltiu/sltu instructions that were doing signed comparisons ! 91: instead of unsigned comparisons (mis-use of jit). ! 92: - Added lwr/lwl, swr/swl, ldl/ldr, sdr/sdl, ll/sc instructions ! 93: (not tested). ! 94: - Added PCI bus management. ! 95: - Added GT64010 (PCI controller) device. ! 96: - Added DEC 21050 (PCI bridge) device. ! 97: - Added NVRAM. ! 98: ! 99: 03-Sep-2005 ! 100: ----------- ! 101: - Beginning of work on IRQs. ! 102: ! 103: 04-Sep-2005 ! 104: ----------- ! 105: - Timer IRQ should be OK. ! 106: - Added C7200 bay management and Midplane FPGA. ! 107: - Fixed the JR instruction which was broken in a case like that: ! 108: lwu k1,0(k1) ! 109: jr k1 ! 110: move k1,zero ! 111: ! 112: 05-Sep-2005 ! 113: ----------- ! 114: - Fixed jalr (as jr) instruction. ! 115: - Added RAM "aliasing". ! 116: - Added SRAM management. ! 117: - Fixed NVRAM size. ! 118: - Fixed ldr, swl/swr instructions. ! 119: - Added c7200 IOcard. ! 120: - Count register is now properly handled. ! 121: - Added basic functions to set/clear interrupts. ! 122: - Modified the console driver to trigger DUART interrupt. ! 123: - IOS now starts! ! 124: ! 125: 06-Sep-2005 ! 126: ----------- ! 127: - Added "move" virtual instruction. It correspond to "addu" with rt=0. ! 128: Here it avoids an useless add. ! 129: - Added b/bal virtual instructions. ! 130: - Packed NVRAM. ! 131: ! 132: 08-Sep-2005 ! 133: ----------- ! 134: - Added Dallas DS1620 temperature sensors. ! 135: - Added voltage sensors. ! 136: - Power supplies are now faked. ! 137: - IOS Environmental Monitor doesn't try to shutdown the router anymore! ! 138: - Device list is now displayed at startup. ! 139: ! 140: 18-Sep-2005 ! 141: ----------- ! 142: - Added Address Error Load/Save, TLB Load/Save exceptions. ! 143: TODO: Branch Delay Slot management. ! 144: - Modified the default value in config register in CP0 to set appropriate ! 145: cache sizes. Now it is possible to boot compressed images directly! ! 146: - Added the teq/teqi instructions. ! 147: - Hmm, seen some IOS images (k9?) that seem to use the FPU (CP1). This ! 148: does not prevent the image to boot, but some features will probably ! 149: be not functional. ! 150: ! 151: 19-Sep-2005 ! 152: ----------- ! 153: - Tweaked the console driver to generate a dummy interrupt. It avoids ! 154: the console problems. ! 155: - Fixed the serial driver mueslix PCI vendor/device code. ! 156: - The midplane FPGA now returns voltages based on virtual PA EEPROM ! 157: presence. Up to 6 PA-8T were successfully emulated! ! 158: ! 159: 20-Sep-2005 ! 160: ----------- ! 161: - Included amd64-codegen.h with a (near empty) translator. ! 162: - Some code factorization. ! 163: ! 164: 21-Sep-2005 ! 165: ----------- ! 166: - Added CPU state save/restore on disk. ! 167: - Sending SIGQUIT to the process dumps the MIPS64 VM state on disk. ! 168: (only CPU state is saved for now). ! 169: Device state is not saved, so this does not work with booted IOS images ! 170: for now (it works for an IOS image being self-decompressing, though). ! 171: - Some code cleanups. ! 172: ! 173: 23-Sep-2005 ! 174: ----------- ! 175: - Fixed "Dirty" bit in TLB entries. ! 176: - Extended the number of TLB entries from 48 to 64. ! 177: - Added tlbp instruction. ! 178: - Modified the nmc93c46 eeprom driver to allow more than 32 bytes reading. ! 179: ! 180: 24-Sep-2005 ! 181: ----------- ! 182: - Added a symbol table loader. ! 183: ! 184: 26-Sep-2005 ! 185: ----------- ! 186: - Added support for writing in PCI registers ! 187: - Added a RAW file loader. ! 188: - Added "add" instruction (without exception support). ! 189: ! 190: 07-Oct-2005 ! 191: ----------- ! 192: - Continued work on SMP support. ! 193: ! 194: 08-Oct-2005 ! 195: ----------- ! 196: - Replaced memory operations with fastcalls instead of asmlinkage functions. ! 197: - Continued work on SMP support. Now it should be complete, except for ! 198: LL/SC instructions. ! 199: ! 200: 10-Oct-2005 ! 201: ----------- ! 202: - A lot of work on amd64 jit compiler. ! 203: - The memory management should be 64-bit compliant now. ! 204: ! 205: 17-Oct-2005 ! 206: ----------- ! 207: - Fixed a bug in SRA instruction in amd64 jit code. IOSEmu is now working ! 208: on amd64! ! 209: ! 210: 26-Oct-2005 ! 211: ----------- ! 212: - Created a virtual device giving the VM parameters. ! 213: - Added command line parsing (patch from Nicolas Szalay). ! 214: - Fixed ERET instruction (LLbit clearing was lacking). ! 215: - Fixed BREAK instruction (x86/amd64). ! 216: - Fixed 2 GB limit for log file. ! 217: - Fixed clobbered registers in x86 translation. ! 218: ! 219: 28-Oct-2005 ! 220: ----------- ! 221: - Added a non-JIT mode (not completely working now) ! 222: - Added "-j" flag on the command line to disable JIT. ! 223: - Fixed some stupid bugs in shift operations. ! 224: ! 225: 31-Oct-2005 ! 226: ----------- ! 227: - Thanks to the great help of mtve, we have a working DEC21140 Ethernet ! 228: driver and now the virtual C7200 can see the real world!!! ! 229: ! 230: 01-Nov-2005 ! 231: ----------- ! 232: - Beginning of a NETIO module to handle network I/O with external world. ! 233: - Studied (a bit) the PA-8T controller on a real router. ! 234: - It is now possible to set the base MAC address of the router ! 235: using the "-m" flag. ! 236: - Improved logging ! 237: - The dec21140 code is generalized and it is now possible to have a ! 238: PA-FE-TX in any slot. ! 239: ! 240: 02-Nov-2005 ! 241: ----------- ! 242: - Fixed some problems with the NVRAM when it is empty ; ! 243: - Added a "net_io.c" module that is an abstraction layer ! 244: for network communications (TAP, Unix sockets...) ! 245: - Added the "virtual" MIPS "li" instruction which ! 246: is in fact "addiu reg,zero,value". This permits to have ! 247: a more optimized JIT code. ! 248: - Code factorization in the DEC21140 module. ! 249: - mtve (aka "Mtv Europe") sent a patch for much better console handling, ! 250: merge is planned on 03-Nov. ! 251: - Added a "PA driver" framework. ! 252: ! 253: 03-Nov-2005 ! 254: ----------- ! 255: - The console is better handled: special keys are working, and there ! 256: is a FIFO buffer to avoid character loss (added a "dev_vtty.c" module). ! 257: - Merging with Mtve patch, that cleans NETIO module and adds features ! 258: to the console. ! 259: - Added a clock divisor hack, but it is not completely working. ! 260: todo: implement a command line option for this. ! 261: ! 262: 08-Nov-2005 ! 263: ----------- ! 264: - Mtve added tcp client/server NETIO. ! 265: - The clock divisor is now working! It is set by the "-k" command line ! 266: option. ! 267: - Fixed the csr5 register handling in DEC21140 driver code. ! 268: ! 269: 13-Nov-2005 ! 270: ----------- ! 271: - A lot of cosmetic changes from Mtve. ! 272: - Modified the infrastructure to allow the use of CPU groups ! 273: that share a certain number of devices (per-CPU device array). ! 274: All device drivers have been modified to handle this. ! 275: - Took a look at LSI ATMizer II+, which is the circuit used on ! 276: PA-A3-OC3 boards. The ATMizer is based on a MIPS CPU, so it should ! 277: be possible to emulate it. ! 278: - Added a per-CPU dedicated thread. ! 279: ! 280: 23-Nov-2005 ! 281: ----------- ! 282: - The PA-A1 ATM stuff is working!!! ! 283: ! 284: 24-Nov-2005 ! 285: ----------- ! 286: - Fixed a bug in the PA-A1 driver in TX buffer chaining. ! 287: ! 288: 25-Nov-2005 ! 289: ----------- ! 290: - Address bus masking, which clears bits 32 and 33 of physical addresses. ! 291: It avoids the use of device aliasing. ! 292: - Fixed the DEC21140 TX part which was incomplete. ! 293: ! 294: 29-Nov-2005 ! 295: ----------- ! 296: - There are still bugs in big packet forwarding. This is probably the ATM ! 297: driver (added more debugging info). ! 298: - Fabien Devaux wrote a README explaining the command line options. ! 299: ! 300: 30-Nov-2005 ! 301: ----------- ! 302: - Code cleanup in the net_io module. ! 303: - Added the "ptask" (periodic tasks) module, this is mainly for TX ring ! 304: scanning of network devices. ! 305: ! 306: 01-Dec-2005 ! 307: ----------- ! 308: - Added a memory logger (FIFO of 10 accesses), this was useful to debug the ! 309: PA-A1 RX problem. ! 310: - Fixed a RX buffer chaining problem in PA-A1. ! 311: ! 312: 02-Dec-2005 ! 313: ----------- ! 314: - Added support for PA-A1 reset ("clear int", "shut/no shut"). ! 315: - Optimized the IRQ handling (irq_pending flag in CPU structure ! 316: is used as a "cache"). ! 317: ! 318: 05-Dec-2005 ! 319: ----------- ! 320: - Optimized the cp0 count/compare process for the x86_64 platform ! 321: (unfortunately, this doesn't work for the x86 platform). ! 322: ! 323: 06-Dec-2005 ! 324: ----------- ! 325: - Modified the NVRAM handling to allow calendar emulation ("sh calendar" is ! 326: now working). ! 327: ! 328: 12-Dec-2005 ! 329: ----------- ! 330: - Added support for the NPE-400. ! 331: - Playing with the PA-POS-2OC3 (called "Charlotte" by Cisco). ! 332: ! 333: 15-Dec-2005 ! 334: ----------- ! 335: - Added teq/teqi instructions to the x86_64 jit. ! 336: ! 337: 20-Dec-2005 ! 338: ----------- ! 339: - Added a Virtual ATM switch fabric to emulate an ATM backbone. ! 340: ! 341: 22-Dec-2005 ! 342: ----------- ! 343: - Final release for 0.2.2 train (0.2.2i). ! 344: ! 345: 23-Dec-2005 ! 346: ----------- ! 347: - Starting 0.2.3 train (0.2.3a) ! 348: - Added proper NPE-150 support. ! 349: - Added bit-bucket support (zeroed memory zone). ! 350: - Added NPE type selection. ! 351: ! 352: 24-Dec-2005 ! 353: ----------- ! 354: - Added beginning of support for NPE-300 (endianness problems with PCI ! 355: controllers ?) ! 356: ! 357: 28-Dec-2005 ! 358: ----------- ! 359: - Fixed the endianness problem with the NPE-300. ! 360: - Added NPE300-IO-FE. ! 361: ! 362: 31-Dec-2005 ! 363: ----------- ! 364: - Added CLI option to load a symbol file. ! 365: - Moved JIT code from dynamips.c to mips64_jit.c ! 366: - Added support for NPE-100. ! 367: - Updated the README file for NPE type selection. ! 368: - Suppressed the annoying message "%%Error: Unrecognized I/O card in bay 0" ! 369: ! 370: 03-Jan-2006 ! 371: ----------- ! 372: - The bit clearing in physical addresses was done stupidly. ! 373: Only the bit 33 is used to bypass L2 caching. ! 374: Re-introduced SRAM aliasing. ! 375: PHY address 0x100000000 is in fact for PCI I/O space. ! 376: - Began to play with the Cirrus Logic PD6729. ! 377: - Added Bootflash based on Intel 28F008SA chips (1 Mb) ! 378: - Fixed the alignment error occuring with "show version". ! 379: ! 380: 04-Jan-2006 ! 381: ----------- ! 382: - Better understanding of Flash SIMM register with bank number and bank ! 383: size: modified the Flash SIMM code to handle a 8 Mb flash in 1 bank ! 384: (emulation of Intel 28F016SA chip) which should be sufficient to store ! 385: crashinfo files or misc files like configs,... ! 386: - Added ROM remote logging capabilities (with remote emulator control). ! 387: ! 388: 05-Jan-2006 ! 389: ----------- ! 390: - Integrated HEC and AAL5 field computation functions found at: ! 391: http://cell-relay.indiana.edu/cell-relay/publications/software/CRC/ ! 392: (Author is Charles Michael Heard). ! 393: - Added HEC field management to the virtual ATM switch fabric. ! 394: - Added HEC and AAL5 CRC fields to the TX part of the TNETA1570 driver. ! 395: ! 396: 06-Jan-2006 ! 397: ----------- ! 398: - Added block timestamping, to evaluate use JIT of blocks and eventually ! 399: enhance algorithm of block classifying. ! 400: - Added a flag to the virtual devices to prevent use of MMAPed zones ! 401: by MTS (used by NVRAM driver). ! 402: - Added functions to extract IOS configuration from NVRAM. ! 403: Pressing "Ctrl-] + c" nows write configuration to disk at any time. ! 404: ! 405: 08-Jan-2006 ! 406: ----------- ! 407: - Added support for PEM (NPE-B) EEPROM. It will probably allows support ! 408: of NPE-175/NPE-225. ! 409: ! 410: 09-Jan-2006 ! 411: ----------- ! 412: - Added support for NPE-175/NPE-225 and added NPEB-IO-FE. ! 413: ! 414: 10-Jan-2006 ! 415: ----------- ! 416: - Enhancements to the remote console over TCP port. ! 417: - Port to the Cygwin environment, allowing the emulator to run on Windows ! 418: machines! ! 419: ! 420: 11-Jan-2006 ! 421: ----------- ! 422: - Added a feature to push an IOS configuration into NVRAM ("-C" command line ! 423: option). ! 424: - Added enhanced checks to the NVRAM config export. ! 425: - Added a variant of udp_connect() function for systems that do not support ! 426: RFC 2553. ! 427: - Added support for AUX port (TCP port). ! 428: ! 429: 12-Jan-2006 ! 430: ----------- ! 431: - Better memory logger. ! 432: - Added breakpoint capabilities. ! 433: - Fixed a segfault occuring on some IOS images with x86_64 JIT. ! 434: (modified the minimum remaining size in JIT buffer adjustment). ! 435: ! 436: 13-Jan-2006 ! 437: ----------- ! 438: - The ROM is now embedded in the source code (added an utility to convert ! 439: ELF file to C code). It is possible to use an alternate ROM using the ! 440: "-R" option. ! 441: - Enhanced the MTS lookups to allow use of embedded ROM for code execution. ! 442: ! 443: 15-Jan-2006 ! 444: ----------- ! 445: - Added PCI I/O space management. ! 446: - Added a fake Cirrus Logic PD6729 PCI-to-PCMCIA host adapter. ! 447: - Cleanups in NPE initialization code. ! 448: - Fixed some bridge problems with the NPE-300. ! 449: - Code factorization in the C7200 initialization module. ! 450: - Generalization of C7200-IO-FE driver for all NPE types. ! 451: - Added Fault History support. ! 452: - Added chassis selection (standard or VXR) ! 453: - Finally found the bug in the non-jit emulation code! It was a cast problem ! 454: in mult/multu instructions. ! 455: ! 456: 16-Jan-2006 ! 457: ----------- ! 458: - Added generic hash tables. ! 459: - Added "instruction lookup tables" (ILT), which greatly improve performance ! 460: of non-JIT mode. ! 461: - Added instruction statistics for the non-JIT mode ("Ctrl-] + j") ! 462: ! 463: 17-Jan-2006 ! 464: ----------- ! 465: - Added a port for non-x86 hosts. The emulator ran successfully on a ! 466: Tru64 Unix box (Alpha CPU)! It should also be able to compile and run ! 467: on MacOS X (PowerPC). ! 468: ! 469: 24-Jan-2006 ! 470: ----------- ! 471: - Added support for DMA channels on Galileo GT64k controllers since it seems ! 472: that they may be used by IOS (NPE-400 for sure, others NPE?). ! 473: ! 474: 25-Jan-2006 ! 475: ----------- ! 476: - Added Linux Raw Ethernet driver to the NetIO infrastructure. ! 477: - Hmm, I'm probably missing something in the DMA/SRAM interaction and ! 478: endianness... ! 479: ! 480: 26-Jan-2006 ! 481: ----------- ! 482: - The DMA problem is finally fixed, in fact the SRAM can be accessed with ! 483: byte-swapping. ! 484: - Added an unicast limiter to the DEC21140, to receive only trafic directed ! 485: to the virtual machine (+ multicast/broadcast). This is done by analyzing ! 486: the setup frames (MAC address filter). ! 487: ! 488: 27-Jan-2006 ! 489: ----------- ! 490: - The Linux Raw Ethernet driver needs promiscuous mode to be enabled to ! 491: receive appropriate packets, added the required code. ! 492: - Added endianness definitions, and replaced hton[sl]/ntoh[sl] by the new ! 493: definitions (for exchanges between VM and host). ! 494: ! 495: 28-Jan-2006 ! 496: ----------- ! 497: - Added parser infrastructure. ! 498: ! 499: 29-Jan-2006 ! 500: ----------- ! 501: - Added a virtual bridge system. ! 502: - Release 0.2.3b ! 503:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.