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

Contents of /trunk/TODO

Parent Directory Parent Directory | Revision Log Revision Log


Revision 10 - (show annotations)
Mon Oct 8 16:18:27 2007 UTC (16 years, 5 months 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 $Id: TODO,v 1.139 2005/06/23 06:55:43 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
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 o) Dynamic-but-not-binary translation?
40 o) All the non-MIPS modes need a bit of work.
41
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 o) Playstation 2:
117 Hardware: OHCI usb controller, keyboard, ...
118 o) Less interesting platforms:
119 o) newsmips:
120 o) NetBSD/newsmips, get it to detect a "real"
121 model, right now everything is 100% bogus
122 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 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 Regression tests: (Should be totally rewritten.)
146 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