1 |
$Id: TODO,v 1.166 2005/08/16 05:44:33 debug Exp $ |
$Id: TODO,v 1.176 2005/11/13 00:14:05 debug Exp $ |
2 |
|
|
3 |
=============================================================================== |
NOTE: This TODO is hopefully out-of-date. I don't keep it updated. |
|
|
|
|
High priority stuff: |
|
4 |
|
|
5 |
|
=============================================================================== |
6 |
|
|
7 |
MIPS bintrans: |
Old MIPS bintrans: |
8 |
x) call/return address cache? |
x) call/return address cache? |
9 |
|
x) Turn the MIPS cpu family stuff into dyntrans. |
10 |
|
|
11 |
dyntrans: |
Dyntrans: |
12 |
x) memory write protection for ARM, but NOT for Alpha (because |
x) Separate data and instruction translations? |
13 |
it has the IMB instruction... hm) |
x) Generalize the inline quick_pc_to_pointers? |
14 |
|
x) Call/return hints... |
15 |
x) call/return address cache |
x) More 64-bit stuff. |
16 |
|
x) Lots of other stuff: see src/cpus/README_DYNTRANS |
17 |
x) instr_call sequence analysis support? (Useful for |
|
18 |
handtuning combinations.) |
Userland emulation: |
19 |
|
x) Lots of stuff. |
20 |
x) opcode statistics support? |
x) Dynamic linking? Hm. |
|
TODO: is instr_call statistics enough? |
|
|
|
|
|
x) support for archs that allow transparent unaligned load/stores |
|
|
|
|
|
x) SMP: detect when an instruction such as ll/sc or cas is used, |
|
|
and "synchronize" approximately the number of executed instructions |
|
|
(or cycles) across all CPUs. |
|
|
|
|
|
x) support for variable-length instructions (x86, m68k, ...) |
|
|
Perhaps: don't increase the next_ic between every |
|
|
instruction, but let each instruction's handler do |
|
|
that for itself. |
|
|
Problem: what about instructions crossing a (virtual) |
|
|
page boundary? They cannot be translated once |
|
|
and for all :( and must be interpreted slowly! |
|
|
|
|
|
x) support for THUMB or MIPS16 (arm, mips) |
|
|
|
|
|
x) support for Delay slots! (mips, sparc, hppa) |
|
|
|
|
|
x) Alpha: hahaha, zapnot and inserts/extracts don't |
|
|
compile into very nice code :-| fix this |
|
|
|
|
|
x) 64-bit virtual memory translation tables (PPC, etc) |
|
|
|
|
|
x) x86: convert to dyntrans. LOTS of stuff to consider. |
|
|
|
|
|
|
|
|
=============================================================================== |
|
|
|
|
|
Lower priority, but still important: |
|
21 |
|
|
22 |
|
Misc: |
23 |
Redesign the entire "mainbus" concept: |
Redesign the entire "mainbus" concept: |
24 |
o) Easily configurable interrupt routing in SMP systems. |
o) Easily configurable interrupt routing in SMP systems. |
25 |
o) Specific clock/bus speeds, cpu speeds etc. |
o) Specific clock/bus speeds, cpu speeds etc. |
101 |
Debugger: |
Debugger: |
102 |
o) Read function argument count and types from binaries? (ELF?) |
o) Read function argument count and types from binaries? (ELF?) |
103 |
o) Demangle C++ names. |
o) Demangle C++ names. |
104 |
|
o) see src/debugger.c for more stuff |
105 |
|
|
106 |
Userland ABI emulation: |
Userland ABI emulation: |
107 |
o) see src/useremul.c |
o) see src/useremul.c |
108 |
|
|
|
Terminal based interactive debugger: |
|
|
o) see src/debugger.c |
|
|
|
|
109 |
Terminal/console stuff: |
Terminal/console stuff: |
110 |
o) allow emulated serial ports to be connected to the outside |
o) allow emulated serial ports to be connected to the outside |
111 |
world in a more generic way, or even to other emulated |
world in a more generic way, or even to other emulated |