/[gxemul]/trunk/doc/experiments.html
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/doc/experiments.html

Parent Directory Parent Directory | Revision Log Revision Log


Revision 6 - (show annotations)
Mon Oct 8 16:18:11 2007 UTC (16 years, 5 months ago) by dpavlin
File MIME type: text/html
File size: 38070 byte(s)
++ trunk/HISTORY	(local)
$Id: HISTORY,v 1.772 2005/06/04 12:02:16 debug Exp $
20050428	Disabling the "-fmove-all-movables" option in the configure
		script, because it causes the compile to fail on OpenBSD/sgi.
20050502	Minor updates.
20050503	Removing the WRT54G mode (it was bogus anyway), and adding a
		comment about Windows NT for MIPS in doc/experiments.html.
		Minor updates to the x86 instruction decoding.
20050504	Adding some more x86 instructions.
		Adding support for reading files from ISO9660 CDROMs (including
		gzipped files). It's an ugly hack, but it seems to work.
		Various other minor updates (dev_vga.c, pc_bios.c etc).
20050505	Some more x86-related updates.
		Beginning (what I hope will be) a major code cleanup phase.
		"bootris" (an x86 bootsector) runs :-)
20050506	Adding some more x86 instructions.
20050507	tmpnam => mkstemp.
		Working on a hack to allow VGA charcells to be shown even when
		not running with X11.
		Adding more x86 instructions.
20050508	x86 32-bit SIB addressing fix, and more instructions.
20050509	Adding more x86 instructions.
20050510	Minor documentation updates, and other updates (x86 stuff etc.)
20050511	More x86-related updates.
20050513	Various updates, mostly x86-related. (Trying to fix flag 
		calculation, factoring out the ugly shift/rotate code, and
		some other things.)
20050514	Adding support for loading some old i386 a.out executables.
		Finally beginning the cleanup of machine/PROM/bios dependant
		info.
		Some minor documentation updates.
		Trying to clean up ARCBIOS stuff a little.
20050515	Trying to make it possible to actually use more than one disk
		type per machine (floppy, ide, scsi).
		Trying to clean up the kbd vs PROM console stuff. (For PC and
		ARC emulation modes, mostly.)
		Beginning to add an 8259 interrupt controller, and connecting
		it to the x86 emulation.
20050516	The first x86 interrupts seem to work (keyboard stuff).
		Adding a 8253/8254 programmable interval timer skeleton.
		FreeDOS now reaches a command prompt and can be interacted
		with.
20050517	After some bugfixes, MS-DOS also (sometimes) reaches a
		command prompt now.
		Trying to fix the pckbc to work with MS-DOS' keyb.com, but no
		success yet.
20050518	Adding a simple 32-bit x86 MMU skeleton.
20050519	Some more work on the x86 stuff. (Beginning the work on paging,
		and various other fixes).
20050520	More updates. Working on dev_vga (4-bit graphics modes), adding
		40 columns support to the PC bios emulation.
		Trying to add support for resizing windows when switching
		between graphics modes.
20050521	Many more x86-related updates.
20050522	Correcting the initial stack pointer's sign-extension for
		ARCBIOS emulation (thanks to Alec Voropay for noticing the
		error).
		Continuing on the cleanup (ARCBIOS etc).
		dev_vga updates.
20050523	More x86 updates: trying to add some support for protected mode
		interrupts (via gate descriptors) and many other fixes.
		More ARCBIOS cleanup.
		Adding a device flag which indicates that reads cause no
		side-effects. (Useful for the "dump" command in the debugger,
		and other things.)
		Adding support for directly starting up x86 ELFs, skipping the
		bootloader stage. (Most ELFs, however, are not suitable for
		this.)
20050524	Adding simple 32-bit x86 TSS task switching, but no privilege
		level support yet.
		More work on dev_vga. A small "Copper bars" demo works. :-)
		Adding support for Trap Flag (single-step exceptions), at least
		in real mode, and various other x86-related fixes.
20050525	Adding a new disk image prefix (gH;S;) which can be used to
		override the default nr of heads and sectors per track.
20050527	Various bug fixes, more work on the x86 mode (stack change on
		interrupts between different priv.levels), and some minor
		documentation updates.
20050528	Various fixes (x86 stuff).
20050529	More x86 fixes. An OpenBSD/i386 bootfloppy reaches userland
		and can be interacted with (although there are problems with
		key repetition). NetBSD/i386 triggers a serious CISC-related
		problem: instruction fetches across page boundaries, where
		the later part isn't actually part of the instruction.
20050530	Various minor updates. (Documentation updates, etc.)
20050531	Adding some experimental code (experiments/new_test_*) which
		could be useful for dynamic (but not binary) translation in
		the future.
20050602	Adding a dummy ARM skeleton.
		Fixing the pckbc key repetition problem (by adding release
		scancodes for all keypresses).
20050603	Minor updates for the next release.
20050604	Release testing. Minor updates.

==============  RELEASE 0.3.3  ==============

20050604	There'll probably be a 0.3.3.1 release soon, with some very
		very tiny updates.


1 <html>
2 <head><title>GXemul documentation: Experimenting with GXemul</title>
3 </head>
4 <body bgcolor="#f8f8f8" text="#000000" link="#4040f0" vlink="#404040" alink="#ff0000">
5 <table border=0 width=100% bgcolor="#d0d0d0"><tr>
6 <td width=100% align=center valign=center><table border=0 width=100%><tr>
7 <td align="left" valign=center bgcolor="#d0efff"><font color="#6060e0" size="6">
8 <b>GXemul documentation:</b></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
9 <font color="#000000" size="6"><b>Experimenting with GXemul</b>
10 </font></td></tr></table></td></tr></table><p>
11 <!-- The first 10 lines are cut away by the homepage updating script. -->
12
13
14 <!--
15
16 $Id: experiments.html,v 1.68 2005/05/27 07:29:23 debug Exp $
17
18 Copyright (C) 2003-2005 Anders Gavare. All rights reserved.
19
20 Redistribution and use in source and binary forms, with or without
21 modification, are permitted provided that the following conditions are met:
22
23 1. Redistributions of source code must retain the above copyright
24 notice, this list of conditions and the following disclaimer.
25 2. Redistributions in binary form must reproduce the above copyright
26 notice, this list of conditions and the following disclaimer in the
27 documentation and/or other materials provided with the distribution.
28 3. The name of the author may not be used to endorse or promote products
29 derived from this software without specific prior written permission.
30
31 THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
32 ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
33 IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
34 ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
35 FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
36 DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
37 OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
38 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
39 LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
40 OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
41 SUCH DAMAGE.
42
43 -->
44
45 <a href="./">Back to the index</a>
46
47 <p><br>
48 <h2>Experimenting with GXemul</h2>
49
50 <p>
51 <ul>
52 <li><a href="#hello">Hello world</a>
53 <li><a href="#expdevices">Experimental devices</a>
54 <li><a href="#experiments">Experiments with other kernels and guest OSes</a>
55 </ul>
56
57
58
59
60
61
62 <p><br>
63 <a name="hello"></a>
64 <h3>Hello world:</h3>
65
66 You might want to use the emulator to develop programs on your own,
67 not just run precompiled kernels such as NetBSD. To get started, I recommend
68 that you do two things:
69
70 <p>
71 <ul>
72 <li>Build and install a cross-compiler for MIPS.
73 <li>Compile this hello world program, and run it in the emulator.
74 </ul>
75
76 <p>
77 <table border="0"><tr><td width="40">&nbsp;</td><td>
78 <pre>
79 <font color=#f00000>/* Hello world for GXemul */
80
81 /* Note: The cast to a signed int causes the address to be sign-extended
82 correctly to 0xffffffffb00000xx when compiled in 64-bit mode */
83 </font><font color=#a0a0a0>#define PUTCHAR_ADDRESS ((signed int)0xb0000000)
84 #define HALT_ADDRESS ((signed int)0xb0000010)
85
86 </font><font color=#c000c0>void </font><font color=#000000><a name="printchar">printchar</a>(</font><font color=#c000c0>char </font><font color=#000000>ch)
87 {
88 *((</font><font color=#c000c0>volatile unsigned char </font><font color=#000000>*) PUTCHAR_ADDRESS) = ch;
89 }
90
91 </font><font color=#c000c0>void </font><font color=#000000><a name="halt">halt</a>(</font><font color=#c000c0>void</font><font color=#000000>)
92 {
93 *((</font><font color=#c000c0>volatile unsigned char </font><font color=#000000>*) HALT_ADDRESS) = 0;
94 }
95
96 </font><font color=#c000c0>void </font><font color=#000000><a name="printstr">printstr</a>(</font><font color=#c000c0>char </font><font color=#000000>*s)
97 {
98 </font><font color=#c000c0>while </font><font color=#000000>(*s)
99 printchar(*s++);
100 }
101
102 </font><font color=#c000c0>void </font><font color=#000000>f(</font><font color=#c000c0>void</font><font color=#000000>)
103 {
104 printstr(</font><font color=#00c000>"Hello world\n"</font><font color=#000000>);
105 halt();
106 }
107 </font></pre>
108 </td></tr></table>
109
110 <p>
111 (This hello world program is available here as well:
112 <a href="hello_mips.c">hello_mips.c</a>)
113
114 <p>
115 I recommend that you build a GCC cross compiler for the
116 <b>mips64-unknown-elf</b> target, and install it. Other compilers could
117 work too, but GCC is good because of its portability. Then try to compile
118 the hello world program:
119 <pre>
120 $ <b>mips64-unknown-elf-gcc -O2 hello_mips.c -mips4 -mabi=64 -c</b>
121 $ <b>mips64-unknown-elf-ld -Ttext 0xa800000000030000 -e f hello_mips.o -o hello_mips --oformat=elf64-bigmips</b>
122 $ <b>file hello_mips</b>
123 hello_mips: ELF 64-bit MSB mips-4 executable, MIPS R3000_BE, version 1 (SYSV), statically linked, not stripped
124 $ <b>gxemul -q -E testmips hello_mips</b>
125 Hello world
126
127 $ <b>mips64-unknown-elf-gcc -O2 hello_mips.c -c</b>
128 $ <b>mips64-unknown-elf-ld -Ttext 0x80030000 -e f hello_mips.o -o hello_mips</b>
129 $ <b>file hello_mips</b>
130 hello_mips: ELF 32-bit MSB mips-3 executable, MIPS R3000_BE, version 1 (SYSV), statically linked, not stripped
131 $ <b>gxemul -q -E testmips hello_mips</b>
132 Hello world
133 </pre>
134
135 <p>
136 As you can see above, a GCC configured for mips64-unknown-elf can produce
137 both 64-bit and 32-bit binaries. If you don't want to run the entire
138 Hello World program, but want to single-step through the execution to
139 learn more about how MIPS programs run, then add -V to the command line:
140
141 <p>
142 <pre>
143 $ <b>gxemul -V -E testmips hello_mips</b>
144 ..
145 GXemul&gt; <b>r</b>
146 cpu0: pc = a800000000030078 <f>
147 cpu0: hi = 0000000000000000 lo = 0000000000000000
148 cpu0: zr = 0000000000000000 at = 0000000000000000
149 cpu0: v0 = 0000000000000000 v1 = 0000000000000000
150 ..
151 cpu0: gp = a8000000000780c0 sp = ffffffffa0007f00
152 cpu0: fp = 0000000000000000 ra = 0000000000000000
153 GXemul&gt; <b>s 15</b>
154 &lt;f&gt;
155 a800000000030078: 67bdfff0 daddiu sp,sp,-16
156 a80000000003007c: 3c04a800 lui a0,0xa800
157 a800000000030080: 3c010003 lui at,0x3
158 a800000000030084: 64840000 daddiu a0,a0,0
159 a800000000030088: 642100b8 daddiu at,at,184
160 a80000000003008c: 0004203c dsll32 a0,a0,0
161 a800000000030090: 0081202d daddu a0,a0,at
162 a800000000030094: ffbf0000 sd ra,0(sp) [0xffffffffa0007ef0, data=0x0000000000000000]
163 a800000000030098: 0c00c00a jal 0xa800000000030028 &lt;printstr&gt;
164 a80000000003009c: 00000000 (d) nop
165 &lt;printstr("Hello world\n",0,0,0,..)&gt;
166 &lt;printstr&gt;
167 a800000000030028: 67bdfff0 daddiu sp,sp,-16
168 a80000000003002c: ffb00000 sd s0,0(sp) [0xffffffffa0007ee0, data=0x0000000000000000]
169 a800000000030030: ffbf0008 sd ra,8(sp) [0xffffffffa0007ee8, data=0xa8000000000300a0]
170 a800000000030034: 90820000 lbu v0,0(a0) [0xa8000000000300b8 = $LC0, data=0x48]
171 a800000000030038: 00021600 sll v0,v0,24
172 GXemul&gt; <b>print v0</b>
173 v0 = 0x0000000048000000
174 GXemul&gt; <b><blink>_</blink></b>
175 </pre>
176
177 <p>
178 The syntax of the single-step debugger shouldn't be too hard to grasp.
179 Type 's' to single-step one instruction. Just pressing enter after that
180 will repeat the 's' command. Type 'quit' to quit.
181
182 <p>
183 Hopefully this is enough to get you inspired. :-)
184
185
186
187 <p><br>
188 <h4>Hello World for GXemul's PPC mode</h4>
189
190 GXemul also has an experimental PowerPC emulation mode.
191 <a href="hello_ppc.c">hello_ppc.c</a> is similar to hello_mips.c, but
192 should be compiled and run as follows:
193 <p>
194 <pre>
195 $ <b>ppc-unknown-elf-gcc -O2 hello_ppc.c -c</b>
196 $ <b>ppc-unknown-elf-ld -e f hello_ppc.o -o hello_ppc</b>
197 $ <b>file hello_ppc</b>
198 hello_ppc: ELF 32-bit MSB executable, PowerPC or cisco 4500,
199 version 1 (SYSV), statically linked, not stripped
200 $ <b>gxemul -q -E testppc hello_ppc</b>
201 Hello world
202 </pre>
203
204 <p>
205 [&nbsp;2005-02-18: I haven't yet been able to build a GCC for ppc64 (only the
206 binutils toolchain), because the gcc sources seem to include Linux header files
207 that aren't present on my FreeBSD system. 32-bit PPC works ok, though.&nbsp;]
208
209
210
211
212
213
214 <p><br>
215 <a name="expdevices"></a>
216 <h3>Experimental devices:</h3>
217
218 The emulator has several modes where it doesn't emulate any real machine.
219 It can either run in "bare" mode, where no devices are included by default
220 (just the CPU), or in a "test" mode where some simple devices are
221 emulated.
222
223 <p>
224 The "test" MIPS machine has the following experimental devices:
225
226 <p>
227 <center><table border="0" width="80%">
228
229 <tr>
230 <td align="left" valign="top" width="200">
231 <b>cons:</b>
232 <p>This is a simple console device, for writing
233 characters to the controlling terminal.
234 <p>Source code:&nbsp;&nbsp;<font color="#0000f0">devices/dev_cons.c</font>
235 <br>Default physical address:&nbsp&nbsp;<font color="#0000f0">0x10000000</font>
236 </td>
237 <td align="left" valign="top" width="25">&nbsp;</td>
238 <td align="left" valign="top">
239 <table border="0">
240 <tr>
241 <td align="left" valign="top"><i><u>Offset:</u></i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
242 <td align="left" valign="top"><i><u>Effect:</u></i></td>
243 </tr>
244 <tr>
245 <td align="left" valign="top">0x0000</td>
246 <td align="left" valign="top">
247 Read: <b>getchar()</b> (non-blocking)<br>
248 Write: <b>putchar(ch)</b></td>
249 </tr>
250 <tr>
251 <td align="left" valign="top">0x0010</td>
252 <td align="left" valign="top">Read or write: <b>halt()</b><br>
253 (Useful for exiting the emulator.)</td>
254 </tr>
255 </table>
256 </td>
257 </tr>
258
259 <tr height="15">
260 <td height="15">&nbsp;</td>
261 </tr>
262
263 <tr>
264 <td align="left" valign="top">
265 <b>mp:</b>
266 <p>This device controls the behaviour of CPUs in an emulated
267 multi-processor system.
268 <p>Source code:&nbsp;&nbsp;<font color="#0000f0">devices/dev_mp.c</font>
269 <br>Default physical address:&nbsp&nbsp;<font color="#0000f0">0x11000000</font>
270 </td>
271 <td></td>
272 <td align="left" valign="top">
273 <table border="0">
274 <tr>
275 <td align="left" valign="top"><i><u>Offset:</u></i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
276 <td align="left" valign="top"><i><u>Effect:</u></i></td>
277 </tr>
278 <tr>
279 <td align="left" valign="top">0x0000</td>
280 <td align="left" valign="top">Read: <b>whoami()</b>.
281 Returns the id of the CPU doing the read.</td>
282 </tr>
283 <tr>
284 <td align="left" valign="top">0x0010</td>
285 <td align="left" valign="top">Read: <b>ncpus()</b>.
286 Returns the number of CPUs in the system.</td>
287 </tr>
288 <tr>
289 <td align="left" valign="top">0x0020</td>
290 <td align="left" valign="top">Write: <b>startupcpu(i)</b>.
291 Starts CPU i. It begins execution at the address
292 set by a write to startupaddr (see below).</td>
293 </tr>
294 <tr>
295 <td align="left" valign="top">0x0030</td>
296 <td align="left" valign="top">Write: <b>startupaddr(addr)</b>.
297 Sets the starting address for CPUs.</td>
298 </tr>
299 <tr>
300 <td align="left" valign="top">0x0040</td>
301 <td align="left" valign="top">Write: <b>pause_addr(addr)</b>.
302 Sets the pause address. (TODO: This is not
303 used anymore?)</td>
304 </tr>
305 <tr>
306 <td align="left" valign="top">0x0050</td>
307 <td align="left" valign="top">Write: <b>pause_cpu(i)</b>.
308 Stops all CPUs <i>except</i> CPU i.</td>
309 </tr>
310 <tr>
311 <td align="left" valign="top">0x0060</td>
312 <td align="left" valign="top">Write: <b>unpause_cpu(i)</b>.
313 Unpauses all CPUs <i>except</i> CPU i.</td>
314 </tr>
315 <tr>
316 <td align="left" valign="top">0x0070</td>
317 <td align="left" valign="top">Write: <b>startupstack(addr)</b>.
318 Sets the startup stack address. (CPUs started with
319 startupcpu() above will have their stack pointer
320 set to this value.)</td>
321 </tr>
322 <tr>
323 <td align="left" valign="top">0x0080</td>
324 <td align="left" valign="top">Read: <b>hardware_random()</b>.
325 This produces a "random" number.</td>
326 </tr>
327 <tr>
328 <td align="left" valign="top">0x0090</td>
329 <td align="left" valign="top">Read: <b>memory()</b>.
330 Returns the number of bytes of RAM in the system.</td>
331 </tr>
332 </table>
333 </td>
334 </tr>
335
336 <tr height="15">
337 <td height="15">&nbsp;</td>
338 </tr>
339
340 <tr>
341 <td align="left" valign="top">
342 <b>fb:</b>
343 <p>A simple linear framebuffer, for graphics output.
344 640 x 480 pixels, 3 bytes per pixel (red, green, blue, 8 bits each).
345 <p>Source code:&nbsp;&nbsp;<font color="#0000f0">devices/dev_fb.c</font>
346 <br>Default physical address:&nbsp&nbsp;<font color="#0000f0">0x12000000</font>
347 </td>
348 <td></td>
349 <td align="left" valign="top">
350 <table border="0">
351 <tr>
352 <td align="left" valign="top"><i><u>Offset:</u></i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
353 <td align="left" valign="top"><i><u>Effect:</u></i></td>
354 </tr>
355 <tr>
356 <td align="left" valign="top">...</td>
357 <td align="left" valign="top">Read: read pixel values.
358 <br>Write: write pixel values.</td>
359 </tr>
360 </table>
361 </td>
362 </tr>
363
364 </table></center>
365
366 <p>
367 While these devices may resemble real-world hardware, they are
368 intentionally made simpler to use. (An exception is the framebuffer;
369 some machines actually have simple linear framebuffers like this.)
370
371 <p>
372 If the physical address is 0x10000000, then for MIPS that means that it
373 can be accessed at virtual address 0xffffffffb0000000. (Actually it can be
374 accessed at 0xffffffff90000000 too, but devices should usually be accessed
375 in a non-cached manner.)
376
377 <p>
378 (When using the PPC test machine, "testppc", the addresses are
379 0x10000000, 0x11000000 etc., so no need to add any virtual displacement.)
380
381 <p>
382 The <b>mp</b> device is agnostic when it comes to
383 word-length. For example, when reading offset 0x0000 of the <b>mp</b>
384 device, you may use any kind of read (an 8-bit read will work just as well
385 as a 64-bit read, although the value will be truncated to 8 bits in the
386 first case).
387
388 <p>
389 The <b>cons</b> device should be accessed using 8-bit reads and writes.
390 Doing a getchar() (ie reading from offset 0x0000) returns 0x00 if no
391 character was available.
392
393 <p>
394 On MIPS, the <b>cons</b> device is hardwired to interrupt 2 (the lowest
395 hardware interrupt). Whenever a character is available, the interrupt is
396 asserted. When there are no more available characters, the interrupt is
397 deasserted. (Remember that the interrupt has to be enabled in the status
398 register of the system coprocessor.)
399
400
401
402
403
404
405 <p><br>
406 <a name="experiments"></a>
407 <h3>Experiments with other kernels and guest OSes:</h3>
408
409 <p>
410 Free Operating system kernels and other test programs can be
411 downloaded from various places on the Internet. Other kinds of software
412 (non-Free), if obsolete enough (such as Ultrix or Windows NT), can
413 sometimes be found in garbage containers, or perhaps be found for a cheap
414 price on ebay or at a flea market.
415
416 <p>
417 <font color="#ff0000">
418 NOTE: This is <i>not</i> a list of kernels that work in the emulator.
419 It is a list of kernels that I experiment with.
420 </font>
421
422 <p>
423 For more information about which of these that actually work, read the
424 <a href="intro.html#guestos">section in the Introduction chapter</a>
425 that lists guest operating systems. If a system is not listed there, it
426 probably doesn't work in GXemul.
427
428 <p>
429 <ul>
430 <li>DECstation:
431 <ul>
432 <li><a href="http://www.netbsd.org/Ports/pmax/">NetBSD/pmax</a>:
433 <br><a href="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/pmax/binary/kernel/netbsd-INSTALL.gz">ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/pmax/binary/kernel/netbsd-INSTALL.gz</a>
434 <br><a href="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/pmax/binary/kernel/netbsd-INSTALL.symbols.gz">ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/pmax/binary/kernel/netbsd-INSTALL.symbols.gz</a>
435 <br>gunzip the files, and run the emulator with <b><tt>-E dec -e 3max -q -N -XY2</tt></b>
436 for a graphical framebuffer console. Remove <b><tt>-XY2</tt></b> and <b><tt>-N</tt></b> to use serial (stdin/stdout) console.
437 Read <a href="guestoses.html#netbsdinstall">this section</a> about how to install NetBSD/pmax onto a harddisk image.
438 <p>
439 <li><a href="http://www.openbsd.org/pmax.html">OpenBSD/pmax</a>:
440 <br><a href="ftp://ftp.se.openbsd.org/pub/OpenBSD/2.8/pmax/bsd">ftp://ftp.se.openbsd.org/pub/OpenBSD/2.8/pmax/bsd</a>
441 <br>This is an old OpenBSD kernel in a.out format. Try <b><tt>-E dec -e 3max</tt></b>.
442 <br>Read <a href="guestoses.html#openbsdinstall">this section</a> about how to install OpenBSD/pmax onto a harddisk image.
443 It's a bit more complicated than installing NetBSD/pmax, but
444 it usually works.
445 <p>
446 <li>Linux for DECstation:
447 <br>Read <a href="guestoses.html#declinux">this section</a> about how to run a Debian Linux install kernel.
448 <br>Here are some older kernels (these don't support framebuffer, I think):
449 <a href="http://www.xs4all.nl/~vhouten/mipsel/kernels.html">http://www.xs4all.nl/~vhouten/mipsel/kernels.html</a>
450 <br>Note: Make sure you add <b><tt>-CR4400</tt></b> to the command line for
451 R4000 kernels, as Linux doesn't autodetect CPU type at runtime.
452 <br>Linux also doesn't detect automatically whether you are booting
453 in graphical or serial console mode, so you need to add
454 <tt><b>-o 'console=ttyS3'</b></tt> or similar for serial
455 console mode.
456 <p>
457 <li><a href="http://www.cs.berkeley.edu/projects/sprite/retrospective.html">Sprite</a>:
458 <br>The Unix Heritage Society (TUHS, <a href="http://www.tuhs.org">www.tuhs.org</a>)
459 has preserved a copy of a harddisk image for a DECstation
460 5000/200 (3MAX).
461 <br>Read <a href="guestoses.html#sprite">this section</a> for more information
462 about running this harddisk image in the emulator.
463 <p>
464 <li><a href="http://www-2.cs.cmu.edu/afs/cs/project/mach/public/www/mach.html">Mach</a>:
465 <br>Important! Run <b><tt>./configure --caches; make</tt></b>
466 <br>Also important: This is broken right now. :-(
467 <br>Download <a href="http://lost-contact.mit.edu/afs/athena/user/d/a/daveg/Info/Links/Mach/src/release/">http://lost-contact.mit.edu/afs/athena/user/d/a/daveg/Info/Links/Mach/src/release</a>/<a href="http://lost-contact.mit.edu/afs/athena/user/d/a/daveg/Info/Links/Mach/src/release/pmax.tar.Z">pmax.tar.Z</a>
468 <br><tt><b>tar xfvz pmax.tar.Z pmax_mach/special/mach.boot.MK83.STD+ANY</b></tt>
469 <br><tt><b>gxemul -E dec -e 3max -X pmax_mach/special/mach.boot.MK83.STD+ANY</b></tt>
470 </ul>
471 </li>
472
473 <p>
474
475 <li>SGI:
476 <ul>
477 <li><a href="http://www.netbsd.org/Ports/sgimips/">NetBSD/sgimips</a>:
478 <br><a href="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/sgimips/binary/kernel/netbsd-INSTALL32_IP3x.gz">ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/sgimips/binary/kernel/netbsd-INSTALL32_IP3x.gz</a>
479 <br><a href="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/sgimips/binary/kernel/netbsd-INSTALL32_IP3x.symbols.gz">ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/sgimips/binary/kernel/netbsd-INSTALL32_IP3x.symbols.gz</a>
480 <br>gunzip, and try running with <b><tt>-E sgi -e ip32</tt></b>.
481 <br><a href="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/sgimips/binary/kernel/netbsd-INSTALL32_IP2x.gz">ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/sgimips/binary/kernel/netbsd-INSTALL32_IP2x.gz</a>
482 <br><a href="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/sgimips/binary/kernel/netbsd-INSTALL32_IP2x.symbols.gz">ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/sgimips/binary/kernel/netbsd-INSTALL32_IP2x.symbols.gz</a>
483 <br>gunzip, and try running with <b><tt>-E sgi -e ip22</tt></b> (or <b><tt>ip24</tt></b> or <b><tt>ip20</tt></b>).
484 <p>
485 <li>Linux/SGI:
486 <br>Some kernels are available here: <a href="http://www.linux-mips.org/~glaurung/">http://www.linux-mips.org/~glaurung/</a>
487 <br>Try running with <b><tt>-E sgi -e ip32 -X</tt></b> for a graphical framebuffer, or
488 <b><tt>-E sgi -e ip32 -o 'console=ttyS0'</tt></b> for serial console.
489 <br>Adding <b><tt>-b</tt></b> (bintrans) might work sometimes.
490 <br>(You need to add <b><tt>-CR5000</tt></b> if you're trying to run
491 a kernel compiled for R5000, because Linux doesn't autodetect
492 the CPU type at runtime.)
493 <br>Also: <a href="http://www.tal.org/~milang/o2/kernels/">http://www.tal.org/~milang/o2/kernels</a>/<a href="http://home.tal.org/~milang/o2/kernels/vmlinux64-2.6.8.1-IP32">vmlinux64-2.6.8.1-IP32</a>
494 <br>Try <b><tt>-E sgi -e ip32 -b -X -CR5000 vmlinux64-2.6.8.1-IP32</tt></b>.
495 <br>And also some IP27 kernels:
496 <a href="http://www.total-knowledge.com/progs/mips/kernels/vmlinux.ip27-20040428">http://www.total-knowledge.com/progs/mips/kernels/vmlinux.ip27-20040428</a>
497 and
498 <a href="http://www.total-knowledge.com/progs/mips/kernels/vmlinux.ip27-20040528.bz2">http://www.total-knowledge.com/progs/mips/kernels/vmlinux.ip27-20040528.bz2</a>
499 (but unfortunately these lack symbols).
500 <br>Try the IP27 kernels with <b><tt>-E sgi -e ip27 -t</tt></b>.
501 <p>
502 <li><a href="http://www.openbsd.org/sgi.html">OpenBSD/sgi</a>:
503 <br><a href="ftp://ftp.openbsd.org/pub/OpenBSD/3.7/sgi/bsd.rd">ftp://ftp.openbsd.org/pub/OpenBSD/3.7/sgi/bsd.rd</a>
504 <br>More recent snapshots can be found at <a href="ftp://ftp.OpenBSD.org/pub/OpenBSD/snapshots/sgi/">ftp://ftp.OpenBSD.org/pub/OpenBSD/snapshots/sgi/</a>.
505 <br>Try <b><tt>gxemul -b -E sgi -e ip32 bsd.rd</tt></b>
506 <p>
507 <li><a href="http://www.freebsd.org/platforms/mips.html">FreeBSD/MIPS</a>:
508 I don't think public binary snapshots are available yet.
509 <p>
510 <li>arcdiag:
511 <br>The NetBSD people have also made available an "arcdiag" for SGI-IP22:
512 <br><a href="ftp://ftp.netbsd.org/pub/NetBSD/arch/sgimips/arcdiag.ip22">ftp://ftp.netbsd.org/pub/NetBSD/arch/sgimips/arcdiag.ip22</a>
513 <br>Try running <tt><b>gxemul -E sgi -e ip22 -x arcdiag.ip22</b></tt>.
514 </ul>
515 </li>
516
517 <p>
518
519 <li>ARC:
520 <ul>
521 <li><a href="http://www.netbsd.org/Ports/arc/">NetBSD/arc</a>:
522 <br><a href="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/arc/binary/kernel/netbsd-RAMDISK.gz">ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/arc/binary/kernel/netbsd-RAMDISK.gz</a>
523 <br><a href="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/arc/binary/kernel/netbsd-RAMDISK.symbols.gz">ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/arc/binary/kernel/netbsd-RAMDISK.symbols.gz</a>
524 <br>gunzip, and try with <b><tt>-E arc -e rd94</tt></b>.
525 <br>(You may also try other ARC models.)
526 <br>Read <a href="guestoses.html#netbsdarcinstall">this section</a> about how
527 to install NetBSD/arc 1.6.2 onto a harddisk image.
528 <br>(NetBSD/arc 2.0 doesn't work with disk images yet in GXemul.)
529 <p>
530 <li><a href="http://www.openbsd.org/arc.html">OpenBSD/arc</a>:
531 <br><a href="ftp://ftp.se.openbsd.org/pub/OpenBSD/2.3/arc/bsd.rd.elf">ftp://ftp.se.openbsd.org/pub/OpenBSD/2.3/arc/bsd.rd.elf</a>
532 <br>Try running with <b><tt>-X -E arc -e pica</tt></b> or <b><tt>-X -E arc -e tyne</tt></b>.
533 <br>Read <a href="guestoses.html#openbsdarcinstall">this section</a> about how
534 to install OpenBSD/arc onto a harddisk image.
535 <p>
536 <li>Linux:
537 <br><a href="ftp://ftp.linux-mips.org/pub/linux/mips/mipsel-linux/boot/vmlinux-m700-2.1.131.gz">ftp://ftp.linux-mips.org/pub/linux/mips/mipsel-linux/boot/vmlinux-m700-2.1.131.gz</a>
538 <br>gunzip, and run with <b><tt>-v -J -X -N -E arc -e m700</tt></b> (Olivetti M700)
539 <br>(This probably doesn't work anymore.)
540 <p>
541 <li>Pandora:
542 <br><a href="ftp://ftp.linux-mips.org/pub/linux/mips/ancient/milo/">ftp://ftp.linux-mips.org/pub/linux/mips/ancient/milo</a>/<a href="ftp://ftp.linux-mips.org/pub/linux/mips/ancient/milo/milo-0.27.1.tar.gz">milo-0.27.1.tar.gz</a>
543 <br>A generic test/diagnostics program for ARC-based machines.
544 <br>Run with <b><tt>-E arc -e r94 milo-0.27.1/pandora</tt></b>
545 <p>
546 <li>arcdiag:
547 <br>Precompiled binary:<a href="ftp://ftp.netbsd.org/pub/NetBSD/arch/arc/arcdiag">ftp://ftp.netbsd.org/pub/NetBSD/arch/arc/arcdiag</a>
548 <br>(alternative: <a href="http://www.sensi.org/~alec/mips/arcdiag">http://www.sensi.org/~alec/mips/arcdiag</a>)
549 <br>A generic test/diagnostics program for ARC-based machines.
550 <br>Run with <b><tt>-E arc -e pica arcdiag</tt></b> (or some other ARC mode).
551 <br>Example arcdiag output (from real machines):
552 <br><a href="http://mail-index.netbsd.org/port-arc/2000/10/18/0001.html">http://mail-index.netbsd.org/port-arc/2000/10/18/0001.html</a> (Olivetti M700-10)
553 <br><a href="http://www.sensi.org/~alec/mips/arcdiag.txt">http://www.sensi.org/~alec/mips/arcdiag.txt</a> (PICA-61)
554 <br><a href="http://mail-index.netbsd.org/port-arc/2000/10/14/0000.html">http://mail-index.netbsd.org/port-arc/2000/10/14/0000.html</a> (Deskstation Tyne)
555 <br><a href="http://mail-index.netbsd.org/port-arc/2004/02/01/0001.html">http://mail-index.netbsd.org/port-arc/2004/02/01/0001.html</a> (NEC RISCserver 4200)
556 <br><a href="http://mirror.aarnet.edu.au/pub/NetBSD/misc/chs/arcdiag.out">http://mirror.aarnet.edu.au/pub/NetBSD/misc/chs/arcdiag.out</a> (NEC-R96)
557 <br>For some machines, such as <tt><b>-e pica</b></tt>, you can
558 add <b><tt>-X</tt></b> to boot with a graphical VGA-style
559 console. This however is probably a bit unstable and/or
560 broken right now.
561 <p>
562 <li>Windows NT:
563 <br>Put a "Windows NT 4.0 for MIPS" CDROM (or similar) into
564 your CDROM drive. (On FreeBSD systems, it is usually called
565 /dev/cd0c or similar. Change that to whatever the CDROM
566 is called on your system, or the name of a raw .iso image.)
567 <br>I have tried this with the Swedish version, but it might
568 work with other versions too.<pre>
569 $ <b><tt>dd if=/dev/zero of=winnt_test.img bs=1024 count=1 seek=999000</tt></b>
570 $ <b><tt>gxemul -X -b -Earc -epica -d winnt_test.img -d bc6:/dev/cd0c -j MIPS\\ARCINST</tt></b>
571 $ <b><tt>gxemul -X -b -Earc -epica -d winnt_test.img -d bc6:/dev/cd0c -j MIPS\\SETUPLDR</tt></b>
572 </pre> <br><tt>ARCINST</tt> tries to prepare the disk image for installation. (It <i>almost</i> works.)
573 <br><tt>SETUPLDR</tt> should load some drivers from the cdrom, but then it crashes with a bluescreen.
574 </ul>
575 </li>
576
577 <p>
578
579 <li>HPCmips:
580 <ul>
581 <li><a href="http://www.netbsd.org/Ports/hpcmips/">NetBSD/hpcmips</a>:
582 <br><a href="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/hpcmips/installation/">ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/hpcmips/installation</a>/<a href="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/hpcmips/installation/netbsd.gz">netbsd.gz</a>
583 <br>Try <b><tt>gxemul -X -b -E hpc -e mobilepro770 netbsd</tt></b>
584 <br><a href="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/hpcmips/binary/kernel/netbsd-GENERIC.gz">ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/hpcmips/binary/kernel/netbsd-GENERIC.gz</a>
585 <br>Try <b><tt>gxemul -X -b -E hpc -e mobilepro770 netbsd-GENERIC</tt></b>
586 <p>
587 <li>Linux for BE300:
588 <br><a href="http://www.linux4.be/2004/linux4be20040908.zip">http://www.linux4.be/2004/linux4be20040908.zip</a>
589 <br>Try <b><tt>gxemul -X -b -E hpc -e be300 vmlinux</tt></b>
590 <p>
591 <li>Linux for Agenda VR3:
592 <br>Download <a href="http://agenda-snow.sourceforge.net/kernel-old-versions/binary/">http://agenda-snow.sourceforge.net/kernel-old-versions/binary</a>/<a href="http://agenda-snow.sourceforge.net/kernel-old-versions/binary/root1.2.6.kernel-8.00">root1.2.6.kernel-8.00</a>
593 <br>and <a href="http://vr3.uid0.sk/cd/Software/VR3_Distributions/H2O/">http://vr3.uid0.sk/cd/Software/VR3_Distributions/H2O</a>/<a href="http://vr3.uid0.sk/cd/Software/VR3_Distributions/H2O/root1.2.6.cramfs">root1.2.6.cramfs</a>.
594 <br>(or <a href="http://www.ipsec.info/~www/agenda/dream-1-noxip.cramfs">http://www.ipsec.info/~www/agenda/dream-1-noxip.cramfs</a>)
595 <br>Try <b><tt>gxemul -b -X -E hpc -e vr3 -x 0xbf200000:root1.2.6.cramfs 0xbf000000:0:0xbf0005e0:root1.2.6.kernel-8.00</tt></b>
596 <br>(or replace root1.2.6.cramfs with dream-1-noxip.cramfs)
597 <br>Remove <b><tt>-X</tt></b> to try with serial console instead of X, and
598 remove <b><tt>-b</tt></b> to try without (old) bintrans.
599 <br>Add <b><tt>-o 'init=/bin/sh'</tt></b> to boot into a single-user shell.
600 <br>Add <b><tt>-o 'init=/sbin/restore_defaults'</tt></b> to run
601 a <tt>/sbin/restore_defaults</tt> (attempt to initialize the
602 flash memory).
603 <p>
604 <li>Linux for MobilePro etc.:
605 <br><a href="http://pc1.peanuts.gr.jp/~kei/Hard-Float/Kernels/">http://pc1.peanuts.gr.jp/~kei/Hard-Float/Kernels/</a>
606 <br>Uncompress the archive to get a kernel, vmlinux-800 for example.
607 <br>Try <b><tt>./gxemul -b -X -o 'root=/dev/hda1' -d r:disk.img -d r:disk.img -Ehpc -e mobilepro800 vmlinux-800</tt></b>
608 <br>where disk.img is an ext2fs filesystem with contents from
609 <a href="http://pc1.peanuts.gr.jp/~kei/Hard-Float/Miniroots/miniroot-20010330.tar.bz2">http://pc1.peanuts.gr.jp/~kei/Hard-Float/Miniroots/miniroot-20010330.tar.bz2</a>
610 <br>(Note the double disk arguments.)
611 <br>Note 2: This doesn't work yet.
612 <p>
613 <li><a href="http://www.disorder.ru/openbsd/be300/">OpenBSD/be300</a>:
614 <br><a href="http://www.disorder.ru/openbsd/be300/bsd.rd">http://www.disorder.ru/openbsd/be300/bsd.rd</a>
615 <br>Try <b><tt>gxemul -X -b -E hpc -e be300 bsd.rd</tt></b>
616 <br>Note: -b might be buggy, so you can try without that if you want to.
617 </ul>
618 </li>
619
620 <p>
621
622 <li>Cobalt:
623 <ul>
624 <li><a href="http://www.netbsd.org/Ports/cobalt/">NetBSD/cobalt</a>:
625 <br><a href="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-1.6.2/cobalt/binary/kernel/netbsd-GENERIC.gz">ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-1.6.2/cobalt/binary/kernel/netbsd-GENERIC.gz</a>
626 <br>gunzip, and run with <b><tt>-E cobalt</tt></b>
627 <br>(Or read <a href="guestoses.html#netbsdcobaltinstall">this
628 section</a> on how to install NetBSD/cobalt onto a harddisk image.)
629 <p>
630 <li>Linux:
631 <br><a href="http://people.debian.org/~pm/mips-cobalt/nfsroot/vmlinux_raq-2800.gz">http://people.debian.org/~pm/mips-cobalt/nfsroot/vmlinux_raq-2800.gz</a>
632 <br>gunzip, and run with <b><tt>-E cobalt</tt></b>
633 <p>
634 <li>CoLo:
635 <br><a href="http://www.colonel-panic.org/cobalt-mips/colo/colo-1.19.tar.gz">http://www.colonel-panic.org/cobalt-mips/colo/colo-1.19.tar.gz</a>
636 <br><tt><b>tar zxvf colo-1.19.tar.gz colo-1.19/binaries/colo-rom-image.bin</b></tt>
637 <br><tt><b>gxemul -Q -Ecobalt -v 0xbfc00000:colo-1.19/binaries/colo-rom-image.bin</b></tt>
638 <br>(This doesn't work yet.)
639 </ul>
640 </li>
641
642 <p>
643
644 <li>Playstation 2:
645 <ul>
646 <li><a href="http://www.netbsd.org/Ports/playstation2/">NetBSD/playstation2</a>:
647 <br>NetBSD/playstation2 snapshot kernels are available here: (RAMDISK and GENERIC)
648 <br><a href="ftp://ftp.NetBSD.org/pub/NetBSD/arch/playstation2/snapshot/20020327/installation/netbsd.gz">ftp://ftp.NetBSD.org/pub/NetBSD/arch/playstation2/snapshot/20020327/installation/netbsd.gz</a>
649 <br><a href="ftp://ftp.NetBSD.org/pub/NetBSD/arch/playstation2/snapshot/20020327/binary/kernel/netbsd-GENERIC.gz">ftp://ftp.NetBSD.org/pub/NetBSD/arch/playstation2/snapshot/20020327/binary/kernel/netbsd-GENERIC.gz</a>
650 <br>Try running with <b><tt>-X -E playstation2</tt></b> (<b><tt>-X</tt></b> is required, for the framebuffer).
651
652 <p>
653 <li>Linux:
654 <br>A Linux kernel (2.2.21-pre1-xr7) is available from
655 <a href="http://playstation2-linux.com/projects/xrhino-kernel/">http://playstation2-linux.com/projects/xrhino-kernel/</a>
656 <br>Try running with <b><tt>-X -E playstation2</tt></b> (<b><tt>-X</tt></b> is required, for the framebuffer).
657 </ul>
658 </li>
659
660 </ul>
661
662 <p>
663 The following work even less than the ones listed above:
664
665 <p>
666 <ul>
667 <li>Sony NeWS:
668 <ul>
669 <li><a href="http://www.netbsd.org/Ports/newsmips/">NetBSD/newsmips</a>:
670 <br>A NetBSD/newsmips kernel and corresponding symbols are
671 available here:
672 <br><a href="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/newsmips/binary/kernel/netbsd-INSTALL.gz">ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/newsmips/binary/kernel/netbsd-INSTALL.gz</a>
673 <br><a href="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/newsmips/binary/kernel/netbsd-INSTALL.symbols.gz">ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/newsmips/binary/kernel/netbsd-INSTALL.symbols.gz</a>
674 <br>Try running with <b><tt>-E sonynews</tt></b>.
675 <br>There's also a boot floppy available, but the emulator currently
676 doesn't support booting from it:
677 <br><a href="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-1.6/newsmips/installation/floppy/boot.fs">ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-1.6/newsmips/installation/floppy/boot.fs</a>
678 </ul>
679 </li>
680
681 <p>
682
683 <li><a href="http://www.meshcube.org/">MeshCube</a>:
684 <ul>
685 <li>Linux:
686 <br>A Linux kernel is available from
687 <a href="http://www.meshcube.org/feed/stable/">http://www.meshcube.org/feed/stable</a>/<a href="http://www.meshcube.org/feed/stable/kernel-image-mtx_2.4.24-3_mipsel.ipk">kernel-image-mtx_2.4.24-3_mipsel.ipk</a>
688 <br>(This is a Debian package, you can use <tt><b>ar</b></tt> and
689 <tt><b>tar</b></tt> to extract kernel.img from it.)
690 <br>Try running with <b><tt>-E meshcube 0x80800000:kernel.img</tt></b>.
691 </ul>
692 </li>
693
694 <p>
695
696 <li><a href="http://www.seattlewireless.net/index.cgi/NetgearWG602">NetGear WG602</a>:
697 <ul>
698 <li>Linux:
699 <br>A Linux kernel is available from
700 <a href="ftp://downloads.netgear.com/files/wg602_v1715.zip">ftp://downloads.netgear.com/files/wg602_v1715.zip</a>
701 <br>(Unzip wg602_v1715.zip to get WG602_V1715.img.)
702 <br>Try running with <b><tt>-E netgear 0xbfc80000:0x40:WG602_V1715.img</tt></b>.
703 <br>(It takes some time to decompress the kernel, so be patient.)
704 <br>(This doesn't really work yet.)
705 </ul>
706 </li>
707
708 </ul>
709
710 <p>
711 The following don't work at all, actually, because the PPC and SPARC
712 modes are just skeletons so far.
713
714 <p>
715 <ul>
716
717 <li>Walnut (evbppc):
718 <ul>
719 <li><a href="http://www.netbsd.org/Ports/evbppc/">NetBSD/evbppc</a>:
720 <br><a href="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/evbppc/binary/kernel/netbsd-INSTALL_WALNUT.gz">ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/evbppc/binary/kernel/netbsd-INSTALL_WALNUT.gz</a>
721 <br>gunzip, and try the following:
722 <br><tt><b>gxemul -E walnut -v -t netbsd-INSTALL_WALNUT</b></tt>
723 </ul>
724 </li>
725
726 <p>
727
728 <li>Artesyn's PM/PPC board (pmppc):
729 <ul>
730 <li><a href="http://www.netbsd.org/Ports/pmppc/">NetBSD/pmppc</a>:
731 <br><a href="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/pmppc/binary/kernel/netbsd-INSTALL.gz">ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/pmppc/binary/kernel/netbsd-INSTALL.gz</a>
732 <br>gunzip, and try the following:
733 <br><tt><b>gxemul -E pmppc netbsd-INSTALL</b></tt>
734 </ul>
735 </li>
736
737 <p>
738
739 <li>Motorola Sandpoint (sandpoint):
740 <ul>
741 <li><a href="http://www.netbsd.org/Ports/sandpoint/">NetBSD/sandpoint</a>:
742 <br><a href="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/sandpoint/binary/kernel/netbsd-INSTALL.gz">ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/sandpoint/binary/kernel/netbsd-INSTALL.gz</a>
743 <br>gunzip, and try the following:
744 <br><tt><b>gxemul -E sandpoint -v -t netbsd-INSTALL</b></tt>
745 </ul>
746 </li>
747
748 <p>
749
750 <li>PReP:
751 <ul>
752 <li><a href="http://www.netbsd.org/Ports/prep/">NetBSD/prep</a>:
753 <br><a href="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/prep/binary/kernel/netbsd-INSTALL.gz">ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/prep/binary/kernel/netbsd-INSTALL.gz</a>
754 <br>gunzip, and try the following:
755 <br><tt><b>gxemul -E prep -v -t netbsd-INSTALL</b></tt>
756 <p>
757 <li>Linux:
758 <br><a href="http://jocelyn.mayer.free.fr/qemu-ppc/linux_images/2.4.25-PPC/vmlinux">http://jocelyn.mayer.free.fr/qemu-ppc/linux_images/2.4.25-PPC/vmlinux</a>
759 <br><tt><b>gxemul -E prep -v -t vmlinux</b></tt>
760 </ul>
761 </li>
762
763 <p>
764
765 <li>MacPPC:
766 <ul>
767 <li><a href="http://www.netbsd.org/Ports/macppc/">NetBSD/macppc</a>:
768 <br><a href="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/macppc/binary/kernel/">ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/macppc/binary/kernel</a>/<a href="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/macppc/binary/kernel/netbsd-INSTALL.gz">netbsd-INSTALL.gz</a>
769 <br><tt><b>gxemul -E macppc -e g4 -t netbsd-INSTALL</b></tt>
770 <p>
771 <li><a href="http://www.openbsd.org/macppc.html">OpenBSD/macppc</a>:
772 <br><a href="ftp://ftp.openbsd.org/pub/OpenBSD/3.6/macppc/">ftp://ftp.openbsd.org/pub/OpenBSD/3.6/macppc</a>/<a href="ftp://ftp.openbsd.org/pub/OpenBSD/3.6/macppc/bsd.rd">bsd.rd</a>
773 <br><tt><b>gxemul -E macppc -e g4 -t bsd.rd</b></tt>
774 </ul>
775 </li>
776
777 <p>
778
779 <li>BeBox:
780 <ul>
781 <li><a href="http://www.netbsd.org/Ports/bebox/">NetBSD/bebox</a>:
782 <br><a href="ftp://ftp.netbsd.org/pub/NetBSD/arch/bebox/snapshot/19981119/">ftp://ftp.netbsd.org/pub/NetBSD/arch/bebox/snapshot/19981119</a>/<a href="ftp://ftp.netbsd.org/pub/NetBSD/arch/bebox/snapshot/19981119/kern.tgz">kern.tgz</a>
783 <br><tt><b>tar xvzf kern.tgz</b></tt>
784 <br><tt><b>gxemul -E bebox netbsd</b></tt>
785 <p>
786 <li><a href="http://www.bebox.nu/os.php?s=os/linux/index">Linux/bebox</a>:
787 <br><a href="http://www.bebox.nu/files/linux/BeBox-scsi-980610.gz">http://www.bebox.nu/files/linux/BeBox-scsi-980610.gz</a>
788 <br><tt><b>gunzip BeBox-scsi-980610.gz</b></tt>
789 <br><tt><b>gxemul -E bebox 0x3100:0x400:BeBox-scsi-980610</b></tt>
790 </ul>
791 </li>
792
793 <p>
794
795 <li>SPARC64:
796 <ul>
797 <li><a href="http://www.netbsd.org/Ports/sparc64/">NetBSD/sparc64</a>:
798 <br><a href="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/sparc64/binary/kernel/netbsd-INSTALL.gz">ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/sparc64/binary/kernel/netbsd-INSTALL.gz</a>
799 <br>gunzip, and try the following:
800 <br><tt><b>gxemul -E ultra1 -v -i netbsd-INSTALL</b></tt>
801 <p>
802 <li><a href="http://www.openbsd.org/sparc64.html">OpenBSD/sparc64</a>:
803 <br><a href="ftp://ftp.openbsd.org/pub/OpenBSD/3.6/sparc64/bsd.rd">ftp://ftp.openbsd.org/pub/OpenBSD/3.6/sparc64/bsd.rd</a>
804 <br>rename to bsd.rd.gz, gunzip, and try the following:
805 <br><tt><b>gxemul -E ultra1 -v -i bsd.rd</b></tt>
806 </ul>
807 </li>
808 </ul>
809
810 <p>
811 The URISC emulation mode is just for fun. (Read
812 <a href="http://en.wikipedia.org/wiki/URISC">http://en.wikipedia.org/wiki/URISC</a>
813 for more info.)
814
815 <p>
816 <ul>
817
818 <li>URISC:
819 <ul>
820 <li>I've placed a small test program in the experiments directory.
821 <br>Start like this: <tt><b>gxemul -E testurisc 0:urisc_test.bin</b></tt>
822 <br>or, if you want to single-step:
823 <b><tt>gxemul -V -E testurisc 0:urisc_test.bin</b></tt>
824 <br>2005-03-01: All outputed characters are printed twice. I'll
825 try to make a pseudo-device for outputing to "normal" devices
826 later.
827 </ul>
828 </li>
829
830 </ul>
831
832
833
834
835
836
837 </p>
838
839 </body>
840 </html>

  ViewVC Help
Powered by ViewVC 1.1.26