/[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 10 by dpavlin, Mon Oct 8 16:18:27 2007 UTC revision 12 by dpavlin, Mon Oct 8 16:18:38 2007 UTC
# Line 1  Line 1 
1  $Id: TODO,v 1.139 2005/06/23 06:55:43 debug Exp $  $Id: TODO,v 1.166 2005/08/16 05:44:33 debug Exp $
2    
3  Here's a short list of what I have left to do on GXemul. This file is a mess.  ===============================================================================
4  Order is random. Don't trust it to be up-to-date.  
5    High priority stuff:
6    
7    
8    MIPS bintrans:
9            x)  call/return address cache?
10    
11    dyntrans:
12            x)  memory write protection for ARM, but NOT for Alpha (because
13                    it has the IMB instruction... hm)
14    
15            x)  call/return address cache
16    
17            x)  instr_call sequence analysis support? (Useful for
18                    handtuning combinations.)
19    
20            x)  opcode statistics support?
21                    TODO: is instr_call statistics enough?
22    
23            x)  support for archs that allow transparent unaligned load/stores
24    
25            x)  SMP: detect when an instruction such as ll/sc or cas is used,
26                and "synchronize" approximately the number of executed instructions
27                (or cycles) across all CPUs.
28    
29            x)  support for variable-length instructions (x86, m68k, ...)
30                    Perhaps:  don't increase the next_ic between every
31                    instruction, but let each instruction's handler do
32                    that for itself.
33                    Problem: what about instructions crossing a (virtual)
34                            page boundary? They cannot be translated once
35                            and for all :( and must be interpreted slowly!
36    
37            x)  support for THUMB or MIPS16  (arm, mips)
38    
39            x)  support for Delay slots!  (mips, sparc, hppa)
40    
41            x)  Alpha: hahaha, zapnot and inserts/extracts don't
42                compile into very nice code :-|  fix this
43    
44            x)  64-bit virtual memory translation tables (PPC, etc)
45    
46            x)  x86: convert to dyntrans. LOTS of stuff to consider.
47    
48    
49    ===============================================================================
50    
51    Lower priority, but still important:
52    
53            Redesign the entire "mainbus" concept:
54                    o)  Easily configurable interrupt routing in SMP systems.
55                    o)  Specific clock/bus speeds, cpu speeds etc.
56                    o)  Synchronization over network?
57    
58          Caches / memory hierarchies: (this is mostly MIPS-specific)          Caches / memory hierarchies: (this is mostly MIPS-specific)
59                  o)  MIPS coproc.c: bits in config registers should reflect                  o)  MIPS coproc.c: bits in config registers should reflect
# Line 28  Order is random. Don't trust it to be up Line 80  Order is random. Don't trust it to be up
80                      NICs in machines connect to different networks.                      NICs in machines connect to different networks.
81                  o)  many other issues: see src/net.c                  o)  many other issues: see src/net.c
82    
         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)  Dynamic-but-not-binary translation?  
                 o)  All the non-MIPS modes need a bit of work.  
   
83          MIPS CPU emulation:          MIPS CPU emulation:
84                    o)  i386 bintrans backend: movn etc, slt[u] for
85                            64-bit mode, 64-bit shifts etc
86                  o)  Instructions:                  o)  Instructions:
87                          o)  Regression tests (see tests/README for more info):                          o)  All ISAs:
88                                  o)  Floating point exception handling, and                                  o)  Floating point exception handling, and
89                                          add more instructions.                                          add more instructions.
90                                  o)  Finish the MIPS16 translator, and test it!                                  o)  Finish the MIPS16 translator, and test it!
# Line 74  Order is random. Don't trust it to be up Line 117  Order is random. Don't trust it to be up
117                          4K (note: NOT R4000), 5K (note: NOT R5000),                          4K (note: NOT R4000), 5K (note: NOT R5000),
118                          R6000 (ISA II), R8000                          R6000 (ISA II), R8000
119                  o)  Multi-cpu stuff:                  o)  Multi-cpu stuff:
120                            +)  Interrupt routing (ie devices vs mainbus, or
121                                connect each device to a fixed cpu)
122                          +)  SGI's NUMA architecture. Study                          +)  SGI's NUMA architecture. Study
123                                  x)  Linux sources                                  x)  Linux sources
124                                  x)  SGI's specs on NUMA address space                                  x)  SGI's specs on NUMA address space
125                          +)  Ultrix?  NetBSD doesn't do SMP on MIPS yet :-(                          +)  Ultrix?  NetBSD doesn't do SMP on MIPS yet :-(
126                          +)  Own experiments with ycx2.                          +)  Own experiments with ycx2.
127    
         Emulation of specific machines and devices:  
                 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)  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)  
   
128          File/disk handling:          File/disk handling:
                 o)  Read function argument count and types from binaries? (ELF?)  
129                  o)  Better handling of tape files                  o)  Better handling of tape files
130    
131            Debugger:
132                    o)  Read function argument count and types from binaries? (ELF?)
133                    o)  Demangle C++ names.
134    
135          Userland ABI emulation:          Userland ABI emulation:
136                  o)  see src/useremul.c                  o)  see src/useremul.c
137    
# Line 142  Order is random. Don't trust it to be up Line 143  Order is random. Don't trust it to be up
143                      world in a more generic way, or even to other emulated                      world in a more generic way, or even to other emulated
144                      machines(!)                      machines(!)
145    
146          Regression tests:  (Should be totally rewritten.)          Regression tests.  (Needs to be totally rewritten, the old framework
147                  o)  see tests/                  was removed because it was useless.)
148    
149          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
150                  in later?  (Memory, all device's states, all registers and                  in later?  (Memory, all device's states, all registers and

Legend:
Removed from v.10  
changed lines
  Added in v.12

  ViewVC Help
Powered by ViewVC 1.1.26