/[gxemul]/trunk/TODO
This is repository of my old source code which isn't updated any more. Go to git.rot13.org for current projects!
ViewVC logotype

Diff of /trunk/TODO

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 28 by dpavlin, Mon Oct 8 16:20:26 2007 UTC revision 30 by dpavlin, Mon Oct 8 16:20:40 2007 UTC
# Line 1  Line 1 
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)?
# Line 30  Long-term implementation: Line 24  Long-term implementation:
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,
# Line 55  Long-term design: Line 69  Long-term design:
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?
# Line 87  SMP: Line 97  SMP:
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
# Line 130  Dyntrans: Line 134  Dyntrans:
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)
# Line 143  Dyntrans: Line 145  Dyntrans:
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    
# Line 208  POWER/PowerPC: Line 216  POWER/PowerPC:
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)

Legend:
Removed from v.28  
changed lines
  Added in v.30

  ViewVC Help
Powered by ViewVC 1.1.26