/[gxemul]/upstream/0.3.4/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

Annotation of /upstream/0.3.4/TODO

Parent Directory Parent Directory | Revision Log Revision Log


Revision 11 - (hide annotations)
Mon Oct 8 16:18:31 2007 UTC (16 years, 6 months ago) by dpavlin
File size: 7503 byte(s)
0.3.4
1 dpavlin 10 $Id: TODO,v 1.139 2005/06/23 06:55:43 debug Exp $
2 dpavlin 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    
6     Caches / memory hierarchies: (this is mostly MIPS-specific)
7     o) MIPS coproc.c: bits in config registers should reflect
8     correct cache sizes for _all_ CPU types. (currently only
9     implemented for R4000, R1x000, and a few others)
10     o) src/memory*.c: Implement correct cache emulation for
11     all CPU types. (currently only R2000/R3000 is implemented)
12     (per CPU, multiple levels should be possible,
13     associativity etc!)
14     o) R2000/R3000 isn't _100%_ correct, just almost correct :)
15     o) Move the -S (fill mem with random) functionality into the
16     memory.c subsystem, not machine.c or wherever it is now
17     o) ECC stuff, simulation of memory errors? (Machine dependant)
18     o) More than 4GB of emulated RAM, when run on a 32-bit host?
19     (using manual swap-out of blocks to disk, ugly)
20     o) A global command line option should be used to turn
21     cache emulation on or off. When off, caches should be
22     faked like they are right now. When on, caches and
23     memory latencies should be emulated as correctly as
24     possible.
25    
26     Network layer:
27     o) Multiple networks per emulation, and let different
28     NICs in machines connect to different networks.
29     o) many other issues: see src/net.c
30    
31     CPU emulation:
32     o) Binary translation:
33     +) use an Intermediate Representation!
34     +) recursive translation?
35     +) basic blocks instead of one-instruction? :)
36     +) on Alpha: don't assume pca56-like byte load/store?
37     +) write backends for UltraSparc and MIPS
38     +) see src/bintrans.c for more info
39 dpavlin 10 o) Dynamic-but-not-binary translation?
40 dpavlin 4 o) All the non-MIPS modes need a bit of work.
41 dpavlin 2
42     MIPS CPU emulation:
43     o) Instructions:
44     o) Regression tests (see tests/README for more info):
45     o) Floating point exception handling, and
46     add more instructions.
47     o) Finish the MIPS16 translator, and test it!
48     o) MIPS ISA I, II, III, IV
49     o) MIPS V (SIMD vector stuff?)
50     o) MDMX (MIPS Digital Media Extension)
51     o) MIPS 3D
52     o) MIPS MT (Multi-thread stuff) (What's this?)
53     o) Warn about mis-used bit fields (ie bits that
54     should be all zeroes, warn about if they are not)!
55     Both for coprocessor registers and for instruction
56     opcodes.
57     o) the special2 stuff is a mess right now
58     o) warn and/or cause exceptions for unimplemented
59     instructions (depending on CPU type)
60     o) R2000/R3000:
61     x) R3000 "tri-byte stores". (What's this?)
62     o) R4000 and others:
63     x) watchhi/watchlo exceptions, and other exception
64     handling details
65     o) R10000 and others: (R12000, R14000 ?)
66     x) memory space, exceptions, ...
67     x) use cop0 framemask for tlb lookups
68     (http://techpubs.sgi.com/library/tpl/cgi-bin/getdoc.cgi/hdwr/bks/SGI_Developer/books/R10K_UM/sgi_html/t5.Ver.2.0.book_284.html)
69     o) Implement load delays? Warnings on interlocks.
70     o) Implement all coprocessor 0 bits / functions.
71     x) coproc 0 selectors! (R4000 ?)
72     o) R4300 (nintendo64, no mmu?), R5900 (playstation2, weird
73     TLB/cache? 128-bit GPRs, new instructions),
74     4K (note: NOT R4000), 5K (note: NOT R5000),
75     R6000 (ISA II), R8000
76     o) Multi-cpu stuff:
77     +) SGI's NUMA architecture. Study
78     x) Linux sources
79     x) SGI's specs on NUMA address space
80     +) Ultrix? NetBSD doesn't do SMP on MIPS yet :-(
81     +) Own experiments with ycx2.
82    
83     Emulation of specific machines and devices:
84     o) Use same clock for all emulations and machines.
85     o) Clean up the device stuff (registering of devices etc)
86     o) Various SCSI and IDE controllers
87     o) PS/2-style keyboard controller (for several machines)
88     o) Generic busses;
89     x) PCI: i/o and interrupts
90     x) QBus-22 (DECsystem 5500, 5400?)
91     o) DECstations (pmax):
92     x) ioasic
93     x) framebuffers:
94     +) better cursor support, overlays?,
95     +) 2D/3D acceleration, PX[G]
96     x) status words / control words, make this more
97     portable/cleaner
98     x) scsi controller(s): sii, DMA for asc
99     x) serial controllers: ssc, scc (and more work on dc?)
100     x) nvram on decstation 5000/125: when using X11,
101     set console=g or similar
102     x) DECstation 5840? "xbi-based SMP"
103     o) SGI and ARC machines (sgimips, arc):
104     x) IP32 ("O2"): (Lots of stuff)
105     +) mec (ethernet)
106     +) pci
107     +) ahc (scsi)
108     +) ps2 kbd
109     +) memory controller
110     +) framebuffer/graphics
111     +) caches
112     x) more ARCBIOS stuff
113     x) Memory/interrupt controllers
114     x) IP30 (Linux with graphics support?)
115     x) SMP / NUMA? (SGI and various ARC machines)
116 dpavlin 4 o) Playstation 2:
117     Hardware: OHCI usb controller, keyboard, ...
118 dpavlin 2 o) Less interesting platforms:
119 dpavlin 4 o) newsmips:
120     o) NetBSD/newsmips, get it to detect a "real"
121     model, right now everything is 100% bogus
122 dpavlin 2 o) mipsco? (NetBSD)
123     o) wgrisc? (big endian R3000, in OpenBSD's attic)
124     o) other embedded / evaluation MIPS boards
125     o) Playstation 1? R3000A. Weird hardware?
126     No FPU, but something as coproc 2.
127     o) Nintendo 64, http://www.nintendo.com/systems/n64/n64_specs.jsp
128     (R4300, 4MB RAM, really weird memory map)
129    
130     File/disk handling:
131     o) Read function argument count and types from binaries? (ELF?)
132     o) Better handling of tape files
133    
134     Userland ABI emulation:
135     o) see src/useremul.c
136    
137     Terminal based interactive debugger:
138     o) see src/debugger.c
139    
140 dpavlin 6 Terminal/console stuff:
141     o) allow emulated serial ports to be connected to the outside
142     world in a more generic way, or even to other emulated
143     machines(!)
144    
145 dpavlin 10 Regression tests: (Should be totally rewritten.)
146 dpavlin 2 o) see tests/
147    
148     Save state of the whole emulated machine, to be able to load it back
149     in later? (Memory, all device's states, all registers and
150     so on. Like taking a snapshot. (SimOS seems to do this,
151     according to its website.))
152    
153     Better X-windows functionality:
154     o) CLEAN UP the ugly event code
155     o) Mouse clicks can be "missed" in the current system; this is
156     not good. They should be put on a stack of some kind.
157     o) More 2D and 3D framebuffer acceleration.
158     o) Non-resizable windows? Or choose scaledown depending
159     on size (and center the image, with a black border).
160     o) Different scaledown on different windows?
161     o) Switch scaledown during runtime? (Ala CTRL-ALT-plus/minus)
162     o) Keyboard and mouse events:
163     x) Do this for more machines than just DECstation
164     x) more X11 cursor keycodes
165     x) Keys like CTRL, ALT, SHIFT do not get through
166     by themselves (these are necessary for example
167     to change the font of an xterm in X in the
168     emulator)
169     o) Generalize the framebuffer stuff by moving _ALL_ X11
170     specific code to src/x11.c!
171    
172     Statistics: (this could be interesting)
173     o) Save to file and show graphics. It should be possible to
174     run gxemul after a simulation to just show the graphics,
175     or convert to a .ppm or .tga or similar.
176     o) memory accesses (to measure cache efficiency and
177     page coloring efficiency)
178     o) nr of simultaneous ASIDs in use in the TLB, for MIPS
179     o) percentage of time spent in different "states", such as
180     running userland code, kernel code, or idling (for CPUs
181     that have such an instruction, or whenever the PC is
182     inside a specific idle-function (address range)).
183     Possible additional state (for example on R3000): caches
184     disabled.
185     o) position of read/write on (SCSI) disks
186    

  ViewVC Help
Powered by ViewVC 1.1.26