/[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

Annotation of /trunk/TODO

Parent Directory Parent Directory | Revision Log Revision Log


Revision 10 - (hide annotations)
Mon Oct 8 16:18:27 2007 UTC (13 years ago) by dpavlin
File size: 7503 byte(s)
++ trunk/HISTORY	(local)
$Id: HISTORY,v 1.815 2005/06/27 23:04:35 debug Exp $
20050617	Experimenting some more with netbooting OpenBSD/sgi. Adding
		a hack which allows emulated ethernet networks to be
		distributed across multiple emulator processes.
20050618	Minor updates (documentation, dummy YAMON emulation, etc).
20050620	strcpy/strcat -> strlcpy/strlcat updates.
		Some more progress on evbmips (Malta).
20050621	Adding a section to doc/configfiles.html about ethernet
		emulation across multiple hosts.
		Beginning the work on the ARM translation engine (using the
		dynamic-but-not-binary translation method).
		Fixing a bintrans bug: 0x9fc00000 should always be treated as
		PROM area, just as 0xbfc00000 is.
		Minor progress on Malta emulation (the PCI-ISA bus).
20050622	NetBSD/evbmips can now be installed (using another emulated
		machine) and run (including userland and so on). :-)
		Spliting up the bintrans haddr_entry field into two (one for
		read, one for write). Probably not much of a speed increase,
		though.
		Updating some NetBSD 2.0 -> 2.0.2 in the documentation.
20050623	Minor updates (documentation, the TODO file, etc).
		gzipped kernels are now always automagically gunzipped when
		loaded.
20050624	Adding a dummy Playstation Portable (PSP) mode, just barely
		enough to run Hello World (in weird colors :-).
		Removing the -b command line option; old bintrans is enabled
		by default instead. It makes more sense.
		Trying to finally fix the non-working performance measurement
		thing (instr/second etc).
20050625	Continuing on the essential basics for ARM emulation. Two
		instructions seem to work, a branch and a simple "mov". (The
		mov arguments are not correct yet.) Performance is definitely
		reasonable.
		Various other minor updates.
		Adding the ARM "bl" instruction.
		Adding support for combining multiple ARM instructions into one
		function call. ("mov" + "mov" is the only one implemented so
		far, but it seems to work.)
		Cleaning up some IP32 interrupt things (crime/mace); disabling
		the PS/2 keyboard controller on IP32, so that NetBSD/sgimips
		boots into userland again.
20050626	Finally! NetBSD/sgimips netboots. Adding instructions to
		doc/guestoses.html on how to set up an nfs server etc.
		Various other minor fixes.
		Playstation Portable ".pbp" files can now be used directly.
		(The ELF part of the .pbp is extracted transparently.)
		Converting some sprintf -> snprintf.
		Adding some more instructions to the ARM disassembler.
20050627	More ARM updates. Adding some simple ldr(b), str(b),
		cmps, and conditional branch instructions, enough to run
		a simple Hello World program.
		All ARM instructions are now inlined/generated for all possible
		condition codes.
		Adding add and sub, and more load/store instructions.
		Removing dummy files: cpu_alpha.c, cpu_hppa.c, and cpu_sparc.c.
		Some minor documentation updates; preparing for a 0.3.4
		release. Updating some URLs.

==============  RELEASE 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