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

Annotation of /trunk/doc/experiments.html

Parent Directory Parent Directory | Revision Log Revision Log


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

==============  RELEASE 0.3.4  ==============


1 dpavlin 2 <html>
2     <head><title>GXemul documentation: Experimenting with GXemul</title>
3 dpavlin 8 <meta name="robots" content="noarchive,nofollow,noindex">
4 dpavlin 2 </head>
5 dpavlin 4 <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 dpavlin 2
13     <!--
14    
15 dpavlin 10 $Id: experiments.html,v 1.76 2005/06/24 09:33:32 debug Exp $
16 dpavlin 2
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 dpavlin 10 <p>(This hello world program is available here as well:
110     <a href="hello_mips.c"><tt>hello_mips.c</tt></a>)
111 dpavlin 6
112 dpavlin 10 <p>I recommend that you build a GCC cross compiler for the
113 dpavlin 2 <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 dpavlin 10 and link the hello world program:
116 dpavlin 2 <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 dpavlin 10 <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 dpavlin 2 <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 dpavlin 6 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 dpavlin 8 The <tt>testmips</tt> machine has the following experimental devices:
222 dpavlin 2
223     <p>
224     <center><table border="0" width="80%">
225    
226     <tr>
227     <td align="left" valign="top" width="200">
228 dpavlin 8 <b><tt>cons</tt>:</b>
229 dpavlin 2 <p>This is a simple console device, for writing
230     characters to the controlling terminal.
231 dpavlin 8 <p>Source code:&nbsp;&nbsp;<font color="#0000f0"><tt>src/devices/dev_cons.c</tt></font>
232 dpavlin 2 <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 dpavlin 8 Read: <b><tt>getchar()</tt></b> (non-blocking)<br>
245     Write: <b><tt>putchar(ch)</tt></b></td>
246 dpavlin 2 </tr>
247     <tr>
248     <td align="left" valign="top">0x0010</td>
249 dpavlin 8 <td align="left" valign="top">Read or write: <b><tt>halt()</tt></b><br>
250 dpavlin 2 (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 dpavlin 8 <b><tt>mp</tt>:</b>
263 dpavlin 2 <p>This device controls the behaviour of CPUs in an emulated
264     multi-processor system.
265 dpavlin 8 <p>Source code:&nbsp;&nbsp;<font color="#0000f0"><tt>src/devices/dev_mp.c</tt></font>
266 dpavlin 2 <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 dpavlin 8 <td align="left" valign="top">Read: <b><tt>whoami()</tt></b>.
278 dpavlin 2 Returns the id of the CPU doing the read.</td>
279     </tr>
280     <tr>
281     <td align="left" valign="top">0x0010</td>
282 dpavlin 8 <td align="left" valign="top">Read: <b><tt>ncpus()</tt></b>.
283 dpavlin 2 Returns the number of CPUs in the system.</td>
284     </tr>
285     <tr>
286     <td align="left" valign="top">0x0020</td>
287 dpavlin 8 <td align="left" valign="top">Write: <b><tt>startupcpu(i)</tt></b>.
288 dpavlin 2 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 dpavlin 8 <td align="left" valign="top">Write: <b><tt>startupaddr(addr)</tt></b>.
294 dpavlin 2 Sets the starting address for CPUs.</td>
295     </tr>
296     <tr>
297     <td align="left" valign="top">0x0040</td>
298 dpavlin 8 <td align="left" valign="top">Write: <b><tt>pause_addr(addr)</tt></b>.
299 dpavlin 2 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 dpavlin 8 <td align="left" valign="top">Write: <b><tt>pause_cpu(i)</tt></b>.
305 dpavlin 2 Stops all CPUs <i>except</i> CPU i.</td>
306     </tr>
307     <tr>
308     <td align="left" valign="top">0x0060</td>
309 dpavlin 8 <td align="left" valign="top">Write: <b><tt>unpause_cpu(i)</tt></b>.
310 dpavlin 2 Unpauses all CPUs <i>except</i> CPU i.</td>
311     </tr>
312     <tr>
313     <td align="left" valign="top">0x0070</td>
314 dpavlin 8 <td align="left" valign="top">Write: <b><tt>startupstack(addr)</tt></b>.
315 dpavlin 2 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 dpavlin 8 <td align="left" valign="top">Read: <b><tt>hardware_random()</tt></b>.
322 dpavlin 2 This produces a "random" number.</td>
323     </tr>
324     <tr>
325     <td align="left" valign="top">0x0090</td>
326 dpavlin 8 <td align="left" valign="top">Read: <b><tt>memory()</tt></b>.
327 dpavlin 2 Returns the number of bytes of RAM in the system.</td>
328     </tr>
329 dpavlin 8 <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 dpavlin 2 </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 dpavlin 8 <b><tt>fb</tt>:</b>
360 dpavlin 2 <p>A simple linear framebuffer, for graphics output.
361     640 x 480 pixels, 3 bytes per pixel (red, green, blue, 8 bits each).
362 dpavlin 8 <p>Source code:&nbsp;&nbsp;<font color="#0000f0"><tt>src/devices/dev_fb.c</tt></font>
363 dpavlin 2 <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 dpavlin 8 (When using the PPC test machine (<tt>testppc</tt>), the addresses are
396 dpavlin 2 0x10000000, 0x11000000 etc., so no need to add any virtual displacement.)
397    
398 dpavlin 8 <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 dpavlin 2
404 dpavlin 8 <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 dpavlin 2
408 dpavlin 8 <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 dpavlin 2
414 dpavlin 8 <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 dpavlin 2
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 dpavlin 6 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 dpavlin 2
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 dpavlin 6 <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 dpavlin 2 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 dpavlin 6 <br>This is an old OpenBSD kernel in a.out format. Try <b><tt>-E dec -e 3max</tt></b>.
461 dpavlin 2 <br>Read <a href="guestoses.html#openbsdinstall">this section</a> about how to install OpenBSD/pmax onto a harddisk image.
462 dpavlin 6 It's a bit more complicated than installing NetBSD/pmax, but
463     it usually works.
464 dpavlin 2 <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 dpavlin 6 <br>Note: Make sure you add <b><tt>-CR4400</tt></b> to the command line for
470 dpavlin 2 R4000 kernels, as Linux doesn't autodetect CPU type at runtime.
471 dpavlin 6 <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 dpavlin 2 <p>
476 dpavlin 6 <li><a href="http://www.cs.berkeley.edu/projects/sprite/retrospective.html">Sprite</a>:
477 dpavlin 2 <br>The Unix Heritage Society (TUHS, <a href="http://www.tuhs.org">www.tuhs.org</a>)
478 dpavlin 6 has preserved a copy of a harddisk image for a DECstation
479     5000/200 (3MAX).
480 dpavlin 2 <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 dpavlin 6 <br>Important! Run <b><tt>./configure --caches; make</tt></b>
485     <br>Also important: This is broken right now. :-(
486 dpavlin 2 <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 dpavlin 6 <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 dpavlin 2 </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 dpavlin 6 <br>gunzip, and try running with <b><tt>-E sgi -e ip32</tt></b>.
500 dpavlin 2 <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 dpavlin 6 <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 dpavlin 2 <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 dpavlin 6 <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 dpavlin 2 <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 dpavlin 10 <br>Try <b><tt>-E sgi -e ip32 -X -CR5000 vmlinux64-2.6.8.1-IP32</tt></b>.
514 dpavlin 2 <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 dpavlin 6 <br>Try the IP27 kernels with <b><tt>-E sgi -e ip27 -t</tt></b>.
520 dpavlin 2 <p>
521     <li><a href="http://www.openbsd.org/sgi.html">OpenBSD/sgi</a>:
522 dpavlin 6 <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 dpavlin 10 <br>Try <b><tt>gxemul -E sgi -e ip32 bsd.rd</tt></b>
525 dpavlin 2 <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 dpavlin 6 <br>Try running <tt><b>gxemul -E sgi -e ip22 -x arcdiag.ip22</b></tt>.
533 dpavlin 2 </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 dpavlin 6 <br>gunzip, and try with <b><tt>-E arc -e rd94</tt></b>.
544 dpavlin 2 <br>(You may also try other ARC models.)
545     <br>Read <a href="guestoses.html#netbsdarcinstall">this section</a> about how
546 dpavlin 6 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 dpavlin 2 <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 dpavlin 6 <br>Try running with <b><tt>-X -E arc -e pica</tt></b> or <b><tt>-X -E arc -e tyne</tt></b>.
552 dpavlin 2 <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 dpavlin 6 <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 dpavlin 2 <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 dpavlin 6 <br>Run with <b><tt>-E arc -e r94 milo-0.27.1/pandora</tt></b>
564 dpavlin 2 <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 dpavlin 6 <br>Run with <b><tt>-E arc -e pica arcdiag</tt></b> (or some other ARC mode).
570 dpavlin 2 <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 dpavlin 6 <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 dpavlin 10 $ <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 dpavlin 6 </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 dpavlin 2 </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 dpavlin 10 <br>Try <b><tt>gxemul -X -E hpc -e mobilepro770 netbsd</tt></b>
603 dpavlin 2 <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 dpavlin 10 <br>Try <b><tt>gxemul -X -E hpc -e mobilepro770 netbsd-GENERIC</tt></b>
605 dpavlin 2 <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 dpavlin 10 <br>Try <b><tt>gxemul -X -E hpc -e be300 vmlinux</tt></b>
609 dpavlin 2 <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 dpavlin 10 <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 dpavlin 2 <br>(or replace root1.2.6.cramfs with dream-1-noxip.cramfs)
616 dpavlin 6 <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 dpavlin 2 <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 dpavlin 10 <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 dpavlin 2 <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 dpavlin 10 <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 dpavlin 2 </ul>
637     </li>
638    
639     <p>
640    
641 dpavlin 6 <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 dpavlin 2 <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 dpavlin 6 <br>Try running with <b><tt>-X -E playstation2</tt></b> (<b><tt>-X</tt></b> is required, for the framebuffer).
670 dpavlin 2
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 dpavlin 6 <br>Try running with <b><tt>-X -E playstation2</tt></b> (<b><tt>-X</tt></b> is required, for the framebuffer).
676 dpavlin 2 </ul>
677     </li>
678    
679 dpavlin 10 <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 dpavlin 2 </ul>
698    
699     <p>
700 dpavlin 8 The following don't work at all, or just very very little.
701 dpavlin 2
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 dpavlin 6 <br>Try running with <b><tt>-E sonynews</tt></b>.
712 dpavlin 2 <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 dpavlin 6 <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 dpavlin 2 </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 dpavlin 6 <br>Try running with <b><tt>-E netgear 0xbfc80000:0x40:WG602_V1715.img</tt></b>.
740 dpavlin 2 <br>(It takes some time to decompress the kernel, so be patient.)
741 dpavlin 6 <br>(This doesn't really work yet.)
742 dpavlin 2 </ul>
743     </li>
744    
745 dpavlin 8 <p>
746 dpavlin 2
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 dpavlin 6 <br><tt><b>gxemul -E walnut -v -t netbsd-INSTALL_WALNUT</b></tt>
753 dpavlin 2 </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 dpavlin 6 <br><tt><b>gxemul -E pmppc netbsd-INSTALL</b></tt>
764 dpavlin 2 </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 dpavlin 6 <br><tt><b>gxemul -E sandpoint -v -t netbsd-INSTALL</b></tt>
775 dpavlin 2 </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 dpavlin 6 <br><tt><b>gxemul -E prep -v -t netbsd-INSTALL</b></tt>
786 dpavlin 2 <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 dpavlin 6 <br><tt><b>gxemul -E prep -v -t vmlinux</b></tt>
790 dpavlin 2 </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 dpavlin 6 <br><tt><b>gxemul -E macppc -e g4 -t netbsd-INSTALL</b></tt>
800 dpavlin 2 <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 dpavlin 6 <br><tt><b>gxemul -E macppc -e g4 -t bsd.rd</b></tt>
804 dpavlin 2 </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 dpavlin 6 <br><tt><b>tar xvzf kern.tgz</b></tt>
814     <br><tt><b>gxemul -E bebox netbsd</b></tt>
815 dpavlin 2 <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 dpavlin 6 <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 dpavlin 2 </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 dpavlin 6 <br><tt><b>gxemul -E ultra1 -v -i netbsd-INSTALL</b></tt>
831 dpavlin 2 <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 dpavlin 6 <br><tt><b>gxemul -E ultra1 -v -i bsd.rd</b></tt>
836 dpavlin 2 </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 dpavlin 6 <br>Start like this: <tt><b>gxemul -E testurisc 0:urisc_test.bin</b></tt>
852 dpavlin 2 <br>or, if you want to single-step:
853 dpavlin 6 <b><tt>gxemul -V -E testurisc 0:urisc_test.bin</b></tt>
854 dpavlin 2 <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