1/*
2 * Cisco router simulation platform.
3 */
4
515-Aug-2005, the project is starting.
6
718-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
1522-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
2123-Aug-2005
22-----------
23  - Fixed slti, sltiu, slt instructions.
24  - Fixed memory endianness.
25  - Fixed host memory addressing (bad haddr computation).
26
2724-Aug-2005
28-----------
29  - Added a generic memory address lookup function.
30  - Added a minimal ELF loader.
31
3228-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
4229-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
5530-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
6831-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
7901-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
8802-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
9903-Sep-2005
100-----------
101  - Beginning of work on IRQs.
102
10304-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
11205-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
12506-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
13208-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
14018-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
15119-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
15920-Sep-2005
160-----------
161  - Included amd64-codegen.h with a (near empty) translator.
162  - Some code factorization.
163
16421-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
17323-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
18024-Sep-2005
181-----------
182  - Added a symbol table loader.
183
18426-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
19007-Oct-2005
191-----------
192  - Continued work on SMP support.
193
19408-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
20010-Oct-2005
201-----------
202  - A lot of work on amd64 jit compiler.
203  - The memory management should be 64-bit compliant now.
204
20517-Oct-2005
206-----------
207  - Fixed a bug in SRA instruction in amd64 jit code. Dynamips is now working
208    on amd64!
209
21026-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
21928-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
22531-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
23001-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
24002-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
25303-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
26208-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
26913-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
28023-Nov-2005
281-----------
282  - The PA-A1 ATM stuff is working!!!
283
28424-Nov-2005
285-----------
286  - Fixed a bug in the PA-A1 driver in TX buffer chaining.
287
28825-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
29429-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
30030-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
30601-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
31202-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
31805-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
32306-Dec-2005
324-----------
325  - Modified the NVRAM handling to allow calendar emulation ("sh calendar" is
326    now working).
327
32812-Dec-2005
329-----------
330  - Added support for the NPE-400.
331  - Playing with the PA-POS-2OC3 (called "Charlotte" by Cisco).
332
33315-Dec-2005
334-----------
335  - Added teq/teqi instructions to the x86_64 jit.
336
33720-Dec-2005
338-----------
339  - Added a Virtual ATM switch fabric to emulate an ATM backbone.
340
34122-Dec-2005
342-----------
343  - Final release for 0.2.2 train (0.2.2i).
344
34523-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
35224-Dec-2005
353-----------
354  - Added beginning of support for NPE-300 (endianness problems with PCI
355    controllers ?)
356
35728-Dec-2005
358-----------
359  - Fixed the endianness problem with the NPE-300.
360  - Added NPE300-IO-FE.
361
36231-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
37003-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
38004-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
38805-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
39606-Jan-2006
397-----------
398  - Added block timestamping, to evaluate use of JIT blocks and eventually
399    enhance algorithm of block classifying.
400  - Added a flag to the virtual devices to prevent use of MMAPed zones
401    by MTS (used by NVRAM driver).
402  - Added functions to extract IOS configuration from NVRAM.
403    Pressing "Ctrl-] + c" nows write configuration to disk at any time.
404
40508-Jan-2006
406-----------
407  - Added support for PEM (NPE-B) EEPROM. It will probably allow support
408    of NPE-175/NPE-225.
409
41009-Jan-2006
411-----------
412  - Added support for NPE-175/NPE-225 and added NPEB-IO-FE.
413
41410-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
42011-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
42912-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
43613-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
44315-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
45616-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
46317-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
46924-Jan-2006
470-----------
471  - Added support for DMA channels on Galileo GT64k controllers since it seems
472    that they may be used by IOS (NPE-400 for sure, other NPE?).
473
47425-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
48026-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
48827-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
49528-Jan-2006
496-----------
497  - Added parser infrastructure.
498
49929-Jan-2006
500-----------
501  - Added a virtual bridge system.
502  - Release 0.2.3b
503
50431-Jan-2006
505-----------
506  - Fixed a stupid bug in DMA handling, which in certain conditions can
507    cause an infinite loop.
508
50901-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
519
52006-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
52607-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
54108-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
54709-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
55410-Feb-2006
555-----------
556  - Played a little with the PA-POS-OC3, without success.
557
55814-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.
565
56615-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
57417-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
58018-Feb-2006
581-----------
582  - Began work on advanced configuration parsing (instances).
583
58419-Feb-2006
585-----------
586  - Is the count/compare mechanism pertinent ?
587
58823-Feb-2006
589-----------
590  - Continued work on advanced config parsing (instances,NIO).
591  - Added registry infrastructure.
592  - Fixed some mistakes in documentation.
593
59428-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
60302-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
60904-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
61506-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
62108-Mar-2006
622-----------
623  - Removed the configuration file parsing, in favor of a remote control
624    system for use with the dynagen project.
625
62609-Mar-2006
627-----------
628  - Added basic hypervisor infrastructure.
629  - Added basic NIO code to the hypervisor commands.
630
63110-Mar-2006
632-----------
633  - Added the hypervisor NIO code.
634  - Added Frame-Relay and ATM switches to the hypervisor commands.
635
63611-Mar-2006
637-----------
638  - Played (successfully) with OIR (Online Insertion and Removal). OIR
639    will require device deletion...
640
64112-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
64715-Mar-2006
648-----------
649  - A lot of work on C3600 integration (although it is not functional).
650  - Added a basic ns16552 driver.
651
65217-Mar-2006
653-----------
654  - Added some hypervisor commands for PA setup and OIR.
655
65620-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
66124-Mar-2006
662-----------
663  - Added ptask (periodic task) removal.
664  - Added a basic (nearly empty) C3600 IO FPGA chip.
665
66625-Mar-2006
667-----------
668  - Added a NIO RX multiplexer.
669  - Added NIO unset operation for PA.
670
67126-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
68027-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
68528-Mar-2006
686-----------
687  - Added registry management to the ATM/FR switches and NIO bridge.
688
68930-Mar-2006
690-----------
691  - Added a refcount system to the NIO RX multiplexer.
692
69331-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
70003-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
71104-Apr-2006
712-----------
713  - Added packet dump (for debugging) to NetIO receive/send operations.
714
71508-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
72112-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
72813-Apr-2006
729-----------
730  - Added per-instance logfile.
731
73214-Apr-2006
733-----------
734  - Fixed a stupid bug in non-JIT mode with IRQs.
735
73617-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
74318-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
74819-Apr-2006
749-----------
750  - Beginning of work on AMD Am79c971 ethernet controller (used by PA-4E
751    and PA-8E).
752
75320-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
75821-Apr-2006
759-----------
760  - Modified the PA-4E/PA-8E EEPROM definitions to work with VXR midplanes.
761  - PA-4E is now usable.
762
76323-Apr-2006
764-----------
765  - Added "shutdown" operation for PA-4E/PA-8E drivers.
766
76724-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
77327-Apr-2006
774-----------
775  - Added IRQ clearing with GT64K (DMA transfers).
776  - Study of GT64120 controller to understand address decoding process.
777
77828-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
78701-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
79602-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
80304-May-2006
804-----------
805  - Introduction of the new MTS64 subsystem!
806  - Note: incorrect uses of assert(), especially in insn_lookup.c module.
807
80805-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
81707-May-2006
818-----------
819  - Modified the console handling to be more efficient.
820  - Added global invalidation of the MTS64 cache.
821
82208-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
83209-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
83710-May-2006
838-----------
839  - Added "shutdown" code for RAM and ROM devices.
840  - Added VM object dump ("Ctrl-] + o")
841
84211-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
85012-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
85614-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
86915-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
87516-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
88417-May-2006
885-----------
886  - Some basic work on the hypervisor main modules (cleanup).
887
88819-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
89520-May-2006
896-----------
897  - Modified the CPU synchronization system which was not working correctly.
898
89921-May-2006
900-----------
901  - bugfix: NIO unset in PA-4T+/PA-8T driver.
902  - Added C7200 PA cleanup code.
903
90422-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
91023-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
91724-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
92625-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
93726-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
94227-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
94829-May-2006
949-----------
950  - Playing with ISDN emulation (PA-4B), and Munich32 chip. Interfaces
951    are only visible for now.
952
95330-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
96031-May-2006
961-----------
962  - Removed "c7200 trigger_oir" hypervisor command which was redundant.
963
96401-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
97102-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
97703-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
98404-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
99005-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
100506-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
101207-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
102108-Jun-2006
1022-----------
1023  - NVRAM is now ok on NPE-G1 (it is at a different physical address).
1024
102513-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
103014-Jun-2006
1031-----------
1032  - Base MAC address now generated from PID and instance ID.
1033
103415-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
104116-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
104617-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
105219-Jun-2006
1053-----------
1054  - Included a patch from Peter Ross (suxen_drol@hotmail.com) which allows
1055    to bind console and AUX ports to real serial ports. Many thanks to him.
1056
105720-Jun-2006
1058-----------
1059  - Playing with the PCMCIA stuff (especially CIS)
1060
106121-Jun-2006
1062-----------
1063  - Continuing on PCMCIA.
1064
106522-Jun-2006
1066-----------
1067  - The PCMCIA ATA disk is working, although the ATA command set is not
1068    completely implemented.
1069
107023-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
107626-Jun-2006
1077-----------
1078  - Modified the NIO RX handling (packet receiving is done in NIO module).
1079
108027-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
108729-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
109530-Jun-2006
1096-----------
1097  - Factorized code of fast memory operations to have something cleaner.
1098
109902-Jul-2006
1100-----------
1101  - Modified the JIT compiler to translate pages instead of "blocks"
1102    (improves performance).
1103
110403-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
111804-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
112505-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
113706-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
114507-Jul-2006
1146-----------
1147  - Added command line help for "--exec-area" option.
1148  - Updated documentation.
1149
115011-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
116213-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
116714-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
117516-Jul-2006
1176-----------
1177  - Integrated a patch from Peter Ross (suxen_drol@hotmail.com) for the
1178    Makefile.
1179
118017-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
118818-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
119819-Jul-2006
1199-----------
1200  - Some work on JIT tuning (flush).
1201
120220-Jul-2006
1203-----------
1204  - Better info logging for VTTY and C7200 modules.
1205  - Added a debug level for VMs.
1206
120721-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
121524-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
122425-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
123526-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
124627-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
125629-Jul-2006
1257-----------
1258  - Merged a patch from Peter Ross (suxen_drol@hotmail.com):
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
126631-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
127701-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
128503-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
129304-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
130406-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
131807-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
132508-Aug-2006
1326-----------
1327  - Some work on PA-4B (Munich32 chip).
1328
132909-Aug-2006
1330-----------
1331  - Continuing on PA-4B (trying to understand TP3420).
1332
133310-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
133915-Aug-2006
1340-----------
1341  - Continuing on PA-4B. Better understanding of the TX ring.
1342    Fixed interrupt queue management.
1343
134419-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
135020-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
135621-Aug-2006
1357-----------
1358  - Fixed C3660 boot. Trying to understand/discover the hardware.
1359    Environmental monitor should be ok.
1360
136124-Aug-2006
1362-----------
1363  - Added NS16552 flush optimization (Peter Ross).
1364  - Fixed missing periodic task removal in NS16552.
1365
136626-Aug-2006
1367-----------
1368  - C3660: * Better understanding of NM presence / EEPROM registers.
1369           * Analyzed registers used when a Net IRQ is triggered.
1370
137128-Aug-2006
1372-----------
1373  - C3660: Network Modules are now working! Remaining stuff: OIR.
1374
137529-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
138830-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
140131-Aug-2006
1402-----------
1403  - Finished the PCI subsystem rework.
1404  - C7200: Fixed PCI bridge use for midplanes (std: dec21050, vxr: dec21150).
1405
140601-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
141203-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
142604-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
143405-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
144206-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
144707-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
145608-Sep-2006
1457-----------
1458  - Better code for VM error messages.
1459  - Fixed the write attempts to ROM at startup.
1460
146109-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
146811-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
147812-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
148414-Sep-2006
1485-----------
1486  - Incorrect display of device name in PLX9060 driver.
1487  - Added manpages provided by Erik Wenzel (erik@debian.org). Many thanks
1488    to him for this and for his work on packaging for Debian.
1489  - Final 0.2.5 release.
1490  - C7200: Added missing NVRAM checksum.
1491
149215/21-Sep-2006
1493-----------
1494  - Working on NM-16ESW.
1495
149622-Sep-2006
1497-----------
1498  - NM-16ESW: interfaces are now up (handles specifically the appropriate
1499    MII register).
1500
150123/25-Sep-2006
1502--------------
1503  - Still continuing on the NM-16ESW (first packets received/transmitted).
1504
150526-Sep-2006
1506-----------
1507  - NM-16ESW: seems to be working! (although there are still a lot of things
1508    to do).
1509
151028-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
151929-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
152530-Sep-2006
1526-----------
1527  - NM-16ESW: proper management of station movement (etherchannel is handled).
1528
152901-Oct-2006
1530-----------
1531  - NM-16ESW: added register handling.
1532
153302-Oct-2006
1534-----------
1535  - NM-16ESW: playing with the port mirroring feature.
1536
153704-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
154305-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
154907-Oct-2006
1550-----------
1551  - Modified the hypervisor parser to allow long lines (to upload IOS configs).
1552
155309-Oct-2006
1554-----------
1555  - NM-16ESW: added ingress and egress port mirroring (todo: BPDU and CDP
1556    packets shouldn't be replicated).
1557
155810-Oct-2006
1559-----------
1560  - 0.2.6-RC1 release.
1561  - NM-16ESW: implemented ARL count. Fixed the MAC address table display
1562    problems.
1563
156411-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
157112-Oct-2006
1572-----------
1573  - NM-16ESW: added support to discard input packets.
1574
157513-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
158515-Oct-2006
1586-----------
1587  - Added a timer module.
1588  - NM-16ESW: added an ARL ager that removes expired MAC addresses.
1589
159018-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.
1597
159819-Oct-2006
1599-----------
1600  - C2691: added sketelon code.
1601  - C2691: working DUART.
1602  - C2691: added mainboard EEPROM.
1603
160420-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
161022-Oct-2006
1611-----------
1612  - C2691: trying to understand the network interrupt mechanism.
1613
161423-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
162324-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
163325-Oct-2006
1634-----------
1635  - GT96100: added some definitions for the Ethernet part.
1636
163726-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
164227-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
165428-Oct-2006
1655-----------
1656  - GT96100: added hash function (Mode 0 ok, Mode 1 to fix) for Ethernet
1657    address filtering + appropriate definitions.
1658
165929-Oct-2006
1660-----------
1661  - GT96100: fixed hash mode 1 (not tested).
1662  - GT96100: added address filtering process.
1663
166430-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
167631-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
168501-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
169102-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
169703-Nov-2006
1698-----------
1699  - Better support for ghost RAM, added hypervisor commands
1700    "vm set_ghost_status" and "vm set_ghost_file".
1701
170204-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
171305-Nov-2006
1714-----------
1715  - NM-16ESW: fixed a crash due to incomplete device removal.
1716
171706-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
173007-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
173608-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
174209-Nov-2006
1743-----------
1744  - Rewrite of the MIPS TLB lookup operation.
1745
174610-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
175311-Nov-2006
1754-----------
1755  - Continuing a bit on PA-MC-8TE1.
1756
175714-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.
1762  - 0.2.6-RC3 release.
1763
176415-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
177517-Nov-2006
1776-----------
1777  - Major code cleanup to make devices independent from the virtual processors.
1778  - Generic CPU stuff.
1779
178020-Nov-2006
1781-----------
1782  - Merged of patch from Thomas Pani to list VM TCP console ports (required
1783    for gDynagen).
1784  - NM-16ESW: fixed (again) BPDU handling (incorrect VLAN tagging with non
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
179321-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
180822-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
181523-Nov-2006
1816-----------
1817  - PPC: added "rlwimi", "rlwimi.", "rlwinm", "rlwinm.", "rlwnm", "rlwnm."
1818
181924-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
182725-Nov-2006
1828-----------
1829  - PPC: added dump functions for MMU registers.
1830  - PPC: added support for BAT registers.
1831
183226-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
183927-Nov-2006
1840-----------
1841  - PPC: fixes in comparison functions.
1842  - PPC: added "subfc", "subfc.", "subfco", "subfco."
1843
184428-Nov-2006
1845-----------
1846  - PPC: added "subfic", "mfctr".
1847  - PPC: fixed a lot of bugs.
1848
184929-Nov-2006
1850-----------
1851  - PPC: added "rfi", "lha", "lhau", "lhaux", "lhax", "addze", "addme".
1852  - PPC: fixed "mtcrf".
1853
185430-Nov-2006
1855-----------
1856  - Added IRQ routing vectors for virtual machines.
1857
185801-Dec-2006
1859-----------
1860  - Playing with NPE-G2, just for fun.
1861
186202-Dec-2006
1863-----------
1864  - NPE-G2: environmental monitor is now working!
1865
186603-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
187205-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
187806-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
188308-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
188909-Dec-2006
1890-----------
1891  - PPC: added idle-pc support.
1892
189310-Dec-2006
1894-----------
1895  - PPC: added virtual breakpoint support.
1896
189715-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
190219-Dec-2006
1903-----------
1904  - MV64460: fixed interrupt loss problem.
1905
190620-Dec-2006
1907-----------
1908  - Basic port of the microcode for the PowerPC platforms. IOS now starts
1909    normally (like the MIPS64 platforms).
1910
191121-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
191722-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
192323-24-Dec-2006
1924--------------
1925  - PPC32-JIT: added more instructions.
1926
192726-Dec-2006
1928-----------
1929  - PPC32-JIT: continuing...
1930
193127-Dec-2006
1932-----------
1933  - PPC32-JIT: added fast memory operations.
1934
193528-Dec-2006
1936-----------
1937  - Added PPC32 nojit support.
1938  - PPC32: better checking for IRQs.
1939
194029-Dec-2006
1941-----------
1942  - PPC32-JIT: added "amd64" support.
1943  - PPC32: added "lwbrx" and "stwbrx" instructions.
1944
194530-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
195331-Dec-2006
1954-----------
1955  - PPC32: added "dcbst" instruction.
1956
195705-Jan-2007
1958-----------
1959  - NPE-G2: correct handling of DUART interrupt with I/O card.
1960
196107-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
197008-Jan-2007
1971-----------
1972  - Rewrite of the MTS subsystem to have less overhead with inlined
1973    operations -> better performance.
1974
197509-Jan-2007
1976-----------
1977  - Finished the MTS rewrite (amd64, statistics).
1978  - NPE-G2: added a 64 Mb bootflash (needs to be tested).
1979
198010-Jan-2007
1981-----------
1982  - PPC32: added clean loading of BAT registers.
1983  - Fixed device remapping.
1984
198512-Jan-2007
1986-----------
1987  - PPC32: added "lswi", "stswi", "lswx", "stswx".
1988
198913-Jan-2007
1990-----------
1991  - PPC32: fixed carry evaluation for "srawi" instruction.
1992
199315-Jan-2007
1994-----------
1995  - Playing with c2600 to see if support can be added.
1996
199717-Jan-2007
1998-----------
1999  - C2600: adding skeleton code, added NM selection. However, unable
2000    to get a positive result for "sh diag 0".
2001
200219-Jan-2007
2003-----------
2004  - Experimenting with sparse memory to reduce virtual memory use in
2005    hypervisor mode.
2006
200720-Jan-2007
2008-----------
2009  - Continuing on sparse memory work.
2010
201121-Jan-2007
2012-----------
2013  - C2600: added mainboard basic support.
2014  - MPC860: added a basic IDMA support.
2015  - C2600: first packet exchange :)
2016
201722-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
202524-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
203125-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
203726-Jan-2007
2038-----------
2039  - C2600: io-mem size support.
2040
204131-Jan-2007
2042-----------
2043  - i8254x: added skeleton code (for PA-2FE-TX).
2044
204501-Feb-2007
2046-----------
2047  - i8254x: added MDIO code.
2048
204904-Feb-2006
2050-----------
2051  - C2600: added "set_chassis" hypervisor command.
2052  - C2600: possible chassis/mainboards now displayed at command line help.
2053
205405-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
205906-Feb-2007
2060-----------
2061  - Working on i8254x TX part. Problem with TX ring wrapping.
2062
206308-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
206909-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
207612-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
208213-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
208814-Feb-2007
2089-----------
2090  - C7200: added C7200-IO-GE+E, based on Intel i82543 chips.
2091
209216-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
209818-Feb-2007
2099-----------
2100  - PPC32: Remove JIT compiled pages when a write occurs (required for c2600).
2101
210219-Feb-2007
2103-----------
2104  - PPC32: Optimization for writes on JIT page at address 0.
2105
210620-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
211221-Feb-2007
2113-----------
2114  - Continuing on MSFC1 (added EEPROM, SRAM, ...)
2115  - Added NMC93C56 EEPROM support.
2116
211723-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
212424-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
213325-Feb-2007
2134-----------
2135  - C2691: updated interrupt infrastructure.
2136  - NM-16ESW: fixed interrupt handling.
2137
213826-Feb-2007
2139-----------
2140  - C3725/C3745: updated interrupt infrastructure.
2141
214227-Feb-2007
2143-----------
2144  - C2600: updated interrupt infrastructure.
2145
214602-Mar-2007
2147-----------
2148  - Added a cache for the instruction lookup tables (ILT), allowing a faster
2149    start.
2150
215103-Mar-2007
2152-----------
2153  - Fixed instruction tables (problem seen on amd64 platforms).
2154
215507-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
216108-Mar-2007
2162-----------
2163  - PPC32: JIT block lookup optimization (x86 only).
2164
216509-Mar-2007
2166-----------
2167  - MIPS64/PPC32: JIT block lookup optimization (amd64).
2168
216912-Mar-2007
2170-----------
2171  - PPC32: fixed invalid hash index in JIT block invalidation (thanks to Greg).
2172
217313-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
218125-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
218727-Mar-2007
2188-----------
2189  - Added a device access counter for each CPU for diagnostics purposes.
2190
219129-Mar-2007
2192-----------
2193  - PPC32: optimizations for eflags->cr computing.
2194
219530-Mar-2007
2196-----------
2197  - PPC32: optimizations in CR handling (split in 8 fields).
2198
219931-Mar-2007
2200-----------
2201  - PPC32: added CR optimizations to amd64 backend.
2202
220302-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
220804-Apr-2007
2209-----------
2210  - Fixed build (NetIO filters) when PCAP is lacking.
2211
221209-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
221712-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>).
2221
222215-Apr-2007 => 22-Apr-2007
2223===========================
2224  - PPC32: rewrite of JIT with peephole and CR flags optimizations.
2225
222623-Apr-2007
2227-----------
2228  - PPC32: converted amd64 JIT to new system.
2229
223024-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
223725-Apr-2007
2238-----------
2239  - C3725: fixed interrupt problems with slot 2 (bad shift - only 4 irq
2240    lines per port).
2241
224228-Apr-2007
2243-----------
2244  - Changed instruction counters to 32-bit type, to get more accurate
2245    results.
2246
224729-Apr-2007
2248-----------
2249  - Experimenting with a per-register memory translation cache.
2250
225130-Apr-2007
2252-----------
2253  - C2600: playing with MPC860 SPI to access WIC eeproms (slot 0 only).
2254
225501-May-2007
2256-----------
2257  - MPC860: continuing on SPI.
2258  - Rewriting/Refactoring code to handle network interfaces (required for WIC
2259    support).
2260
226102-May-2007
2262-----------
2263  - Continuing rework of network interfaces.
2264
226503-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
227204-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
227905-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.
2285
228607-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
229314/15-May-2007
2294--------------
2295  - Flash code rework (required for c1700) to have something more generic.
2296
229716-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
230318-May-2007
2304-----------
2305  - Memory exceptions are now handled through setjmp/longjmp, avoiding error
2306    checks in memory access functions.
2307
230819-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
231520-May-2007
2316-----------
2317  - Continuing on i8255x.
2318
231921-May-2007
2320-----------
2321  - i8255x: Intel doesn't provide enough info in its documentation for
2322    the RX flexible mode...
2323
232422-May-2007
2325-----------
2326  - i8255x: RX flexible mode works similarly to the 82596CA chipset.
2327    Packet TX and RX seems ok.
2328
232923-May-2007
2330-----------
2331  - C2691/C3725/C3745: fixed GT96100 binding to slot 0.
2332  - GT96100/ETH: fixed interrupt handling for TX packets (the interrupt was
2333    incorrectly disabled when no packet was available on a ring, causing
2334    packet loss when the two ports were enabled) - BTS entry #171.
2335
233625-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
234401-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
235003-Jun-2007
2351-----------
2352  - Fixed incorrect free in deletion of frame-relay switch VC.
2353
235404-Jun-2007
2355-----------
2356  - PA-POS-OC3/Mueslix: added correct handling of crc-16/crc-32.
2357
235810-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
236509-Jul-2007
2366-----------
2367  - Fixed PA-FE-TX initialization (EEPROM setting lacking).
2368
236911-Jul-2007
2370-----------
2371  - PPC32-JIT: fixed stack alignment for MacOSX/Darwin.
2372  - PPC32-JIT: fixed perf counter and breakpoints.
2373
237413-Jul-2007
2375-----------
2376  - Integrated patches from FreeBSD (Pavel I Volkov), excepted for the vtty
2377    part.
2378
237914-17-Jul-2007
2380--------------
2381  - Rework of VM infrastructure.
2382
238317-Jul-2007
2384-----------
2385  - Added basic plugin subsystem.
2386  - CPU: added custom handler support for undefined memory accesses.
2387
238821-22-Jul-2007
2389--------------
2390  - GT96100: working on SDMA and MPSC.
2391
239223-Jul-2007
2393-----------
2394  - C3745: finally understood how to handle WIC EEPROMs.
2395
239624-Jul-2007
2397-----------
2398  - C3745: added support of WIC-1T & WIC-2T.
2399  - GT96100: fixed SDMA handling.
2400
240125-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
240829-Jul-2007
2409-----------
2410  - MPC860: fixed MII registers for 1710, 1721 and 1760.
2411
241201-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
241818-Aug-2007
2419-----------
2420  - Added WIC address space definitions for platforms that support them.
2421
242219-Aug-2007
2423-----------
2424  - Added ISL support for am79c970 based cards (NM-1FE-TX and others).
2425
242627-Aug-2007
2427-----------
2428  - GT96100: missing check for NULL pointer in set_nio/unset_nio.
2429  - MPC860: same bugfix (SCC and FEC).
2430
243131-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
243706-Sep-2007
2438-----------
2439  - PPC32: Fixed BCTR instruction on amd64 jit.
2440
244108-Sep-2007
2442-----------
2443  - Added an object store (through hypervisor) for Dynagen.
2444
244511-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
245012-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
245614-Sep-2007
2457-----------
2458  - Added TCP keepalives on VTTY connections (xabrouck@cisco.com)
2459  - Fixed Flash code.
2460
246118-Sep-2007
2462-----------
2463  - Added a virtual ATM SAR (segmentation and reassembly) engine.
2464  - Added a virtual ATM bridge device (RFC1483).
2465
246621-Sep-2007
2467-----------
2468  - GT96100: fixed CRC handling in MPSC HDLC channels (2 bytes, not 4!)
2469
247030-Sep-2007
2471-----------
2472  - PPC32-JIT: fixed CR signed evaluation in case of overflow.
2473
247404-Oct-2007
2475-----------
2476  - Added ISL support for integrated ports on 2691/3725/3745.
2477
247807-Oct-2007
2479-----------
2480  - Fixed non-JIT build for PPC32.
2481
248208-Oct-2007
2483-----------
2484  - MV64460: rewrite of SDMA code to follow GT96100 model.
2485
248609-Oct-2007
2487-----------
2488  - MV64460: added MPSC registers (as for GT96100).
2489
249010-Oct-2007
2491-----------
2492  - MV64460: added SRAM.
2493
2494+-----------------------.
2495| Release:  v0.2.8-RC2   |
2496+-----------------------'
2497
249829-Oct-2007
2499-----------
2500  - C3745: some work on OIR, but unfortunately only NM-4T works at the moment.
2501
250230-Oct-2007
2503-----------
2504  - C3660: added OIR support.
2505
250627-Nov-2007
2507-----------
2508  - C7200: added support for jacket card (C7200-JC-PA) and support for PA
2509    in slot 7.
2510
251129-Nov-2007
2512-----------
2513  - Fixed AAL5 CRC.
2514
251515-Jan-2008
2516-----------
2517  - Added Multicast NIO
2518
251919-Jan-2008
2520-----------
2521  - Added "nio set_mcast_ttl" hypervisor command to change TTL for multicast
2522    NIOs.
2523
252425-Jan-2008
2525-----------
2526  - Added 64-bit support for MacOS X 10.5 - Leopard (stack alignment).
2527
252831-Mar-2008
2529-----------
2530  - PPC32: Fixed DIVW instruction (incorrect cast: unsigned instead of signed).
2531    This was causing problems with OSPF (and probably other protocols) on 2600
2532    platforms.
2533
253401-Apr-2008
2535-----------
2536  - Some minor info added (OS name) to ease debugging.
2537
253824-Apr-2008
2539-----------
2540  - Added NIO traffic statistics (packets/bytes in/out).
2541
254225-Apr-2008
2543-----------
2544  - Added QinQ support in integrated ethernet switch (untested).
2545
254607-May-2008
2547-----------
2548  - More coherent naming for JIT variables ("blocks" -> "tcb").
2549  - Fix QinQ input vector in Ethernet switch (thanks to Pavel Skovajsa).
2550
255116-May-2008
2552-----------
2553  - Merged PPC-host JIT patch from Zhe Fang.
2554
2555Jun-2008
2556--------
2557  - Worked on a JIT code sharing system (only MIPS ported at this time)
2558
255903-Jul-2008
2560-----------
2561  - MIPS64: fixed a lot of mistakes in handling of TLB entries.
2562
256327-Nov-2008
2564-----------
2565  - Added "udp auto" NIO to avoid fixed port allocation which can easily fail.
2566  - Bug fixes in socket handling (incorrect setsockopt() for non-RFC2553
2567    systems)
2568
2569+------------------------------------------------------.
2570| Last known development version:  v0.2.8-20090305-18   \
2571| Some of the changes only exist in unstable.           /
2572+------------------------------------------------------'
2573
257430-Mar-2011 (dynamips-community fork)
2575-------------------------------------
2576  - Online Insertion and Removal (OIR) support for c3745 (NM-4T only) and c3660.
2577  - c7200: support for jacket card (C7200-JC-PA) and support for PA in slot 7.
2578  - ATM: AAL5 CRC bug fix.
2579  - New Multicast NIO.
2580  - "nio set_mcast_ttl" hypervisor command to change TTL for multicast NIOs.
2581  - 64-bit support for MacOS X 10.5 - Leopard (stack alignment).
2582  - PPC32: DIVW instruction fix (incorrect cast: unsigned instead of signed).
2583     This was causing problems with OSPF (and probably other protocols)
2584     on 2600 platforms.
2585  - Some minor info added (OS name) to ease debugging.
2586  - NIO traffic statistics (packets/bytes in/out).
2587  - QinQ support in integrated Ethernet switch.
2588  - More coherent naming for JIT variables ("blocks" -> "tcb").
2589  - PPC-host JIT patch from Zhe Fang.
2590  - JIT code sharing system (only MIPS ported at this time)
2591  - MIPS64 fixes in handling of TLB entries.
2592  - "udp auto" NIO to avoid fixed port allocation which can easily fail.
2593  - Bug fixes in socket handling (incorrect setsockopt() for non-RFC2553 systems)
2594  - New source code layout to allow stable and unstable to share code
2595     in common in a single distribution.
2596  - Able to set system id at runtime in cli mode using -I <systemid> or
2597     set_system_id in hypervisor mode. This is for routers
2598     1700,2600,3600,3725,3745, and 7200 (not npe-400 or npe-g1 or 2).
2599     System id format is dependent on router, e.g. -I 4279256517 or -I FTX0945W0MY
2600     (these are the current defaults).
2601  - AUX port for routers 1700 to 3745 now works.
2602  - u16552 correctly emulates the latch bit, and decodes more registers.
2603  - Telnet to AUX or CONSOLE is flushed much earlier.
2604  - Make clean improved.
2605  - IOS reload command for non c7200 now terminates the emulation.
2606  - Setting mac address using -m works for non c7200 as well.
2607  - Using inappropriate flag which is platform sensitive gives an error.
2608  - Flag added --noctrl which disables ctrl+]
2609  - Flag added --notelnetmsg which disables welcome text on telnet
2610     AUX and CONSOLE.
2611  - Flag added --filepid <filename> which saves the pid of dynamips to a file.
2612  - Bug fix: xx:xx:xx:xx:xx:xx mac addresses in -m now accepted.
2613  - Bug fix: JayTee patch included for sizeof error in networking
2614  - Bug fix: closing telnet to AUX/CONSOLE may produce SIGPIPE which
2615     is now trapped when using non hypervisor mode.
2616  - Bug fix: ghost file using -G now opened correctly as READONLY.
2617  - Cisco Pagent and CallGen image support for c1700, c2600, c36xx, c37xx,
2618     c7200 NPE-100 to NPE-300:
2619     (see http://www.sadikhov.com/forum/index.php?showtopic=157426&st=20 for details).
2620
2621+---------------------------------.
2622| Release:  v0.2.8-RC3-community   |
2623+---------------------------------'
2624
262512-Nov-2011
2626-----------
2627  - FreeBSD patches
2628     (http://www.freebsd.org/cgi/cvsweb.cgi/ports/emulators/dynamips-community/files/).
2629
263026-Jun-2012
2631-----------
2632  - Fixes hypervisor problem of only using default port with a bind address.
2633
2634+---------------------------------.
2635| Release:  v0.2.8-RC4-community   |
2636+---------------------------------'
2637
263826-Jun-2012
2639-----------
2640  - Support for RFC2553 + binding on specific addresses for console/aux connections.
2641  - True AF independent code (RFC2553). Accepts IPv6 and IPv4 clients in the same console session.
2642  - Update CFLAGS and LIBS for Cygwin.
2643
264418-Oct-2012
2645-----------
2646  - show_cpu_usage command for the vm, used by GNS3 for auto idlepc calculation.
2647
2648+---------------------------------.
2649| Release:  v0.2.8-RC5-community   |
2650+---------------------------------'
2651
265230-Jan-2013
2653-----------
2654  - Fixed crash when a router (2691, 3725 or 3745) is powered off.
2655  - Multiplatform get_cpu_time function.
2656  - Added rt lib into Makefile (for Linux compilation).
2657
265830-Jan-2013
2659-----------
2660  - Fixed QinQ.
2661  - Simplified TTYPE message.
2662
2663+---------------------------------.
2664| Release:  v0.2.8-RC6-community   |
2665+---------------------------------'
2666
266711-Jun-2013
2668-----------
2669   - Manual patches
2670   - Patch: avoid dangling pointers when the ppc32 cpu is recompiling a tcb
2671      and an exec page needs to be allocated, causing the tcb to be flushed.
2672
267312-Jun-2013 to 15-Jun-2013
2674--------------------------
2675   - Updated README, changelogs, and makefiles.
2676   - Bumped version to v0.2.8-RC7-community.
2677
2678+---------------------------------.
2679| Release:  v0.2.8-RC7-community   |
2680+---------------------------------'
2681
268218-Jun-2013 to 04-Jul-2013
2683--------------------------
2684   - Fixed crashes in x86_64 builds by decreasing the optimization level to O2.
2685     It was also reported that using O2 makes packet delivery in general, and frame relay especially more reliable.
2686   - Fixed many memory leaks.
2687   - Updated documentation and makefiles (works with parallel jobs).
2688   - Bumped version to v0.2.8-community.
2689
2690+-----------------------------.
2691| Release:  v0.2.8-community   |
2692+-----------------------------'
2693
269410-Jul-2013 to 31-Jul-2013 (renamed to dynamips)
2695------------------------------------------------
2696   - Added NVRAM filesystem.
2697   - Added generic_nvram_extract_config and generic_nvram_push_config that use the NVRAM filesystem.
2698   - Reimplemented the nvram_extract_config/nvram_push_config functions of the platforms c1700/c2600/c2692/c3600/c3725/c3745/c7200/c6msfc1.
2699   - Fixed the file handle leak in c6sup1_nvram_extract_config.
2700   - Renamed from Dynamips-community to the original Dynamips, updated documentation and makefiles.
2701   - Bumped version to v0.2.9.
2702
2703Fixed issue #11 - nvram:private-config is destroyed when we write nvram:startup-config
2704Fixed issue #13 - C3745 has an emulated NVRAM that is not continuous, so we can generate an invalid checksum when the config is written
2705Fixed issue #14 - a file descriptor is leaked every time the config is extracted/read
2706
2707+-------------------.
2708| Release:  v0.2.9   |
2709+-------------------'
2710
271105-Aug-2013 to 07-Sep-2013
2712--------------------------
2713   - Add an option to produce debug symbols and override the optimization level to the makefiles.
2714   - Fix leak of a mutex and a condition if thread creation fails in timer_create_queue.
2715   - Remove unnecessary call to pthread_exit, the main thread is waiting with pthread_join.
2716   - Add volatile qualifier to variables 'list' and 'running' of timer_queue_t. They are modified and read in different threads.
2717   - Remove the asynchronous cancellation of the timer threads. It is not safe and pthread_cancel is never called.
2718   - Signal the timer queue condition before releasing the mutex, as it should be used.
2719   - Check the running flag before waiting for the condition in timer_loop. This avoids "The Lost Wake-Up Problem" when the program terminates before the timer thread is waiting.
2720   - Add fs_nvram_verify.
2721   - Reimplement nvram_export.
2722   - Rename vm_instance_t.ios_config to ios_startup_config.
2723   - Expand vm_platform_t.nvram_push_config to receive both startup-config and private-config.
2724   - Expand vm_platform_t.nvram_extract_config to get both startup-config and private-config.
2725   - Add vm_instance_t.ios_private_config.
2726   - Rework m_read_file to read the whole file at once.
2727   - Rework vm_nvram_push_config to handle both config files (NULL to keep existing data).
2728   - Extend hypervisor command 'set_config':
2729     - new optional argument for the file with private data.
2730     - new behaviour: an empty string "" means no config file.
2731   - Rework vm_ios_set_config to handle both config files (NULL to keep existing data).
2732   - Update documentation.
2733   - Extend hypervisor command 'extract_config':
2734     - return both startup-config and private-config data.
2735     - empty data is sent as an empty string ''.
2736   - Update documentation.
2737   - Extend hypervisor command 'push_config':
2738     - new optional argument for the private data.
2739     - new behavior: the string '(keep)' means no data is provided and it should preserve existing data.
2740   - Update documentation.
2741   - Add command line options --private-config and --startup-config.
2742   - Update documentation.
2743   - Fix warning "dereferencing type-punned pointer will break strict-aliasing rules".
2744   - Fix m32_tx_acquire not checking the HOLD bit properly.
2745     Note: the datasheet isn't available anymore, so the intended behavior was inferred from surrounding code; it was assumed that the hold bit is managed elsewhere
2746   - Fix warning "suggest parentheses around operand of ‘!’ or change ‘&’ to ‘&&’ or ‘!’ to ‘~’".
2747   - Fix warnings "assignment discards ‘const’ qualifier from pointer target type" by copying the backplane/supervisor eeproms.
2748   - Fix memory leaks of c6sup1_t.slot_eeprom data.
2749   - Fix warnings "‘<function name>’ defined but not used".
2750     __unused for function that are not referenced
2751     __maybe_unused for functions that are referenced in excluded code
2752   - Fix warnings "label ‘<name>’ defined but not used".
2753   - Fix warnings "unused variable ‘<name>’".
2754     UNUSED() for variables that are not used
2755     __maybe_used for variables that are used in excluded code
2756   - Fix warnings "variable ‘<name>’ set but not used".
2757     delete unneeded variables that don't help understand the surrounding code
2758     __maybe_unused for the other variables
2759   - Adjust Makefiles:
2760     - clean nvram_export.o
2761     - add missing $(BIN_EXT)
2762     - add target 'both' to facilitate test compilations
2763   - Bump version to v0.2.10.
2764
2765Implemented enhancement #15 - extend hypervisor commands push_config, extract_config, and set_config
2766Implemented enhancement #16 - reimplement nvram_export
2767Fixed issue #17 - Dynamips hangs on startup if no (or unknown) parameters are given v0.2.8 and 0.2.9
2768
2769+--------------------.
2770| Release:  v0.2.10   |
2771+--------------------'
2772
277316-Sep-2013 to 10-Feb-2014
2774--------------------------
2775   - Make memzone_map_* functions return NULL on failure.
2776   - Add memzone_map_exec_area.
2777   - Add memzone_unmap.
2778   - Add memzone_sync and memzone_sync_all.
2779   - Remove unnecessary includes to sys/mman.h.
2780   - Add documentation on the hypervisor module "object_store".
2781   - Update documentation on the hypervisor module "hypervisor".
2782   - Add documentation on the hypervisor module "vm_debug".
2783   - Update documentation on the hypervisor module "ethsw".
2784   - Add documentation on the hypervisor module "atm_bridge".
2785   - Update documentation on the hypervisor module "nio".
2786   - Fix hypervisor command push_config not receiving 3 arguments.
2787   - Update documentation on the hypervisor module "vm".
2788   - Update documentation on the hypervisor module "c7200".
2789   - Update documentation on the hypervisor module "c3600".
2790   - Add documentation on the hypervisor module "c3745".
2791   - Add documentation on the hypervisor module "c3725".
2792   - Add documentation on the hypervisor module "c2691".
2793   - Add documentation on the hypervisor module "c2600".
2794   - Add documentation on the hypervisor module "c1700".
2795   - Update documentation.
2796   - Add registry_rename.
2797   - Add hypervisor command "vm rename <instance_name> <new_name>".
2798   - Fix documentation of hypervisor command vm create.
2799   - Add hypervisor command "nio rename <nio_name> <new_name>".
2800   - Add hypervisor command "nio_bridge rename <bridge_name> <new_name>".
2801   - Add hypervisor command "frsw rename <switch_name> <new_name>".
2802   - Add hypervisor command "atmsw rename <switch_name> <new_name>".
2803   - Document when hypervisor mode became available.
2804   - Add hypervisor command "atm_bridge rename <bridge_name> <new_name>".
2805   - Add hypervisor command "atm_bridge rename <bridge_name> <new_name>".
2806   - Add hypervisor command "ethsw rename <switch_name> <new_name>".
2807   - Add hypervisor command "object_store rename <object_name> <new_name>".
2808   - Add hypervisor command "vm get_status <instance_name>".
2809   - Warn the VM isn't running when connecting to the console/aux port.
2810   - Update changelog.
2811   - Replay old text when you connect to the console/aux port.
2812   - Fix hypervisor command 'vm rename' not renaming it's files.
2813   - Fix crash in vm_free with an alternate ROM filename.
2814   - Makefiles:
2815     - Remove un-needed code
2816     - Stable makefile updates
2817     - Top level makefile updates
2818     - Unstable makefile updates
2819     - Remove powerpc comment
2820     - Remove references to asmdefs
2821   - Define arm architecture (thanks to Ubuntu for the patch)
2822   - Change default NPE for c7200 platform from npe-200 to npe-400.
2823   - Fixed wrong variable being passed to registry_rename in vm_rename_instance.
2824   - Possibility to set the system id for c2691 routers.
2825   - Hypervisor commands to get the base MAC address of routers.
2826   - Add in the README.hypervisor that the get_mac_addr hypervisor commands are available since version 0.2.11
2827   - Add hypervisor command 'vm clean_delete <instance>'.
2828   - Add missing changes to the hypervisor_mode.7 man page.
2829   - Make sure IPV6_JOIN_GROUP is defined in cygwin.
2830   - Bump version to v0.2.11.
2831
2832Fixed issue #20 - segmentation fault when accessing a device that failed to memory map it's file
2833Implemented enhancement #21 - Renaming devices
2834Closed issue #22 - Hypervisor documentation is out of date
2835Implemented enhancement #36 - hypervisor command to clean the files of a vm
2836Fixed issue #27 - Rename issues.
2837
2838+--------------------.
2839| Release:  v0.2.11   |
2840+--------------------'
2841
284210-Feb-2014 to 27-Mar-2014
2843--------------------------
2844   - Missing space in hypervisor_mode.7 manpage (line 310)
2845   - gt96k: more debug info
2846   - Fix packet looping on platforms with Gt96k FE.
2847     - The specs were not clear on whether the M-bit was a "Miss" or "Match".
2848     - It was being treated as a "Match" bit but it turns out IOS treats it as a "Miss" bit.
2849     @see http://forum.gns3.net/post26316.html#p26316
2850   - Gt96k patch correcting the reporting of processed transmit descriptors back to IOS.
2851     - Fixes missing interrupt when gt96k doesn't own the first trasmit descriptor.
2852     - Fixes incorrect clearing of the Own bit. (last must wait for transmission, the rest are cleared when processed)
2853     - Fixes offset when writing back the cmd word of the non-last descriptors. (missing from 0.2.6-RC3)
2854     - Affects c2691, c3725 and c3745.
2855     @see http://forum.gns3.net/post26454.html#p26454
2856   - Clarify the meaning of the +4 offsets with GT_SDMA_CMD_OFFSET.
2857   - Silence forgotten debug message.
2858   - Change default idlemax value from 1500 to 500.
2859   - Add hypervisor command 'vm_debug pmem_cfind'.
2860   - Bump version to v0.2.12.
2861
2862Fixed issue #29 - packet loss with multicast traffic
2863Closed issue #31 - create hypervisor command to find a pattern in the router memory
2864
2865+--------------------.
2866| Release:  v0.2.12   |
2867+--------------------'
2868
286904-Apr-2014 to 05-Jul-2014
2870--------------------------
2871   - MPC860: Add debug message for the unimplemented CP reset command
2872   - Report the partid of dev_am79c971 type AM79C971_TYPE_10BASE_T as Am79C970A.
2873     - Fixes the "AMD Unknown" that shows up in "show controllers".
2874       IOS calls this "AMD Presidio" or "AmdP2".
2875   - MPC860 FEC: (logic is inlined in dev_mpc860.c for now)
2876     - implement PHY LXT970A, which was hardcoded as values in the MII registers
2877     - if sending with link down, report no heartbeat and lost carrier
2878   - PCMCIA disk:
2879     - annotate the "Card Information Structure" data
2880     - add missing CISTPL_END
2881   - Document Cisco EEPROM format v1 and v4.
2882   - Add CMake build system.
2883   - Missing empty line at end of fs_nvram.c
2884   - Fix unused function warnings.
2885   - Remove unused duplicate of physmem_get_hptr from stable/mips64_jit.c
2886   - Add test builds using Travis CI.
2887   - Create new README.md based on README for GitHub frontpage.
2888   - Add common.h.
2889     - Move generic includes, types and macros from utils.h to common.h.
2890   - Minimize includes in sbox.c/h.
2891   - Minimize includes in crc.c/h.
2892   - Fix unstable nojit compilation.
2893   - Fix unused variable warning in ppc32_jit.c.
2894   - Use dev_dec21140.c from unstable.
2895     - Fix bandwidth statistics
2896     - Check if the NIO can trasmit
2897   - Add #pragma once to common.h
2898   - Rename common.h to dynamips_common.h.
2899   - Delete ds1620.h.
2900     - This file is not used and most of the constants are in dev_ds1620.c.
2901   - Tell the compiler that mem_bswap32 does not require aligned data.
2902   - Minimize headers.
2903   - define FD_SETSIZE for Cygwin in dynamips_common.h
2904   - Rename double underscore macros:
2905     - rename __not_aligned to _not_aligned
2906     - rename __maybe_unused to _maybe_used
2907     - rename __unused to _unused
2908   - Use an exclusive lock while dumping captured packets. (thread safety)
2909   - Respect the snapshot length of the descriptor.
2910   - Report failed setups of hypervisor command 'nio setup_filter'.
2911   - Make a single FAT16 partition when pcmia disks are first created.
2912   - Change pcap snapshot length to 65535.
2913   - Remove old Makefiles to avoid confusion. (not gonna be maintained)
2914   - Improve TX performance of i8254x (PA-GE) by sending up to 16 packets at a time.
2915     - Merge pull request #45 from candlerb/candlerb/txperformance
2916   - Print the device name when debugging pci accesses.
2917   - Indicate the TODO list is from the original author.
2918
2919Final fix for issue #9 - Reproducable crash
2920Fixed issue #38 - Unknown file system detected
2921Fixed issue #41 - "Frame is Too Long" error in Wireshark
2922Merge pull request #45 from candlerb/candlerb/txperformance
2923
2924+--------------------.
2925| Release:  v0.2.13   |
2926+--------------------'
2927
292810-Jul-2014 to 01-Sep-2014
2929--------------------------
2930   - Add -DUSE_UNSTABLE when making an unstable build (MacOSX)
2931   - Add optional argument 'format' to hypervisor commands
2932     - 'send_con_msg' and 'send_aux_msg'.
2933     - Report "X byte(s) written" on succeess.
2934     - String formats:
2935        * plain - plain string (default, old behavior)
2936        * base64 - base64 encoded string
2937   - Use an auxiliary variable to record configured ram size for npe-400
2938
2939Fixed issue #49 - IOS crashes after router restart
2940Fixed issue #50 - vm send_con_msg
2941Fixed issue #55 - 'unstable' installs 'stable' version on Mac OS X
2942
2943+--------------------+
2944| Release:  v0.2.14  |
2945+--------------------+
2946
294706-Dec-2014
2948-----------
2949    - Rename _unused to _Unused to fix a clash when building on PPC/PPC64EL
2950	* See thread starting at:
2951		https://lists.debian.org/debian-mentors/2014/10/msg00272.html
2952
2953+--------------------+
2954| Release:  v0.2.15  |
2955+--------------------+
2956
295701-06-2015
2958----------
2959
2960Fixed issue #60 - build on Mac OS X
2961Fixed packet capture on Mac OS X (echoed packets)
2962
2963+--------------------+
2964| Release:  v0.2.16  |
2965+--------------------+
2966
296716-03-2016
2968----------
2969
2970* Add instructions to build on Windows.
2971* Remove libuuid dependency and NIO Multicast implementation that depends on it. NIO Multicast is never used and maybe not even functional. This will simplify the compilation requirements, especially on Windows with Cygwin.
2972* EthernetSwitch: Allow to choose ethertype for QinQ outer tag.
2973
2974+--------------------+
2975| Release:  v0.2.17  |
2976+--------------------+
2977
297824-07-2017
2979----------
2980
2981* Set nonblocking I/O for UDP sockets
2982* Fix tap interface usage on FreeBSD
2983* Fix build on FreeBSD
2984* NM-16ESW: process packets even if MAC address table is full. Fixes #72.
2985
2986