/[dynamips]/upstream/dynamips-0.2.7-RC1/ChangeLog
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Annotation of /upstream/dynamips-0.2.7-RC1/ChangeLog

Parent Directory Parent Directory | Revision Log Revision Log


Revision 7 - (hide annotations)
Sat Oct 6 16:23:47 2007 UTC (12 years, 2 months ago) by dpavlin
File size: 68664 byte(s)
dynamips-0.2.7-RC1

1 dpavlin 1 /*
2 dpavlin 4 * Cisco 7200/3600/2691 simulation platform.
3 dpavlin 1 */
4    
5     15-Aug-2005, the project is starting.
6    
7     18-Aug-2005
8     -----------
9     - Added support for: sll, addu/subu.
10     - Fixed bugs with b... branch instructions (bad computation of new pc).
11     - Added patch recording for blocks.
12     - A sequence of MIPS instructions (without memory access instructions)
13     from IOS was successfully run ! (need to check correctness).
14    
15     22-Aug-2005
16     -----------
17     - Implemented a basic memory subsystem with an mmaped file.
18     - Added memory access instructions (lb,lbu,lh,lhu,lw,lwu,ld,sb,sh,sw,sd).
19     - Added a cross-compiled test program.
20    
21     23-Aug-2005
22     -----------
23     - Fixed slti, sltiu, slt instructions.
24     - Fixed memory endianness.
25     - Fixed host memory addressing (bad haddr computation).
26    
27     24-Aug-2005
28     -----------
29     - Added a generic memory address lookup function.
30     - Added a minimal ELF loader.
31    
32     28-Aug-2005
33     -----------
34     - ELF loader now loads files page per page.
35     - Added device support (with RAM support).
36     - Added MTS32 support for mapping of 4 Kb pages.
37     - Added MTS32 support for device mapping in kernel mode and generic
38     virtual to physical mapping (preparation for TLB).
39     - Added a dummy console driver.
40     - Added mult,multu,div,divu instructions.
41    
42     29-Aug-2005
43     -----------
44     - Added a Red-Black trees module.
45     - Block locator uses RB tree module.
46     - It is now possible to run a program with multiple functions!
47     - ELF loader now support multiple program headers and entry point is
48     now used.
49     - Fixed x86 buffer adjustment.
50     - Modified console to be at the same address than c7200 DUART (to test
51     microcode).
52     - Memory access functions now update PC.
53     - Added sra, srl, sllv, srlv, srav instructions.
54    
55     30-Aug-2005
56     -----------
57     - Added dsrl32, dsll32, dsra, dsrav, dsra32 instructions.
58     - Added bgtz, blez, bgez instructions.
59     - Fixed sltu instruction.
60     - ELF Entry point is now sign-extended.
61     - Added blezl, bgtzl instructions.
62     - Fixed the MIPS scanner to use unsigned 64-bits integers for addresses.
63     - Added unknown opcode management (basic, it just print the unhandled
64     opcode value and continues).
65     - Added cache instruction.
66     - Added bltzal, bltzall, bgezal, bgezall instructions.
67    
68     31-Aug-2005
69     -----------
70     - Added System coprocessor (CP0) definitions.
71     - Added tlbr instruction.
72     - Added basic tlbwi instruction (doesn't change the MTS mappings now).
73     - Added dmfc0, dmtc0, mfc0, mtc0 instructions.
74     - Added TLB dump functions.
75     - Added dummy pref/prefi instructions.
76     - Added basic exception trigger.
77     - Added syscall, break instructions.
78    
79     01-Sep-2005
80     -----------
81     - Fixed exception trigger.
82     - Added dmfc1, dmtc1, mfc1, mtc1, sdc1 instructions.
83     - Fixed the break instruction.
84     - Modified the memory handling to be more friendly with instructions
85     like sdc1 and for more safety in case of badly written device drivers.
86     - Added ldc1 instruction.
87    
88     02-Sep-2005
89     -----------
90     - Fixed sltiu/sltu instructions that were doing signed comparisons
91     instead of unsigned comparisons (mis-use of jit).
92     - Added lwr/lwl, swr/swl, ldl/ldr, sdr/sdl, ll/sc instructions
93     (not tested).
94     - Added PCI bus management.
95     - Added GT64010 (PCI controller) device.
96     - Added DEC 21050 (PCI bridge) device.
97     - Added NVRAM.
98    
99     03-Sep-2005
100     -----------
101     - Beginning of work on IRQs.
102    
103     04-Sep-2005
104     -----------
105     - Timer IRQ should be OK.
106     - Added C7200 bay management and Midplane FPGA.
107     - Fixed the JR instruction which was broken in a case like that:
108     lwu k1,0(k1)
109     jr k1
110     move k1,zero
111    
112     05-Sep-2005
113     -----------
114     - Fixed jalr (as jr) instruction.
115     - Added RAM "aliasing".
116     - Added SRAM management.
117     - Fixed NVRAM size.
118     - Fixed ldr, swl/swr instructions.
119     - Added c7200 IOcard.
120     - Count register is now properly handled.
121     - Added basic functions to set/clear interrupts.
122     - Modified the console driver to trigger DUART interrupt.
123     - IOS now starts!
124    
125     06-Sep-2005
126     -----------
127     - Added "move" virtual instruction. It correspond to "addu" with rt=0.
128     Here it avoids an useless add.
129     - Added b/bal virtual instructions.
130     - Packed NVRAM.
131    
132     08-Sep-2005
133     -----------
134     - Added Dallas DS1620 temperature sensors.
135     - Added voltage sensors.
136     - Power supplies are now faked.
137     - IOS Environmental Monitor doesn't try to shutdown the router anymore!
138     - Device list is now displayed at startup.
139    
140     18-Sep-2005
141     -----------
142     - Added Address Error Load/Save, TLB Load/Save exceptions.
143     TODO: Branch Delay Slot management.
144     - Modified the default value in config register in CP0 to set appropriate
145     cache sizes. Now it is possible to boot compressed images directly!
146     - Added the teq/teqi instructions.
147     - Hmm, seen some IOS images (k9?) that seem to use the FPU (CP1). This
148     does not prevent the image to boot, but some features will probably
149     be not functional.
150    
151     19-Sep-2005
152     -----------
153     - Tweaked the console driver to generate a dummy interrupt. It avoids
154     the console problems.
155     - Fixed the serial driver mueslix PCI vendor/device code.
156     - The midplane FPGA now returns voltages based on virtual PA EEPROM
157     presence. Up to 6 PA-8T were successfully emulated!
158    
159     20-Sep-2005
160     -----------
161     - Included amd64-codegen.h with a (near empty) translator.
162     - Some code factorization.
163    
164     21-Sep-2005
165     -----------
166     - Added CPU state save/restore on disk.
167     - Sending SIGQUIT to the process dumps the MIPS64 VM state on disk.
168     (only CPU state is saved for now).
169     Device state is not saved, so this does not work with booted IOS images
170     for now (it works for an IOS image being self-decompressing, though).
171     - Some code cleanups.
172    
173     23-Sep-2005
174     -----------
175     - Fixed "Dirty" bit in TLB entries.
176     - Extended the number of TLB entries from 48 to 64.
177     - Added tlbp instruction.
178     - Modified the nmc93c46 eeprom driver to allow more than 32 bytes reading.
179    
180     24-Sep-2005
181     -----------
182     - Added a symbol table loader.
183    
184     26-Sep-2005
185     -----------
186     - Added support for writing in PCI registers
187     - Added a RAW file loader.
188     - Added "add" instruction (without exception support).
189    
190     07-Oct-2005
191     -----------
192     - Continued work on SMP support.
193    
194     08-Oct-2005
195     -----------
196     - Replaced memory operations with fastcalls instead of asmlinkage functions.
197     - Continued work on SMP support. Now it should be complete, except for
198     LL/SC instructions.
199    
200     10-Oct-2005
201     -----------
202     - A lot of work on amd64 jit compiler.
203     - The memory management should be 64-bit compliant now.
204    
205     17-Oct-2005
206     -----------
207     - Fixed a bug in SRA instruction in amd64 jit code. Dynamips is now working
208     on amd64!
209    
210     26-Oct-2005
211     -----------
212     - Created a virtual device giving the VM parameters.
213     - Added command line parsing (patch from Nicolas Szalay).
214     - Fixed ERET instruction (LLbit clearing was lacking).
215     - Fixed BREAK instruction (x86/amd64).
216     - Fixed 2 GB limit for log file.
217     - Fixed clobbered registers in x86 translation.
218    
219     28-Oct-2005
220     -----------
221     - Added a non-JIT mode (not completely working now)
222     - Added "-j" flag on the command line to disable JIT.
223     - Fixed some stupid bugs in shift operations.
224    
225     31-Oct-2005
226     -----------
227     - Thanks to the great help of mtve, we have a working DEC21140 Ethernet
228     driver and now the virtual C7200 can see the real world!!!
229    
230     01-Nov-2005
231     -----------
232     - Beginning of a NETIO module to handle network I/O with external world.
233     - Studied (a bit) the PA-8T controller on a real router.
234     - It is now possible to set the base MAC address of the router
235     using the "-m" flag.
236     - Improved logging
237     - The dec21140 code is generalized and it is now possible to have a
238     PA-FE-TX in any slot.
239    
240     02-Nov-2005
241     -----------
242     - Fixed some problems with the NVRAM when it is empty ;
243     - Added a "net_io.c" module that is an abstraction layer
244     for network communications (TAP, Unix sockets...)
245     - Added the "virtual" MIPS "li" instruction which
246     is in fact "addiu reg,zero,value". This permits to have
247     a more optimized JIT code.
248     - Code factorization in the DEC21140 module.
249     - mtve (aka "Mtv Europe") sent a patch for much better console handling,
250     merge is planned on 03-Nov.
251     - Added a "PA driver" framework.
252    
253     03-Nov-2005
254     -----------
255     - The console is better handled: special keys are working, and there
256     is a FIFO buffer to avoid character loss (added a "dev_vtty.c" module).
257     - Merging with Mtve patch, that cleans NETIO module and adds features
258     to the console.
259     - Added a clock divisor hack, but it is not completely working.
260     todo: implement a command line option for this.
261    
262     08-Nov-2005
263     -----------
264     - Mtve added tcp client/server NETIO.
265     - The clock divisor is now working! It is set by the "-k" command line
266     option.
267     - Fixed the csr5 register handling in DEC21140 driver code.
268    
269     13-Nov-2005
270     -----------
271     - A lot of cosmetic changes from Mtve.
272     - Modified the infrastructure to allow the use of CPU groups
273     that share a certain number of devices (per-CPU device array).
274     All device drivers have been modified to handle this.
275     - Took a look at LSI ATMizer II+, which is the circuit used on
276     PA-A3-OC3 boards. The ATMizer is based on a MIPS CPU, so it should
277     be possible to emulate it.
278     - Added a per-CPU dedicated thread.
279    
280     23-Nov-2005
281     -----------
282     - The PA-A1 ATM stuff is working!!!
283    
284     24-Nov-2005
285     -----------
286     - Fixed a bug in the PA-A1 driver in TX buffer chaining.
287    
288     25-Nov-2005
289     -----------
290     - Address bus masking, which clears bits 32 and 33 of physical addresses.
291     It avoids the use of device aliasing.
292     - Fixed the DEC21140 TX part which was incomplete.
293    
294     29-Nov-2005
295     -----------
296     - There are still bugs in big packet forwarding. This is probably the ATM
297     driver (added more debugging info).
298     - Fabien Devaux wrote a README explaining the command line options.
299    
300     30-Nov-2005
301     -----------
302     - Code cleanup in the net_io module.
303     - Added the "ptask" (periodic tasks) module, this is mainly for TX ring
304     scanning of network devices.
305    
306     01-Dec-2005
307     -----------
308     - Added a memory logger (FIFO of 10 accesses), this was useful to debug the
309     PA-A1 RX problem.
310     - Fixed a RX buffer chaining problem in PA-A1.
311    
312     02-Dec-2005
313     -----------
314     - Added support for PA-A1 reset ("clear int", "shut/no shut").
315     - Optimized the IRQ handling (irq_pending flag in CPU structure
316     is used as a "cache").
317    
318     05-Dec-2005
319     -----------
320     - Optimized the cp0 count/compare process for the x86_64 platform
321     (unfortunately, this doesn't work for the x86 platform).
322    
323     06-Dec-2005
324     -----------
325     - Modified the NVRAM handling to allow calendar emulation ("sh calendar" is
326     now working).
327    
328     12-Dec-2005
329     -----------
330     - Added support for the NPE-400.
331     - Playing with the PA-POS-2OC3 (called "Charlotte" by Cisco).
332    
333     15-Dec-2005
334     -----------
335     - Added teq/teqi instructions to the x86_64 jit.
336    
337     20-Dec-2005
338     -----------
339     - Added a Virtual ATM switch fabric to emulate an ATM backbone.
340    
341     22-Dec-2005
342     -----------
343     - Final release for 0.2.2 train (0.2.2i).
344    
345     23-Dec-2005
346     -----------
347     - Starting 0.2.3 train (0.2.3a)
348     - Added proper NPE-150 support.
349     - Added bit-bucket support (zeroed memory zone).
350     - Added NPE type selection.
351    
352     24-Dec-2005
353     -----------
354     - Added beginning of support for NPE-300 (endianness problems with PCI
355     controllers ?)
356    
357     28-Dec-2005
358     -----------
359     - Fixed the endianness problem with the NPE-300.
360     - Added NPE300-IO-FE.
361    
362     31-Dec-2005
363     -----------
364     - Added CLI option to load a symbol file.
365     - Moved JIT code from dynamips.c to mips64_jit.c
366     - Added support for NPE-100.
367     - Updated the README file for NPE type selection.
368     - Suppressed the annoying message "%%Error: Unrecognized I/O card in bay 0"
369    
370     03-Jan-2006
371     -----------
372     - The bit clearing in physical addresses was done stupidly.
373     Only the bit 33 is used to bypass L2 caching.
374     Re-introduced SRAM aliasing.
375     PHY address 0x100000000 is in fact for PCI I/O space.
376     - Began to play with the Cirrus Logic PD6729.
377     - Added Bootflash based on Intel 28F008SA chips (1 Mb)
378     - Fixed the alignment error occuring with "show version".
379    
380     04-Jan-2006
381     -----------
382     - Better understanding of Flash SIMM register with bank number and bank
383     size: modified the Flash SIMM code to handle a 8 Mb flash in 1 bank
384     (emulation of Intel 28F016SA chip) which should be sufficient to store
385     crashinfo files or misc files like configs,...
386     - Added ROM remote logging capabilities (with remote emulator control).
387    
388     05-Jan-2006
389     -----------
390     - Integrated HEC and AAL5 field computation functions found at:
391     http://cell-relay.indiana.edu/cell-relay/publications/software/CRC/
392     (Author is Charles Michael Heard).
393     - Added HEC field management to the virtual ATM switch fabric.
394     - Added HEC and AAL5 CRC fields to the TX part of the TNETA1570 driver.
395    
396     06-Jan-2006
397     -----------
398     - Added block timestamping, to evaluate use 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    
405     08-Jan-2006
406     -----------
407     - Added support for PEM (NPE-B) EEPROM. It will probably allow support
408     of NPE-175/NPE-225.
409    
410     09-Jan-2006
411     -----------
412     - Added support for NPE-175/NPE-225 and added NPEB-IO-FE.
413    
414     10-Jan-2006
415     -----------
416     - Enhancements to the remote console over TCP port.
417     - Port to the Cygwin environment, allowing the emulator to run on Windows
418     machines!
419    
420     11-Jan-2006
421     -----------
422     - Added a feature to push an IOS configuration into NVRAM ("-C" command line
423     option).
424     - Added enhanced checks to the NVRAM config export.
425     - Added a variant of udp_connect() function for systems that do not support
426     RFC 2553.
427     - Added support for AUX port (TCP port).
428    
429     12-Jan-2006
430     -----------
431     - Better memory logger.
432     - Added breakpoint capabilities.
433     - Fixed a segfault occuring on some IOS images with x86_64 JIT.
434     (modified the minimum remaining size in JIT buffer adjustment).
435    
436     13-Jan-2006
437     -----------
438     - The ROM is now embedded in the source code (added an utility to convert
439     ELF file to C code). It is possible to use an alternate ROM using the
440     "-R" option.
441     - Enhanced the MTS lookups to allow use of embedded ROM for code execution.
442    
443     15-Jan-2006
444     -----------
445     - Added PCI I/O space management.
446     - Added a fake Cirrus Logic PD6729 PCI-to-PCMCIA host adapter.
447     - Cleanups in NPE initialization code.
448     - Fixed some bridge problems with the NPE-300.
449     - Code factorization in the C7200 initialization module.
450     - Generalization of C7200-IO-FE driver for all NPE types.
451     - Added Fault History support.
452     - Added chassis selection (standard or VXR)
453     - Finally found the bug in the non-jit emulation code! It was a cast problem
454     in mult/multu instructions.
455    
456     16-Jan-2006
457     -----------
458     - Added generic hash tables.
459     - Added "instruction lookup tables" (ILT), which greatly improve performance
460     of non-JIT mode.
461     - Added instruction statistics for the non-JIT mode ("Ctrl-] + j")
462    
463     17-Jan-2006
464     -----------
465     - Added a port for non-x86 hosts. The emulator ran successfully on a
466     Tru64 Unix box (Alpha CPU)! It should also be able to compile and run
467     on MacOS X (PowerPC).
468    
469     24-Jan-2006
470     -----------
471     - Added support for DMA channels on Galileo GT64k controllers since it seems
472     that they may be used by IOS (NPE-400 for sure, other NPE?).
473    
474     25-Jan-2006
475     -----------
476     - Added Linux Raw Ethernet driver to the NetIO infrastructure.
477     - Hmm, I'm probably missing something in the DMA/SRAM interaction and
478     endianness...
479    
480     26-Jan-2006
481     -----------
482     - The DMA problem is finally fixed, in fact the SRAM can be accessed with
483     byte-swapping.
484     - Added an unicast limiter to the DEC21140, to receive only trafic directed
485     to the virtual machine (+ multicast/broadcast). This is done by analyzing
486     the setup frames (MAC address filter).
487    
488     27-Jan-2006
489     -----------
490     - The Linux Raw Ethernet driver needs promiscuous mode to be enabled to
491     receive appropriate packets, added the required code.
492     - Added endianness definitions, and replaced hton[sl]/ntoh[sl] by the new
493     definitions (for exchanges between VM and host).
494    
495     28-Jan-2006
496     -----------
497     - Added parser infrastructure.
498    
499     29-Jan-2006
500     -----------
501     - Added a virtual bridge system.
502     - Release 0.2.3b
503    
504     31-Jan-2006
505     -----------
506     - Fixed a stupid bug in DMA handling, which in certain conditions can
507     cause an infinite loop.
508    
509     01-Feb-2006
510     -----------
511     - Added an "instruction block hash" which avoids lookups in the instruction
512     red-black tree. The IBH table takes only 16 Kb of memory.
513     - Added CRC-12 and CRC-16 functions for future use.
514     - Added a "gen_eth" NetIO driver, which allow to access ethernet interfaces
515     in a portable way (tested on Linux and Cygwin).
516     - Fixes to the PowerPC build on Darwin thanks to Olivier Cahagne.
517     - Minor cosmetic changes to display supported/unsupported PA and NPE.
518     - Release 0.2.3c
519    
520     06-Feb-2006
521     -----------
522     - Added working Serial interfaces (PA-4T+) !
523     - Bug: CDP not working with serial interfaces ("debug cdp events" reports
524     a checksum problem).
525    
526     07-Feb-2006
527     -----------
528     - Started the 0.2.4 release.
529     - Modified the command line parser to allow many NIO per PA (for example
530     for serials).
531     - A lot of code cleanups in the C7200 initialization.
532     - Added PA-8T support.
533     - To fix: CDP with Serial interfaces: using cp_len (instead of cp_len+4)
534     in packet rx fixes the problem but breaks IP. Probably something related
535     to padding, see how a CDP packet is sent (special flag in tx ring ?)
536     - Added virtual "beqz" instruction.
537     - Added the "-X" option, allowing to use host memory directly instead of
538     mapping a file to simulate RAM (faster).
539     - Beginning of code reorganization to allow multiple instance contexts.
540    
541     08-Feb-2006
542     -----------
543     - Added a basic virtual Frame-Relay switch. Unfortunately, LMI must be
544     implemented to maintain links up.
545     - Finally found the problem related to CDP! It was simply a padding problem.
546    
547     09-Feb-2006
548     -----------
549     - Add support of promiscuous mode for the DEC21140 "unicast limiter":
550     promiscuous mode is used in bridging configurations.
551     - Fixed another bug with the serial interfaces: it seems that there is
552     a "length substractor" for the txring.
553    
554     10-Feb-2006
555     -----------
556     - Played a little with the PA-POS-OC3, without success.
557    
558     14-Feb-2006
559     -----------
560     - Finally implemented the basic LMI stuff (only ANSI Annex D). Fortunately,
561     IOS rocks and uses auto-detection, so no extra configuration is needed.
562     - Integrated a Makefile patch from Max Khon for FreeBSD.
563     - Updated documentation.
564     - Release 0.2.4.
565    
566     15-Feb-2006
567     -----------
568     - Fixed a cosmetic bug when displaying MAC address at startup.
569     - Fixed a stupid bug in "srav" instruction in x86_64 JIT code. The
570     arithmetic shift operation was done on a 64-bit basic instead of 32-bit,
571     causing bad propagation of the sign-bit.
572     - Added support for multiple instances (no CLI present yet).
573    
574     17-Feb-2006
575     -----------
576     - Fixed 2 bugs in Frame-Relay switch: a crash occured when receiving
577     a packet gave an error, and if many DLCI with the same ID on different
578     interfaces were used, only one was announced on one interface.
579    
580     18-Feb-2006
581     -----------
582     - Began work on advanced configuration parsing (instances).
583    
584     19-Feb-2006
585     -----------
586     - Is the count/compare mechanism pertinent ?
587    
588     23-Feb-2006
589     -----------
590     - Continued work on advanced config parsing (instances,NIO).
591     - Added registry infrastructure.
592     - Fixed some mistakes in documentation.
593    
594     28-Feb-2006
595     -----------
596     - Continued work on advanced config parsing (NIO).
597     - Added an IRQ counter.
598     - Continued debugging on recurrent crashes problem.
599     - Added proper checks to mts32_raw_lookup (at least it avoids the
600     coredump...)
601     - Added display of all CP0 registers (except TLB).
602    
603     02-Mar-2006
604     -----------
605     - Hardened a little the IRQ subsystem, but this doesn't fix the problem.
606     - Added a debugging mode to track jumps to address 0 (x86_64 only!).
607     - Fixed the teq/teqi instructions in amd64/x86 modes that were buggy.
608    
609     04-Mar-2006
610     -----------
611     - Added some assembly optimized routines for x86 hosts.
612     - Fixed a stupid bug in mts32_raw_lookup (op_size and op_type were
613     swapped).
614    
615     06-Mar-2006
616     -----------
617     - Added Unix and Null NETIO types for config files.
618     - Fixes for incorrect behavior in virtual memory access routines, in
619     case of exception.
620    
621     08-Mar-2006
622     -----------
623     - Removed the configuration file parsing, in favor of a remote control
624     system for use with the dynagen project.
625    
626     09-Mar-2006
627     -----------
628     - Added basic hypervisor infrastructure.
629     - Added basic NIO code to the hypervisor commands.
630    
631     10-Mar-2006
632     -----------
633     - Added the hypervisor NIO code.
634     - Added Frame-Relay and ATM switches to the hypervisor commands.
635    
636     11-Mar-2006
637     -----------
638     - Played (successfully) with OIR (Online Insertion and Removal). OIR
639     will require device deletion...
640    
641     12-Mar-2006
642     -----------
643     - Fixed EEPROM code which used global variables.
644     - Added the necessary code for basic OIR.
645     - Added PCI device removal.
646    
647     15-Mar-2006
648     -----------
649     - A lot of work on C3600 integration (although it is not functional).
650     - Added a basic ns16552 driver.
651    
652     17-Mar-2006
653     -----------
654     - Added some hypervisor commands for PA setup and OIR.
655    
656     20-Mar-2006
657     -----------
658     - Hardened the Mueslix driver: after OIR, a "no shut" on a new interface
659     crashed the virtual router. Now, IRQ status is managed appropriately.
660    
661     24-Mar-2006
662     -----------
663     - Added ptask (periodic task) removal.
664     - Added a basic (nearly empty) C3600 IO FPGA chip.
665    
666     25-Mar-2006
667     -----------
668     - Added a NIO RX multiplexer.
669     - Added NIO unset operation for PA.
670    
671     26-Mar-2006
672     -----------
673     - Modified the virtual ATM/Frame-Relay switches and NIO bridge to use
674     the new NIO RX multiplexer.
675     - Added the NIO bridges to the hypervisor commands.
676     - Fixed a stupid bug in hypervisor ATM/FR switch command, the VC were
677     badly parsed.
678     - Fixed a memory leak in the hypervisor module (tokens not freed).
679    
680     27-Mar-2006
681     -----------
682     - Added appropriate locks to the ATM and Frame-Relay switches.
683     - Added VC removal for ATM and Frame-Relay switches.
684    
685     28-Mar-2006
686     -----------
687     - Added registry management to the ATM/FR switches and NIO bridge.
688    
689     30-Mar-2006
690     -----------
691     - Added a refcount system to the NIO RX multiplexer.
692    
693     31-Mar-2006
694     -----------
695     - Added NIO removal for NIO bridges.
696     - Added NIO bridge removal.
697     - Modified the NIO bridge code to use the registry infrastructure.
698     - Same as above, for ATM and Frame-Relay switches.
699    
700     03-Apr-2006
701     -----------
702     - Added the required infrastructure for online removal.
703     - Added hypervisor commands for PA removal and to display C7200 hardware.
704     - Fixed a bug in PCI device removal.
705     - It's now possible to change cards on the fly!
706     - The Mueslix driver was incorrectly modified: the TX ring scanner must
707     run even if the NIO is not defined.
708     - Modified the DEC21140 driver to report a Link Down when the NIO is not
709     defined.
710    
711     04-Apr-2006
712     -----------
713     - Added packet dump (for debugging) to NetIO receive/send operations.
714    
715     08-Apr-2006
716     -----------
717     - The SMP bug seems to be fixed! The irq_cause field is now manipulated
718     atomically (inline asm for x86 and x86_64, pthread mutex on other
719     machines).
720    
721     12-Apr-2006
722     -----------
723     - Added a VM abstraction layer (for different platforms).
724     - Fix of X86 assembly file for Cygwin.
725     - The IOS config file is now saved with a specific filename from the
726     VM instance.
727    
728     13-Apr-2006
729     -----------
730     - Added per-instance logfile.
731    
732     14-Apr-2006
733     -----------
734     - Fixed a stupid bug in non-JIT mode with IRQs.
735    
736     17-Apr-2006
737     -----------
738     - bugfix: "null" NIO creation didn't record the NIO in registry.
739     - bugfix: mueslix logging.
740     - bugfix: adding an NIO to the RX listener list (bad double linked-list)
741     - bugfix: bad fgets() use in NIO bridge and ATM/FR switches.
742    
743     18-Apr-2006
744     -----------
745     - bugfix: the same NIO could be recorded many times in the NIO RX
746     multiplexer due to bad design in NIO adding.
747    
748     19-Apr-2006
749     -----------
750     - Beginning of work on AMD Am79c971 ethernet controller (used by PA-4E
751     and PA-8E).
752    
753     20-Apr-2006
754     -----------
755     - The emulation of AMD Am79c971 seems to be working very well.
756     - Modified the physical memory dump function to use the VM log file.
757    
758     21-Apr-2006
759     -----------
760     - Modified the PA-4E/PA-8E EEPROM definitions to work with VXR midplanes.
761     - PA-4E is now usable.
762    
763     23-Apr-2006
764     -----------
765     - Added "shutdown" operation for PA-4E/PA-8E drivers.
766    
767     24-Apr-2006
768     -----------
769     - Enhanced lock file management (with POSIX locks).
770     - The devices are now dependent from VMs instead of being dependent
771     of CPU groups. This makes a lot of things cleaner.
772    
773     27-Apr-2006
774     -----------
775     - Added IRQ clearing with GT64K (DMA transfers).
776     - Study of GT64120 controller to understand address decoding process.
777    
778     28-Apr-2006
779     -----------
780     - Fixed a bug with NPE-175/NPE-225 PEM EEPROM selection.
781     - The NPE-400 is now able to support 512 Mb of DRAM! (the supplemental
782     memory is in fact considered as IO memory)
783     - Added a safety check with RAM size.
784     - The CPU identifier (PRID register) is now fixed depending on the NPE
785     board.
786    
787     01-May-2006
788     -----------
789     - Modified device subsystem to order devices by physical addresses,
790     optimized dev_lookup/dev_lookup_next.
791     - Added infrastructure for various object cleanup.
792     - Added "shutdown" code for SRAM, NVRAM, Bootflash, Zero, remote control
793     devices.
794     - Added CPU deletion support (incomplete).
795    
796     02-May-2006
797     -----------
798     - Added PCI bus removal.
799     - Added "shutdown" code for GT64010 and GT64120.
800     - Added CFC0/CTC0 instructions (R7000) and handling for associated
801     registers. TODO: customized vector spacing.
802    
803     04-May-2006
804     -----------
805     - Introduction of the new MTS64 subsystem!
806     - Note: incorrect uses of assert(), especially in insn_lookup.c module.
807    
808     05-May-2006
809     -----------
810     - Added a free list of chunks for MTS64 + some basic optimizations.
811     - Added basic PCI/HT stuff for SB-1 processor (dev_sb1_pci.c module).
812     - Added AP1011 (Sturgeon HyperTransport-PCI Bridge) device.
813     - Fixed masks for MFC0/MTC0 instructions, and added new definition for MFC0
814     to access set 1.
815     - Fixed incorrect uses of assert().
816    
817     07-May-2006
818     -----------
819     - Modified the console handling to be more efficient.
820     - Added global invalidation of the MTS64 cache.
821    
822     08-May-2006
823     -----------
824     - Added selective invalidation of the MTS64 cache (for TLB management).
825     - Added MTS64 statistics.
826     - Modified the MTS64 hash settings. Origin: shift: 12, hash_bits: 16.
827     Replaced by shift: 16, hash_bits: 12 -> more efficient and consumes
828     less memory! (logical since IOS uses large TLB entries).
829     - Modified cp0 module to use an abstraction layer for MTS access, allowing
830     32 or 64 bit modes.
831    
832     09-May-2006
833     -----------
834     - Fixed MTS64 on x86_64 machines.
835     - The clock divisor can now be set per VM and with an hypervisor command.
836    
837     10-May-2006
838     -----------
839     - Added "shutdown" code for RAM and ROM devices.
840     - Added VM object dump ("Ctrl-] + o")
841    
842     11-May-2006
843     -----------
844     - Bugfix: missing initialization of the address length parameter of accept()
845     in the main hypervisor module.
846     - Bugfix: missing initialization of registry memory pool (noticed with
847     Valgrind).
848     - Added NPE and midplane selections to the hypervisor.
849    
850     12-May-2006
851     -----------
852     - Added NIO deletion to the hypervisor.
853     - Fixed status message in hypervisor for object deletion.
854     - Added "sub" instruction (without exception support).
855    
856     14-May-2006
857     -----------
858     - Fixed CPU state change. It is now possible to reboot at any time using
859     "Ctrl-] + k".
860     - Added VTTY deletion.
861     - Added "c7200 stop" command to the hypervisor (not finished).
862     - The memory-mapped devices of port adapters are now enabled dynamically,
863     depending on the PCI BAR (Base Address Registers) settings. This avoids
864     use of hardcoded values.
865     - Integrated a patch from Philipp Brenner, which fixes ELF loading problem
866     on Cygwin when default text file type is set to DOS. Many thanks to him.
867     (symptom was: "load_elf_image: elf_begin: I/O error: raw read")
868    
869     15-May-2006
870     -----------
871     - Added "c7200 set_config" and "c7200 set_mac_addr" hypervisor commands.
872     - Fixed a stupid bug in PCI bus removal.
873     - Added more complete shutdown code.
874    
875     16-May-2006
876     -----------
877     - Fixed uninitialized MTS64 allocated entries (seen with Valgrind).
878     - Added missing unmapping of memory-mapped files (reported by Greg).
879     - The VTTY shutdown doesn't close stdin anymore (causing terminal
880     problems at exit).
881     - Fixed the shutdown procedure, added VM_STATUS_SHUTDOWN as status
882     for a VM. Adapted the virtual CPU synchronization.
883    
884     17-May-2006
885     -----------
886     - Some basic work on the hypervisor main modules (cleanup).
887    
888     19-May-2006
889     -----------
890     - bugfix: base MAC address setup broken (reported by Greg).
891     - Added global deletion of: ATM/FR switches, NetIO bridges, NetIO
892     descriptors, C7200 instances ...
893     - Added "hypervisor reset" command to go back to a clean state.
894    
895     20-May-2006
896     -----------
897     - Modified the CPU synchronization system which was not working correctly.
898    
899     21-May-2006
900     -----------
901     - bugfix: NIO unset in PA-4T+/PA-8T driver.
902     - Added C7200 PA cleanup code.
903    
904     22-May-2006
905     -----------
906     - Better handling of PA/NIO removal.
907     - Base MAC addresses are now generated automatically if not specified.
908     ("cafe.<instance_id>.0000")
909    
910     23-May-2006
911     -----------
912     - Added "VDE" NetIO type to connect to UML switches / Virtual Distributed
913     Ethernet switches.
914     - Some cleanups in NetIO code.
915     - Added shutdown code for MTS32/MTS64 (not used yet).
916    
917     24-May-2006
918     -----------
919     - Minor optimizations for non-JIT mode.
920     - bugfix: crash when dumping instruction block tree (JIT).
921     - Some memory leak fixes (again with Valgrind, definitely this tool rocks).
922     TOFIX: * clpd6729 + PCI I/O space (to check carefully).
923     * IO/supplemental memory created with dev_create_ram().
924     - Use of MTS shutdown code.
925    
926     25-May-2006
927     -----------
928     - The compressed IOS images were not booting anymore: fixed the MIPS config
929     register at startup (reported by Davide Brini).
930     - Minor code cleanup for MIPS CPU reset.
931     - I/O and supplemental memory are now created with dev_ram_init().
932     - bugfix: in PA shutdown code, the driver shutdown operation was called
933     even if the driver was not initialized.
934     - bugfix: order of memory freeing in c7200_free_instance() wasn't good,
935     producing a segfault (seen on windows machines).
936    
937     26-May-2006
938     -----------
939     - Played with the PA-POS-OC3 driver, it seems that it is working. Need
940     to check if the TX ring guess is correct (ie, with "routing" conditions).
941    
942     27-May-2006
943     -----------
944     - PA-POS-OC3: Fixed the TX ring part to work with multiple buffers. There
945     is still a problem with buffer addresses (doesn't work with platforms
946     using SRAM).
947    
948     29-May-2006
949     -----------
950     - Playing with ISDN emulation (PA-4B), and Munich32 chip. Interfaces
951     are only visible for now.
952    
953     30-May-2006
954     -----------
955     - Moved VM lockfile deletion to VM instance freeing function.
956     - Ugly hack to allow the POS driver to work with SRAM-based platforms.
957     - Added support for "VDE" NIO in hypervisor.
958     - Beginning of hypervisor documentation (README.hypervisor).
959    
960     31-May-2006
961     -----------
962     - Removed "c7200 trigger_oir" hypervisor command which was redundant.
963    
964     01-Jun-2006
965     -----------
966     - bugfix: fixed some reference counting leaks with default ATM and
967     Frame-Relay switches and NIO bridge.
968     - bugfix: DLCI were not announced in ascending order in LMI packets.
969     - studied a bit how to use larger bootflash sizes.
970    
971     02-Jun-2006
972     -----------
973     - DEC21140: Added multicast flag management for received frames.
974     - Debugging of ISL problem reported by Valentin.
975     - Added CRC-32 functions to the appropriate module.
976    
977     03-Jun-2006
978     -----------
979     - ISL is now working with DEC21140. It seems that to handle ISL, another
980     chip (FPGA ?) is present on PA-FE-TX and C7200-IO-FE to add the second
981     FCS field.
982     - Added basic disassembly code (need to do something more generic).
983    
984     04-Jun-2006
985     -----------
986     - Added virtual instruction "bnez" (basic optimization).
987     - Added RM7000 "mul" instruction (not tested).
988     - Added teq/teqi instructions to non-JIT mode.
989    
990     05-Jun-2006
991     -----------
992     - Added output packet exclusion to PCAP module (not possible with WinPCAP
993     though).
994     - Enhanced packet filtering in dec21140 emulation (for Windows users).
995     - bugfix: stupid cast problem in bootflash code preventing proper unmapping.
996     (seen with /proc/<pid>/maps on Linux).
997     - Added debugging message for device removal.
998     - bugfix: memory not freed / file not closed with ELF loader.
999     - bugfix: config register keeping the "ignore config" flag between instance
1000     reloads.
1001     - Added "c7200 set_conf_reg" hypervisor command.
1002     - ==> pre19
1003     - Experiment: Pending IRQ are now checked only at jump instructions.
1004    
1005     06-Jun-2006
1006     -----------
1007     - bugfix: bootflash not working anymore with previous bugfix.
1008     - Some optimizations for Program Counter (PC) handling in JIT mode.
1009     - Some optimizations for non-JIT mode (use of fastcalls).
1010     - Added a performance counter.
1011    
1012     07-Jun-2006
1013     -----------
1014     - Added configuration saving command for hypervisor
1015     ("hypervisor save_config <file>")
1016     - The SB-1 DUART is working, allowing NPE-G1 console to work :)
1017     - Environmental monitor working with NPE-G1.
1018     - NPE-G1 next priorities: Ethernet (because it delays boot) and NVRAM
1019     (seems to be at a different address?)
1020    
1021     08-Jun-2006
1022     -----------
1023     - NVRAM is now ok on NPE-G1 (it is at a different physical address).
1024    
1025     13-Jun-2006
1026     -----------
1027     - Optimizations on fast lw/sw operations (x86 only for now).
1028     - Changed offset size for branches (x86_jump32 instead of x86_jump8).
1029    
1030     14-Jun-2006
1031     -----------
1032     - Base MAC address now generated from PID and instance ID.
1033    
1034     15-Jun-2006
1035     -----------
1036     - Optimizations on fast lw/sw operations (x86_64).
1037     - bugfix: fixed console problems when using TCP mode on Windows platforms
1038     (Telnet, Putty). It just requires to ignore LF (Line Feed) character
1039     (BTS entry #4)
1040    
1041     16-Jun-2006
1042     -----------
1043     - bugfix: importing config to NVRAM was broken (device lookup was done on
1044     "cacheable" devices only in physmem* functions) (BTS entry #5)
1045    
1046     17-Jun-2006
1047     -----------
1048     - bugfix: memory not freed when using host memory to emulate virtual RAM.
1049     (BTS entry #8).
1050     - Minor enhancements to clpd6729 driver.
1051    
1052     19-Jun-2006
1053     -----------
1054     - Included a patch from Peter Ross (suxen_drol@hotmail.com) which allows
1055     to bind console and AUX ports to real serial ports. Many thanks to him.
1056    
1057     20-Jun-2006
1058     -----------
1059     - Playing with the PCMCIA stuff (especially CIS)
1060    
1061     21-Jun-2006
1062     -----------
1063     - Continuing on PCMCIA.
1064    
1065     22-Jun-2006
1066     -----------
1067     - The PCMCIA ATA disk is working, although the ATA command set is not
1068     completely implemented.
1069    
1070     23-Jun-2006
1071     -----------
1072     - Added virtual ethernet switch module.
1073     - bugfix: linux_eth file descriptor was not used correctly with NIO RXL.
1074     - Modified the ELF loader to use all sections.
1075    
1076     26-Jun-2006
1077     -----------
1078     - Modified the NIO RX handling (packet receiving is done in NIO module).
1079    
1080     27-Jun-2006
1081     -----------
1082     - bugfix: PA-4E/PA-8E not working with IOS 12.0T (incorrect device length).
1083     (BTS entry #17).
1084     - Some cleanups (untested though) in ATM and Frame-Relay switch modules
1085     (locking).
1086    
1087     29-Jun-2006
1088     -----------
1089     - Added support for 2nd ATA disk.
1090     - Added command line options for disk0: and disk1: ATA devices.
1091     By default, disk0: has a capacity of 64 Mb, disk1: is not defined.
1092     - Added hypervisor commands "c7200 set_disk0" and "c7200 set_disk1".
1093     - Fixed some mistakes and typos in documentation.
1094    
1095     30-Jun-2006
1096     -----------
1097     - Factorized code of fast memory operations to have something cleaner.
1098    
1099     02-Jul-2006
1100     -----------
1101     - Modified the JIT compiler to translate pages instead of "blocks"
1102     (improves performance).
1103    
1104     03-Jul-2006
1105     -----------
1106     - Some code cleanup for the new JIT compiler.
1107     - bugfix: PA-4T+/PA-8T not working with IOS 12.0T (incorrect device length).
1108     (BTS entry #23).
1109     - Added JIT flush to limit the memory used for translation. At this time,
1110     this is basic, we count the number of translated pages and we flush when
1111     this number reaches a threshold (512 pages seems to be a good value).
1112     - Integrated a patch from Philipp Brenner (BTS entry #21)
1113     Description: "In standard mode it intercepts SIGINT and sends a CTRL+C
1114     (0x03) to the target's vtty_con buffer, while in hypervisor mode it
1115     gracefully shuts down the hypervisor which causes the application to
1116     quit."
1117    
1118     04-Jul-2006
1119     -----------
1120     - Fixed a stupid bug in mts_cache (phys_page boundary not checked).
1121     - Optimized JIT flushing and insn block allocation.
1122     - Changed the maximum number of translated pages to 2048, which seems to
1123     be a more adequate value.
1124    
1125     05-Jul-2006
1126     -----------
1127     - Added an "exec zone" which is a pool of host executable pages. This
1128     zone is limited by default to 64 Mb for Linux/Unix and 16 Mb for Cygwin.
1129     When the zone is fully used, the JIT structures are flushed (removed the
1130     maximum number of translated pages).
1131     Now, there is no need to disable ExecShield or similar systems.
1132     - Added explicit error message when failing to open an ELF file.
1133     - Fixed getopt_long() usage.
1134     - Added CLI option "--exec-area <size>" to define exec zone size for the
1135     default VM.
1136    
1137     06-Jul-2006
1138     -----------
1139     - Added "tlbwr" (TLB Write Random) instruction and coprocessor 0 random
1140     register management.
1141     - Added "c7200 set_exec_area" hypervisor command.
1142     - Allowed the hypervisor to run on Windows 2000 machines (ip_listen()
1143     version is now ok for non-rfc2553 systems).
1144    
1145     07-Jul-2006
1146     -----------
1147     - Added command line help for "--exec-area" option.
1148     - Updated documentation.
1149    
1150     11-Jul-2006
1151     -----------
1152     - bugfix: missing pointer cleanup in c7200_pa_shutdown() (BTS entry #30)
1153     - bugfix: incomplete shutdown code for NIO (little memory leak + no
1154     freeing code for NIO with null type).
1155     - bugfix: memory leak in udp_connect() + incorrect error checking.
1156     - Added cleanup code for general log file.
1157     - bugfix: memory leak in hypervisor command execution.
1158     - Added logging for hypervisor commands.
1159     - Invalid instructions in delay slots are now properly handled by the JIT
1160     compiler (error message + CPU stop).
1161    
1162     13-Jul-2006
1163     -----------
1164     - Added an idle loop detector (--idle-pc CLI option + "Ctrl-] + i" key)
1165     - Added "c7200 set_idle_pc" hypervisor command.
1166    
1167     14-Jul-2006
1168     -----------
1169     - Updated documentation.
1170     - Checked the idle loop system on Windows and Linux x86_64, seems to be
1171     working correctly.
1172     - Added idle loop system to non-JIT mode.
1173     - Fixed a bug in "cache" instruction when used in non-JIT mode.
1174    
1175     16-Jul-2006
1176     -----------
1177     - Integrated a patch from Peter Ross (suxen_drol@hotmail.com) for the
1178     Makefile.
1179    
1180     17-Jul-2006
1181     -----------
1182     - bugfix: no empty mips64_emit_invalid_delay_slot() function for non-JIT
1183     build.
1184     - Added definition for mmap() MAP_ANONYMOUS flag for systems where only
1185     MAP_ANON is defined.
1186     - Accurate Timer IRQ (added --timer-itv parameter for tuning).
1187    
1188     18-Jul-2006
1189     -----------
1190     - Fixed inter-pages jumps in delay slots (reported by nula)
1191     - Added a check preventing to run the idle-pc feature when an idle-pc value
1192     is already defined (since it would give biased results).
1193     - bugfix: VTTY list not locked in vtty_create()
1194     - bugfix: ensure the CPU is running before incrementing pending timer IRQs.
1195     - Added a checklist for minimal C7200 hardware components. It checks good
1196     init of ram, rom, nvram and zero devices.
1197    
1198     19-Jul-2006
1199     -----------
1200     - Some work on JIT tuning (flush).
1201    
1202     20-Jul-2006
1203     -----------
1204     - Better info logging for VTTY and C7200 modules.
1205     - Added a debug level for VMs.
1206    
1207     21-Jul-2006
1208     -----------
1209     - Various code cleanups.
1210     - Added "c7200 set_debug_level" hypervisor command and "--vm-debug" command
1211     line option. Now, by default, less details are printed.
1212     - Fixed a bug with select() on Cygwin platform: before, only 64 FDs
1213     could be used.
1214    
1215     24-Jul-2006
1216     -----------
1217     - bugfix: accept_fd was not closed in VTTY module (BTS entry #42)
1218     - bugfix: properly handle CR/LF in configuration files (FR, ATM, ...)
1219     (BTS entry #36)
1220     - bugfix: accept fd not correctly printed in log file.
1221     - Added a mini-parser for hypervisor: allows directory with blanks, ...
1222     - bugfix: bad use of setsockopt() in the hypervisor.
1223    
1224     25-Jul-2006
1225     -----------
1226     - Added the capability to use Null NetIO with the hypervisor
1227     ("nio create_null" command).
1228     - Added a FIFO NetIO for intra-hypervisor communications.
1229     - Merged a patch from Peter Ross for incorrect idle-pc parsing with 64-bit
1230     values.
1231     - Non-JIT mode optimization for instruction fetch (although it could be
1232     enhanced again).
1233     - Various code cleanups.
1234    
1235     26-Jul-2006
1236     -----------
1237     - Added "ethsw clear_mac_addr_table" to clear MAC address table of a
1238     virtual ethernet switch.
1239     - Added "ethsw show_mac_addr_table" to show all MAC addresses learnt by
1240     a virtual ethernet switch.
1241     - Fixed a potential bug with jalr/jr instructions, where the stack is used
1242     to save the return PC. If the instruction in the delay slot returned
1243     directly to the jit main loop (exception,...), the stack would be in
1244     an inconsistent state. This fix is also required for Darwin/x86.
1245    
1246     27-Jul-2006
1247     -----------
1248     - Stack alignment for Darwin/x86 in memop functions and unknown opcode
1249     handling.
1250     - The Darwin/x86 build requires -mdynamic-no-pic as compilation option.
1251     - Fixed some inline assembly mistakes with "lock" prefix.
1252     - The Darwin/x86 port seems to be working correctly.
1253     - Fixed the amd64 version of "jr" instruction similarly to the x86 version
1254     (no problem with "jalr" in this case).
1255    
1256     29-Jul-2006
1257     -----------
1258     - Merged a patch from Peter Ross (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    
1266     31-Jul-2006
1267     -----------
1268     - Merged a parch from Peter Ross for correct handling of Ctrl-C when
1269     a TCP console is used.
1270     - Code cleanup (JIT usage flag per VM, ...)
1271     - C3600: implemented a working ns16552 console driver.
1272     - C3600: fixed clpd6719 driver.
1273     - C3600: working environmental monitor.
1274     - C3600: changed default RAM to 128 Mb.
1275     - Fixed clobbered registers on AMD64 platform ("r14" was missing).
1276    
1277     01-Aug-2006
1278     -----------
1279     - Added command line support for C3600 instances.
1280     - C3600: added appropriate deletion code.
1281     - C3600: added mainboard EEPROM support.
1282     - C3600: added bootflash of 8 Mb.
1283     - C3600: analyzed triggering of various IRQs.
1284    
1285     03-Aug-2006
1286     -----------
1287     - C3600: added NM EEPROM support, slot activation now depends on the NM
1288     state.
1289     - Fixed nmc93c46 EEPROM code to set the data out bit to a high value when
1290     not reading data (was required for C3600 NM EEPROM) + various bug-fixes
1291     and cleanups.
1292    
1293     04-Aug-2006
1294     -----------
1295     - C7200: some cleanups in PA function naming.
1296     - C7200: code refactoring for PA drivers.
1297     - C7200: ethernet stuff is now independent of dec21140 and am79c971 code.
1298     - C3600: added NM management stuff.
1299     - Mueslix serial stuff is now independent for C3600 and C7200.
1300     - C3600: added NM-1E, NM-1FE and NM-4T network modules.
1301     => problems: * no keepalive required for NM-1E/NM-1FE (media status ?)
1302     * NM-4T packet delivery failure when end of RX ring is hit.
1303    
1304     06-Aug-2006
1305     -----------
1306     - Modified Am79c971 MII registers to keep the link up in FastEthernet mode.
1307     - Merged a patch from Peter Ross for Console and AUX ports optimizations
1308     (especially with TCP mode)
1309     * console and aux FILE streams
1310     * reimplement vtty_read_and_store() as state machine:
1311     - parse telnet escape codes, instead of forwarding them to router.
1312     - display instance and router name in xterm/vt title bar.
1313     - Modified the Mueslix driver to have something working for both C3600 and
1314     C7200 models. Added some debugging info.
1315     - C3600: better ethernet NM code.
1316     - C3600: Added NM-4E (4 ethernet ports) network module.
1317    
1318     07-Aug-2006
1319     -----------
1320     - Fixed the remote control driver which incorrectly used static variables.
1321     - NVRAM address can now be known with the remote control driver.
1322     - Command line usage is now correctly displayed depending on the selected
1323     platform.
1324    
1325     08-Aug-2006
1326     -----------
1327     - Some work on PA-4B (Munich32 chip).
1328    
1329     09-Aug-2006
1330     -----------
1331     - Continuing on PA-4B (trying to understand TP3420).
1332    
1333     10-Aug-2006
1334     -----------
1335     - C7200: Added PA Mgmt IRQ support (required for PA-4B, seen on a real
1336     c7200 with PA-4B offered by Vernon Missouri).
1337     - Added TP3420 definitions.
1338    
1339     15-Aug-2006
1340     -----------
1341     - Continuing on PA-4B. Better understanding of the TX ring.
1342     Fixed interrupt queue management.
1343    
1344     19-Aug-2006
1345     -----------
1346     - Added hv_vm.c module to handle generic VM operations.
1347     - Added hv_c3600.c module for the Cisco 3600 platform.
1348     - Fixed a bug in VTTY flushing.
1349    
1350     20-Aug-2006
1351     -----------
1352     - Added code to gen_eth module for Cygwin to prevent WinPCAP from giving
1353     back transmitted packets. It requires WinPCAP 0.4-alpha1 or better.
1354     TODO: need to be tested!
1355    
1356     21-Aug-2006
1357     -----------
1358     - Fixed C3660 boot. Trying to understand/discover the hardware.
1359     Environmental monitor should be ok.
1360    
1361     24-Aug-2006
1362     -----------
1363     - Added NS16552 flush optimization (Peter Ross).
1364     - Fixed missing periodic task removal in NS16552.
1365    
1366     26-Aug-2006
1367     -----------
1368     - C3660: * Better understanding of NM presence / EEPROM registers.
1369     * Analyzed registers used when a Net IRQ is triggered.
1370    
1371     28-Aug-2006
1372     -----------
1373     - C3660: Network Modules are now working! Remaining stuff: OIR.
1374    
1375     29-Aug-2006
1376     -----------
1377     - Added more generic code to handle Cisco EEPROM to change easily
1378     chassis MAC addresses.
1379     - Updated README with C3600 information.
1380     - Updated hypervisor documentation (README.hypervisor).
1381     - Added dated package build to the Makefile (make packdev)
1382     - Checked WinPCAP fix of 20-Aug-2006: working.
1383     - Added the capability for high priority IRQ (like NetIO IRQ) to break
1384     the idle loop. Great latency improvement with NetIO IRQ.
1385     - C3600: the DUART irq is now higly prioritized. It gives better console
1386     reactivity.
1387    
1388     30-Aug-2006
1389     -----------
1390     - Huge performance improvement on dec21140 and am79c971 drivers, by
1391     transmitting up to 16 packets in one TX ring scan pass.
1392     - Added the same to Serial driver (untested).
1393     - Added "unicast limiter" feature to the am79c971 driver, similarly to the
1394     dec21140 driver. Not having this caused the virtual instances to see
1395     unrelated host traffic when using linux_eth/gen_eth NIO and consequently
1396     a bad performance was obtained. Thanks to Greg for noticing that.
1397     - Beginning of rework of PCI subsystem for PCI bridge support.
1398     (Greg noticed that with 12.2T releases, the PCI bus numbering is
1399     different for the C3660).
1400    
1401     31-Aug-2006
1402     -----------
1403     - Finished the PCI subsystem rework.
1404     - C7200: Fixed PCI bridge use for midplanes (std: dec21050, vxr: dec21150).
1405    
1406     01-Sep-2006
1407     -----------
1408     - Finally fixed the Serial problem on C3620 platform (hack in the driver
1409     to trigger interrupts differently).
1410     - Cleanup for VM PCI bus pool and C7200 "hidden" I/O bridge was missing.
1411    
1412     03-Sep-2006
1413     -----------
1414     - Added safety checks to the PCI bus management.
1415     - Added a PLX9060 device (very basic for now).
1416     - Rewritten the PA-POS-OC3 driver to use the new PLX9060 driver.
1417     - Cleanup: removed use of c7200 bay info in drivers (everything uses
1418     PCI for configuration).
1419     - C7200: removed the bay module which contained static definitions of
1420     PCI bus, physical addresses for PA, ... Now everything is handled
1421     dynamically by the PCI subsystem and the remaining drivers (PA-4B,
1422     PA-POS-OC3) have been fixed.
1423     - C3600: removed PCI bus info from the bay module (due to PCI bridge new
1424     code).
1425    
1426     04-Sep-2006
1427     -----------
1428     - Fixed some typos in comments.
1429     - Added a standalone utility to extract IOS configuration from an
1430     NVRAM file.
1431     - Removed pcireg.h (from NetBSD) which was just used for one definition.
1432     - Added a "COPYING" file for the GPLv2 licence.
1433    
1434     05-Sep-2006
1435     -----------
1436     - Added basic packet filtering framework, to simulate packet loss or
1437     alteration.
1438     - Hypervisor commands now supports a variable number of parameters.
1439     - bugfix: doing a "sh run" and then pressing "Escape" was causing trouble
1440     to the VTTY (the state machine was in an incorrect state).
1441    
1442     06-Sep-2006
1443     -----------
1444     - Removed erroneous special handling of intra-page jumps in delay slots.
1445     (problem with c3640 12.0(7)T IP+ image).
1446    
1447     07-Sep-2006
1448     -----------
1449     - C3600: processors ID are now correct.
1450     - Avoid removing the JIT block of the caller with the "cache" instruction.
1451     - Added "hypervisor version" to allow clients (Dynagen) to know the current
1452     version.
1453     - Added missing explanation for "-P <platform>" command line parameter.
1454     - C7200: Fixed incorrect cleanup of IO PCI bridge.
1455    
1456     08-Sep-2006
1457     -----------
1458     - Better code for VM error messages.
1459     - Fixed the write attempts to ROM at startup.
1460    
1461     09-Sep-2006
1462     -----------
1463     - C3600: added support for io memory size, which prevents Smart Init
1464     from running (hypervisor command: c3600 set_iomem <router> <val>).
1465     - C3600: fixed incorrect handling of commands for this platform, which
1466     caused port 0 to be disabled when manipulating other ports.
1467    
1468     11-Sep-2006
1469     -----------
1470     - Fixed loop overflow in idle pc computation.
1471     - Added base64 encoding/decoding module from Yannick Le Teigner.
1472     - Added hypervisor commands "vm push_config" and "vm extract_config"
1473     to manage IOS configurations. Extracting to base64 is ok (verified with
1474     a third party decoder:
1475     http://www.opinionatedgeek.com/dotnet/tools/Base64Decode/Default.aspx )
1476     - C3600: NVRAM checksum is now correctly computed.
1477    
1478     12-Sep-2006
1479     -----------
1480     - Following a suggestion of Yannick Le Teigner, applied the optimization
1481     principle to PA-A1 card already used in dec21140, ... Latency is clearly
1482     better (on my system, this dropped from about 150ms to 50 ms).
1483    
1484     14-Sep-2006
1485     -----------
1486     - Incorrect display of device name in PLX9060 driver.
1487     - Added manpages provided by Erik Wenzel (erik@debian.org). Many thanks
1488     to him for this and for his work on packaging for Debian.
1489 dpavlin 2 - Final 0.2.5 release.
1490     - C7200: Added missing NVRAM checksum.
1491    
1492     15/21-Sep-2006
1493     -----------
1494     - Working on NM-16ESW.
1495    
1496     22-Sep-2006
1497     -----------
1498     - NM-16ESW: interfaces are now up (handles specifically the appropriate
1499     MII register).
1500    
1501     23/25-Sep-2006
1502     --------------
1503     - Still continuing on the NM-16ESW (first packets received/transmitted).
1504    
1505     26-Sep-2006
1506     -----------
1507     - NM-16ESW: seems to be working! (although there are still a lot of things
1508     to do).
1509    
1510     28-Sep-2006
1511     -----------
1512     - Added a hack to allow Ethernet NM to work correctly in 3620/3640
1513     (seen when directly attached to the real network with very few packets
1514     incoming).
1515     - NM-16ESW: proper support for tx ring scatter/gather support.
1516     - NM-16ESW: fixed a bug in ARL insertion.
1517     - NM-16ESW: send directly BPDU packets to the CPU.
1518    
1519     29-Sep-2006
1520     -----------
1521     - NM-16ESW: added support for "trunks" (ie etherchannel).
1522     - Added "Ctrl+p" sequence key to dump Port Adapter / Network Module info
1523     (only NM-16ESW reports something at this time).
1524    
1525     30-Sep-2006
1526     -----------
1527     - NM-16ESW: proper management of station movement (etherchannel is handled).
1528    
1529     01-Oct-2006
1530     -----------
1531     - NM-16ESW: added register handling.
1532    
1533     02-Oct-2006
1534     -----------
1535     - NM-16ESW: playing with the port mirroring feature.
1536    
1537     04-Oct-2006
1538     -----------
1539     - Finally understood how to handle link status changes! Now,
1540     "shut"/"no shut" is working. Better understanding of MII registers
1541     in general.
1542    
1543     05-Oct-2006
1544     -----------
1545     - Fixed bug described in BTS entry #65 (in the case where two virtual
1546     addresses point at the same physical address, the JIT can use
1547     inappropriate block). This was a "silent" bug.
1548    
1549     07-Oct-2006
1550     -----------
1551     - Modified the hypervisor parser to allow long lines (to upload IOS configs).
1552    
1553     09-Oct-2006
1554     -----------
1555     - NM-16ESW: added ingress and egress port mirroring (todo: BPDU and CDP
1556     packets shouldn't be replicated).
1557 dpavlin 3
1558     10-Oct-2006
1559     -----------
1560     - 0.2.6-RC1 release.
1561     - NM-16ESW: implemented ARL count. Fixed the MAC address table display
1562     problems.
1563    
1564     11-Oct-2006
1565     -----------
1566     - C3600: fixed NVRAM configuration export.
1567     - Merged a patch for Solaris/x86 from Damjan Marion.
1568     - Cleaned the EEPROM stuff to have something more generic.
1569     - NM-16ESW: base MAC address is now automatically generated.
1570    
1571     12-Oct-2006
1572     -----------
1573     - NM-16ESW: added support to discard input packets.
1574    
1575     13-Oct-2006
1576     -----------
1577     - NM-16ESW: modified the discard support to let BPDU packets arrive to
1578     the CPU.
1579     - Added online setup of idle-pc through the hypervisor command
1580     "vm set_idle_pc_online <vm_name> <cpu_id>".
1581     - Values computed for idle-pc are now stored in the virtual MIPS CPU
1582     and can be known through the hypervisor command
1583     "vm show_idle_pc_prop <vm_name> <cpu_id>".
1584    
1585     15-Oct-2006
1586     -----------
1587     - Added a timer module.
1588     - NM-16ESW: added an ARL ager that removes expired MAC addresses.
1589    
1590     18-Oct-2006
1591     -----------
1592     - Added hypervisor commands to tune idle-pc parameters
1593     ("vm set_idle_max" and "vm set_idle_sleep_time").
1594     - Centralized NM/PA EEPROM to have common definitions for platforms
1595     with the same type of network interfaces.
1596     - 0.2.6-RC2 release.
1597 dpavlin 4
1598     19-Oct-2006
1599     -----------
1600     - C2691: added sketelon code.
1601     - C2691: working DUART.
1602     - C2691: added mainboard EEPROM.
1603    
1604     20-Oct-2006
1605     -----------
1606     - Bugfix: dec21140 and amd79c97x were incorrectly discarding frames based
1607     on the source address, preventing HSRP/VRRP to work (BTS entry #75).
1608     - C2691: added hypervisor module to handle instances.
1609    
1610     22-Oct-2006
1611     -----------
1612     - C2691: trying to understand the network interrupt mechanism.
1613    
1614     23-Oct-2006
1615     -----------
1616     - C2691: fixed Galileo interrupt (IRQ 3), allowing packets to be received!
1617     - Added a basic GT96100 system controller (for C2691).
1618     - GT96100: added MII registers.
1619     - Added a basic Flash device to be used as ROM+NVRAM for C2691.
1620     - C2691: NVRAM (simulated from flash) is now ok.
1621     - C2691: Analyzed environmental monitor register. No warning anymore.
1622    
1623     24-Oct-2006
1624     -----------
1625     - C2691: NVRAM config export is working, config import requires more work
1626     (since write operations to flash are not immediate).
1627     - Allowed Galileo DMA IRQ to preempt the idle loop.
1628     - Fixed ATA Flash "current of sectors per card" which must be in LSW/MSW
1629     order and not MSW/LSW.
1630     - Added another ATA Flash access method (for c2691).
1631     - C2691: added support for CompactFlash.
1632    
1633     25-Oct-2006
1634     -----------
1635     - GT96100: added some definitions for the Ethernet part.
1636    
1637     26-Oct-2006
1638     -----------
1639     - Working on TX part for GT96100. Unfortunately, don't know yet how to
1640     signal an interrupt for it on the 2691 platform :(
1641    
1642     27-Oct-2006
1643     -----------
1644     - C2691: found how to announce correctly NM presence in slot 1.
1645     - GT96100: finally found how to notify appropriately the network interrupt:
1646     the Serial Cause Register has to be handled.
1647     - C2691: added the glue code to set up GT96100 ethernet ports.
1648     - GT96100: added RX part. Packets are now sucessfully handled.
1649     - C2691: better understanding of network interrupt status registers.
1650     - C2691: added correct flash code detection.
1651     - GT96100: fixed the "PHY reset" problem.
1652     - C2691: added default correct chassis base MAC address.
1653    
1654     28-Oct-2006
1655     -----------
1656     - GT96100: added hash function (Mode 0 ok, Mode 1 to fix) for Ethernet
1657     address filtering + appropriate definitions.
1658    
1659     29-Oct-2006
1660     -----------
1661     - GT96100: fixed hash mode 1 (not tested).
1662     - GT96100: added address filtering process.
1663    
1664     30-Oct-2006
1665     -----------
1666     - GT96100: added minimal MIB counters.
1667     - Implemented LBA mode for PCMCIA ATA disk devices and fixed data access.
1668     - Changed the default idle sleep time from 50ms to 30ms to avoid timer
1669     IRQ loss and timer drift.
1670     - Added hypervisor command "vm show_timer_drift <vm_instance> <cpu_id>"
1671     to display potential problem with a given idle-pc value.
1672     - C2691: added proper support for IO memory.
1673     - NM-16ESW: generalized code to support multiple platforms.
1674     - C2691: added support for NM-16ESW.
1675    
1676     31-Oct-2006
1677     -----------
1678     - C3725: initial support. Hardware very similar to c2691: Cisco rocks!
1679     - C3745: added skeleton.
1680     - C3745: fixed GT96100 address.
1681     - C3745: added PCI bridges.
1682     - C3745: Network Modules are working!
1683     - C3745: CompactFlash working.
1684    
1685     01-Nov-2006
1686     -----------
1687     - C3745: finally understood how to handle the system EEPROMs.
1688     - Updated documentation (README).
1689     - GT96100: minor enhancement of interrupt handling.
1690    
1691     02-Nov-2006
1692     -----------
1693     - Added support for "ghost" RAM: instances use a RAM file (previously
1694     created) and use copy-on-write on it. It allows to share common memory
1695     between instances and so less memory is used.
1696    
1697     03-Nov-2006
1698     -----------
1699     - Better support for ghost RAM, added hypervisor commands
1700     "vm set_ghost_status" and "vm set_ghost_file".
1701    
1702     04-Nov-2006
1703     -----------
1704     - NM-16ESW: fixed incorrect BPDU handling (which caused to add a 2nd
1705     802.1Q tag to BPDU packets) and now 0100.0ccc.cccd is recognized as
1706     a BPDU MAC address (BTS entry #).
1707     - DEC21140: fixed CSR8 handling (missed frame counter), which returned
1708     an undefined value (BTS entry #81).
1709     - Merged a patch from Rostislav Opocensky who added support for C3600
1710     in nvram_export utility.
1711     - Re-enaebled debugging info for NM-16ESW on 2691/3600/37xx.
1712    
1713     05-Nov-2006
1714     -----------
1715     - NM-16ESW: fixed a crash due to incomplete device removal.
1716    
1717     06-Nov-2006
1718     -----------
1719     - Validated use of Serial interfaces with 2691/3725/3745.
1720     - Correct config register handling for 3600/2691/3725/3745 platforms
1721     (config register setting was ignored).
1722     - Added detection of empty NVRAM for 2691/3725/3745 to set the ignore config
1723     flag in the config register (to boot faster).
1724     - C3745: Fixed NVRAM properties.
1725     - C7200/C3600: rewrite of configuration push into NVRAM (can now be done
1726     offline).
1727     - C2691/C3725/C3745: added support for config push into ROM flash
1728     (simulated NVRAM).
1729    
1730     07-Nov-2006
1731     -----------
1732     - Modified config export from NVRAM for all platforms (can now be done
1733     offline).
1734     - Better handling of base MAC address (2691/3725/3745 + NM-16ESW).
1735    
1736     08-Nov-2006
1737     -----------
1738     - Rework of the MTS subsystem (generalization of MTS64 algorithms to MTS32
1739     which was broken).
1740     - Fast memory operations for 32-bit mode.
1741    
1742     09-Nov-2006
1743     -----------
1744     - Rewrite of the MIPS TLB lookup operation.
1745    
1746     10-Nov-2006
1747     -----------
1748     - Fixed another bug in TLB lookup.
1749     - Beginning of work for PA-MC-8TE1 support.
1750     - Added hypervisor commands to send messages to instances VTTY.
1751     - Working on PLX PCI9054 for PA-MC-8TE1.
1752    
1753     11-Nov-2006
1754     -----------
1755     - Continuing a bit on PA-MC-8TE1.
1756    
1757     14-Nov-2006
1758     -----------
1759     - Correct handling of VPN2 mask for TLB lookup.
1760     - bugfix: support of c3745 was missing in the hypervisor.
1761     - Merged a patch from Akim Dreyer for Debian support.
1762 dpavlin 5 - 0.2.6-RC3 release.
1763    
1764     15-Nov-2006
1765     -----------
1766     - C2691/C3725: fixed a crash occuring on some IOS images due to incorrect
1767     platform type.
1768     - Modified performance counter to have stats for instructions or blocks
1769     (cannot be used simultaneously).
1770     - "beq" jump code (x86) was incorrectly using non-local jump.
1771     - Bugfix: incorrect number of arguments for hypervisor commands related
1772     to ghost file handling.
1773     - 0.2.6-RC4 release.
1774    
1775 dpavlin 7 17-Nov-2006
1776 dpavlin 6 -----------
1777 dpavlin 7 - Major code cleanup to make devices independent from the virtual processors.
1778     - Generic CPU stuff.
1779    
1780     20-Nov-2006
1781     -----------
1782     - Merged of patch from Thomas Pani to list VM TCP console ports (required
1783 dpavlin 6 for gDynagen).
1784     - NM-16ESW: fixed (again) BPDU handling (incorrect VLAN tagging with non
1785 dpavlin 7 trunk ports).
1786     - Very minimal PowerPC definitions. Only non-JIT mode at this time.
1787     - PPC: added "crorc", "cror", "crnor", "crnand", "crandc", "crand".
1788     - PPC: added "and", "andc", "andi", "andis", "creqv", "crxor".
1789     - PPC: added "eqv", "isync", "mfmsr", "mtmsr", "nand", "nor", "or", "orc".
1790     - PPC: added "ori", "oris", "sync", "xor", "xori", "xoris", "mfcr".
1791     - PPC: added "addi", "addis".
1792    
1793     21-Nov-2006
1794     -----------
1795     - PPC: added "cmp", "cmpl", "cmpi", "cmpli", "extsb", "extsh".
1796     - PPC: added "add", "add.", "and.", "andc.", "extsb.", "extsh.".
1797     - PPC: added a dummy memory access function (does nothing yet).
1798     - PPC: added "lbz", "lbzu", "lbzux", "lbzx".
1799     - PPC: added "lhz", "lhzu", "lhzux", "lhzx".
1800     - PPC: added "lwz", "lwzu", "lwzux", "lwzx".
1801     - PPC: added "stb", "stbu", "stbux", "stbx".
1802     - PPC: added "sth", "sthu", "sthux", "sthx".
1803     - PPC: added "stw", "stwu", "stwux", "stwx".
1804     - PPC: added "xor.", "b", "ba", "bl", "bla".
1805     - bugfix: hypervisor commands specific to CPU crashed if the VM was not
1806     started (noticed by Greg).
1807    
1808     22-Nov-2006
1809     -----------
1810     - PPC: added "addo", "addo.", "addc", "addc.", "addco", "addco."
1811     - PPC: added "addic", "addic.", "adde", "adde.", "addeo", "addeo."
1812     - PPC: added "neg", "neg.", "nego", "nego.", "nand.", "nor.", "or.", "orc."
1813     - PPC: added "slw", "slw.", "srw", "srw."
1814    
1815     23-Nov-2006
1816     -----------
1817     - PPC: added "rlwimi", "rlwimi.", "rlwinm", "rlwinm.", "rlwnm", "rlwnm."
1818    
1819     24-Nov-2006
1820     -----------
1821     - PPC: added "mulhw", "mulhw.", "mulhwu", "mulhwu.", "mulli".
1822     - PPC: added "mullw", "mullw.", "mullwo", "mullwo."
1823     - PPC: added "subf", "subf.", "subfo", "subfo."
1824     - PPC: added "bc", "bca", "bcl", "bcla", "bclr", "bclrl".
1825     - PPC: added minimal memory operation glue code.
1826    
1827     25-Nov-2006
1828     -----------
1829     - PPC: added dump functions for MMU registers.
1830     - PPC: added support for BAT registers.
1831    
1832     26-Nov-2006
1833     -----------
1834     - PPC: fixed branch offset computation.
1835     - PPC: added a dummy virtual machines for tests.
1836     - PPC: fixed bclrx opcodes.
1837     - PPC: added "mflr", "mtlr".
1838    
1839     27-Nov-2006
1840     -----------
1841     - PPC: fixes in comparison functions.
1842     - PPC: added "subfc", "subfc.", "subfco", "subfco."
1843    
1844     28-Nov-2006
1845     -----------
1846     - PPC: added "subfic", "mfctr".
1847     - PPC: fixed a lot of bugs.
1848    
1849     29-Nov-2006
1850     -----------
1851     - PPC: added "rfi", "lha", "lhau", "lhaux", "lhax", "addze", "addme".
1852     - PPC: fixed "mtcrf".
1853    
1854     30-Nov-2006
1855     -----------
1856     - Added IRQ routing vectors for virtual machines.
1857    
1858     01-Dec-2006
1859     -----------
1860     - Playing with NPE-G2, just for fun.
1861    
1862     02-Dec-2006
1863     -----------
1864     - NPE-G2: environmental monitor is now working!
1865    
1866     03-Dec-2006
1867     -----------
1868     - PPC: added an empty MV64460 controller (need the datasheet).
1869     - PPC: added "lmw" instruction, fixed "stmw".
1870     - PPC: added "cntlzw".
1871    
1872     05-Dec-2006
1873     -----------
1874     - NPE-G2: analyzed midplane data: this is similar to other NPE.
1875     - Added a basic PLX6520CB PCI bridge.
1876     - NPE-G2: added appropriate PCI bridges and PCI busses for Port Adapters.
1877    
1878     06-Dec-2006
1879     -----------
1880     - NPE-G2: added PCI I/O space.
1881     - NPE-G2: added CLPD6729, it is now possible to use PCMCIA ATA disks.
1882    
1883     08-Dec-2006
1884     -----------
1885     - MV64460: added ugly experimental SDMA support to have a console for the
1886     NPE-G2 (using the GT96100A datasheet). This code must be rewritten.
1887     - MV64460/NPE-G2: playing with the various IRQs.
1888    
1889     09-Dec-2006
1890     -----------
1891     - PPC: added idle-pc support.
1892    
1893     10-Dec-2006
1894     -----------
1895     - PPC: added virtual breakpoint support.
1896    
1897     15-Dec-2006
1898     -----------
1899     - PPC: added functions to manually set up page tables.
1900     - MV64460: added more interrupt definitions (with help of GT96100A manual).
1901    
1902     19-Dec-2006
1903     -----------
1904     - MV64460: fixed interrupt loss problem.
1905    
1906     20-Dec-2006
1907     -----------
1908     - Basic port of the microcode for the PowerPC platforms. IOS now starts
1909     normally (like the MIPS64 platforms).
1910    
1911     21-Dec-2006
1912     -----------
1913     - NPE-G2: found OIR IRQ.
1914     - MV64460: added more definitions (for SDMA).
1915     - Cleanup of MIPS64 JIT code (better naming).
1916    
1917     22-Dec-2006
1918     -----------
1919     - PPC32: added the minimal JIT core infrastructure.
1920     - PPC32-JIT: added unknown opcode handling.
1921     - PPC32-JIT: added some instructions.
1922    
1923     23-24-Dec-2006
1924     --------------
1925     - PPC32-JIT: added more instructions.
1926    
1927     26-Dec-2006
1928     -----------
1929     - PPC32-JIT: continuing...
1930    
1931     27-Dec-2006
1932     -----------
1933     - PPC32-JIT: added fast memory operations.
1934    
1935     28-Dec-2006
1936     -----------
1937     - Added PPC32 nojit support.
1938     - PPC32: better checking for IRQs.
1939    
1940     29-Dec-2006
1941     -----------
1942     - PPC32-JIT: added "amd64" support.
1943     - PPC32: added "lwbrx" and "stwbrx" instructions.
1944    
1945     30-Dec-2006
1946     -----------
1947     - PPC32: added "tw"/"twi" instructions.
1948     - PPC32: added TLB support for PowerPC 405.
1949     - PPC32: added "tlbre", "tlbwe", "iccci", "dccci", "mfdcr", "mtdcr" for
1950     PowerPC 405.
1951     - Fixed a bug with ILT tables (incorrect count - last entry was missing).
1952    
1953     31-Dec-2006
1954     -----------
1955     - PPC32: added "dcbst" instruction.
1956    
1957     05-Jan-2007
1958     -----------
1959     - NPE-G2: correct handling of DUART interrupt with I/O card.
1960    
1961     07-Jan-2007
1962     -----------
1963     - NPE-G2: correct console selection (NPE or I/O board) depending on slot 0.
1964     - PPC32: fixup for decrementer interrupt.
1965     - Generic CPU MTS rebuild (mips64/ppc32).
1966     - Split of memory.c / mips64_mem.c. memory.c will only contain generic
1967     functions independent of the CPU model.
1968     - Memlogger is now independent of CPU type (untested).
1969    
1970     08-Jan-2007
1971     -----------
1972     - Rewrite of the MTS subsystem to have less overhead with inlined
1973     operations -> better performance.
1974    
1975     09