1 |
$Id: TODO,v 1.125 2005/03/06 08:21:10 debug Exp $ |
$Id: TODO,v 1.139 2005/06/23 06:55:43 debug Exp $ |
2 |
|
|
3 |
Here's a short list of what I have left to do on GXemul. This file is a mess. |
Here's a short list of what I have left to do on GXemul. This file is a mess. |
4 |
Order is random. Don't trust it to be up-to-date. |
Order is random. Don't trust it to be up-to-date. |
5 |
|
|
|
|
|
6 |
Caches / memory hierarchies: (this is mostly MIPS-specific) |
Caches / memory hierarchies: (this is mostly MIPS-specific) |
7 |
o) MIPS coproc.c: bits in config registers should reflect |
o) MIPS coproc.c: bits in config registers should reflect |
8 |
correct cache sizes for _all_ CPU types. (currently only |
correct cache sizes for _all_ CPU types. (currently only |
26 |
Network layer: |
Network layer: |
27 |
o) Multiple networks per emulation, and let different |
o) Multiple networks per emulation, and let different |
28 |
NICs in machines connect to different networks. |
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. |
|
29 |
o) many other issues: see src/net.c |
o) many other issues: see src/net.c |
30 |
|
|
|
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) |
|
|
|
|
31 |
CPU emulation: |
CPU emulation: |
32 |
o) Binary translation: |
o) Binary translation: |
33 |
+) use an Intermediate Representation! |
+) use an Intermediate Representation! |
36 |
+) on Alpha: don't assume pca56-like byte load/store? |
+) on Alpha: don't assume pca56-like byte load/store? |
37 |
+) write backends for UltraSparc and MIPS |
+) write backends for UltraSparc and MIPS |
38 |
+) see src/bintrans.c for more info |
+) see src/bintrans.c for more info |
39 |
|
o) Dynamic-but-not-binary translation? |
40 |
|
o) All the non-MIPS modes need a bit of work. |
41 |
|
|
42 |
MIPS CPU emulation: |
MIPS CPU emulation: |
43 |
o) Instructions: |
o) Instructions: |
81 |
+) Own experiments with ycx2. |
+) Own experiments with ycx2. |
82 |
|
|
83 |
Emulation of specific machines and devices: |
Emulation of specific machines and devices: |
|
o) Clean up stuff to make it possible to emulate multiple |
|
|
(different) machines simultaneously. |
|
84 |
o) Use same clock for all emulations and machines. |
o) Use same clock for all emulations and machines. |
85 |
o) Clean up the device stuff (registering of devices etc) |
o) Clean up the device stuff (registering of devices etc) |
86 |
o) Various SCSI and IDE controllers |
o) Various SCSI and IDE controllers |
113 |
x) Memory/interrupt controllers |
x) Memory/interrupt controllers |
114 |
x) IP30 (Linux with graphics support?) |
x) IP30 (Linux with graphics support?) |
115 |
x) SMP / NUMA? (SGI and various ARC machines) |
x) SMP / NUMA? (SGI and various ARC machines) |
|
o) Cobalt: PCI and interrupt system, ethernet, |
|
|
harddisk controller(s) |
|
116 |
o) Playstation 2: |
o) Playstation 2: |
117 |
Hardware: OHCI usb controller, keyboard, IDE, ... |
Hardware: OHCI usb controller, keyboard, ... |
|
Has an R3000A as a subsystem (!) |
|
|
o) hpcmips: framebuffer(s) and harddisk controller, |
|
|
among other things |
|
|
o) newsmips: |
|
|
o) NetBSD/newsmips, get it to detect a "real" |
|
|
model, right now everything is 100% bogus |
|
118 |
o) Less interesting platforms: |
o) Less interesting platforms: |
119 |
|
o) newsmips: |
120 |
|
o) NetBSD/newsmips, get it to detect a "real" |
121 |
|
model, right now everything is 100% bogus |
122 |
o) mipsco? (NetBSD) |
o) mipsco? (NetBSD) |
123 |
o) wgrisc? (big endian R3000, in OpenBSD's attic) |
o) wgrisc? (big endian R3000, in OpenBSD's attic) |
124 |
o) other embedded / evaluation MIPS boards |
o) other embedded / evaluation MIPS boards |
129 |
|
|
130 |
File/disk handling: |
File/disk handling: |
131 |
o) Read function argument count and types from binaries? (ELF?) |
o) Read function argument count and types from binaries? (ELF?) |
|
o) ELF: separate LE/BE (MIPS instruction format) from LSB/MSB |
|
|
(ELF structure format)? |
|
132 |
o) Better handling of tape files |
o) Better handling of tape files |
133 |
|
|
134 |
Userland ABI emulation: |
Userland ABI emulation: |
137 |
Terminal based interactive debugger: |
Terminal based interactive debugger: |
138 |
o) see src/debugger.c |
o) see src/debugger.c |
139 |
|
|
140 |
GDB interface? (Maybe not necessary; the built-in debugger feels |
Terminal/console stuff: |
141 |
more useful.) |
o) allow emulated serial ports to be connected to the outside |
142 |
|
world in a more generic way, or even to other emulated |
143 |
GUI, interactive debugger? GTK+? (The GUI _must be optional_!) |
machines(!) |
|
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. |
|
144 |
|
|
145 |
Regression tests: |
Regression tests: (Should be totally rewritten.) |
146 |
o) see tests/ |
o) see tests/ |
147 |
|
|
148 |
Save state of the whole emulated machine, to be able to load it back |
Save state of the whole emulated machine, to be able to load it back |