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

Parent Directory Parent Directory | Revision Log Revision Log


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

  ViewVC Help
Powered by ViewVC 1.1.26