1 |
$Id: TODO,v 1.324 2006/07/22 10:23:39 debug Exp $ |
$Id: TODO,v 1.343 2006/08/14 18:46:30 debug Exp $ |
2 |
|
|
3 |
Hm. This file is in random order, and not all parts of it are up-to-date. |
Hm. This file is in random order, and not all parts of it are up-to-date. |
4 |
|
|
5 |
Code cleanup: |
|
6 |
|
Implementation: |
7 |
|
x) ARM "wait"-like instruction. |
8 |
|
x) CLOCK FRAMEWORK! |
9 |
|
x) Mouse support for NetBSD/pmax 4.x! |
10 |
|
x) See netwinder_reset() in NetBSD; the current "an internal error |
11 |
|
occured" message after reboot/halt is too ugly. |
12 |
x) 64-bit ranges in src/cpus/memory_mips_v2p.c |
x) 64-bit ranges in src/cpus/memory_mips_v2p.c |
13 |
x) Revert the dyntrans page template experiment? Hm. |
x) Revert the dyntrans page template experiment? Hm. |
14 |
x) Refactor the cpu type detection/initialization/listing. |
x) Refactor the cpu type detection/initialization/listing. |
15 |
|
Macro, which can be used as long as the cpu definitions |
16 |
Documentation: |
contain a 'name'? |
|
x) Rewrite the section about experimental devices, after the |
|
|
framebuffer acceleration has been implemented, and demos |
|
|
written. (Symbolic names instead of numbers; example |
|
|
use cases, etc. Mention demo files that use the various |
|
|
features?) |
|
|
x) "a very simple linear framebuffer device (for graphics output)" |
|
|
under "which machines does gxemul emulate" ==> better |
|
|
description? |
|
|
x) Better description on how to set up a cross compiler? |
|
|
Example for MIPS64. |
|
|
|
|
|
Long-term implementation: |
|
17 |
x) Testmachine includes: |
x) Testmachine includes: |
18 |
+ dev_fb block fill and copy |
+ dev_fb block fill and copy |
19 |
+ dev_fb draw characters (from the built-in font)? |
+ dev_fb draw characters (from the built-in font)? |
24 |
for (;;) { |
for (;;) { |
25 |
halt(); |
halt(); |
26 |
} |
} |
|
x) Rewrite the networking stack; make OpenBSD work better as a guest |
|
|
OS, fix the performance problems, make Linux work with DHCP, etc. |
|
|
x) Make the wdc controller work with modern versions of NetBSD! |
|
27 |
x) Continue on SPARC emulation |
x) Continue on SPARC emulation |
28 |
+ Enable it in the configure script as soon as it can |
+ Enable it in the configure script as soon as it can |
29 |
run all the demo programs. |
run all the demo programs. |
30 |
x) Continue on Alpha emulation (virtual memory, etc). Cleanup. |
x) Continue on Alpha emulation (virtual memory, etc). Cleanup. |
31 |
|
x) Nicer MIPS status bits in register dumps. |
32 |
x) Alignment exceptions (MIPS, PPC, ARM?, ...) |
x) Alignment exceptions (MIPS, PPC, ARM?, ...) |
33 |
|
x) Rewrite the networking stack; make OpenBSD work better as a guest |
34 |
|
OS, fix the performance problems, make Linux work with DHCP, etc. |
35 |
|
Support VDE (vde.sf.net)? Allow SLIP connections, possibly PPP, |
36 |
|
in addition to ethernet? |
37 |
|
x) Implement more ethernet NICs. |
38 |
|
x) IOP (I2O) device? |
39 |
|
|
40 |
|
Documentation: |
41 |
|
x) "Install netbsd/pmax first" => only use the install kernel? |
42 |
|
x) Rewrite the section about experimental devices, after the |
43 |
|
framebuffer acceleration has been implemented, and demos |
44 |
|
written. (Symbolic names instead of numbers; example |
45 |
|
use cases, etc. Mention demo files that use the various |
46 |
|
features?) |
47 |
|
x) "a very simple linear framebuffer device (for graphics output)" |
48 |
|
under "which machines does gxemul emulate" ==> better |
49 |
|
description? |
50 |
|
x) Better description on how to set up a cross compiler? |
51 |
|
Example for MIPS64. |
52 |
|
|
53 |
Long-term design: |
Long-term design: |
54 |
x) Instruction combination collisions? How to avoid easily... |
x) Instruction combination collisions? How to avoid easily... |
55 |
|
x) Think about how to do both SHmedia and SHcompact in a reasonable |
56 |
|
way! |
57 |
o) Actually use the settings object, better debugger stuff, etc! |
o) Actually use the settings object, better debugger stuff, etc! |
58 |
o) Debugger command for enabling/disabling instruction statistics |
o) Debugger command for enabling/disabling instruction statistics |
59 |
during runtime. machine.statistics = on|off |
during runtime. machine.statistics = on|off |
60 |
x) MAINBUS REDESIGN! |
x) MAINBUS REDESIGN! |
61 |
|
x) PCI redesign... I need to read up on how PCI actually works :) |
62 |
x) Clock framework! Go through all clock devices, make sure they |
x) Clock framework! Go through all clock devices, make sure they |
63 |
return correct data, and run at correct speeds! |
return correct data, and run at correct speeds! |
64 |
x) Dyntrans with valgrind-inspired memory checker. (In memory_rw, |
x) Dyntrans with valgrind-inspired memory checker. (In memory_rw, |
69 |
x) Dyntrans with cache emulation... lots of work here as well. |
x) Dyntrans with cache emulation... lots of work here as well. |
70 |
x) Reimplement the config file parser from scratch. |
x) Reimplement the config file parser from scratch. |
71 |
|
|
|
Test: |
|
|
x) Test with more than one Sprite instance on an emulated network! |
|
|
x) NetBSD 4.x, once it is out. |
|
|
|
|
72 |
------------------------------------------------------------------------------- |
------------------------------------------------------------------------------- |
73 |
|
|
74 |
Simple Valgrind-like checks? |
Simple Valgrind-like checks? |
97 |
|
|
98 |
MIPS: |
MIPS: |
99 |
+) Some more work on opcodes. |
+) Some more work on opcodes. |
100 |
|
x) The "wait" instruction. How to implement this functionality? |
101 |
|
(SMP, non-MIPS, interrupt correctness, host idling, ...) |
102 |
x) MIPS64 revision 2. |
x) MIPS64 revision 2. |
103 |
o) Find out which actual CPUs implement the rev2 ISA! |
o) Find out which actual CPUs implement the rev2 ISA! |
104 |
x) _MAYBE_ TX79 and R5900 actually differ in their |
x) _MAYBE_ TX79 and R5900 actually differ in their |
105 |
opcodes? Check this carefully! |
opcodes? Check this carefully! |
106 |
o) Dyntrans: Count register updates are probably not 100% correct yet. |
o) Dyntrans: Count register updates are probably not 100% correct yet. |
107 |
o) Refactor code for performance and readability/maintainability. |
o) Refactor code for performance and readability/maintainability. |
|
o) Instruction combinations? Possible candidates (but profile first!): |
|
|
o) R2000/R3000 cache cleaner! |
|
|
o) strlen, memset loops etc |
|
|
o) multiple loads/stores in a row, e.g. relative to |
|
|
the stack pointer |
|
|
o) lui + or, lui + add, and 64-bit variants |
|
|
o) jr ra + addiu to the v0 register? |
|
|
o) compare + branch |
|
108 |
o) DROTR32 and similar MIPS64 rev 2 instructions, which have |
o) DROTR32 and similar MIPS64 rev 2 instructions, which have |
109 |
a rotation bit which differs from previous ISAs. |
a rotation bit which differs from previous ISAs. |
110 |
o) EI and DI instructions for MIPS64/32 rev 2. NOTE: These are |
o) EI and DI instructions for MIPS64/32 rev 2. NOTE: These are |
134 |
x) INVALIDATION should cause translations in _all_ cpus to be |
x) INVALIDATION should cause translations in _all_ cpus to be |
135 |
invalidated, e.g. on a write to a write-protected page |
invalidated, e.g. on a write to a write-protected page |
136 |
(containing code) |
(containing code) |
|
x) Call/return hints? |
|
137 |
x) 16-bit encodings? (MIPS16, ARM Thumb, SH3, ...) |
x) 16-bit encodings? (MIPS16, ARM Thumb, SH3, ...) |
|
x) H8? |
|
138 |
x) Lots of other stuff: see src/cpus/README_DYNTRANS |
x) Lots of other stuff: see src/cpus/README_DYNTRANS |
139 |
x) true recompilation backend? think carefully about this, |
x) true recompilation backend? think carefully about this, |
140 |
experiment in a separate project (not in GXemul) |
experiment in a separate project (not in GXemul) |
145 |
into usleep(1) or similar on the host... except when doing |
into usleep(1) or similar on the host... except when doing |
146 |
e.g. SMP emulation. Then it becomes trickier. |
e.g. SMP emulation. Then it becomes trickier. |
147 |
|
|
148 |
|
Transputer: |
149 |
|
x) Implement support for Helios binaries. |
150 |
|
x) Stack and register contents at startup? |
151 |
|
x) Figure out how to boot an entire Helios distribution. |
152 |
|
x) Implement all instructions. :) |
153 |
|
|
154 |
Alpha: |
Alpha: |
155 |
o) Virtual memory (tlbs etc) |
o) Virtual memory (tlbs etc) |
156 |
o) Get {NetBSD,OpenBSD,Linux}/alpha booting. :) |
o) Get {NetBSD,OpenBSD,Linux}/alpha booting. :) |
157 |
|
|
158 |
SPARC: |
SPARC: |
159 |
o) Add all registers (floating point, control regs etc) |
o) Load/stores to alternate address spaces! |
160 |
o) Save/restore register windows etc! |
o) Save/restore register windows etc! |
161 |
o) Load/stores! |
o) Finish the subcc and addcc flag computation code. |
162 |
|
o) Add more registers (floating point, control regs etc) |
163 |
o) Disassemly of some more instructions? |
o) Disassemly of some more instructions? |
164 |
o) Are sll etc 32-bit sign-extending or zero-extending? |
o) Are sll etc 32-bit sign-extending or zero-extending? |
|
o) Finish the cmp (subcc) flag computation code. |
|
165 |
o) Finish the GDB register stuff. |
o) Finish the GDB register stuff. |
166 |
o) SPARC v8, v7 etc? |
o) SPARC v8, v7 etc? |
167 |
|
|
216 |
x) make OpenBSD/macppc work (PCI controller stuff) |
x) make OpenBSD/macppc work (PCI controller stuff) |
217 |
|
|
218 |
Algor: |
Algor: |
219 |
PCI and ISA and LOCAL interrupts! --> wdc could start working |
PCI interrupts... needed or stuff like the tlp NIC? |
|
Add interrupt controller in dev_algor.c. |
|
220 |
|
|
221 |
ARM: |
ARM: |
222 |
o) try to get netbsd/evbarm 3.x running (iq80321) |
o) try to get netbsd/evbarm 3.x running (iq80321) |