Annotation of cf/ChangeLog, revision 1.1.1.14

1.1       root        1: /*
1.1.1.7   root        2:  * Cisco 7200/3600/2691 simulation platform.
1.1       root        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: -----------
1.1.1.4   root      207:   - Fixed a bug in SRA instruction in amd64 jit code. Dynamips is now working
1.1       root      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: -----------
1.1.1.4   root      398:   - Added block timestamping, to evaluate use of JIT blocks and eventually
1.1       root      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: -----------
1.1.1.4   root      407:   - Added support for PEM (NPE-B) EEPROM. It will probably allow support
1.1       root      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
1.1.1.4   root      472:     that they may be used by IOS (NPE-400 for sure, other NPE?).
1.1       root      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: 
1.1.1.2   root      504: 31-Jan-2006
                    505: -----------
                    506:   - Fixed a stupid bug in DMA handling, which in certain conditions can
                    507:     cause an infinite loop.
                    508: 
                    509: 01-Feb-2006
                    510: -----------
                    511:   - Added an "instruction block hash" which avoids lookups in the instruction
                    512:     red-black tree. The IBH table takes only 16 Kb of memory.
                    513:   - Added CRC-12 and CRC-16 functions for future use.
                    514:   - Added a "gen_eth" NetIO driver, which allow to access ethernet interfaces
                    515:     in a portable way (tested on Linux and Cygwin).
                    516:   - Fixes to the PowerPC build on Darwin thanks to Olivier Cahagne.
                    517:   - Minor cosmetic changes to display supported/unsupported PA and NPE.
                    518:   - Release 0.2.3c
1.1.1.3   root      519: 
                    520: 06-Feb-2006
                    521: -----------
                    522:   - Added working Serial interfaces (PA-4T+) !
                    523:   - Bug: CDP not working with serial interfaces ("debug cdp events" reports
                    524:     a checksum problem).
                    525: 
                    526: 07-Feb-2006
                    527: -----------
                    528:   - Started the 0.2.4 release.
                    529:   - Modified the command line parser to allow many NIO per PA (for example
                    530:     for serials).
                    531:   - A lot of code cleanups in the C7200 initialization.
                    532:   - Added PA-8T support.
                    533:   - To fix: CDP with Serial interfaces: using cp_len (instead of cp_len+4)
                    534:     in packet rx fixes the problem but breaks IP. Probably something related
                    535:     to padding, see how a CDP packet is sent (special flag in tx ring ?)
                    536:   - Added virtual "beqz" instruction.
                    537:   - Added the "-X" option, allowing to use host memory directly instead of
                    538:     mapping a file to simulate RAM (faster).
                    539:   - Beginning of code reorganization to allow multiple instance contexts.
                    540: 
                    541: 08-Feb-2006
                    542: -----------
                    543:   - Added a basic virtual Frame-Relay switch. Unfortunately, LMI must be
                    544:     implemented to maintain links up.
                    545:   - Finally found the problem related to CDP! It was simply a padding problem.
                    546: 
                    547: 09-Feb-2006
                    548: -----------
                    549:   - Add support of promiscuous mode for the DEC21140 "unicast limiter":
                    550:     promiscuous mode is used in bridging configurations.
                    551:   - Fixed another bug with the serial interfaces: it seems that there is
                    552:     a "length substractor" for the txring.
                    553: 
                    554: 10-Feb-2006
                    555: -----------
                    556:   - Played a little with the PA-POS-OC3, without success.
                    557:        
                    558: 14-Feb-2006
                    559: -----------
                    560:   - Finally implemented the basic LMI stuff (only ANSI Annex D). Fortunately,
                    561:     IOS rocks and uses auto-detection, so no extra configuration is needed.
                    562:   - Integrated a Makefile patch from Max Khon for FreeBSD.
                    563:   - Updated documentation.
                    564:   - Release 0.2.4.
1.1.1.4   root      565: 
                    566: 15-Feb-2006
                    567: -----------
                    568:   - Fixed a cosmetic bug when displaying MAC address at startup.
                    569:   - Fixed a stupid bug in "srav" instruction in x86_64 JIT code. The
                    570:     arithmetic shift operation was done on a 64-bit basic instead of 32-bit,
                    571:     causing bad propagation of the sign-bit.
                    572:   - Added support for multiple instances (no CLI present yet).
                    573: 
                    574: 17-Feb-2006
                    575: -----------
                    576:   - Fixed 2 bugs in Frame-Relay switch: a crash occured when receiving
                    577:     a packet gave an error, and if many DLCI with the same ID on different
                    578:     interfaces were used, only one was announced on one interface.
                    579: 
                    580: 18-Feb-2006
                    581: -----------
                    582:   - Began work on advanced configuration parsing (instances).
                    583: 
                    584: 19-Feb-2006
                    585: -----------
                    586:   - Is the count/compare mechanism pertinent ?
                    587: 
                    588: 23-Feb-2006
                    589: -----------
                    590:   - Continued work on advanced config parsing (instances,NIO).
                    591:   - Added registry infrastructure.
                    592:   - Fixed some mistakes in documentation.
                    593: 
                    594: 28-Feb-2006
                    595: -----------
                    596:   - Continued work on advanced config parsing (NIO).
                    597:   - Added an IRQ counter.
                    598:   - Continued debugging on recurrent crashes problem.
                    599:   - Added proper checks to mts32_raw_lookup (at least it avoids the
                    600:     coredump...)
                    601:   - Added display of all CP0 registers (except TLB).
                    602: 
                    603: 02-Mar-2006
                    604: -----------
                    605:   - Hardened a little the IRQ subsystem, but this doesn't fix the problem.
                    606:   - Added a debugging mode to track jumps to address 0 (x86_64 only!).
                    607:   - Fixed the teq/teqi instructions in amd64/x86 modes that were buggy.
                    608: 
                    609: 04-Mar-2006
                    610: -----------
                    611:   - Added some assembly optimized routines for x86 hosts.
                    612:   - Fixed a stupid bug in mts32_raw_lookup (op_size and op_type were
                    613:     swapped).
                    614:        
                    615: 06-Mar-2006
                    616: -----------
                    617:   - Added Unix and Null NETIO types for config files.
                    618:   - Fixes for incorrect behavior in virtual memory access routines, in
                    619:     case of exception.
                    620: 
                    621: 08-Mar-2006
                    622: -----------
                    623:   - Removed the configuration file parsing, in favor of a remote control
                    624:     system for use with the dynagen project.
                    625:        
                    626: 09-Mar-2006
                    627: -----------
                    628:   - Added basic hypervisor infrastructure.
                    629:   - Added basic NIO code to the hypervisor commands.
                    630:        
                    631: 10-Mar-2006
                    632: -----------
                    633:   - Added the hypervisor NIO code.
                    634:   - Added Frame-Relay and ATM switches to the hypervisor commands.
                    635:        
                    636: 11-Mar-2006
                    637: -----------
                    638:   - Played (successfully) with OIR (Online Insertion and Removal). OIR
                    639:     will require device deletion...
                    640: 
                    641: 12-Mar-2006
                    642: -----------
                    643:   - Fixed EEPROM code which used global variables.
                    644:   - Added the necessary code for basic OIR.
                    645:   - Added PCI device removal.
                    646: 
                    647: 15-Mar-2006
                    648: -----------
                    649:   - A lot of work on C3600 integration (although it is not functional).
                    650:   - Added a basic ns16552 driver.
                    651: 
                    652: 17-Mar-2006
                    653: -----------
                    654:   - Added some hypervisor commands for PA setup and OIR.
                    655:        
                    656: 20-Mar-2006
                    657: -----------
                    658:   - Hardened the Mueslix driver: after OIR, a "no shut" on a new interface
                    659:     crashed the virtual router. Now, IRQ status is managed appropriately.
                    660: 
                    661: 24-Mar-2006
                    662: -----------
                    663:   - Added ptask (periodic task) removal.
                    664:   - Added a basic (nearly empty) C3600 IO FPGA chip.
                    665: 
                    666: 25-Mar-2006
                    667: -----------
                    668:   - Added a NIO RX multiplexer.
                    669:   - Added NIO unset operation for PA.
                    670: 
                    671: 26-Mar-2006
                    672: -----------
                    673:   - Modified the virtual ATM/Frame-Relay switches and NIO bridge to use
                    674:     the new NIO RX multiplexer.
                    675:   - Added the NIO bridges to the hypervisor commands.
                    676:   - Fixed a stupid bug in hypervisor ATM/FR switch command, the VC were
                    677:     badly parsed.
                    678:   - Fixed a memory leak in the hypervisor module (tokens not freed).
                    679: 
                    680: 27-Mar-2006
                    681: -----------
                    682:   - Added appropriate locks to the ATM and Frame-Relay switches.
                    683:   - Added VC removal for ATM and Frame-Relay switches.
                    684: 
                    685: 28-Mar-2006
                    686: -----------
                    687:   - Added registry management to the ATM/FR switches and NIO bridge.
                    688: 
                    689: 30-Mar-2006
                    690: -----------
                    691:   - Added a refcount system to the NIO RX multiplexer.
                    692: 
                    693: 31-Mar-2006
                    694: -----------
                    695:   - Added NIO removal for NIO bridges.
                    696:   - Added NIO bridge removal.
                    697:   - Modified the NIO bridge code to use the registry infrastructure.
                    698:   - Same as above, for ATM and Frame-Relay switches.
                    699: 
                    700: 03-Apr-2006
                    701: -----------
                    702:   - Added the required infrastructure for online removal.
                    703:   - Added hypervisor commands for PA removal and to display C7200 hardware.
                    704:   - Fixed a bug in PCI device removal.
                    705:   - It's now possible to change cards on the fly!
                    706:   - The Mueslix driver was incorrectly modified: the TX ring scanner must
                    707:     run even if the NIO is not defined.
                    708:   - Modified the DEC21140 driver to report a Link Down when the NIO is not
                    709:     defined.
                    710: 
                    711: 04-Apr-2006
                    712: -----------
                    713:   - Added packet dump (for debugging) to NetIO receive/send operations.
                    714: 
                    715: 08-Apr-2006
                    716: -----------
                    717:   - The SMP bug seems to be fixed! The irq_cause field is now manipulated
                    718:     atomically (inline asm for x86 and x86_64, pthread mutex on other 
                    719:     machines).
                    720: 
                    721: 12-Apr-2006
                    722: -----------
                    723:   - Added a VM abstraction layer (for different platforms).
                    724:   - Fix of X86 assembly file for Cygwin.
                    725:   - The IOS config file is now saved with a specific filename from the
                    726:     VM instance.
                    727: 
                    728: 13-Apr-2006
                    729: -----------
                    730:   - Added per-instance logfile.
                    731: 
                    732: 14-Apr-2006
                    733: -----------
                    734:   - Fixed a stupid bug in non-JIT mode with IRQs.
                    735: 
                    736: 17-Apr-2006
                    737: -----------
                    738:   - bugfix: "null" NIO creation didn't record the NIO in registry.     
                    739:   - bugfix: mueslix logging.
                    740:   - bugfix: adding an NIO to the RX listener list (bad double linked-list)
                    741:   - bugfix: bad fgets() use in NIO bridge and ATM/FR switches.
                    742: 
                    743: 18-Apr-2006
                    744: -----------
                    745:   - bugfix: the same NIO could be recorded many times in the NIO RX
                    746:     multiplexer due to bad design in NIO adding.
                    747: 
                    748: 19-Apr-2006
                    749: -----------
                    750:   - Beginning of work on AMD Am79c971 ethernet controller (used by PA-4E
                    751:     and PA-8E).
                    752: 
                    753: 20-Apr-2006
                    754: -----------
                    755:   - The emulation of AMD Am79c971 seems to be working very well.
                    756:   - Modified the physical memory dump function to use the VM log file.
                    757: 
                    758: 21-Apr-2006
                    759: -----------
                    760:   - Modified the PA-4E/PA-8E EEPROM definitions to work with VXR midplanes.
                    761:   - PA-4E is now usable.
                    762: 
                    763: 23-Apr-2006
                    764: -----------
                    765:   - Added "shutdown" operation for PA-4E/PA-8E drivers.
                    766: 
                    767: 24-Apr-2006
                    768: -----------
                    769:   - Enhanced lock file management (with POSIX locks).
                    770:   - The devices are now dependent from VMs instead of being dependent
                    771:     of CPU groups. This makes a lot of things cleaner.
                    772: 
                    773: 27-Apr-2006
                    774: -----------
                    775:   - Added IRQ clearing with GT64K (DMA transfers).
                    776:   - Study of GT64120 controller to understand address decoding process.
                    777:        
                    778: 28-Apr-2006
                    779: -----------
                    780:   - Fixed a bug with NPE-175/NPE-225 PEM EEPROM selection.
                    781:   - The NPE-400 is now able to support 512 Mb of DRAM! (the supplemental
                    782:     memory is in fact considered as IO memory)
                    783:   - Added a safety check with RAM size.
                    784:   - The CPU identifier (PRID register) is now fixed depending on the NPE
                    785:     board.
                    786: 
                    787: 01-May-2006
                    788: -----------
                    789:   - Modified device subsystem to order devices by physical addresses,
                    790:     optimized dev_lookup/dev_lookup_next.
                    791:   - Added infrastructure for various object cleanup.
                    792:   - Added "shutdown" code for SRAM, NVRAM, Bootflash, Zero, remote control
                    793:     devices.
                    794:   - Added CPU deletion support (incomplete).
                    795: 
                    796: 02-May-2006
                    797: -----------
                    798:   - Added PCI bus removal.
                    799:   - Added "shutdown" code for GT64010 and GT64120.
                    800:   - Added CFC0/CTC0 instructions (R7000) and handling for associated 
                    801:     registers. TODO: customized vector spacing.
                    802: 
                    803: 04-May-2006
                    804: -----------
                    805:   - Introduction of the new MTS64 subsystem!
                    806:   - Note: incorrect uses of assert(), especially in insn_lookup.c module.
                    807: 
                    808: 05-May-2006
                    809: -----------
                    810:   - Added a free list of chunks for MTS64 + some basic optimizations.
                    811:   - Added basic PCI/HT stuff for SB-1 processor (dev_sb1_pci.c module).
                    812:   - Added AP1011 (Sturgeon HyperTransport-PCI Bridge) device.
                    813:   - Fixed masks for MFC0/MTC0 instructions, and added new definition for MFC0
                    814:     to access set 1.
                    815:   - Fixed incorrect uses of assert().
                    816: 
                    817: 07-May-2006
                    818: -----------
                    819:   - Modified the console handling to be more efficient. 
                    820:   - Added global invalidation of the MTS64 cache.
                    821:        
                    822: 08-May-2006
                    823: -----------
                    824:   - Added selective invalidation of the MTS64 cache (for TLB management).
                    825:   - Added MTS64 statistics.
                    826:   - Modified the MTS64 hash settings. Origin: shift: 12, hash_bits: 16.
                    827:     Replaced by shift: 16, hash_bits: 12 -> more efficient and consumes
                    828:     less memory! (logical since IOS uses large TLB entries).
                    829:   - Modified cp0 module to use an abstraction layer for MTS access, allowing
                    830:     32 or 64 bit modes.
                    831: 
                    832: 09-May-2006
                    833: -----------
                    834:   - Fixed MTS64 on x86_64 machines.
                    835:   - The clock divisor can now be set per VM and with an hypervisor command.
                    836: 
                    837: 10-May-2006
                    838: -----------
                    839:   - Added "shutdown" code for RAM and ROM devices.
                    840:   - Added VM object dump ("Ctrl-] + o")
                    841: 
                    842: 11-May-2006
                    843: -----------
                    844:   - Bugfix: missing initialization of the address length parameter of accept()
                    845:     in the main hypervisor module.
                    846:   - Bugfix: missing initialization of registry memory pool (noticed with
                    847:     Valgrind).
                    848:   - Added NPE and midplane selections to the hypervisor.
                    849: 
                    850: 12-May-2006
                    851: -----------
                    852:   - Added NIO deletion to the hypervisor.
                    853:   - Fixed status message in hypervisor for object deletion.
                    854:   - Added "sub" instruction (without exception support).
                    855: 
                    856: 14-May-2006
                    857: -----------
                    858:   - Fixed CPU state change. It is now possible to reboot at any time using
                    859:     "Ctrl-] + k".
                    860:   - Added VTTY deletion.
                    861:   - Added "c7200 stop" command to the hypervisor (not finished).
                    862:   - The memory-mapped devices of port adapters are now enabled dynamically,
                    863:     depending on the PCI BAR (Base Address Registers) settings. This avoids
                    864:     use of hardcoded values.
                    865:   - Integrated a patch from Philipp Brenner, which fixes ELF loading problem
                    866:     on Cygwin when default text file type is set to DOS. Many thanks to him.
                    867:     (symptom was: "load_elf_image: elf_begin: I/O error: raw read")
                    868: 
                    869: 15-May-2006
                    870: -----------
                    871:   - Added "c7200 set_config" and "c7200 set_mac_addr" hypervisor commands.
                    872:   - Fixed a stupid bug in PCI bus removal.
                    873:   - Added more complete shutdown code.
                    874: 
                    875: 16-May-2006
                    876: -----------
                    877:   - Fixed uninitialized MTS64 allocated entries (seen with Valgrind).
                    878:   - Added missing unmapping of memory-mapped files (reported by Greg).
                    879:   - The VTTY shutdown doesn't close stdin anymore (causing terminal
                    880:     problems at exit).  
                    881:   - Fixed the shutdown procedure, added VM_STATUS_SHUTDOWN as status
                    882:     for a VM. Adapted the virtual CPU synchronization.
                    883: 
                    884: 17-May-2006
                    885: -----------
                    886:   - Some basic work on the hypervisor main modules (cleanup).
                    887:        
                    888: 19-May-2006
                    889: -----------
                    890:   - bugfix: base MAC address setup broken (reported by Greg).
                    891:   - Added global deletion of: ATM/FR switches, NetIO bridges, NetIO
                    892:     descriptors, C7200 instances ...
                    893:   - Added "hypervisor reset" command to go back to a clean state.
                    894: 
                    895: 20-May-2006
                    896: -----------
                    897:   - Modified the CPU synchronization system which was not working correctly.
                    898: 
                    899: 21-May-2006
                    900: -----------
                    901:   - bugfix: NIO unset in PA-4T+/PA-8T driver.
                    902:   - Added C7200 PA cleanup code.
                    903: 
                    904: 22-May-2006
                    905: -----------
                    906:   - Better handling of PA/NIO removal.
                    907:   - Base MAC addresses are now generated automatically if not specified.
                    908:     ("cafe.<instance_id>.0000")
                    909: 
                    910: 23-May-2006
                    911: -----------
                    912:   - Added "VDE" NetIO type to connect to UML switches / Virtual Distributed
                    913:     Ethernet switches.
                    914:   - Some cleanups in NetIO code.
                    915:   - Added shutdown code for MTS32/MTS64 (not used yet).
                    916: 
                    917: 24-May-2006
                    918: -----------
                    919:   - Minor optimizations for non-JIT mode.
                    920:   - bugfix: crash when dumping instruction block tree (JIT).
                    921:   - Some memory leak fixes (again with Valgrind, definitely this tool rocks).
                    922:     TOFIX: * clpd6729 + PCI I/O space (to check carefully).
                    923:            * IO/supplemental memory created with dev_create_ram().
                    924:   - Use of MTS shutdown code.
                    925: 
                    926: 25-May-2006
                    927: -----------
                    928:   - The compressed IOS images were not booting anymore: fixed the MIPS config
                    929:     register at startup (reported by Davide Brini).
                    930:   - Minor code cleanup for MIPS CPU reset.
                    931:   - I/O and supplemental memory are now created with dev_ram_init().
                    932:   - bugfix: in PA shutdown code, the driver shutdown operation was called
                    933:     even if the driver was not initialized.
                    934:   - bugfix: order of memory freeing in c7200_free_instance() wasn't good,
                    935:     producing a segfault (seen on windows machines).
                    936: 
                    937: 26-May-2006
                    938: -----------
                    939:   - Played with the PA-POS-OC3 driver, it seems that it is working. Need
                    940:     to check if the TX ring guess is correct (ie, with "routing" conditions).
                    941: 
                    942: 27-May-2006
                    943: -----------
                    944:   - PA-POS-OC3: Fixed the TX ring part to work with multiple buffers. There 
                    945:     is still a problem with buffer addresses (doesn't work with platforms 
                    946:     using SRAM).
                    947: 
                    948: 29-May-2006
                    949: -----------
                    950:   - Playing with ISDN emulation (PA-4B), and Munich32 chip. Interfaces
                    951:     are only visible for now.
                    952: 
                    953: 30-May-2006
                    954: -----------
                    955:   - Moved VM lockfile deletion to VM instance freeing function.
                    956:   - Ugly hack to allow the POS driver to work with SRAM-based platforms.
                    957:   - Added support for "VDE" NIO in hypervisor.
                    958:   - Beginning of hypervisor documentation (README.hypervisor).
                    959: 
                    960: 31-May-2006
                    961: -----------
                    962:   - Removed "c7200 trigger_oir" hypervisor command which was redundant.
                    963: 
                    964: 01-Jun-2006
                    965: -----------
                    966:   - bugfix: fixed some reference counting leaks with default ATM and 
                    967:     Frame-Relay switches and NIO bridge.
                    968:   - bugfix: DLCI were not announced in ascending order in LMI packets.
                    969:   - studied a bit how to use larger bootflash sizes.
                    970: 
                    971: 02-Jun-2006
                    972: -----------
                    973:   - DEC21140: Added multicast flag management for received frames.
                    974:   - Debugging of ISL problem reported by Valentin.
                    975:   - Added CRC-32 functions to the appropriate module.
                    976:        
                    977: 03-Jun-2006
                    978: -----------
                    979:   - ISL is now working with DEC21140. It seems that to handle ISL, another
                    980:     chip (FPGA ?) is present on PA-FE-TX and C7200-IO-FE to add the second
                    981:     FCS field. 
                    982:   - Added basic disassembly code (need to do something more generic).
                    983: 
                    984: 04-Jun-2006
                    985: -----------
                    986:   - Added virtual instruction "bnez" (basic optimization).
                    987:   - Added RM7000 "mul" instruction (not tested).
                    988:   - Added teq/teqi instructions to non-JIT mode.
                    989: 
                    990: 05-Jun-2006
                    991: -----------
                    992:   - Added output packet exclusion to PCAP module (not possible with WinPCAP
                    993:     though).
                    994:   - Enhanced packet filtering in dec21140 emulation (for Windows users).
                    995:   - bugfix: stupid cast problem in bootflash code preventing proper unmapping.
                    996:     (seen with /proc/<pid>/maps on Linux).
                    997:   - Added debugging message for device removal.
                    998:   - bugfix: memory not freed / file not closed with ELF loader.
                    999:   - bugfix: config register keeping the "ignore config" flag between instance
                   1000:     reloads.
                   1001:   - Added "c7200 set_conf_reg" hypervisor command.
                   1002:   - ==> pre19
                   1003:   - Experiment: Pending IRQ are now checked only at jump instructions.
                   1004: 
                   1005: 06-Jun-2006
                   1006: -----------
                   1007:   - bugfix: bootflash not working anymore with previous bugfix. 
                   1008:   - Some optimizations for Program Counter (PC) handling in JIT mode.
                   1009:   - Some optimizations for non-JIT mode (use of fastcalls).
                   1010:   - Added a performance counter.
                   1011: 
                   1012: 07-Jun-2006
                   1013: -----------
                   1014:   - Added configuration saving command for hypervisor
                   1015:     ("hypervisor save_config <file>")
                   1016:   - The SB-1 DUART is working, allowing NPE-G1 console to work :)
                   1017:   - Environmental monitor working with NPE-G1.
                   1018:   - NPE-G1 next priorities: Ethernet (because it delays boot) and NVRAM
                   1019:     (seems to be at a different address?)
                   1020: 
                   1021: 08-Jun-2006
                   1022: -----------
                   1023:   - NVRAM is now ok on NPE-G1 (it is at a different physical address).
                   1024: 
                   1025: 13-Jun-2006
                   1026: -----------
                   1027:   - Optimizations on fast lw/sw operations (x86 only for now).
                   1028:   - Changed offset size for branches (x86_jump32 instead of x86_jump8).
                   1029: 
                   1030: 14-Jun-2006
                   1031: -----------
                   1032:   - Base MAC address now generated from PID and instance ID.
                   1033: 
                   1034: 15-Jun-2006
                   1035: -----------
                   1036:   - Optimizations on fast lw/sw operations (x86_64).
                   1037:   - bugfix: fixed console problems when using TCP mode on Windows platforms 
                   1038:     (Telnet, Putty). It just requires to ignore LF (Line Feed) character 
                   1039:     (BTS entry #4)
                   1040: 
                   1041: 16-Jun-2006
                   1042: -----------
                   1043:   - bugfix: importing config to NVRAM was broken (device lookup was done on
                   1044:     "cacheable" devices only in physmem* functions) (BTS entry #5)
                   1045: 
                   1046: 17-Jun-2006
                   1047: -----------
                   1048:   - bugfix: memory not freed when using host memory to emulate virtual RAM.
                   1049:     (BTS entry #8).
                   1050:   - Minor enhancements to clpd6729 driver.
                   1051: 
                   1052: 19-Jun-2006
                   1053: -----------
                   1054:   - Included a patch from Peter Ross ([email protected]) which allows
                   1055:     to bind console and AUX ports to real serial ports. Many thanks to him.
                   1056: 
                   1057: 20-Jun-2006
                   1058: -----------
                   1059:   - Playing with the PCMCIA stuff (especially CIS)
                   1060: 
                   1061: 21-Jun-2006
                   1062: -----------
                   1063:   - Continuing on PCMCIA.
                   1064: 
                   1065: 22-Jun-2006
                   1066: -----------
                   1067:   - The PCMCIA ATA disk is working, although the ATA command set is not
                   1068:     completely implemented. 
                   1069: 
                   1070: 23-Jun-2006
                   1071: -----------
                   1072:   - Added virtual ethernet switch module.
                   1073:   - bugfix: linux_eth file descriptor was not used correctly with NIO RXL.
                   1074:   - Modified the ELF loader to use all sections.
                   1075: 
                   1076: 26-Jun-2006
                   1077: -----------
                   1078:   - Modified the NIO RX handling (packet receiving is done in NIO module).
                   1079: 
                   1080: 27-Jun-2006
                   1081: -----------
                   1082:   - bugfix: PA-4E/PA-8E not working with IOS 12.0T (incorrect device length).
                   1083:     (BTS entry #17).
                   1084:   - Some cleanups (untested though) in ATM and Frame-Relay switch modules
                   1085:     (locking).
                   1086: 
                   1087: 29-Jun-2006
                   1088: -----------
                   1089:   - Added support for 2nd ATA disk.
                   1090:   - Added command line options for disk0: and disk1: ATA devices.
                   1091:     By default, disk0: has a capacity of 64 Mb, disk1: is not defined.
                   1092:   - Added hypervisor commands "c7200 set_disk0" and "c7200 set_disk1".
                   1093:   - Fixed some mistakes and typos in documentation. 
                   1094: 
                   1095: 30-Jun-2006
                   1096: -----------
                   1097:   - Factorized code of fast memory operations to have something cleaner.
                   1098: 
                   1099: 02-Jul-2006
                   1100: -----------
                   1101:   - Modified the JIT compiler to translate pages instead of "blocks"
                   1102:     (improves performance).
                   1103: 
                   1104: 03-Jul-2006
                   1105: -----------
                   1106:   - Some code cleanup for the new JIT compiler.
                   1107:   - bugfix: PA-4T+/PA-8T not working with IOS 12.0T (incorrect device length).
                   1108:     (BTS entry #23).
                   1109:   - Added JIT flush to limit the memory used for translation. At this time,
                   1110:     this is basic, we count the number of translated pages and we flush when
                   1111:     this number reaches a threshold (512 pages seems to be a good value).
                   1112:   - Integrated a patch from Philipp Brenner (BTS entry #21)
                   1113:     Description: "In standard mode it intercepts SIGINT and sends a CTRL+C 
                   1114:     (0x03) to the target's vtty_con buffer, while in hypervisor mode it 
                   1115:     gracefully shuts down the hypervisor which causes the application to 
                   1116:     quit."
                   1117: 
                   1118: 04-Jul-2006
                   1119: -----------
                   1120:   - Fixed a stupid bug in mts_cache (phys_page boundary not checked).
                   1121:   - Optimized JIT flushing and insn block allocation.
                   1122:   - Changed the maximum number of translated pages to 2048, which seems to 
                   1123:     be a more adequate value.
                   1124: 
                   1125: 05-Jul-2006
                   1126: -----------
                   1127:   - Added an "exec zone" which is a pool of host executable pages. This
                   1128:     zone is limited by default to 64 Mb for Linux/Unix and 16 Mb for Cygwin. 
                   1129:     When the zone is fully used, the JIT structures are flushed (removed the 
                   1130:     maximum number of translated pages).
                   1131:     Now, there is no need to disable ExecShield or similar systems.
                   1132:   - Added explicit error message when failing to open an ELF file.
                   1133:   - Fixed getopt_long() usage.
                   1134:   - Added CLI option "--exec-area <size>" to define exec zone size for the 
                   1135:     default VM.
                   1136: 
                   1137: 06-Jul-2006
                   1138: -----------
                   1139:   - Added "tlbwr" (TLB Write Random) instruction and coprocessor 0 random 
                   1140:     register management.
                   1141:   - Added "c7200 set_exec_area" hypervisor command.
                   1142:   - Allowed the hypervisor to run on Windows 2000 machines (ip_listen()
                   1143:     version is now ok for non-rfc2553 systems).
                   1144: 
                   1145: 07-Jul-2006
                   1146: -----------
                   1147:   - Added command line help for "--exec-area" option.
                   1148:   - Updated documentation.
                   1149: 
                   1150: 11-Jul-2006
                   1151: -----------
                   1152:   - bugfix: missing pointer cleanup in c7200_pa_shutdown() (BTS entry #30)
                   1153:   - bugfix: incomplete shutdown code for NIO (little memory leak + no
                   1154:     freeing code for NIO with null type).
                   1155:   - bugfix: memory leak in udp_connect() + incorrect error checking.
                   1156:   - Added cleanup code for general log file.
                   1157:   - bugfix: memory leak in hypervisor command execution.
                   1158:   - Added logging for hypervisor commands.
                   1159:   - Invalid instructions in delay slots are now properly handled by the JIT
                   1160:     compiler (error message + CPU stop).
                   1161: 
                   1162: 13-Jul-2006
                   1163: -----------
                   1164:   - Added an idle loop detector (--idle-pc CLI option + "Ctrl-] + i" key)
                   1165:   - Added "c7200 set_idle_pc" hypervisor command.
                   1166: 
                   1167: 14-Jul-2006
                   1168: -----------
                   1169:   - Updated documentation.
                   1170:   - Checked the idle loop system on Windows and Linux x86_64, seems to be
                   1171:     working correctly.
                   1172:   - Added idle loop system to non-JIT mode.
                   1173:   - Fixed a bug in "cache" instruction when used in non-JIT mode.
                   1174: 
                   1175: 16-Jul-2006
                   1176: -----------
                   1177:   - Integrated a patch from Peter Ross ([email protected]) for the 
                   1178:     Makefile.
                   1179: 
                   1180: 17-Jul-2006
                   1181: -----------
                   1182:   - bugfix: no empty mips64_emit_invalid_delay_slot() function for non-JIT
                   1183:     build.
                   1184:   - Added definition for mmap() MAP_ANONYMOUS flag for systems where only
                   1185:     MAP_ANON is defined.
                   1186:   - Accurate Timer IRQ (added --timer-itv parameter for tuning).
                   1187: 
                   1188: 18-Jul-2006
                   1189: -----------
                   1190:   - Fixed inter-pages jumps in delay slots (reported by nula)
                   1191:   - Added a check preventing to run the idle-pc feature when an idle-pc value
                   1192:     is already defined (since it would give biased results).
                   1193:   - bugfix: VTTY list not locked in vtty_create()
                   1194:   - bugfix: ensure the CPU is running before incrementing pending timer IRQs.
                   1195:   - Added a checklist for minimal C7200 hardware components. It checks good
                   1196:     init of ram, rom, nvram and zero devices.
                   1197: 
                   1198: 19-Jul-2006
                   1199: -----------
                   1200:   - Some work on JIT tuning (flush).
                   1201: 
                   1202: 20-Jul-2006
                   1203: -----------
                   1204:   - Better info logging for VTTY and C7200 modules.
                   1205:   - Added a debug level for VMs.
                   1206:        
                   1207: 21-Jul-2006
                   1208: -----------
                   1209:   - Various code cleanups.
                   1210:   - Added "c7200 set_debug_level" hypervisor command and "--vm-debug" command
                   1211:     line option. Now, by default, less details are printed.
                   1212:   - Fixed a bug with select() on Cygwin platform: before, only 64 FDs 
                   1213:     could be used.
                   1214: 
                   1215: 24-Jul-2006
                   1216: -----------
                   1217:   - bugfix: accept_fd was not closed in VTTY module (BTS entry #42)
                   1218:   - bugfix: properly handle CR/LF in configuration files (FR, ATM, ...)
                   1219:     (BTS entry #36)
                   1220:   - bugfix: accept fd not correctly printed in log file.
                   1221:   - Added a mini-parser for hypervisor: allows directory with blanks, ...
                   1222:   - bugfix: bad use of setsockopt() in the hypervisor.
                   1223: 
                   1224: 25-Jul-2006
                   1225: -----------
                   1226:   - Added the capability to use Null NetIO with the hypervisor 
                   1227:     ("nio create_null" command).
                   1228:   - Added a FIFO NetIO for intra-hypervisor communications.
                   1229:   - Merged a patch from Peter Ross for incorrect idle-pc parsing with 64-bit
                   1230:     values.
                   1231:   - Non-JIT mode optimization for instruction fetch (although it could be
                   1232:     enhanced again).
                   1233:   - Various code cleanups.
                   1234: 
                   1235: 26-Jul-2006
                   1236: -----------
                   1237:   - Added "ethsw clear_mac_addr_table" to clear MAC address table of a
                   1238:     virtual ethernet switch.
                   1239:   - Added "ethsw show_mac_addr_table" to show all MAC addresses learnt by
                   1240:     a virtual ethernet switch.
                   1241:   - Fixed a potential bug with jalr/jr instructions, where the stack is used
                   1242:     to save the return PC. If the instruction in the delay slot returned
                   1243:     directly to the jit main loop (exception,...), the stack would be in
                   1244:     an inconsistent state. This fix is also required for Darwin/x86.
                   1245:   
                   1246: 27-Jul-2006
                   1247: -----------
                   1248:   - Stack alignment for Darwin/x86 in memop functions and unknown opcode
                   1249:     handling.
                   1250:   - The Darwin/x86 build requires -mdynamic-no-pic as compilation option.
                   1251:   - Fixed some inline assembly mistakes with "lock" prefix.
                   1252:   - The Darwin/x86 port seems to be working correctly.
                   1253:   - Fixed the amd64 version of "jr" instruction similarly to the x86 version
                   1254:     (no problem with "jalr" in this case).
                   1255: 
                   1256: 29-Jul-2006
                   1257: -----------
                   1258:   - Merged a patch from Peter Ross ([email protected]):
                   1259:        * disable dynamips escape commands for serial
                   1260:         * support receipt of char 0x00
                   1261:         * force the device to into raw mode (cfmakeraw)
                   1262:         * include additional uart register addresses in c7200 iofpga switch.
                   1263:     The README is also updated.
                   1264:   - Fixed some sign problems in VTTY module.
                   1265: 
                   1266: 31-Jul-2006
                   1267: -----------
                   1268:   - Merged a parch from Peter Ross for correct handling of Ctrl-C when
                   1269:     a TCP console is used.
                   1270:   - Code cleanup (JIT usage flag per VM, ...)
                   1271:   - C3600: implemented a working ns16552 console driver.
                   1272:   - C3600: fixed clpd6719 driver.
                   1273:   - C3600: working environmental monitor.
                   1274:   - C3600: changed default RAM to 128 Mb.
                   1275:   - Fixed clobbered registers on AMD64 platform ("r14" was missing).
                   1276: 
                   1277: 01-Aug-2006
                   1278: -----------
                   1279:   - Added command line support for C3600 instances.
                   1280:   - C3600: added appropriate deletion code.
                   1281:   - C3600: added mainboard EEPROM support.
                   1282:   - C3600: added bootflash of 8 Mb.
                   1283:   - C3600: analyzed triggering of various IRQs.
                   1284: 
                   1285: 03-Aug-2006
                   1286: -----------
                   1287:   - C3600: added NM EEPROM support, slot activation now depends on the NM
                   1288:     state.
                   1289:   - Fixed nmc93c46 EEPROM code to set the data out bit to a high value when
                   1290:     not reading data (was required for C3600 NM EEPROM) + various bug-fixes
                   1291:     and cleanups.
                   1292: 
                   1293: 04-Aug-2006
                   1294: -----------
                   1295:   - C7200: some cleanups in PA function naming.
                   1296:   - C7200: code refactoring for PA drivers.
                   1297:   - C7200: ethernet stuff is now independent of dec21140 and am79c971 code.
                   1298:   - C3600: added NM management stuff.
                   1299:   - Mueslix serial stuff is now independent for C3600 and C7200.
                   1300:   - C3600: added NM-1E, NM-1FE and NM-4T network modules.
                   1301:     => problems: * no keepalive required for NM-1E/NM-1FE (media status ?)
                   1302:                 * NM-4T packet delivery failure when end of RX ring is hit.
                   1303: 
                   1304: 06-Aug-2006
                   1305: -----------
                   1306:   - Modified Am79c971 MII registers to keep the link up in FastEthernet mode.
                   1307:   - Merged a patch from Peter Ross for Console and AUX ports optimizations
                   1308:     (especially with TCP mode)
                   1309:        * console and aux FILE streams
                   1310:         * reimplement vtty_read_and_store() as state machine:
                   1311:           - parse telnet escape codes, instead of forwarding them to router.
                   1312:           - display instance and router name in xterm/vt title bar.
                   1313:   - Modified the Mueslix driver to have something working for both C3600 and
                   1314:     C7200 models. Added some debugging info.
                   1315:   - C3600: better ethernet NM code.
                   1316:   - C3600: Added NM-4E (4 ethernet ports) network module.
                   1317: 
                   1318: 07-Aug-2006
                   1319: -----------
                   1320:   - Fixed the remote control driver which incorrectly used static variables.
                   1321:   - NVRAM address can now be known with the remote control driver.
                   1322:   - Command line usage is now correctly displayed depending on the selected
                   1323:     platform.
                   1324: 
                   1325: 08-Aug-2006
                   1326: -----------
                   1327:   - Some work on PA-4B (Munich32 chip).
                   1328: 
                   1329: 09-Aug-2006
                   1330: -----------
                   1331:   - Continuing on PA-4B (trying to understand TP3420).
                   1332: 
                   1333: 10-Aug-2006
                   1334: -----------
                   1335:   - C7200: Added PA Mgmt IRQ support (required for PA-4B, seen on a real
                   1336:     c7200 with PA-4B offered by Vernon Missouri).
                   1337:   - Added TP3420 definitions.
                   1338: 
                   1339: 15-Aug-2006
                   1340: -----------
                   1341:   - Continuing on PA-4B. Better understanding of the TX ring. 
                   1342:     Fixed interrupt queue management.
                   1343:        
                   1344: 19-Aug-2006
                   1345: -----------
                   1346:   - Added hv_vm.c module to handle generic VM operations.
                   1347:   - Added hv_c3600.c module for the Cisco 3600 platform.
                   1348:   - Fixed a bug in VTTY flushing.
                   1349: 
                   1350: 20-Aug-2006
                   1351: -----------
                   1352:   - Added code to gen_eth module for Cygwin to prevent WinPCAP from giving
                   1353:     back transmitted packets. It requires WinPCAP 0.4-alpha1 or better.
                   1354:     TODO: need to be tested!
                   1355:        
                   1356: 21-Aug-2006
                   1357: -----------
                   1358:   - Fixed C3660 boot. Trying to understand/discover the hardware.
                   1359:     Environmental monitor should be ok.
                   1360: 
                   1361: 24-Aug-2006
                   1362: -----------
                   1363:   - Added NS16552 flush optimization (Peter Ross).
                   1364:   - Fixed missing periodic task removal in NS16552.
                   1365: 
                   1366: 26-Aug-2006
                   1367: -----------
                   1368:   - C3660: * Better understanding of NM presence / EEPROM registers.
                   1369:            * Analyzed registers used when a Net IRQ is triggered.
                   1370: 
                   1371: 28-Aug-2006
                   1372: -----------
                   1373:   - C3660: Network Modules are now working! Remaining stuff: OIR.
                   1374: 
                   1375: 29-Aug-2006
                   1376: -----------
                   1377:   - Added more generic code to handle Cisco EEPROM to change easily
                   1378:     chassis MAC addresses.
                   1379:   - Updated README with C3600 information.
                   1380:   - Updated hypervisor documentation (README.hypervisor).
                   1381:   - Added dated package build to the Makefile (make packdev)
                   1382:   - Checked WinPCAP fix of 20-Aug-2006: working.
                   1383:   - Added the capability for high priority IRQ (like NetIO IRQ) to break
                   1384:     the idle loop. Great latency improvement with NetIO IRQ.
                   1385:   - C3600: the DUART irq is now higly prioritized. It gives better console
                   1386:     reactivity. 
                   1387: 
                   1388: 30-Aug-2006
                   1389: -----------
                   1390:   - Huge performance improvement on dec21140 and am79c971 drivers, by
                   1391:     transmitting up to 16 packets in one TX ring scan pass.
                   1392:   - Added the same to Serial driver (untested).
                   1393:   - Added "unicast limiter" feature to the am79c971 driver, similarly to the
                   1394:     dec21140 driver. Not having this caused the virtual instances to see
                   1395:     unrelated host traffic when using linux_eth/gen_eth NIO and consequently
                   1396:     a bad performance was obtained. Thanks to Greg for noticing that.
                   1397:   - Beginning of rework of PCI subsystem for PCI bridge support.
                   1398:     (Greg noticed that with 12.2T releases, the PCI bus numbering is
                   1399:     different for the C3660).
                   1400:        
                   1401: 31-Aug-2006
                   1402: -----------
                   1403:   - Finished the PCI subsystem rework.
                   1404:   - C7200: Fixed PCI bridge use for midplanes (std: dec21050, vxr: dec21150).
                   1405: 
                   1406: 01-Sep-2006
                   1407: -----------
                   1408:   - Finally fixed the Serial problem on C3620 platform (hack in the driver
                   1409:     to trigger interrupts differently).
                   1410:   - Cleanup for VM PCI bus pool and C7200 "hidden" I/O bridge was missing.
                   1411: 
                   1412: 03-Sep-2006
                   1413: -----------
                   1414:   - Added safety checks to the PCI bus management.
                   1415:   - Added a PLX9060 device (very basic for now).
                   1416:   - Rewritten the PA-POS-OC3 driver to use the new PLX9060 driver.
                   1417:   - Cleanup: removed use of c7200 bay info in drivers (everything uses
                   1418:     PCI for configuration).
                   1419:   - C7200: removed the bay module which contained static definitions of
                   1420:     PCI bus, physical addresses for PA, ... Now everything is handled
                   1421:     dynamically by the PCI subsystem and the remaining drivers (PA-4B,
                   1422:     PA-POS-OC3) have been fixed.
                   1423:   - C3600: removed PCI bus info from the bay module (due to PCI bridge new
                   1424:     code).
                   1425: 
                   1426: 04-Sep-2006
                   1427: -----------
                   1428:   - Fixed some typos in comments.
                   1429:   - Added a standalone utility to extract IOS configuration from an 
                   1430:     NVRAM file.
                   1431:   - Removed pcireg.h (from NetBSD) which was just used for one definition.
                   1432:   - Added a "COPYING" file for the GPLv2 licence.
                   1433: 
                   1434: 05-Sep-2006
                   1435: -----------
                   1436:   - Added basic packet filtering framework, to simulate packet loss or
                   1437:     alteration.
                   1438:   - Hypervisor commands now supports a variable number of parameters.
                   1439:   - bugfix: doing a "sh run" and then pressing "Escape" was causing trouble
                   1440:     to the VTTY (the state machine was in an incorrect state).
                   1441:   
                   1442: 06-Sep-2006
                   1443: -----------
                   1444:   - Removed erroneous special handling of intra-page jumps in delay slots.
                   1445:     (problem with c3640 12.0(7)T IP+ image).
                   1446: 
                   1447: 07-Sep-2006
                   1448: -----------
                   1449:   - C3600: processors ID are now correct.
                   1450:   - Avoid removing the JIT block of the caller with the "cache" instruction.
                   1451:   - Added "hypervisor version" to allow clients (Dynagen) to know the current
                   1452:     version.
                   1453:   - Added missing explanation for "-P <platform>" command line parameter.
                   1454:   - C7200: Fixed incorrect cleanup of IO PCI bridge.
                   1455: 
                   1456: 08-Sep-2006
                   1457: -----------
                   1458:   - Better code for VM error messages.
                   1459:   - Fixed the write attempts to ROM at startup.
                   1460: 
                   1461: 09-Sep-2006
                   1462: -----------
                   1463:   - C3600: added support for io memory size, which prevents Smart Init
                   1464:     from running (hypervisor command: c3600 set_iomem <router> <val>).
                   1465:   - C3600: fixed incorrect handling of commands for this platform, which
                   1466:     caused port 0 to be disabled when manipulating other ports.
                   1467: 
                   1468: 11-Sep-2006
                   1469: -----------
                   1470:   - Fixed loop overflow in idle pc computation.
                   1471:   - Added base64 encoding/decoding module from Yannick Le Teigner.
                   1472:   - Added hypervisor commands "vm push_config" and "vm extract_config"
                   1473:     to manage IOS configurations. Extracting to base64 is ok (verified with
                   1474:     a third party decoder:
                   1475:     http://www.opinionatedgeek.com/dotnet/tools/Base64Decode/Default.aspx )
                   1476:   - C3600: NVRAM checksum is now correctly computed.
                   1477: 
                   1478: 12-Sep-2006
                   1479: -----------
                   1480:   - Following a suggestion of Yannick Le Teigner, applied the optimization
                   1481:     principle to PA-A1 card already used in dec21140, ... Latency is clearly 
                   1482:     better (on my system, this dropped from about 150ms to 50 ms).
                   1483: 
                   1484: 14-Sep-2006
                   1485: -----------
                   1486:   - Incorrect display of device name in PLX9060 driver.
                   1487:   - Added manpages provided by Erik Wenzel ([email protected]). Many thanks
                   1488:     to him for this and for his work on packaging for Debian.
1.1.1.5   root     1489:   - Final 0.2.5 release.
                   1490:   - C7200: Added missing NVRAM checksum.
                   1491: 
                   1492: 15/21-Sep-2006
                   1493: -----------
                   1494:   - Working on NM-16ESW.
                   1495:        
                   1496: 22-Sep-2006
                   1497: -----------
                   1498:   - NM-16ESW: interfaces are now up (handles specifically the appropriate
                   1499:     MII register).
                   1500: 
                   1501: 23/25-Sep-2006
                   1502: --------------
                   1503:   - Still continuing on the NM-16ESW (first packets received/transmitted).
                   1504: 
                   1505: 26-Sep-2006
                   1506: -----------
                   1507:   - NM-16ESW: seems to be working! (although there are still a lot of things
                   1508:     to do).
                   1509: 
                   1510: 28-Sep-2006
                   1511: -----------
                   1512:   - Added a hack to allow Ethernet NM to work correctly in 3620/3640
                   1513:     (seen when directly attached to the real network with very few packets
                   1514:     incoming).
                   1515:   - NM-16ESW: proper support for tx ring scatter/gather support.
                   1516:   - NM-16ESW: fixed a bug in ARL insertion.
                   1517:   - NM-16ESW: send directly BPDU packets to the CPU.
                   1518: 
                   1519: 29-Sep-2006
                   1520: -----------
                   1521:   - NM-16ESW: added support for "trunks" (ie etherchannel).
                   1522:   - Added "Ctrl+p" sequence key to dump Port Adapter / Network Module info
                   1523:     (only NM-16ESW reports something at this time).
                   1524: 
                   1525: 30-Sep-2006
                   1526: -----------
                   1527:   - NM-16ESW: proper management of station movement (etherchannel is handled).
                   1528: 
                   1529: 01-Oct-2006
                   1530: -----------
                   1531:   - NM-16ESW: added register handling.
                   1532: 
                   1533: 02-Oct-2006
                   1534: -----------
                   1535:   - NM-16ESW: playing with the port mirroring feature.
                   1536:        
                   1537: 04-Oct-2006
                   1538: -----------
                   1539:   - Finally understood how to handle link status changes! Now, 
                   1540:     "shut"/"no shut" is working. Better understanding of MII registers
                   1541:     in general.
                   1542: 
                   1543: 05-Oct-2006
                   1544: -----------
                   1545:   - Fixed bug described in BTS entry #65 (in the case where two virtual 
                   1546:     addresses point at the same physical address, the JIT can use
                   1547:     inappropriate block). This was a "silent" bug.
                   1548: 
                   1549: 07-Oct-2006
                   1550: -----------
                   1551:   - Modified the hypervisor parser to allow long lines (to upload IOS configs).
                   1552: 
                   1553: 09-Oct-2006
                   1554: -----------
                   1555:   - NM-16ESW: added ingress and egress port mirroring (todo: BPDU and CDP
                   1556:     packets shouldn't be replicated).
1.1.1.6   root     1557: 
                   1558: 10-Oct-2006
                   1559: -----------
                   1560:   - 0.2.6-RC1 release.
                   1561:   - NM-16ESW: implemented ARL count. Fixed the MAC address table display 
                   1562:     problems.
                   1563: 
                   1564: 11-Oct-2006
                   1565: -----------
                   1566:   - C3600: fixed NVRAM configuration export.
                   1567:   - Merged a patch for Solaris/x86 from Damjan Marion.
                   1568:   - Cleaned the EEPROM stuff to have something more generic.
                   1569:   - NM-16ESW: base MAC address is now automatically generated.
                   1570: 
                   1571: 12-Oct-2006
                   1572: -----------
                   1573:   - NM-16ESW: added support to discard input packets.
                   1574: 
                   1575: 13-Oct-2006
                   1576: -----------
                   1577:   - NM-16ESW: modified the discard support to let BPDU packets arrive to
                   1578:     the CPU.
                   1579:   - Added online setup of idle-pc through the hypervisor command
                   1580:     "vm set_idle_pc_online <vm_name> <cpu_id>".
                   1581:   - Values computed for idle-pc are now stored in the virtual MIPS CPU
                   1582:     and can be known through the hypervisor command 
                   1583:     "vm show_idle_pc_prop <vm_name> <cpu_id>".
                   1584: 
                   1585: 15-Oct-2006
                   1586: -----------
                   1587:   - Added a timer module.
                   1588:   - NM-16ESW: added an ARL ager that removes expired MAC addresses.
                   1589: 
                   1590: 18-Oct-2006
                   1591: -----------
                   1592:   - Added hypervisor commands to tune idle-pc parameters
                   1593:     ("vm set_idle_max" and "vm set_idle_sleep_time").
                   1594:   - Centralized NM/PA EEPROM to have common definitions for platforms
                   1595:     with the same type of network interfaces.
                   1596:   - 0.2.6-RC2 release.
1.1.1.7   root     1597: 
                   1598: 19-Oct-2006
                   1599: -----------
                   1600:   - C2691: added sketelon code.
                   1601:   - C2691: working DUART.
                   1602:   - C2691: added mainboard EEPROM.
                   1603: 
                   1604: 20-Oct-2006
                   1605: -----------
                   1606:   - Bugfix: dec21140 and amd79c97x were incorrectly discarding frames based
                   1607:     on the source address, preventing HSRP/VRRP to work (BTS entry #75).
                   1608:   - C2691: added hypervisor module to handle instances.
                   1609: 
                   1610: 22-Oct-2006
                   1611: -----------
                   1612:   - C2691: trying to understand the network interrupt mechanism.
                   1613: 
                   1614: 23-Oct-2006
                   1615: -----------
                   1616:   - C2691: fixed Galileo interrupt (IRQ 3), allowing packets to be received!
                   1617:   - Added a basic GT96100 system controller (for C2691).
                   1618:   - GT96100: added MII registers.
                   1619:   - Added a basic Flash device to be used as ROM+NVRAM for C2691.
                   1620:   - C2691: NVRAM (simulated from flash) is now ok.
                   1621:   - C2691: Analyzed environmental monitor register. No warning anymore.
                   1622: 
                   1623: 24-Oct-2006
                   1624: -----------
                   1625:   - C2691: NVRAM config export is working, config import requires more work
                   1626:     (since write operations to flash are not immediate).
                   1627:   - Allowed Galileo DMA IRQ to preempt the idle loop.
                   1628:   - Fixed ATA Flash "current of sectors per card" which must be in LSW/MSW
                   1629:     order and not MSW/LSW.
                   1630:   - Added another ATA Flash access method (for c2691).
                   1631:   - C2691: added support for CompactFlash.
                   1632: 
                   1633: 25-Oct-2006
                   1634: -----------
                   1635:   - GT96100: added some definitions for the Ethernet part.
                   1636: 
                   1637: 26-Oct-2006
                   1638: -----------
                   1639:   - Working on TX part for GT96100. Unfortunately, don't know yet how to
                   1640:     signal an interrupt for it on the 2691 platform :(
                   1641: 
                   1642: 27-Oct-2006
                   1643: -----------
                   1644:   - C2691: found how to announce correctly NM presence in slot 1.
                   1645:   - GT96100: finally found how to notify appropriately the network interrupt:
                   1646:     the Serial Cause Register has to be handled.
                   1647:   - C2691: added the glue code to set up GT96100 ethernet ports.
                   1648:   - GT96100: added RX part. Packets are now sucessfully handled.
                   1649:   - C2691: better understanding of network interrupt status registers.
                   1650:   - C2691: added correct flash code detection.
                   1651:   - GT96100: fixed the "PHY reset" problem.
                   1652:   - C2691: added default correct chassis base MAC address.
                   1653: 
                   1654: 28-Oct-2006
                   1655: -----------
                   1656:   - GT96100: added hash function (Mode 0 ok, Mode 1 to fix) for Ethernet
                   1657:     address filtering + appropriate definitions.
                   1658: 
                   1659: 29-Oct-2006
                   1660: -----------
                   1661:   - GT96100: fixed hash mode 1 (not tested).
                   1662:   - GT96100: added address filtering process.
                   1663: 
                   1664: 30-Oct-2006
                   1665: -----------
                   1666:   - GT96100: added minimal MIB counters.
                   1667:   - Implemented LBA mode for PCMCIA ATA disk devices and fixed data access.
                   1668:   - Changed the default idle sleep time from 50ms to 30ms to avoid timer 
                   1669:     IRQ loss and timer drift.
                   1670:   - Added hypervisor command "vm show_timer_drift <vm_instance> <cpu_id>"
                   1671:     to display potential problem with a given idle-pc value.
                   1672:   - C2691: added proper support for IO memory.
                   1673:   - NM-16ESW: generalized code to support multiple platforms.
                   1674:   - C2691: added support for NM-16ESW.
                   1675: 
                   1676: 31-Oct-2006
                   1677: -----------
                   1678:   - C3725: initial support. Hardware very similar to c2691: Cisco rocks!
                   1679:   - C3745: added skeleton.
                   1680:   - C3745: fixed GT96100 address.
                   1681:   - C3745: added PCI bridges.
                   1682:   - C3745: Network Modules are working!
                   1683:   - C3745: CompactFlash working.
                   1684: 
                   1685: 01-Nov-2006
                   1686: -----------
                   1687:   - C3745: finally understood how to handle the system EEPROMs.
                   1688:   - Updated documentation (README).
                   1689:   - GT96100: minor enhancement of interrupt handling.
                   1690: 
                   1691: 02-Nov-2006
                   1692: -----------
                   1693:   - Added support for "ghost" RAM: instances use a RAM file (previously
                   1694:     created) and use copy-on-write on it. It allows to share common memory 
                   1695:     between instances and so less memory is used.
                   1696: 
                   1697: 03-Nov-2006
                   1698: -----------
                   1699:   - Better support for ghost RAM, added hypervisor commands 
                   1700:     "vm set_ghost_status" and "vm set_ghost_file".
                   1701: 
                   1702: 04-Nov-2006
                   1703: -----------
                   1704:   - NM-16ESW: fixed incorrect BPDU handling (which caused to add a 2nd
                   1705:     802.1Q tag to BPDU packets) and now 0100.0ccc.cccd is recognized as
                   1706:     a BPDU MAC address (BTS entry #).
                   1707:   - DEC21140: fixed CSR8 handling (missed frame counter), which returned
                   1708:     an undefined value (BTS entry #81).
                   1709:   - Merged a patch from Rostislav Opocensky who added support for C3600
                   1710:     in nvram_export utility.
                   1711:   - Re-enaebled debugging info for NM-16ESW on 2691/3600/37xx.
                   1712: 
                   1713: 05-Nov-2006
                   1714: -----------
                   1715:   - NM-16ESW: fixed a crash due to incomplete device removal.
                   1716: 
                   1717: 06-Nov-2006
                   1718: -----------
                   1719:   - Validated use of Serial interfaces with 2691/3725/3745.
                   1720:   - Correct config register handling for 3600/2691/3725/3745 platforms
                   1721:     (config register setting was ignored).
                   1722:   - Added detection of empty NVRAM for 2691/3725/3745 to set the ignore config
                   1723:     flag in the config register (to boot faster).
                   1724:   - C3745: Fixed NVRAM properties.
                   1725:   - C7200/C3600: rewrite of configuration push into NVRAM (can now be done 
                   1726:     offline).
                   1727:   - C2691/C3725/C3745: added support for config push into ROM flash
                   1728:     (simulated NVRAM).
                   1729: 
                   1730: 07-Nov-2006
                   1731: -----------
                   1732:   - Modified config export from NVRAM for all platforms (can now be done
                   1733:     offline).
                   1734:   - Better handling of base MAC address (2691/3725/3745 + NM-16ESW).
                   1735: 
                   1736: 08-Nov-2006
                   1737: -----------
                   1738:   - Rework of the MTS subsystem (generalization of MTS64 algorithms to MTS32
                   1739:     which was broken).
                   1740:   - Fast memory operations for 32-bit mode.
                   1741: 
                   1742: 09-Nov-2006
                   1743: -----------
                   1744:   - Rewrite of the MIPS TLB lookup operation.
                   1745: 
                   1746: 10-Nov-2006
                   1747: -----------
                   1748:   - Fixed another bug in TLB lookup.
                   1749:   - Beginning of work for PA-MC-8TE1 support.
                   1750:   - Added hypervisor commands to send messages to instances VTTY.
                   1751:   - Working on PLX PCI9054 for PA-MC-8TE1.
                   1752: 
                   1753: 11-Nov-2006
                   1754: -----------
                   1755:   - Continuing a bit on PA-MC-8TE1.
                   1756:        
                   1757: 14-Nov-2006
                   1758: -----------
                   1759:   - Correct handling of VPN2 mask for TLB lookup.
                   1760:   - bugfix: support of c3745 was missing in the hypervisor.
                   1761:   - Merged a patch from Akim Dreyer for Debian support.
1.1.1.8   root     1762:   - 0.2.6-RC3 release.
                   1763:        
                   1764: 15-Nov-2006
                   1765: -----------
                   1766:   - C2691/C3725: fixed a crash occuring on some IOS images due to incorrect
                   1767:     platform type.
                   1768:   - Modified performance counter to have stats for instructions or blocks
                   1769:     (cannot be used simultaneously).
                   1770:   - "beq" jump code (x86) was incorrectly using non-local jump.
                   1771:   - Bugfix: incorrect number of arguments for hypervisor commands related
                   1772:     to ghost file handling.
                   1773:   - 0.2.6-RC4 release.
                   1774: 
1.1.1.10  root     1775: 17-Nov-2006
1.1.1.9   root     1776: -----------
1.1.1.10  root     1777:   - Major code cleanup to make devices independent from the virtual processors.
                   1778:   - Generic CPU stuff.
                   1779: 
                   1780: 20-Nov-2006
                   1781: -----------
                   1782:   - Merged of patch from Thomas Pani to list VM TCP console ports (required 
1.1.1.9   root     1783:     for gDynagen).
                   1784:   - NM-16ESW: fixed (again) BPDU handling (incorrect VLAN tagging with non
1.1.1.10  root     1785:     trunk ports).
                   1786:   - Very minimal PowerPC definitions. Only non-JIT mode at this time.
                   1787:   - PPC: added "crorc", "cror", "crnor", "crnand", "crandc", "crand".
                   1788:   - PPC: added "and", "andc", "andi", "andis", "creqv", "crxor".
                   1789:   - PPC: added "eqv", "isync", "mfmsr", "mtmsr", "nand", "nor", "or", "orc".
                   1790:   - PPC: added "ori", "oris", "sync", "xor", "xori", "xoris", "mfcr".
                   1791:   - PPC: added "addi", "addis".
                   1792: 
                   1793: 21-Nov-2006
                   1794: -----------
                   1795:   - PPC: added "cmp", "cmpl", "cmpi", "cmpli", "extsb", "extsh".
                   1796:   - PPC: added "add", "add.", "and.", "andc.", "extsb.", "extsh.".
                   1797:   - PPC: added a dummy memory access function (does nothing yet).
                   1798:   - PPC: added "lbz", "lbzu", "lbzux", "lbzx".
                   1799:   - PPC: added "lhz", "lhzu", "lhzux", "lhzx".
                   1800:   - PPC: added "lwz", "lwzu", "lwzux", "lwzx".
                   1801:   - PPC: added "stb", "stbu", "stbux", "stbx".
                   1802:   - PPC: added "sth", "sthu", "sthux", "sthx".
                   1803:   - PPC: added "stw", "stwu", "stwux", "stwx".
                   1804:   - PPC: added "xor.", "b", "ba", "bl", "bla".
                   1805:   - bugfix: hypervisor commands specific to CPU crashed if the VM was not
                   1806:     started (noticed by Greg).
                   1807: 
                   1808: 22-Nov-2006
                   1809: -----------
                   1810:   - PPC: added "addo", "addo.", "addc", "addc.", "addco", "addco."
                   1811:   - PPC: added "addic", "addic.", "adde", "adde.", "addeo", "addeo."
                   1812:   - PPC: added "neg", "neg.", "nego", "nego.", "nand.", "nor.", "or.", "orc."
                   1813:   - PPC: added "slw", "slw.", "srw", "srw."
                   1814: 
                   1815: 23-Nov-2006
                   1816: -----------
                   1817:   - PPC: added "rlwimi", "rlwimi.", "rlwinm", "rlwinm.", "rlwnm", "rlwnm."
                   1818: 
                   1819: 24-Nov-2006
                   1820: -----------
                   1821:   - PPC: added "mulhw", "mulhw.", "mulhwu", "mulhwu.", "mulli".
                   1822:   - PPC: added "mullw", "mullw.", "mullwo", "mullwo."
                   1823:   - PPC: added "subf", "subf.", "subfo", "subfo."
                   1824:   - PPC: added "bc", "bca", "bcl", "bcla", "bclr", "bclrl".
                   1825:   - PPC: added minimal memory operation glue code.
                   1826:        
                   1827: 25-Nov-2006
                   1828: -----------
                   1829:   - PPC: added dump functions for MMU registers.
                   1830:   - PPC: added support for BAT registers.
                   1831:        
                   1832: 26-Nov-2006
                   1833: -----------
                   1834:   - PPC: fixed branch offset computation.
                   1835:   - PPC: added a dummy virtual machines for tests.
                   1836:   - PPC: fixed bclrx opcodes.
                   1837:   - PPC: added "mflr", "mtlr".
                   1838: 
                   1839: 27-Nov-2006
                   1840: -----------
                   1841:   - PPC: fixes in comparison functions.
                   1842:   - PPC: added "subfc", "subfc.", "subfco", "subfco."
                   1843: 
                   1844: 28-Nov-2006
                   1845: -----------
                   1846:   - PPC: added "subfic", "mfctr".
                   1847:   - PPC: fixed a lot of bugs.
                   1848: 
                   1849: 29-Nov-2006
                   1850: -----------
                   1851:   - PPC: added "rfi", "lha", "lhau", "lhaux", "lhax", "addze", "addme".
                   1852:   - PPC: fixed "mtcrf".
                   1853:        
                   1854: 30-Nov-2006
                   1855: -----------
                   1856:   - Added IRQ routing vectors for virtual machines.
                   1857: 
                   1858: 01-Dec-2006
                   1859: -----------
                   1860:   - Playing with NPE-G2, just for fun.
                   1861:        
                   1862: 02-Dec-2006
                   1863: -----------
                   1864:   - NPE-G2: environmental monitor is now working!
                   1865:        
                   1866: 03-Dec-2006
                   1867: -----------
                   1868:   - PPC: added an empty MV64460 controller (need the datasheet).
                   1869:   - PPC: added "lmw" instruction, fixed "stmw".
                   1870:   - PPC: added "cntlzw".
                   1871: 
                   1872: 05-Dec-2006
                   1873: -----------
                   1874:   - NPE-G2: analyzed midplane data: this is similar to other NPE.
                   1875:   - Added a basic PLX6520CB PCI bridge.
                   1876:   - NPE-G2: added appropriate PCI bridges and PCI busses for Port Adapters.
                   1877: 
                   1878: 06-Dec-2006
                   1879: -----------
                   1880:   - NPE-G2: added PCI I/O space.
                   1881:   - NPE-G2: added CLPD6729, it is now possible to use PCMCIA ATA disks.
                   1882: 
                   1883: 08-Dec-2006
                   1884: -----------
                   1885:   - MV64460: added ugly experimental SDMA support to have a console for the
                   1886:     NPE-G2 (using the GT96100A datasheet). This code must be rewritten.
                   1887:   - MV64460/NPE-G2: playing with the various IRQs.
                   1888:        
                   1889: 09-Dec-2006
                   1890: -----------
                   1891:   - PPC: added idle-pc support.
                   1892: 
                   1893: 10-Dec-2006
                   1894: -----------
                   1895:   - PPC: added virtual breakpoint support.
                   1896: 
                   1897: 15-Dec-2006
                   1898: -----------
                   1899:   - PPC: added functions to manually set up page tables.
                   1900:   - MV64460: added more interrupt definitions (with help of GT96100A manual).
                   1901: 
                   1902: 19-Dec-2006
                   1903: -----------
                   1904:   - MV64460: fixed interrupt loss problem.
                   1905:        
                   1906: 20-Dec-2006
                   1907: -----------
                   1908:   - Basic port of the microcode for the PowerPC platforms. IOS now starts
                   1909:     normally (like the MIPS64 platforms).
                   1910: 
                   1911: 21-Dec-2006
                   1912: -----------
                   1913:   - NPE-G2: found OIR IRQ.
                   1914:   - MV64460: added more definitions (for SDMA).
                   1915:   - Cleanup of MIPS64 JIT code (better naming).
                   1916: 
                   1917: 22-Dec-2006
                   1918: -----------
                   1919:   - PPC32: added the minimal JIT core infrastructure.
                   1920:   - PPC32-JIT: added unknown opcode handling.
                   1921:   - PPC32-JIT: added some instructions.
                   1922: 
                   1923: 23-24-Dec-2006
                   1924: --------------
                   1925:   - PPC32-JIT: added more instructions.
                   1926:        
                   1927: 26-Dec-2006
                   1928: -----------
                   1929:   - PPC32-JIT: continuing...
                   1930:        
                   1931: 27-Dec-2006
                   1932: -----------
                   1933:   - PPC32-JIT: added fast memory operations.
                   1934: 
                   1935: 28-Dec-2006
                   1936: -----------
                   1937:   - Added PPC32 nojit support.
                   1938:   - PPC32: better checking for IRQs.
                   1939: 
                   1940: 29-Dec-2006
                   1941: -----------
                   1942:   - PPC32-JIT: added "amd64" support.
                   1943:   - PPC32: added "lwbrx" and "stwbrx" instructions.
                   1944: 
                   1945: 30-Dec-2006
                   1946: -----------
                   1947:   - PPC32: added "tw"/"twi" instructions.
                   1948:   - PPC32: added TLB support for PowerPC 405.
                   1949:   - PPC32: added "tlbre", "tlbwe", "iccci", "dccci", "mfdcr", "mtdcr" for
                   1950:     PowerPC 405.
                   1951:   - Fixed a bug with ILT tables (incorrect count - last entry was missing).
                   1952:        
                   1953: 31-Dec-2006
                   1954: -----------
                   1955:   - PPC32: added "dcbst" instruction.
                   1956: 
                   1957: 05-Jan-2007
                   1958: -----------
                   1959:   - NPE-G2: correct handling of DUART interrupt with I/O card.
                   1960: 
                   1961: 07-Jan-2007
                   1962: -----------
                   1963:   - NPE-G2: correct console selection (NPE or I/O board) depending on slot 0.
                   1964:   - PPC32: fixup for decrementer interrupt.
                   1965:   - Generic CPU MTS rebuild (mips64/ppc32).
                   1966:   - Split of memory.c / mips64_mem.c. memory.c will only contain generic 
                   1967:     functions independent of the CPU model.
                   1968:   - Memlogger is now independent of CPU type (untested).
                   1969: 
                   1970: 08-Jan-2007
                   1971: -----------
                   1972:   - Rewrite of the MTS subsystem to have less overhead with inlined 
                   1973:     operations -> better performance.
                   1974:        
                   1975: 09-Jan-2007
                   1976: -----------
                   1977:   - Finished the MTS rewrite (amd64, statistics).
                   1978:   - NPE-G2: added a 64 Mb bootflash (needs to be tested).
                   1979: 
                   1980: 10-Jan-2007
                   1981: -----------
                   1982:   - PPC32: added clean loading of BAT registers.
                   1983:   - Fixed device remapping.
                   1984: 
                   1985: 12-Jan-2007
                   1986: -----------
                   1987:   - PPC32: added "lswi", "stswi", "lswx", "stswx".
                   1988: 
                   1989: 13-Jan-2007
                   1990: -----------
                   1991:   - PPC32: fixed carry evaluation for "srawi" instruction.
                   1992: 
                   1993: 15-Jan-2007
                   1994: -----------
                   1995:   - Playing with c2600 to see if support can be added.
                   1996: 
                   1997: 17-Jan-2007
                   1998: -----------
                   1999:   - C2600: adding skeleton code, added NM selection. However, unable
                   2000:     to get a positive result for "sh diag 0".
                   2001:        
                   2002: 19-Jan-2007
                   2003: -----------
                   2004:   - Experimenting with sparse memory to reduce virtual memory use in
                   2005:     hypervisor mode.
                   2006:        
                   2007: 20-Jan-2007
                   2008: -----------
                   2009:   - Continuing on sparse memory work.
                   2010:        
                   2011: 21-Jan-2007
                   2012: -----------
                   2013:   - C2600: added mainboard basic support.
                   2014:   - MPC860: added a basic IDMA support.
                   2015:   - C2600: first packet exchange :)
                   2016: 
                   2017: 22-Jan-2007
                   2018: -----------
                   2019:   - C2600: added basic mainboard drivers for integrated Ethernet ports.
                   2020:   - C2600: added IRQ preemption for network interrupt and DUART.
                   2021:   - Fixed use of sparse memory with ghost files.
                   2022:   - Added a command line option to test sparse memory ("--sparse-mem").
                   2023:   - Added locking for shared ghost images.
                   2024: 
                   2025: 24-Jan-2007
                   2026: -----------
                   2027:   - Validation of dynagen 0.8.3 with sparse memory and ghost image enabled.
                   2028:   - MIPS64: fixed a bug of the JIT which incorrectly handled jump instructions 
                   2029:     with a delay slot in another page.
                   2030: 
                   2031: 25-Jan-2007
                   2032: -----------
                   2033:   - C2600: added NVRAM configuration import/export and appropriate config
                   2034:     register setting if NVRAM is empty at startup.
                   2035:   - C2600: added a basic bootflash support.
                   2036: 
                   2037: 26-Jan-2007
                   2038: -----------
                   2039:   - C2600: io-mem size support.
                   2040: 
                   2041: 31-Jan-2007
                   2042: -----------
                   2043:   - i8254x: added skeleton code (for PA-2FE-TX).
                   2044: 
                   2045: 01-Feb-2007
                   2046: -----------
                   2047:   - i8254x: added MDIO code.
                   2048: 
                   2049: 04-Feb-2006
                   2050: -----------
                   2051:   - C2600: added "set_chassis" hypervisor command.
                   2052:   - C2600: possible chassis/mainboards now displayed at command line help.
                   2053:        
                   2054: 05-Feb-2007
                   2055: -----------
                   2056:   - Fixed a bug when handling packet discard flag on NM-16ESW (seems to be
                   2057:     only valid for native packets).
                   2058: 
                   2059: 06-Feb-2007
                   2060: -----------
                   2061:   - Working on i8254x TX part. Problem with TX ring wrapping.
                   2062:        
                   2063: 08-Feb-2007
                   2064: -----------
                   2065:   - Added packet capture to NIO filters, with PCAP output (Greg Anuzelli).
                   2066:   - i82543: RX and TX parts are now basically working (of course, no IP/TCP
                   2067:     checksum offloading, but this doesn't seem to be used).
                   2068: 
                   2069: 09-Feb-2007
                   2070: -----------
                   2071:   - C7200: added C7200-IO-2FE card, based on Intel i82543 chips.
                   2072:   - C7200: added PA-GE interface, but TX part is broken.
                   2073:   - i8254x: TDH/TDT and RDH/RDT registers are located at a different address.
                   2074:     PA-GE is now working.
                   2075: 
                   2076: 12-Feb-2007
                   2077: -----------
                   2078:   - i8254x: delayed RX IRQ.
                   2079:   - MIPS64: fixed (again) TLB lookup for entries in ksseg and kseg3.
                   2080:   - Added a "byte-swapping" device.
                   2081:        
                   2082: 13-Feb-2007
                   2083: -----------
                   2084:   - i8254x: added byte-swapped data transfer.
                   2085:   - PA-POS-OC3: applied byte-swapped data transfer for TX ring (RX ring
                   2086:     doesn't seem to need this - strange).
                   2087: 
                   2088: 14-Feb-2007
                   2089: -----------
                   2090:   - C7200: added C7200-IO-GE+E, based on Intel i82543 chips.
1.1.1.11  root     2091: 
                   2092: 16-Feb-2007
                   2093: -----------
                   2094:   - MIPS64: fixed a problem of jump in delay slots (occuring with a "forward"
                   2095:     jump). This caused a malfunction for C7200-IO-2FE and C7200-IO-GE-E cards.
                   2096:   - C7200: adjusted the byte-swapped zone for NPE-300 io-memory.
                   2097: 
                   2098: 18-Feb-2007
                   2099: -----------
                   2100:   - PPC32: Remove JIT compiled pages when a write occurs (required for c2600).
                   2101: 
                   2102: 19-Feb-2007
                   2103: -----------
                   2104:   - PPC32: Optimization for writes on JIT page at address 0.
                   2105:        
                   2106: 20-Feb-2007
                   2107: -----------
                   2108:   - Working on MSFC1 - just for fun (this will probably never route any 
                   2109:     packet).
                   2110:   - Fixed DEC21140 TX ring interrupt generation.
                   2111:        
                   2112: 21-Feb-2007
                   2113: -----------
                   2114:   - Continuing on MSFC1 (added EEPROM, SRAM, ...)
                   2115:   - Added NMC93C56 EEPROM support.
                   2116: 
                   2117: 23-Feb-2007
                   2118: -----------
                   2119:   - MPC860: fixed a bug in DMA handling which caused incorrect writes out
                   2120:     of DPRAM memory.
                   2121:   - PPC32: added missing breakpoint function for JIT.
                   2122:   - C7200: rework on network interrupts, for clean handling per slot/port.
                   2123: 
                   2124: 24-Feb-2007
                   2125: -----------
                   2126:   - C7200: Net IRQs are now correctly dispatched. Need to fix all drivers
                   2127:     to generate IRQs correctly.
                   2128:   - DEC21140: proper management of CSR5 register for new interrupt handling.
                   2129:   - i8254x: converted to new interrupt handling.
                   2130:   - Am79c971: fixed interrupt management + a bug with IRQ mask.
                   2131:   - PA-A1/PA-POS-OC3/Mueslix: fixed interrupt management.
                   2132: 
                   2133: 25-Feb-2007
                   2134: -----------
                   2135:   - C2691: updated interrupt infrastructure.
                   2136:   - NM-16ESW: fixed interrupt handling.
                   2137: 
                   2138: 26-Feb-2007
                   2139: -----------
                   2140:   - C3725/C3745: updated interrupt infrastructure.
                   2141: 
                   2142: 27-Feb-2007
                   2143: -----------
                   2144:   - C2600: updated interrupt infrastructure.
                   2145: 
                   2146: 02-Mar-2007
                   2147: -----------
                   2148:   - Added a cache for the instruction lookup tables (ILT), allowing a faster
                   2149:     start.
                   2150: 
                   2151: 03-Mar-2007
                   2152: -----------
                   2153:   - Fixed instruction tables (problem seen on amd64 platforms).
                   2154: 
                   2155: 07-Mar-2007
                   2156: -----------
                   2157:   - MIPS64/PPC32: various code cleanups in JIT code.
                   2158:   - MIPS64: replace the JIT block lookup algorithm based on physical
                   2159:     pages by s-boxes (x86 only).
                   2160: 
                   2161: 08-Mar-2007
                   2162: -----------
                   2163:   - PPC32: JIT block lookup optimization (x86 only).
                   2164: 
                   2165: 09-Mar-2007
                   2166: -----------
                   2167:   - MIPS64/PPC32: JIT block lookup optimization (amd64).
                   2168: 
                   2169: 12-Mar-2007
                   2170: -----------
                   2171:   - PPC32: fixed invalid hash index in JIT block invalidation (thanks to Greg).
                   2172:        
                   2173: 13-Mar-2007
                   2174: -----------
                   2175:   - Updated the Mueslix driver and fixed it for packets > 128 bytes
                   2176:     (IRQ clearing delay required because of the new interrupt system).
                   2177:   - Allowed MTU up to 18000 bytes on the Mueslix driver. This required an
                   2178:     update of the NIO core.
                   2179:   - Full dump of the idle-pc values when no "good" value can be determined.
                   2180: 
                   2181: 25-Mar-2007
                   2182: -----------
                   2183:   - Store the idle-pc values in the CPU structure when no "good" value is
                   2184:     available, so they are readable/usable by dynagen.
                   2185:   - PA-POS-OC3: fixed memory copy which caused invalid frames to be sent.
                   2186: 
                   2187: 27-Mar-2007
                   2188: -----------
                   2189:   - Added a device access counter for each CPU for diagnostics purposes.
                   2190: 
                   2191: 29-Mar-2007
                   2192: -----------
                   2193:   - PPC32: optimizations for eflags->cr computing.
                   2194: 
                   2195: 30-Mar-2007
                   2196: -----------
                   2197:   - PPC32: optimizations in CR handling (split in 8 fields).
                   2198: 
                   2199: 31-Mar-2007
                   2200: -----------
                   2201:   - PPC32: added CR optimizations to amd64 backend.
                   2202: 
                   2203: 02-Apr-2007
                   2204: -----------
                   2205:   - Fixed "nojit" build (reported by Philipp Brenner, BTS entry #156).
                   2206:   - AMD Am79c970 FastEthernet interfaces now announce 100 Mb/s Full duplex.
                   2207: 
                   2208: 04-Apr-2007
                   2209: -----------
                   2210:   - Fixed build (NetIO filters) when PCAP is lacking.
                   2211: 
                   2212: 09-Apr-2007
                   2213: -----------
                   2214:   - Added NM-1A-OC3MM EEPROM definition for future work.
                   2215:   - NM-16ESW: filter CDP specifically to not propagate frames to all ports.
                   2216: 
                   2217: 12-Apr-2007
                   2218: -----------
                   2219:   - Added an hypervisor command to disable direct jumps between JIT blocks
                   2220:     (vm set_blk_direct_jump <vm_name> <0|1>).
1.1.1.12  root     2221: 
                   2222: 15-Apr-2007 => 22-Apr-2007
                   2223: ===========================
                   2224:   - PPC32: rewrite of JIT with peephole and CR flags optimizations.
                   2225:        
                   2226: 23-Apr-2007
                   2227: -----------
                   2228:   - PPC32: converted amd64 JIT to new system.
                   2229:        
                   2230: 24-Apr-2007
                   2231: -----------
                   2232:   - MIPS64: fixed a bug in cache instruction preventing compressed IOS images
                   2233:     to boot.
                   2234:   - PPC32: same as above for ICBI instruction.
                   2235:   - PPC32: fixed ADDZE instruction.
                   2236: 
                   2237: 25-Apr-2007
                   2238: -----------
                   2239:   - C3725: fixed interrupt problems with slot 2 (bad shift - only 4 irq
                   2240:     lines per port).
1.1.1.13  root     2241: 
                   2242: 28-Apr-2007
                   2243: -----------
                   2244:   - Changed instruction counters to 32-bit type, to get more accurate
                   2245:     results.
                   2246: 
                   2247: 29-Apr-2007
                   2248: -----------
                   2249:   - Experimenting with a per-register memory translation cache.
                   2250: 
                   2251: 30-Apr-2007
                   2252: -----------
                   2253:   - C2600: playing with MPC860 SPI to access WIC eeproms (slot 0 only).
                   2254: 
                   2255: 01-May-2007
                   2256: -----------
                   2257:   - MPC860: continuing on SPI.
                   2258:   - Rewriting/Refactoring code to handle network interfaces (required for WIC
                   2259:     support).
                   2260: 
                   2261: 02-May-2007
                   2262: -----------
                   2263:   - Continuing rework of network interfaces.
                   2264: 
                   2265: 03-May-2007
                   2266: -----------
                   2267:   - Added slot handling hypervisor commands to VM module.
                   2268:   - Fixed some bugs/lacking checks in network card module.
                   2269:   - C2600: added WIC EEPROM read through MPC860 SPI code.
                   2270:   - C2600: beginning of work for basic SCC implementation.
                   2271:        
                   2272: 04-May-2007
                   2273: -----------
                   2274:   - C2600: continuing on SCC.
                   2275:   - C2600: WIC-1T is now working!
                   2276:   - C2600: added WIC-2T (async mode is not supported).
                   2277:   - C1700: introduction of this platform (took c2600 as base model).
                   2278:        
                   2279: 05-May-2007
                   2280: -----------
                   2281:   - MPC860: added SPI relocation support (required for c1700).
                   2282:   - C1700: added NVRAM.
                   2283:   - C1700: added WIC detection / correct EEPROM support.
                   2284:   - MPC860: beginning of work on Fast Ethernet Controller.
1.1.1.12  root     2285:        
1.1.1.13  root     2286: 07-May-2007
                   2287: -----------
                   2288:   - MPC860: Fast Ethernet Controller basically working (MII registers 
                   2289:     required).
                   2290:   - MPC860: better handling of interrupt levels.
                   2291:   - C1700: added WIC support (WIC-1T/WIC-2T).
                   2292: 
                   2293: 14/15-May-2007
                   2294: --------------
                   2295:   - Flash code rework (required for c1700) to have something more generic.
                   2296:        
                   2297: 16-May-2007
                   2298: -----------
                   2299:   - New flash code re-enabled for all routers requiring it (NPE-G2 bootflash
                   2300:     is broken however).
                   2301:   - C1700: added WIC-1ENET code base with EEPROM MAC address programming.
                   2302: 
                   2303: 18-May-2007
                   2304: -----------
                   2305:   - Memory exceptions are now handled through setjmp/longjmp, avoiding error
                   2306:     checks in memory access functions.
                   2307: 
                   2308: 19-May-2007
                   2309: -----------
                   2310:   - C2600: fixed PCI handling which prevented i82559 device to work.
                   2311:     In fact, the PCI bridge is in a Xilinx device, and the output of 
                   2312:     "sh pci hardware" was very different from a real router.
                   2313:   - i8255x (eepro100): added basic code (no RX/TX, only MII working).
                   2314: 
                   2315: 20-May-2007
                   2316: -----------
                   2317:   - Continuing on i8255x.
                   2318: 
                   2319: 21-May-2007
                   2320: -----------
                   2321:   - i8255x: Intel doesn't provide enough info in its documentation for
                   2322:     the RX flexible mode...
                   2323: 
                   2324: 22-May-2007
                   2325: -----------
                   2326:   - i8255x: RX flexible mode works similarly to the 82596CA chipset.
                   2327:     Packet TX and RX seems ok.
                   2328: 
1.1.1.12  root     2329: 23-May-2007
                   2330: -----------
1.1.1.13  root     2331:   - C2691/C3725/C3745: fixed GT96100 binding to slot 0.
                   2332:   - GT96100/ETH: fixed interrupt handling for TX packets (the interrupt was 
1.1.1.12  root     2333:     incorrectly disabled when no packet was available on a ring, causing
                   2334:     packet loss when the two ports were enabled) - BTS entry #171.
1.1.1.13  root     2335: 
                   2336: 25-May-2007
                   2337: -----------
                   2338:   - C3660: correct support of mainboard FastEthernet ports with the new
                   2339:     card subsystem.
                   2340:   - C7200: fixed I/O card definition with new card subsystem.
                   2341:   - Added compatibility mode with old version for slot binding in the
                   2342:     command line.
                   2343: 
                   2344: 01-Jun-2007
                   2345: -----------
                   2346:   - Heavily fixed/tested the Serial drivers to correctly transmit/receive
                   2347:     frames. Now the CRC is not anymore transmitted and the correct size is
                   2348:     set for RX rings (TODO: crc-32 for Mueslix and PA-POS-OC3).
                   2349: 
                   2350: 03-Jun-2007
                   2351: -----------
                   2352:   - Fixed incorrect free in deletion of frame-relay switch VC.
                   2353: 
                   2354: 04-Jun-2007
                   2355: -----------
                   2356:   - PA-POS-OC3/Mueslix: added correct handling of crc-16/crc-32.
                   2357: 
                   2358: 10-Jun-2007
                   2359: -----------
                   2360:   - MIPS64: correct handling of stack for MacOS X (alignment).
                   2361:   - MSFC1: cleaned up module to use the new card infrastructure.
                   2362:   - Frame-Relay switch: removed "trailing" handling which was in fact
                   2363:     only the CRC + final byte. 
                   2364:   
                   2365: 09-Jul-2007
                   2366: -----------
                   2367:   - Fixed PA-FE-TX initialization (EEPROM setting lacking).
                   2368: 
                   2369: 11-Jul-2007
                   2370: -----------
                   2371:   - PPC32-JIT: fixed stack alignment for MacOSX/Darwin.
                   2372:   - PPC32-JIT: fixed perf counter and breakpoints.
                   2373: 
                   2374: 13-Jul-2007
                   2375: -----------
                   2376:   - Integrated patches from FreeBSD (Pavel I Volkov), excepted for the vtty
                   2377:     part.
                   2378: 
                   2379: 14-17-Jul-2007
                   2380: --------------
                   2381:   - Rework of VM infrastructure.
                   2382: 
                   2383: 17-Jul-2007
                   2384: -----------
                   2385:   - Added basic plugin subsystem.
                   2386:   - CPU: added custom handler support for undefined memory accesses.
                   2387: 
                   2388: 21-22-Jul-2007
                   2389: --------------
                   2390:   - GT96100: working on SDMA and MPSC.
                   2391:        
                   2392: 23-Jul-2007
                   2393: -----------
                   2394:   - C3745: finally understood how to handle WIC EEPROMs.
                   2395: 
                   2396: 24-Jul-2007
                   2397: -----------
                   2398:   - C3745: added support of WIC-1T & WIC-2T.
                   2399:   - GT96100: fixed SDMA handling.
                   2400:        
                   2401: 25-Jul-2007
                   2402: -----------
                   2403:   - C2691/C3725: added WIC-1T and WIC-2T similarly to C3745.
                   2404:   - C1700: fixed mainboard definitions, added proper support of C1710
                   2405:     (no WIC port, Ethernet port connected on MPC860 SCC1).
                   2406:   - C1700: added 1751 and 1760 definitions.
                   2407: 
                   2408: 29-Jul-2007
                   2409: -----------
                   2410:   - MPC860: fixed MII registers for 1710, 1721 and 1760.
                   2411: 
                   2412: 01-Aug-2007
                   2413: -----------
                   2414:   - C2600/C2691/C3725/C3745: Added NM-CIDS/NM-NAM which can be connected
                   2415:     to a PC emulator.
                   2416:   - C2600: added a check for NM-CIDS/NM-NAM which require XM models.
                   2417: 
                   2418: 18-Aug-2007
                   2419: -----------
                   2420:   - Added WIC address space definitions for platforms that support them.
                   2421: 
                   2422: 19-Aug-2007
                   2423: -----------
                   2424:   - Added ISL support for am79c970 based cards (NM-1FE-TX and others).
                   2425: 
                   2426: 27-Aug-2007
                   2427: -----------
                   2428:   - GT96100: missing check for NULL pointer in set_nio/unset_nio.
                   2429:   - MPC860: same bugfix (SCC and FEC).
                   2430: 
                   2431: 31-Aug-2007
                   2432: -----------
                   2433:   - MIPS/PPC: modified device memory access to allow devices not at a 4k
                   2434:     page boundary (like WICs on 2600). 
                   2435:   - Added fake WIC serial drivers, just to catch the memory accesses.
                   2436: 
                   2437: 06-Sep-2007
                   2438: -----------
                   2439:   - PPC32: Fixed BCTR instruction on amd64 jit.
1.1.1.14! root     2440: 
        !          2441: 08-Sep-2007
        !          2442: -----------
        !          2443:   - Added an object store (through hypervisor) for Dynagen.
        !          2444:        
        !          2445: 11-Sep-2007
        !          2446: -----------
        !          2447:   - Proper cleanup of gt_data/mpc_data fields for MPC860 and GT96100 based
        !          2448:     platforms (start/stop/exit/crash symptom with Dynagen).
        !          2449: 
        !          2450: 12-Sep-2007
        !          2451: -----------
        !          2452:   - Fixed udp_recv simple program which was broken.
        !          2453:   - Added "delete_all" command for hypervisor object store.
        !          2454:   - Added appropriate code for serial WIC drivers on 1700.
        !          2455: 
        !          2456: 14-Sep-2007
        !          2457: -----------
        !          2458:   - Added TCP keepalives on VTTY connections ([email protected])
        !          2459:   - Fixed Flash code.
        !          2460: 
        !          2461: 18-Sep-2007
        !          2462: -----------
        !          2463:   - Added a virtual ATM SAR (segmentation and reassembly) engine.
        !          2464:   - Added a virtual ATM bridge device (RFC1483).
        !          2465: 
        !          2466: 21-Sep-2007
        !          2467: -----------
        !          2468:   - GT96100: fixed CRC handling in MPSC HDLC channels (2 bytes, not 4!)
        !          2469: 
        !          2470: 30-Sep-2007
        !          2471: -----------
        !          2472:   - PPC32-JIT: fixed CR signed evaluation in case of overflow.
        !          2473: 
        !          2474: 04-Oct-2007
        !          2475: -----------
        !          2476:   - Added ISL support for integrated ports on 2691/3725/3745.
        !          2477:        
        !          2478: 07-Oct-2007
        !          2479: -----------
        !          2480:   - Fixed non-JIT build for PPC32.
        !          2481: 
        !          2482: 08-Oct-2007
        !          2483: -----------
        !          2484:   - MV64460: rewrite of SDMA code to follow GT96100 model.
        !          2485: 
        !          2486: 09-Oct-2007
        !          2487: -----------
        !          2488:   - MV64460: added MPSC registers (as for GT96100).
        !          2489: 
        !          2490: 10-Oct-2007
        !          2491: -----------
        !          2492:   - MV64460: added SRAM.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.