--- trunk/TODO 2007/10/08 16:18:00 4 +++ trunk/TODO 2007/10/08 16:18:27 10 @@ -1,9 +1,8 @@ -$Id: TODO,v 1.127 2005/04/15 21:39:54 debug Exp $ +$Id: TODO,v 1.139 2005/06/23 06:55:43 debug Exp $ Here's a short list of what I have left to do on GXemul. This file is a mess. Order is random. Don't trust it to be up-to-date. - Caches / memory hierarchies: (this is mostly MIPS-specific) o) MIPS coproc.c: bits in config registers should reflect correct cache sizes for _all_ CPU types. (currently only @@ -27,21 +26,8 @@ Network layer: o) Multiple networks per emulation, and let different NICs in machines connect to different networks. - o) Network across multiple hosts. - o) Fixed MAC addresses for NICs, fixed IPv4 addresses if - DHCP or RARP is used. o) many other issues: see src/net.c - Configure script: - o) Only enable Alpha prefetch on pca56 etc, not on ev4, ev5. - o) Use getopts? - o) X11 libs and headers via command line option? - o) Verify that the configure script, building and running - the emulator works on some platforms: - +) Irix, AIX, QNX - +) MacOS X (I've not tried this personally yet) - +) Ultrix using gcc? (Inside the emulator) - CPU emulation: o) Binary translation: +) use an Intermediate Representation! @@ -50,6 +36,7 @@ +) on Alpha: don't assume pca56-like byte load/store? +) write backends for UltraSparc and MIPS +) see src/bintrans.c for more info + o) Dynamic-but-not-binary translation? o) All the non-MIPS modes need a bit of work. MIPS CPU emulation: @@ -94,8 +81,6 @@ +) Own experiments with ycx2. Emulation of specific machines and devices: - o) Clean up stuff to make it possible to emulate multiple - (different) machines simultaneously. o) Use same clock for all emulations and machines. o) Clean up the device stuff (registering of devices etc) o) Various SCSI and IDE controllers @@ -130,8 +115,6 @@ x) SMP / NUMA? (SGI and various ARC machines) o) Playstation 2: Hardware: OHCI usb controller, keyboard, ... - o) Cobalt: PCI and interrupt system, ethernet, - harddisk controller(s) o) Less interesting platforms: o) newsmips: o) NetBSD/newsmips, get it to detect a "real" @@ -143,14 +126,9 @@ No FPU, but something as coproc 2. o) Nintendo 64, http://www.nintendo.com/systems/n64/n64_specs.jsp (R4300, 4MB RAM, really weird memory map) - o) non-MIPS File/disk handling: - o) More than one type of disk in a machine (say, IDE + FLOPPY, - or SCSI + IDE); how to handle this nicely? o) Read function argument count and types from binaries? (ELF?) - o) ELF: separate LE/BE (MIPS instruction format) from LSB/MSB - (ELF structure format)? o) Better handling of tape files Userland ABI emulation: @@ -159,25 +137,12 @@ Terminal based interactive debugger: o) see src/debugger.c - GDB interface? (Maybe not necessary; the built-in debugger feels - more useful.) - - GUI, interactive debugger? GTK+? (The GUI _must be optional_!) - o) Breakpoints (complex expressions? combinations of register - states, memory accesses and so on) - o) Instruction trace - o) Disassembly of RAM (_NOT_ the same as instruction trace) - o) Function call trace - o) Inspection of CPU registers/state, coprocessor - registers/state, any device registers/state/contents - o) Framebuffers in windows / tabs. - o) Contents of RAM - o) "Start new emulation" should allow amount of - RAM and nr of cpus to easily be specified. - Multiple simultaneous machines should be possible. - o) Disk images. + Terminal/console stuff: + o) allow emulated serial ports to be connected to the outside + world in a more generic way, or even to other emulated + machines(!) - Regression tests: + Regression tests: (Should be totally rewritten.) o) see tests/ Save state of the whole emulated machine, to be able to load it back