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