/[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 6 by dpavlin, Mon Oct 8 16:18:11 2007 UTC revision 20 by dpavlin, Mon Oct 8 16:19:23 2007 UTC
# Line 1  Line 1 
1  $Id: TODO,v 1.133 2005/05/25 06:40:16 debug Exp $  $Id: TODO,v 1.176 2005/11/13 00:14:05 debug Exp $
2    
3  Here's a short list of what I have left to do on GXemul. This file is a mess.  NOTE: This TODO is hopefully out-of-date. I don't keep it updated.
4  Order is random. Don't trust it to be up-to-date.  
5    ===============================================================================
6    
7    Old MIPS bintrans:
8            x)  call/return address cache?
9            x)  Turn the MIPS cpu family stuff into dyntrans.
10    
11    Dyntrans:
12            x)  Separate data and instruction translations?
13            x)  Generalize the inline quick_pc_to_pointers?
14            x)  Call/return hints...
15            x)  More 64-bit stuff.
16            x)  Lots of other stuff: see src/cpus/README_DYNTRANS
17    
18    Userland emulation:
19            x)  Lots of stuff.
20            x)  Dynamic linking? Hm.
21    
22    Misc:
23            Redesign the entire "mainbus" concept:
24                    o)  Easily configurable interrupt routing in SMP systems.
25                    o)  Specific clock/bus speeds, cpu speeds etc.
26                    o)  Synchronization over network?
27    
28          Caches / memory hierarchies: (this is mostly MIPS-specific)          Caches / memory hierarchies: (this is mostly MIPS-specific)
29                  o)  MIPS coproc.c: bits in config registers should reflect                  o)  MIPS coproc.c: bits in config registers should reflect
# Line 26  Order is random. Don't trust it to be up Line 48  Order is random. Don't trust it to be up
48          Network layer:          Network layer:
49                  o)  Multiple networks per emulation, and let different                  o)  Multiple networks per emulation, and let different
50                      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.  
51                  o)  many other issues: see src/net.c                  o)  many other issues: see src/net.c
52    
         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)  
   
         CPU emulation:  
                 o)  Binary translation:  
                         +)  use an Intermediate Representation!  
                         +)  recursive translation?  
                         +)  basic blocks instead of one-instruction? :)  
                         +)  on Alpha: don't assume pca56-like byte load/store?  
                         +)  write backends for UltraSparc and MIPS  
                         +)  see src/bintrans.c for more info  
                 o)  All the non-MIPS modes need a bit of work.  
   
53          MIPS CPU emulation:          MIPS CPU emulation:
54                    o)  i386 bintrans backend: movn etc, slt[u] for
55                            64-bit mode, 64-bit shifts etc
56                  o)  Instructions:                  o)  Instructions:
57                          o)  Regression tests (see tests/README for more info):                          o)  All ISAs:
58                                  o)  Floating point exception handling, and                                  o)  Floating point exception handling, and
59                                          add more instructions.                                          add more instructions.
60                                  o)  Finish the MIPS16 translator, and test it!                                  o)  Finish the MIPS16 translator, and test it!
# Line 86  Order is random. Don't trust it to be up Line 87  Order is random. Don't trust it to be up
87                          4K (note: NOT R4000), 5K (note: NOT R5000),                          4K (note: NOT R4000), 5K (note: NOT R5000),
88                          R6000 (ISA II), R8000                          R6000 (ISA II), R8000
89                  o)  Multi-cpu stuff:                  o)  Multi-cpu stuff:
90                            +)  Interrupt routing (ie devices vs mainbus, or
91                                connect each device to a fixed cpu)
92                          +)  SGI's NUMA architecture. Study                          +)  SGI's NUMA architecture. Study
93                                  x)  Linux sources                                  x)  Linux sources
94                                  x)  SGI's specs on NUMA address space                                  x)  SGI's specs on NUMA address space
95                          +)  Ultrix?  NetBSD doesn't do SMP on MIPS yet :-(                          +)  Ultrix?  NetBSD doesn't do SMP on MIPS yet :-(
96                          +)  Own experiments with ycx2.                          +)  Own experiments with ycx2.
97    
         Emulation of specific machines and devices:  
                 o)  Clean up stuff to make it possible to emulate multiple  
                     (different) machines simultaneously.  
                 o)  Use same clock for all emulations and machines.  
                 o)  Clean up the device stuff (registering of devices etc)  
                 o)  Various SCSI and IDE controllers  
                 o)  PS/2-style keyboard controller (for several machines)  
                 o)  Generic busses;  
                         x)  PCI:  i/o and interrupts  
                         x)  QBus-22 (DECsystem 5500, 5400?)  
                 o)  DECstations (pmax):  
                         x)  ioasic  
                         x)  framebuffers:  
                                 +)  better cursor support, overlays?,  
                                 +)  2D/3D acceleration, PX[G]  
                         x)  status words / control words, make this more  
                                 portable/cleaner  
                         x)  scsi controller(s): sii, DMA for asc  
                         x)  serial controllers: ssc, scc (and more work on dc?)  
                         x)  nvram on decstation 5000/125:  when using X11,  
                                 set console=g or similar  
                         x)  DECstation 5840? "xbi-based SMP"  
                 o)  SGI and ARC machines (sgimips, arc):  
                         x)  IP32 ("O2"): (Lots of stuff)  
                                 +)  mec (ethernet)  
                                 +)  pci  
                                 +)  ahc (scsi)  
                                 +)  ps2 kbd  
                                 +)  memory controller  
                                 +)  framebuffer/graphics  
                                 +)  caches  
                         x)  more ARCBIOS stuff  
                         x)  Memory/interrupt controllers  
                         x)  IP30 (Linux with graphics support?)  
                         x)  SMP / NUMA?  (SGI and various ARC machines)  
                 o)  Playstation 2:  
                         Hardware:  OHCI usb controller, keyboard, ...  
                 o)  Cobalt:  PCI and interrupt system, ethernet,  
                         harddisk controller(s)  
                 o)  Less interesting platforms:  
                         o)  newsmips:  
                                 o)  NetBSD/newsmips, get it to detect a "real"  
                                     model, right now everything is 100% bogus  
                         o)  mipsco? (NetBSD)  
                         o)  wgrisc? (big endian R3000, in OpenBSD's attic)  
                         o)  other embedded / evaluation MIPS boards  
                         o)  Playstation 1? R3000A. Weird hardware?  
                                 No FPU, but something as coproc 2.  
                         o)  Nintendo 64, http://www.nintendo.com/systems/n64/n64_specs.jsp  
                                 (R4300, 4MB RAM, really weird memory map)  
                 o)  non-MIPS  
   
98          File/disk handling:          File/disk handling:
                 o)  More than one type of disk in a machine (say, IDE + FLOPPY,  
                     or SCSI + IDE); how to handle this nicely?  
                 o)  Read function argument count and types from binaries? (ELF?)  
                 o)  ELF: separate LE/BE (MIPS instruction format) from LSB/MSB  
                         (ELF structure format)?  
99                  o)  Better handling of tape files                  o)  Better handling of tape files
100                  o)  gzip support (also for non-ISO9660 files)  
101            Debugger:
102                    o)  Read function argument count and types from binaries? (ELF?)
103                    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
112                      machines(!)                      machines(!)
113    
114          GDB interface? (Maybe not necessary; the built-in debugger feels          Regression tests.  (Needs to be totally rewritten, the old framework
115          more useful.)                  was removed because it was useless.)
   
         GUI, interactive debugger?  GTK+?  (The GUI _must be optional_!)  
                 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.  
   
         Regression tests:  
                 o)  see tests/  
116    
117          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
118                  in later?  (Memory, all device's states, all registers and                  in later?  (Memory, all device's states, all registers and

Legend:
Removed from v.6  
changed lines
  Added in v.20

  ViewVC Help
Powered by ViewVC 1.1.26