--- trunk/TODO 2007/10/08 16:20:26 28 +++ trunk/TODO 2007/10/08 16:20:40 30 @@ -1,25 +1,19 @@ -$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 $ Hm. This file is in random order, and not all parts of it are up-to-date. -Code cleanup: + +Implementation: + x) ARM "wait"-like instruction. + x) CLOCK FRAMEWORK! + x) Mouse support for NetBSD/pmax 4.x! + x) See netwinder_reset() in NetBSD; the current "an internal error + occured" message after reboot/halt is too ugly. x) 64-bit ranges in src/cpus/memory_mips_v2p.c x) Revert the dyntrans page template experiment? Hm. x) Refactor the cpu type detection/initialization/listing. - -Documentation: - 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: + Macro, which can be used as long as the cpu definitions + contain a 'name'? x) Testmachine includes: + dev_fb block fill and copy + dev_fb draw characters (from the built-in font)? @@ -30,21 +24,41 @@ for (;;) { halt(); } - 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! x) Continue on SPARC emulation + Enable it in the configure script as soon as it can run all the demo programs. x) Continue on Alpha emulation (virtual memory, etc). Cleanup. + x) Nicer MIPS status bits in register dumps. x) Alignment exceptions (MIPS, PPC, ARM?, ...) + x) Rewrite the networking stack; make OpenBSD work better as a guest + OS, fix the performance problems, make Linux work with DHCP, etc. + Support VDE (vde.sf.net)? Allow SLIP connections, possibly PPP, + in addition to ethernet? + x) Implement more ethernet NICs. + x) IOP (I2O) device? + +Documentation: + x) "Install netbsd/pmax first" => only use the install kernel? + 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 design: x) Instruction combination collisions? How to avoid easily... + x) Think about how to do both SHmedia and SHcompact in a reasonable + way! o) Actually use the settings object, better debugger stuff, etc! o) Debugger command for enabling/disabling instruction statistics during runtime. machine.statistics = on|off x) MAINBUS REDESIGN! + x) PCI redesign... I need to read up on how PCI actually works :) x) Clock framework! Go through all clock devices, make sure they return correct data, and run at correct speeds! x) Dyntrans with valgrind-inspired memory checker. (In memory_rw, @@ -55,10 +69,6 @@ x) Dyntrans with cache emulation... lots of work here as well. x) Reimplement the config file parser from scratch. -Test: - x) Test with more than one Sprite instance on an emulated network! - x) NetBSD 4.x, once it is out. - ------------------------------------------------------------------------------- Simple Valgrind-like checks? @@ -87,20 +97,14 @@ MIPS: +) Some more work on opcodes. + x) The "wait" instruction. How to implement this functionality? + (SMP, non-MIPS, interrupt correctness, host idling, ...) x) MIPS64 revision 2. o) Find out which actual CPUs implement the rev2 ISA! x) _MAYBE_ TX79 and R5900 actually differ in their opcodes? Check this carefully! o) Dyntrans: Count register updates are probably not 100% correct yet. 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 o) DROTR32 and similar MIPS64 rev 2 instructions, which have a rotation bit which differs from previous ISAs. o) EI and DI instructions for MIPS64/32 rev 2. NOTE: These are @@ -130,9 +134,7 @@ x) INVALIDATION should cause translations in _all_ cpus to be invalidated, e.g. on a write to a write-protected page (containing code) - x) Call/return hints? x) 16-bit encodings? (MIPS16, ARM Thumb, SH3, ...) - x) H8? x) Lots of other stuff: see src/cpus/README_DYNTRANS x) true recompilation backend? think carefully about this, experiment in a separate project (not in GXemul) @@ -143,17 +145,23 @@ into usleep(1) or similar on the host... except when doing e.g. SMP emulation. Then it becomes trickier. +Transputer: + x) Implement support for Helios binaries. + x) Stack and register contents at startup? + x) Figure out how to boot an entire Helios distribution. + x) Implement all instructions. :) + Alpha: o) Virtual memory (tlbs etc) o) Get {NetBSD,OpenBSD,Linux}/alpha booting. :) SPARC: - o) Add all registers (floating point, control regs etc) + o) Load/stores to alternate address spaces! o) Save/restore register windows etc! - o) Load/stores! + o) Finish the subcc and addcc flag computation code. + o) Add more registers (floating point, control regs etc) o) Disassemly of some more instructions? o) Are sll etc 32-bit sign-extending or zero-extending? - o) Finish the cmp (subcc) flag computation code. o) Finish the GDB register stuff. o) SPARC v8, v7 etc? @@ -208,8 +216,7 @@ x) make OpenBSD/macppc work (PCI controller stuff) Algor: - PCI and ISA and LOCAL interrupts! --> wdc could start working - Add interrupt controller in dev_algor.c. + PCI interrupts... needed or stuff like the tlp NIC? ARM: o) try to get netbsd/evbarm 3.x running (iq80321)