/[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 4 - (show annotations)
Mon Oct 8 16:18:00 2007 UTC (16 years, 6 months ago) by dpavlin
File MIME type: text/html
File size: 37116 byte(s)
++ trunk/HISTORY	(local)
$Id: HISTORY,v 1.707 2005/04/27 16:37:33 debug Exp $
20050408	Some minor updates to the wdc. Linux now doesn't complain
		anymore if a disk is non-present.
20050409	Various minor fixes (a bintrans bug, and some other things).
		The wdc seems to work with Playstation2 emulation, but there
		is a _long_ annoying delay when disks are detected.
		Fixing a really important bintrans bug (when devices and RAM
		are mixed within 4KB pages), which was triggered with
		NetBSD/playstation2 kernels.
20050410	Adding a dummy dev_ps2_ether (just so that NetBSD doesn't
		complain as much during bootup).
		Symbols starting with '$' are now ignored.
		Renaming dev_ps2_ohci.c to dev_ohci.c, etc.
20050411	Moving the bintrans-cache-isolation check from cpu_mips.c to
		cpu_mips_coproc.c. (I thought this would give a speedup, but
		it's not noticable.)
		Better playstation2 sbus interrupt code.
		Skip ahead many ticks if the count register is read manually.
		(This increases the speed of delay-loops that simply read
		the count register.)
20050412	Updates to the playstation2 timer/interrupt code.
		Some other minor updates.
20050413	NetBSD/cobalt runs from a disk image :-) including userland;
		updating the documentation on how to install NetBSD/cobalt
		using NetBSD/pmax (!).
		Some minor bintrans updates (no real speed improvement) and
		other minor updates (playstation2 now uses the -o options).
20050414	Adding a dummy x86 (and AMD64) mode.
20050415	Adding some (32-bit and 16-bit) x86 instructions.
		Adding some initial support for non-SCSI, non-IDE floppy
		images. (The x86 mode can boot from these, more or less.)
		Moving the devices/ and include/ directories to src/devices/
		and src/include/, respectively.
20050416	Continuing on the x86 stuff. (Adding pc_bios.c and some simple
		support for software interrupts in 16-bit mode.)
20050417	Ripping out most of the x86 instruction decoding stuff, trying
		to rewrite it in a cleaner way.
		Disabling some of the least working CPU families in the
		configure script (sparc, x86, alpha, hppa), so that they are
		not enabled by default.
20050418	Trying to fix the bug which caused problems when turning on
		and off bintrans interactively, by flushing the bintrans cache
		whenever bintrans is manually (re)enabled.
20050419	Adding the 'lswi' ppc instruction.
		Minor updates to the x86 instruction decoding.
20050420	Renaming x86 register name indices from R_xx to X86_R_xx (this
		makes building on Tru64 nicer).
20050422	Adding a check for duplicate MIPS TLB entries on tlbwr/tlbwi.
20050427	Adding screenshots to guestoses.html.
		Some minor fixes and testing for the next release.

==============  RELEASE 0.3.2  ==============


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.60 2005/04/16 00:29:45 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 The emulator has several modes where it doesn't emulate any real machine.
78 It can either run in "bare" mode, where no devices are included by default
79 (just the CPU), or in a "test" mode where some simple devices are
80 emulated.
81
82 <p>
83 <table border="0"><tr><td width="40">&nbsp;</td><td>
84 <pre>
85 <font color=#f00000>/* Hello world for GXemul */
86
87 /* Note: The cast to a signed int causes the address to be sign-extended
88 correctly to 0xffffffffb00000xx when compiled in 64-bit mode */
89 </font><font color=#a0a0a0>#define PUTCHAR_ADDRESS ((signed int)0xb0000000)
90 #define HALT_ADDRESS ((signed int)0xb0000010)
91
92 </font><font color=#c000c0>void </font><font color=#000000><a name="printchar">printchar</a>(</font><font color=#c000c0>char </font><font color=#000000>ch)
93 {
94 *((</font><font color=#c000c0>volatile unsigned char </font><font color=#000000>*) PUTCHAR_ADDRESS) = ch;
95 }
96
97 </font><font color=#c000c0>void </font><font color=#000000><a name="halt">halt</a>(</font><font color=#c000c0>void</font><font color=#000000>)
98 {
99 *((</font><font color=#c000c0>volatile unsigned char </font><font color=#000000>*) HALT_ADDRESS) = 0;
100 }
101
102 </font><font color=#c000c0>void </font><font color=#000000><a name="printstr">printstr</a>(</font><font color=#c000c0>char </font><font color=#000000>*s)
103 {
104 </font><font color=#c000c0>while </font><font color=#000000>(*s)
105 printchar(*s++);
106 }
107
108 </font><font color=#c000c0>void </font><font color=#000000>f(</font><font color=#c000c0>void</font><font color=#000000>)
109 {
110 printstr(</font><font color=#00c000>"Hello world\n"</font><font color=#000000>);
111 halt();
112 }
113 </font></pre>
114 </td></tr></table>
115
116 This hello world program is available here as well:
117 <a href="hello_mips.c">hello_mips.c</a>
118 <p>
119 I recommend that you build a GCC cross compiler for the
120 <b>mips64-unknown-elf</b> target, and install it. Other compilers could
121 work too, but GCC is good because of its portability. Then try to compile
122 the hello world program:
123 <pre>
124 $ <b>mips64-unknown-elf-gcc -O2 hello_mips.c -mips4 -mabi=64 -c</b>
125 $ <b>mips64-unknown-elf-ld -Ttext 0xa800000000030000 -e f hello_mips.o -o hello_mips --oformat=elf64-bigmips</b>
126 $ <b>file hello_mips</b>
127 hello_mips: ELF 64-bit MSB mips-4 executable, MIPS R3000_BE, version 1 (SYSV), statically linked, not stripped
128 $ <b>gxemul -q -E testmips hello_mips</b>
129 Hello world
130
131 $ <b>mips64-unknown-elf-gcc -O2 hello_mips.c -c</b>
132 $ <b>mips64-unknown-elf-ld -Ttext 0x80030000 -e f hello_mips.o -o hello_mips</b>
133 $ <b>file hello_mips</b>
134 hello_mips: ELF 32-bit MSB mips-3 executable, MIPS R3000_BE, version 1 (SYSV), statically linked, not stripped
135 $ <b>gxemul -q -E testmips hello_mips</b>
136 Hello world
137 </pre>
138
139 <p>
140 As you can see above, a GCC configured for mips64-unknown-elf can produce
141 both 64-bit and 32-bit binaries. If you don't want to run the entire
142 Hello World program, but want to single-step through the execution to
143 learn more about how MIPS programs run, then add -V to the command line:
144
145 <p>
146 <pre>
147 $ <b>gxemul -V -E testmips hello_mips</b>
148 ..
149 GXemul&gt; <b>r</b>
150 cpu0: pc = a800000000030078 <f>
151 cpu0: hi = 0000000000000000 lo = 0000000000000000
152 cpu0: zr = 0000000000000000 at = 0000000000000000
153 cpu0: v0 = 0000000000000000 v1 = 0000000000000000
154 ..
155 cpu0: gp = a8000000000780c0 sp = ffffffffa0007f00
156 cpu0: fp = 0000000000000000 ra = 0000000000000000
157 GXemul&gt; <b>s 15</b>
158 &lt;f&gt;
159 a800000000030078: 67bdfff0 daddiu sp,sp,-16
160 a80000000003007c: 3c04a800 lui a0,0xa800
161 a800000000030080: 3c010003 lui at,0x3
162 a800000000030084: 64840000 daddiu a0,a0,0
163 a800000000030088: 642100b8 daddiu at,at,184
164 a80000000003008c: 0004203c dsll32 a0,a0,0
165 a800000000030090: 0081202d daddu a0,a0,at
166 a800000000030094: ffbf0000 sd ra,0(sp) [0xffffffffa0007ef0, data=0x0000000000000000]
167 a800000000030098: 0c00c00a jal 0xa800000000030028 &lt;printstr&gt;
168 a80000000003009c: 00000000 (d) nop
169 &lt;printstr("Hello world\n",0,0,0,..)&gt;
170 &lt;printstr&gt;
171 a800000000030028: 67bdfff0 daddiu sp,sp,-16
172 a80000000003002c: ffb00000 sd s0,0(sp) [0xffffffffa0007ee0, data=0x0000000000000000]
173 a800000000030030: ffbf0008 sd ra,8(sp) [0xffffffffa0007ee8, data=0xa8000000000300a0]
174 a800000000030034: 90820000 lbu v0,0(a0) [0xa8000000000300b8 = $LC0, data=0x48]
175 a800000000030038: 00021600 sll v0,v0,24
176 GXemul&gt; <b>print v0</b>
177 v0 = 0x0000000048000000
178 GXemul&gt; <b><blink>_</blink></b>
179 </pre>
180
181 <p>
182 The syntax of the single-step debugger shouldn't be too hard to grasp.
183 Type 's' to single-step one instruction. Just pressing enter after that
184 will repeat the 's' command. Type 'quit' to quit.
185
186 <p>
187 Hopefully this is enough to get you inspired. :-)
188
189
190
191 <p><br>
192 <h4>Hello World for GXemul's PPC mode</h4>
193
194 GXemul also has an experimental PowerPC emulation mode.
195 <a href="hello_ppc.c">hello_ppc.c</a> is similar to hello_mips.c, but
196 should be compiled and run as follows:
197 <p>
198 <pre>
199 $ <b>ppc-unknown-elf-gcc -O2 hello_ppc.c -c</b>
200 $ <b>ppc-unknown-elf-ld -e f hello_ppc.o -o hello_ppc</b>
201 $ <b>file hello_ppc</b>
202 hello_ppc: ELF 32-bit MSB executable, PowerPC or cisco 4500,
203 version 1 (SYSV), statically linked, not stripped
204 $ <b>gxemul -q -E testppc hello_ppc</b>
205 Hello world
206 </pre>
207
208 <p>
209 [&nbsp;2005-02-18: I haven't yet been able to build a GCC for ppc64 (only the
210 binutils toolchain), because the gcc sources seem to include Linux header files
211 that aren't present on my FreeBSD system. 32-bit PPC works ok, though.&nbsp;]
212
213
214
215
216
217
218 <p><br>
219 <a name="expdevices"></a>
220 <h3>Experimental devices:</h3>
221
222 The "test" MIPS machine has the following experimental devices:
223
224 <p>
225 <center><table border="0" width="80%">
226
227 <tr>
228 <td align="left" valign="top" width="200">
229 <b>cons:</b>
230 <p>This is a simple console device, for writing
231 characters to the controlling terminal.
232 <p>Source code:&nbsp;&nbsp;<font color="#0000f0">devices/dev_cons.c</font>
233 <br>Default physical address:&nbsp&nbsp;<font color="#0000f0">0x10000000</font>
234 </td>
235 <td align="left" valign="top" width="25">&nbsp;</td>
236 <td align="left" valign="top">
237 <table border="0">
238 <tr>
239 <td align="left" valign="top"><i><u>Offset:</u></i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
240 <td align="left" valign="top"><i><u>Effect:</u></i></td>
241 </tr>
242 <tr>
243 <td align="left" valign="top">0x0000</td>
244 <td align="left" valign="top">
245 Read: <b>getchar()</b> (non-blocking)<br>
246 Write: <b>putchar(ch)</b></td>
247 </tr>
248 <tr>
249 <td align="left" valign="top">0x0010</td>
250 <td align="left" valign="top">Read or write: <b>halt()</b><br>
251 (Useful for exiting the emulator.)</td>
252 </tr>
253 </table>
254 </td>
255 </tr>
256
257 <tr height="15">
258 <td height="15">&nbsp;</td>
259 </tr>
260
261 <tr>
262 <td align="left" valign="top">
263 <b>mp:</b>
264 <p>This device controls the behaviour of CPUs in an emulated
265 multi-processor system.
266 <p>Source code:&nbsp;&nbsp;<font color="#0000f0">devices/dev_mp.c</font>
267 <br>Default physical address:&nbsp&nbsp;<font color="#0000f0">0x11000000</font>
268 </td>
269 <td></td>
270 <td align="left" valign="top">
271 <table border="0">
272 <tr>
273 <td align="left" valign="top"><i><u>Offset:</u></i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
274 <td align="left" valign="top"><i><u>Effect:</u></i></td>
275 </tr>
276 <tr>
277 <td align="left" valign="top">0x0000</td>
278 <td align="left" valign="top">Read: <b>whoami()</b>.
279 Returns the id of the CPU doing the read.</td>
280 </tr>
281 <tr>
282 <td align="left" valign="top">0x0010</td>
283 <td align="left" valign="top">Read: <b>ncpus()</b>.
284 Returns the number of CPUs in the system.</td>
285 </tr>
286 <tr>
287 <td align="left" valign="top">0x0020</td>
288 <td align="left" valign="top">Write: <b>startupcpu(i)</b>.
289 Starts CPU i. It begins execution at the address
290 set by a write to startupaddr (see below).</td>
291 </tr>
292 <tr>
293 <td align="left" valign="top">0x0030</td>
294 <td align="left" valign="top">Write: <b>startupaddr(addr)</b>.
295 Sets the starting address for CPUs.</td>
296 </tr>
297 <tr>
298 <td align="left" valign="top">0x0040</td>
299 <td align="left" valign="top">Write: <b>pause_addr(addr)</b>.
300 Sets the pause address. (TODO: This is not
301 used anymore?)</td>
302 </tr>
303 <tr>
304 <td align="left" valign="top">0x0050</td>
305 <td align="left" valign="top">Write: <b>pause_cpu(i)</b>.
306 Stops all CPUs <i>except</i> CPU i.</td>
307 </tr>
308 <tr>
309 <td align="left" valign="top">0x0060</td>
310 <td align="left" valign="top">Write: <b>unpause_cpu(i)</b>.
311 Unpauses all CPUs <i>except</i> CPU i.</td>
312 </tr>
313 <tr>
314 <td align="left" valign="top">0x0070</td>
315 <td align="left" valign="top">Write: <b>startupstack(addr)</b>.
316 Sets the startup stack address. (CPUs started with
317 startupcpu() above will have their stack pointer
318 set to this value.)</td>
319 </tr>
320 <tr>
321 <td align="left" valign="top">0x0080</td>
322 <td align="left" valign="top">Read: <b>hardware_random()</b>.
323 This produces a "random" number.</td>
324 </tr>
325 <tr>
326 <td align="left" valign="top">0x0090</td>
327 <td align="left" valign="top">Read: <b>memory()</b>.
328 Returns the number of bytes of RAM in the system.</td>
329 </tr>
330 </table>
331 </td>
332 </tr>
333
334 <tr height="15">
335 <td height="15">&nbsp;</td>
336 </tr>
337
338 <tr>
339 <td align="left" valign="top">
340 <b>fb:</b>
341 <p>A simple linear framebuffer, for graphics output.
342 640 x 480 pixels, 3 bytes per pixel (red, green, blue, 8 bits each).
343 <p>Source code:&nbsp;&nbsp;<font color="#0000f0">devices/dev_fb.c</font>
344 <br>Default physical address:&nbsp&nbsp;<font color="#0000f0">0x12000000</font>
345 </td>
346 <td></td>
347 <td align="left" valign="top">
348 <table border="0">
349 <tr>
350 <td align="left" valign="top"><i><u>Offset:</u></i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
351 <td align="left" valign="top"><i><u>Effect:</u></i></td>
352 </tr>
353 <tr>
354 <td align="left" valign="top">...</td>
355 <td align="left" valign="top">Read: read pixel values.
356 <br>Write: write pixel values.</td>
357 </tr>
358 </table>
359 </td>
360 </tr>
361
362 </table></center>
363
364 <p>
365 While these devices may resemble real-world hardware, they are
366 intentionally made simpler to use. (An exception is the framebuffer;
367 some machines actually have simple linear framebuffers like this.)
368
369 <p>
370 If the physical address is 0x10000000, then for MIPS that means that it
371 can be accessed at virtual address 0xffffffffb0000000. (Actually it can be
372 accessed at 0xffffffff90000000 too, but devices should usually be accessed
373 in a non-cached manner.)
374
375 <p>
376 (When using the PPC test machine, "testppc", the addresses are
377 0x10000000, 0x11000000 etc., so no need to add any virtual displacement.)
378
379 <p>
380 The <b>mp</b> device is agnostic when it comes to
381 word-length. For example, when reading offset 0x0000 of the <b>mp</b>
382 device, you may use any kind of read (an 8-bit read will work just as well
383 as a 64-bit read, although the value will be truncated to 8 bits in the
384 first case).
385
386 <p>
387 The <b>cons</b> device should be accessed using 8-bit reads and writes.
388 Doing a getchar() (ie reading from offset 0x0000) returns 0x00 if no
389 character was available.
390
391 <p>
392 On MIPS, the <b>cons</b> device is hardwired to interrupt 2 (the lowest
393 hardware interrupt). Whenever a character is available, the interrupt is
394 asserted. When there are no more available characters, the interrupt is
395 deasserted. (Remember that the interrupt has to be enabled in the status
396 register of the system coprocessor.)
397
398
399
400
401
402
403 <p><br>
404 <a name="experiments"></a>
405 <h3>Experiments with other kernels and guest OSes:</h3>
406
407 <p>
408 Operating system kernels and other test programs can be downloaded from
409 various places. Here are links to some of the kernels that I usually
410 experiment with.
411
412 <p>
413 <font color="#ff0000">
414 NOTE: This is <i>not</i> a list of kernels that work in the emulator.
415 It is a list of kernels that I experiment with.
416 </font>
417
418 <p>
419 For more information about which of these that actually work, read the
420 <a href="intro.html#guestos">section in the Introduction chapter</a>
421 that lists guest operating systems. If a system is not listed there, it
422 probably doesn't work in GXemul.
423
424 <p>
425 <ul>
426 <li>DECstation:
427 <ul>
428 <li><a href="http://www.netbsd.org/Ports/pmax/">NetBSD/pmax</a>:
429 <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>
430 <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>
431 <br>gunzip the files, and run the emulator with <b>-E dec -e 3max -q -N -XY2</b>
432 for a graphical framebuffer console. Remove <b>-XY2</b> and <b>-N</b> to use serial (stdin/stdout) console.
433 Read <a href="guestoses.html#netbsdinstall">this section</a> about how to install NetBSD/pmax onto a harddisk image.
434 <p>
435 <li><a href="http://www.openbsd.org/pmax.html">OpenBSD/pmax</a>:
436 <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>
437 <br>This is an old OpenBSD kernel in a.out format. Try <b>-E dec -e 3max</b>.
438 <br>Read <a href="guestoses.html#openbsdinstall">this section</a> about how to install OpenBSD/pmax onto a harddisk image.
439 It's a bit more complicated than installing NetBSD/pmax, but might work.
440 <p>
441 <li>Linux for DECstation:
442 <br>Here is a Debian package containing a Linux 2.4.26 kernel for
443 DECstation which supports framebuffer!
444 <br><a href="http://ftp.debian.org/debian/pool/main/k/kernel-patch-2.4.26-mips/kernel-image-2.4.26-r3k-kn02_2.4.26-0.040505.1_mipsel.deb">http://ftp.debian.org/debian/pool/main/k/kernel-patch-2.4.26-mips/
445 <br>kernel-image-2.4.26-r3k-kn02_2.4.26-0.040505.1_mipsel.deb</a>
446 <br>Run the following commands to extract the kernel:<pre>
447 <b>ar x kernel-image-2.4.26-r3k-kn02_2.4.26-0.040505.1_mipsel.deb data.tar.gz</b>
448 <b>tar xfzv data.tar.gz ./boot/vmlinux-2.4.26-r3k-kn02</b>
449 <b>mv boot/vmlinux-* .; rmdir boot</b>
450 </pre>
451 <br>To try with the framebuffer: <b>-E dec -e 3max -X vmlinux-2.4.26-r3k-kn02</b>
452 <br>To try with serial console: <b>-E dec -e 3max -o 'console=ttyS3' vmlinux-2.4.26-r3k-kn02</b>
453 <br>Read <a href="guestoses.html#declinux">this section</a> about how to run a Debian Linux install kernel.
454 <br>Here are some older kernels (these don't support framebuffer, I think):
455 <a href="http://www.xs4all.nl/~vhouten/mipsel/kernels.html">http://www.xs4all.nl/~vhouten/mipsel/kernels.html</a>
456 <br>Note: Make sure you add <b>-CR4400</b> to the command line for
457 R4000 kernels, as Linux doesn't autodetect CPU type at runtime.
458 <p>
459 <li>Sprite:
460 <br>The Unix Heritage Society (TUHS, <a href="http://www.tuhs.org">www.tuhs.org</a>)
461 has preserved a copy of a harddisk image for a DECstation 5000/200:
462 <a href="http://www.es.embnet.org/Services/ftp/misc/TUHS/other_os/Sprite/">http://www.es.embnet.org/Services/ftp/misc/TUHS/other_os/Sprite</a>/<a href="http://www.es.embnet.org/Services/ftp/misc/TUHS/other_os/Sprite/ds5000.bt">ds5000.bt</a>
463 <br>(MD5 (ds5000.bt) = ec84eeeb20fe77b758370d5e312e4a5e)
464 <br>Read <a href="guestoses.html#sprite">this section</a> for more information
465 about running this harddisk image in the emulator.
466 <p>
467 <li><a href="http://www-2.cs.cmu.edu/afs/cs/project/mach/public/www/mach.html">Mach</a>:
468 <br>Important! Run <b>./configure --caches; make</b>
469 <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>
470 <br>tar xfvz pmax.tar.Z pmax_mach/special/mach.boot.MK83.STD+ANY
471 <br><b>gxemul -E dec -e 3max -X pmax_mach/special/mach.boot.MK83.STD+ANY</b>
472 </ul>
473 </li>
474
475 <p>
476
477 <li>SGI:
478 <ul>
479 <li><a href="http://www.netbsd.org/Ports/sgimips/">NetBSD/sgimips</a>:
480 <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>
481 <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>
482 <br>gunzip, and try running with <b>-E sgi -e ip32</b>.
483 <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>
484 <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>
485 <br>gunzip, and try running with <b>-E sgi -e ip22</b> (or <b>-e ip24</b> or <b>-e ip20</b>).
486 <p>
487 <li>Linux/SGI:
488 <br>Some kernels are available here: <a href="http://www.linux-mips.org/~glaurung/">http://www.linux-mips.org/~glaurung/</a>
489 <br>Try running with <b>-E sgi -e ip32 -X</b> for a graphical framebuffer, or
490 <b>-E sgi -e ip32 -o 'console=ttyS0'</b> for serial console.
491 <br>Adding -b (bintrans) might work sometimes.
492 <br>(You need to add <b>-CR5000</b> if you're trying to run
493 a kernel compiled for R5000, because Linux
494 doesn't autodetect CPU at runtime.)
495 <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>
496 <br>Try <b>-E sgi -e ip32 -b -X -CR5000 vmlinux64-2.6.8.1-IP32</b>.
497 <br>And also some IP27 kernels:
498 <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>
499 and
500 <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>
501 (but unfortunately these lack symbols).
502 <br>Try the IP27 kernels with <b>-E sgi -e ip27 -t</b>.
503 <p>
504 <li><a href="http://www.openbsd.org/sgi.html">OpenBSD/sgi</a>:
505 <br>Snapshots can be found at <a href="ftp://ftp.OpenBSD.org/pub/OpenBSD/snapshots/sgi/">ftp://ftp.OpenBSD.org/pub/OpenBSD/snapshots/sgi/</a>.
506 <br>Try <b>gxemul -b -E sgi -e ip32 bsd.rd</b>
507 <p>
508 <li><a href="http://www.freebsd.org/platforms/mips.html">FreeBSD/MIPS</a>:
509 I don't think public binary snapshots are available yet.
510 <p>
511 <li>arcdiag:
512 <br>The NetBSD people have also made available an "arcdiag" for SGI-IP22:
513 <br><a href="ftp://ftp.netbsd.org/pub/NetBSD/arch/sgimips/arcdiag.ip22">ftp://ftp.netbsd.org/pub/NetBSD/arch/sgimips/arcdiag.ip22</a>
514 <br>Try running <b>gxemul -E sgi -e ip22 -x arcdiag.ip22</b>.
515 </ul>
516 </li>
517
518 <p>
519
520 <li>ARC:
521 <ul>
522 <li><a href="http://www.netbsd.org/Ports/arc/">NetBSD/arc</a>:
523 <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>
524 <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>
525 <br>gunzip, and try with <b>-E arc -e rd94</b>.
526 <br>(You may also try other ARC models.)
527 <br>Read <a href="guestoses.html#netbsdarcinstall">this section</a> about how
528 to install NetBSD/arc onto a harddisk image.
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>-X -E arc -e pica</b> or <b>-X -E arc -e tyne</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>-v -J -X -N -E arc -e m700</b> (Olivetti M700)
539 <p>
540 <li>Pandora:
541 <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>
542 <br>A generic test/diagnostics program for ARC-based machines.
543 <br>Run with <b>-E arc -e r94 milo-0.27.1/pandora</b>
544 <p>
545 <li>arcdiag:
546 <br>Precompiled binary:<a href="ftp://ftp.netbsd.org/pub/NetBSD/arch/arc/arcdiag">ftp://ftp.netbsd.org/pub/NetBSD/arch/arc/arcdiag</a>
547 <br>(alternative: <a href="http://www.sensi.org/~alec/mips/arcdiag">http://www.sensi.org/~alec/mips/arcdiag</a>)
548 <br>A generic test/diagnostics program for ARC-based machines.
549 <br>Run with <b>-E arc -e pica arcdiag</b> (or some other ARC mode).
550 <br>Example arcdiag output (from real machines):
551 <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)
552 <br><a href="http://www.sensi.org/~alec/mips/arcdiag.txt">http://www.sensi.org/~alec/mips/arcdiag.txt</a> (PICA-61)
553 <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)
554 <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)
555 <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)
556 </ul>
557 </li>
558
559 <p>
560
561 <li>HPCmips:
562 <ul>
563 <li><a href="http://www.netbsd.org/Ports/hpcmips/">NetBSD/hpcmips</a>:
564 <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>
565 <br>Try <b>gxemul -X -b -E hpc -e mobilepro770 netbsd</b>
566 <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>
567 <br>Try <b>gxemul -X -b -E hpc -e mobilepro770 netbsd-GENERIC</b>
568 <p>
569 <li>Linux for BE300:
570 <br><a href="http://www.linux4.be/2004/linux4be20040908.zip">http://www.linux4.be/2004/linux4be20040908.zip</a>
571 <br>Try <b>gxemul -X -b -E hpc -e be300 vmlinux</b>
572 <p>
573 <li>Linux for Agenda VR3:
574 <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>
575 <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>.
576 <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>)
577 <br>Try <b>gxemul -b -X -E hpc -e vr3 -x 0xbf200000:root1.2.6.cramfs 0xbf000000:0:0xbf0005e0:root1.2.6.kernel-8.00</b>
578 <br>(or replace root1.2.6.cramfs with dream-1-noxip.cramfs)
579 <br>Remove <b>-X</b> to try with serial console instead of X, and
580 remove <b>-b</b> to try without (old) bintrans.
581 <br>Add <b>-o 'init=/bin/sh'</b> to boot into a single-user shell.
582 <br>Add <b>-o 'init=/sbin/restore_defaults'</b> to run
583 a /sbin/restore_defaults (attempt to initialize the flash
584 memory).
585 <p>
586 <li>Linux for MobilePro etc.:
587 <br><a href="http://pc1.peanuts.gr.jp/~kei/Hard-Float/Kernels/">http://pc1.peanuts.gr.jp/~kei/Hard-Float/Kernels/</a>
588 <br>Uncompress the archive to get a kernel, vmlinux-800 for example.
589 <br>Try <b>./gxemul -b -X -o 'root=/dev/hda1' -d r:disk.img -d r:disk.img -Ehpc -e mobilepro800 vmlinux-800</b>
590 <br>where disk.img is an ext2fs filesystem with contents from
591 <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>
592 <br>(Note the double disk arguments.)
593 <br>Note 2: This doesn't work yet.
594 <p>
595 <li><a href="http://www.disorder.ru/openbsd/be300/">OpenBSD/be300</a>:
596 <br><a href="http://www.disorder.ru/openbsd/be300/bsd.rd">http://www.disorder.ru/openbsd/be300/bsd.rd</a>
597 <br>Try <b>gxemul -X -b -E hpc -e be300 bsd.rd</b>
598 <br>Note: -b might be buggy, so you can try without that if you want to.
599 </ul>
600 </li>
601
602 <p>
603
604 <li>Playstation 2:
605 <ul>
606 <li><a href="http://www.netbsd.org/Ports/playstation2/">NetBSD/playstation2</a>:
607 <br>NetBSD/playstation2 snapshot kernels are available here: (RAMDISK and GENERIC)
608 <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>
609 <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>
610 <br>Try running with <b>-X -E playstation2</b> (<b>-X</b> is required, for the framebuffer).
611
612 <p>
613 <li>Linux:
614 <br>A Linux kernel (2.2.21-pre1-xr7) is available from
615 <a href="http://playstation2-linux.com/projects/xrhino-kernel/">http://playstation2-linux.com/projects/xrhino-kernel/</a>
616 <br>Try running with <b>-X -E playstation2</b> (<b>-X</b> is required, for the framebuffer).
617 </ul>
618 </li>
619
620 </ul>
621
622 <p>
623 The following work even less than the ones listed above:
624
625 <p>
626 <ul>
627 <li>Cobalt:
628 <ul>
629 <li><a href="http://www.netbsd.org/Ports/cobalt/">NetBSD/cobalt</a>:
630 <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>
631 <br>gunzip, and run with <b>-E cobalt</b>
632 <p>
633 <li>Linux:
634 <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>
635 <br>gunzip, and run with <b>-E cobalt</b>
636 </ul>
637 </li>
638
639 <p>
640
641 <li>Sony NeWS:
642 <ul>
643 <li><a href="http://www.netbsd.org/Ports/newsmips/">NetBSD/newsmips</a>:
644 <br>A NetBSD/newsmips kernel and corresponding symbols are
645 available here:
646 <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>
647 <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>
648 <br>Try running with <b>-E sonynews</b>.
649 <br>There's also a boot floppy available, but the emulator currently
650 doesn't support booting from it:
651 <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>
652 </ul>
653 </li>
654
655 <p>
656
657 <li><a href="http://www.meshcube.org/">MeshCube</a>:
658 <ul>
659 <li>Linux:
660 <br>A Linux kernel is available from
661 <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>
662 <br>(This is a Debian package, you can use <b>ar</b> and <b>tar</b>
663 to extract kernel.img from it.)
664 <br>Try running with <b>-E meshcube 0x80800000:kernel.img</b>.
665 </ul>
666 </li>
667
668 <p>
669
670 <li><a href="http://www.seattlewireless.net/index.cgi/NetgearWG602">NetGear WG602</a>:
671 <ul>
672 <li>Linux:
673 <br>A Linux kernel is available from
674 <a href="ftp://downloads.netgear.com/files/wg602_v1715.zip">ftp://downloads.netgear.com/files/wg602_v1715.zip</a>
675 <br>(Unzip wg602_v1715.zip to get WG602_V1715.img.)
676 <br>Try running with <b>-E netgear 0xbfc80000:0x40:WG602_V1715.img</b>.
677 <br>(It takes some time to decompress the kernel, so be patient.)
678 </ul>
679 </li>
680
681 <p>
682
683 <li>Linksys WRT54G:
684 <ul>
685 <li>Linux:
686 <br><a href="http://openwrt.org/">OpenWRT</a> is a Linux
687 distribution for the WRT54G.
688 <br><a href="http://www.batbox.org/wrt54g-linux.html">BatBox</a>
689 is another distribution.
690 <br>Download <a href="http://pjf.dotgeek.org/downloads/openwrt/openwrt-g-code.bin">http://pjf.dotgeek.org/downloads/openwrt/openwrt-g-code.bin</a>
691 (or a similar .bin file).
692 <br>From offset 60 and forward in the bin file, there is a gzip file.
693 <br>$ <b>dd if=openwrt-g-code.bin of=piggy.gz bs=60 iseek=1 oseek=0</b>
694 <br>$ <b>gunzip piggy.gz</b>
695 <br>$ <b>gxemul -E linksys -t 0x80001000:piggy</b>
696 <br>There's also a .bin file available from linksys:
697 <a href="ftp://ftp.linksys.com/pub/network/WRT54G_1.30.7_US_code.bin">ftp://ftp.linksys.com/pub/network/WRT54G_1.30.7_US_code.bin</a>
698 </ul>
699 </li>
700 </ul>
701
702 <p>
703 The following don't work at all, actually, because the PPC and SPARC
704 modes are just skeletons so far.
705
706 <p>
707 <ul>
708
709 <li>Walnut (evbppc):
710 <ul>
711 <li><a href="http://www.netbsd.org/Ports/evbppc/">NetBSD/evbppc</a>:
712 <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>
713 <br>gunzip, and try the following:
714 <br>$ <b>gxemul -E walnut -v -t netbsd-INSTALL_WALNUT</b>
715 </ul>
716 </li>
717
718 <p>
719
720 <li>Artesyn's PM/PPC board (pmppc):
721 <ul>
722 <li><a href="http://www.netbsd.org/Ports/pmppc/">NetBSD/pmppc</a>:
723 <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>
724 <br>gunzip, and try the following:
725 <br>$ <b>gxemul -E pmppc netbsd-INSTALL</b>
726 </ul>
727 </li>
728
729 <p>
730
731 <li>Motorola Sandpoint (sandpoint):
732 <ul>
733 <li><a href="http://www.netbsd.org/Ports/sandpoint/">NetBSD/sandpoint</a>:
734 <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>
735 <br>gunzip, and try the following:
736 <br>$ <b>gxemul -E sandpoint -v -t netbsd-INSTALL</b>
737 </ul>
738 </li>
739
740 <p>
741
742 <li>PReP:
743 <ul>
744 <li><a href="http://www.netbsd.org/Ports/prep/">NetBSD/prep</a>:
745 <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>
746 <br>gunzip, and try the following:
747 <br>$ <b>gxemul -E prep -v -t netbsd-INSTALL</b>
748 <p>
749 <li>Linux:
750 <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>
751 <br>$ <b>gxemul -E prep -v -t vmlinux</b>
752 </ul>
753 </li>
754
755 <p>
756
757 <li>MacPPC:
758 <ul>
759 <li><a href="http://www.netbsd.org/Ports/macppc/">NetBSD/macppc</a>:
760 <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>
761 <br>$ <b>gxemul -E macppc -e g4 -t netbsd-INSTALL</b>
762 <p>
763 <li><a href="http://www.openbsd.org/macppc.html">OpenBSD/macppc</a>:
764 <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>
765 <br>$ <b>gxemul -E macppc -e g4 -t bsd.rd</b>
766 </ul>
767 </li>
768
769 <p>
770
771 <li>BeBox:
772 <ul>
773 <li><a href="http://www.netbsd.org/Ports/bebox/">NetBSD/bebox</a>:
774 <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>
775 <br>$ <b>tar tvzf kern.tgz</b>
776 <br>$ <b>gxemul -E bebox netbsd</b>
777 <p>
778 <li><a href="http://www.bebox.nu/os.php?s=os/linux/index">Linux/bebox</a>:
779 <br><a href="http://www.bebox.nu/files/linux/BeBox-scsi-980610.gz">http://www.bebox.nu/files/linux/BeBox-scsi-980610.gz</a>
780 <br>$ <b>gunzip BeBox-scsi-980610.gz</b>
781 <br>$ <b>gxemul -E bebox 0x3100:0x400:BeBox-scsi-980610</b>
782 </ul>
783 </li>
784
785 <p>
786
787 <li>SPARC64:
788 <ul>
789 <li><a href="http://www.netbsd.org/Ports/sparc64/">NetBSD/sparc64</a>:
790 <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>
791 <br>gunzip, and try the following:
792 <br>$ <b>gxemul -E ultra1 -v -i netbsd-INSTALL</b>
793 <p>
794 <li><a href="http://www.openbsd.org/sparc64.html">OpenBSD/sparc64</a>:
795 <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>
796 <br>rename to bsd.rd.gz, gunzip, and try the following:
797 <br>$ <b>gxemul -E ultra1 -v -i bsd.rd</b>
798 </ul>
799 </li>
800 </ul>
801
802 <p>
803 The URISC emulation mode is just for fun. (Read
804 <a href="http://en.wikipedia.org/wiki/URISC">http://en.wikipedia.org/wiki/URISC</a>
805 for more info.)
806
807 <p>
808 <ul>
809
810 <li>URISC:
811 <ul>
812 <li>I've placed a small test program in the experiments directory.
813 <br>Start like this: <b>gxemul -E testurisc 0:urisc_test.bin</b>
814 <br>or, if you want to single-step:
815 <b>gxemul -V -E testurisc 0:urisc_test.bin</b>
816 <br>2005-03-01: All outputed characters are printed twice. I'll
817 try to make a pseudo-device for outputing to "normal" devices
818 later.
819 </ul>
820 </li>
821
822 </ul>
823
824
825
826
827
828
829 </p>
830
831 </body>
832 </html>

  ViewVC Help
Powered by ViewVC 1.1.26