/[gxemul]/upstream/0.3.5/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

Diff of /upstream/0.3.5/doc/experiments.html

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 2 by dpavlin, Mon Oct 8 16:17:48 2007 UTC revision 12 by dpavlin, Mon Oct 8 16:18:38 2007 UTC
# Line 1  Line 1 
1  <html>  <html><head><title>Gavare's eXperimental Emulator:&nbsp;&nbsp;&nbsp;Experimenting with GXemul</title>
2  <head><title>GXemul documentation: Experimenting with GXemul</title>  <meta name="robots" content="noarchive,nofollow,noindex"></head>
3  </head>  <body bgcolor="#f8f8f8" text="#000000" link="#4040f0" vlink="#404040" alink="#ff0000">
4  <body bgcolor="#ffffff" text="#000000" link="#4040f0" vlink="#404040" alink="#ff0000">  <table border=0 width=100% bgcolor="#d0d0d0"><tr>
5  <p>  <td width=100% align=center valign=center><table border=0 width=100%><tr>
6  <table width="100%">  <td align="left" valign=center bgcolor="#d0efff"><font color="#6060e0" size="6">
7    <tr><td width="100%" bgcolor="#808070"><font color="#ffffe0" size="6">  <b>Gavare's eXperimental Emulator:&nbsp;&nbsp;&nbsp;</b></font>
8    <b>GXemul documentation: Experimenting with GXemul</b></font></td></tr>  <font color="#000000" size="6"><b>Experimenting with GXemul</b>
9  </table>  </font></td></tr></table></td></tr></table><p>
 <p>  
 <!-- The first 10 lines are cut away by the homepage updating script.  -->  
   
10    
11  <!--  <!--
12    
13  $Id: experiments.html,v 1.57 2005/04/06 23:29:11 debug Exp $  $Id: experiments.html,v 1.89 2005/08/09 18:29:20 debug Exp $
14    
15  Copyright (C) 2003-2005  Anders Gavare.  All rights reserved.  Copyright (C) 2003-2005  Anders Gavare.  All rights reserved.
16    
# Line 74  that you do two things: Line 71  that you do two things:
71  </ul>  </ul>
72    
73  <p>  <p>
 The emulator has several modes where it doesn't emulate any real machine.  
 It can either run in "bare" mode, where no devices are included by default  
 (just the CPU), or in a "test" mode where some simple devices are  
 emulated.  
   
 <p>  
74  <table border="0"><tr><td width="40">&nbsp;</td><td>  <table border="0"><tr><td width="40">&nbsp;</td><td>
75  <pre>  <pre>
76  <font color=#f00000>/*  Hello world for GXemul  */  <font color=#f00000>/*  Hello world for GXemul  */
# Line 113  emulated. Line 104  emulated.
104  </font></pre>  </font></pre>
105  </td></tr></table>  </td></tr></table>
106    
107  This hello world program is available here as well:  <p>(This hello world program is available here as well:
108  <a href="hello_mips.c">hello_mips.c</a>  <a href="hello_mips.c"><tt>hello_mips.c</tt></a>)
109  <p>  
110  I recommend that you build a GCC cross compiler for the  <p>I recommend that you build a GCC cross compiler for the
111  <b>mips64-unknown-elf</b> target, and install it. Other compilers could  <b>mips64-unknown-elf</b> target, and install it. Other compilers could
112  work too, but GCC is good because of its portability. Then try to compile  work too, but GCC is good because of its portability. Then try to compile
113  the hello world program:  and link the hello world program:
114  <pre>  <pre>
115          $ <b>mips64-unknown-elf-gcc -O2 hello_mips.c -mips4 -mabi=64 -c</b>          $ <b>mips64-unknown-elf-gcc -O2 hello_mips.c -mips4 -mabi=64 -c</b>
116          $ <b>mips64-unknown-elf-ld -Ttext 0xa800000000030000 -e f hello_mips.o -o hello_mips --oformat=elf64-bigmips</b>          $ <b>mips64-unknown-elf-ld -Ttext 0xa800000000030000 -e f hello_mips.o -o hello_mips --oformat=elf64-bigmips</b>
# Line 175  learn more about how MIPS programs run, Line 166  learn more about how MIPS programs run,
166          a800000000030038: 00021600      sll     v0,v0,24          a800000000030038: 00021600      sll     v0,v0,24
167          GXemul&gt; <b>print v0</b>          GXemul&gt; <b>print v0</b>
168          v0 = 0x0000000048000000          v0 = 0x0000000048000000
169          GXemul&gt; <b><blink>_</blink></b>          GXemul&gt; <b>_</b>
170  </pre>  </pre>
171    
172  <p>  <p>The syntax of the single-step debugger shouldn't be too hard to grasp.
173  The syntax of the single-step debugger shouldn't be too hard to grasp.  Type "<tt>s</tt>" to single-step one instruction. For some commands (e.g.
174  Type 's' to single-step one instruction. Just pressing enter after that  the single-step command), just pressing enter on a blank line will cause
175  will repeat the 's' command. Type 'quit' to quit.  the last command to be repeated. Type "<tt>quit</tt>" to quit.
176    
177  <p>  <p>
178  Hopefully this is enough to get you inspired. :-)  Hopefully this is enough to get you inspired. :-)
179    
180    
181    
 <p><br>  
 <h4>Hello World for GXemul's PPC mode</h4>  
   
 GXemul also has an experimental PowerPC emulation mode.  
 <a href="hello_ppc.c">hello_ppc.c</a> is similar to hello_mips.c, but  
 should be compiled and run as follows:  
 <p>  
 <pre>  
         $ <b>ppc-unknown-elf-gcc -O2 hello_ppc.c -c</b>  
         $ <b>ppc-unknown-elf-ld -e f hello_ppc.o -o hello_ppc</b>  
         $ <b>file hello_ppc</b>  
         hello_ppc: ELF 32-bit MSB executable, PowerPC or cisco 4500,  
           version 1 (SYSV), statically linked, not stripped  
         $ <b>gxemul -q -E testppc hello_ppc</b>  
         Hello world  
 </pre>  
   
 <p>  
 [&nbsp;2005-02-18: I haven't yet been able to build a GCC for ppc64 (only the  
 binutils toolchain), because the gcc sources seem to include Linux header files  
 that aren't present on my FreeBSD system. 32-bit PPC works ok, though.&nbsp;]  
   
   
   
182    
183    
184    
# Line 219  that aren't present on my FreeBSD system Line 186  that aren't present on my FreeBSD system
186  <a name="expdevices"></a>  <a name="expdevices"></a>
187  <h3>Experimental devices:</h3>  <h3>Experimental devices:</h3>
188    
189  The "test" MIPS machine has the following experimental devices:  The emulator has several modes where it doesn't emulate any real machine.
190    It can either run in "bare" mode, where no devices are included by default
191    (just the CPU), or in a "test" mode where some simple devices are
192    emulated.
193    
194    <p>The test machines (<tt>testmips</tt>, <tt>testppc</tt>, etc) have the
195    following experimental devices:
196    
197  <p>  <p>
198  <center><table border="0" width="80%">  <center><table border="0" width="80%">
199    
200    <tr>    <tr>
201      <td align="left" valign="top" width="200">      <td align="left" valign="top" width="200">
202          <b>cons:</b>          <b><tt>cons</tt>:</b>
203          <p>This is a simple console device, for writing          <p>A simple console device, for writing
204          characters to the controlling terminal.          characters to the controlling terminal
205          <p>Source code:&nbsp;&nbsp;<font color="#0000f0">devices/dev_cons.c</font>          and receiving keypresses.
206            <p>Source code:&nbsp;&nbsp;<font color="#0000f0"><tt>src/devices/dev_cons.c</tt></font>
207          <br>Default physical address:&nbsp&nbsp;<font color="#0000f0">0x10000000</font>          <br>Default physical address:&nbsp&nbsp;<font color="#0000f0">0x10000000</font>
208      </td>      </td>
209      <td align="left" valign="top" width="25">&nbsp;</td>      <td align="left" valign="top" width="25">&nbsp;</td>
# Line 240  The "test" MIPS machine has the followin Line 214  The "test" MIPS machine has the followin
214              <td align="left" valign="top"><i><u>Effect:</u></i></td>              <td align="left" valign="top"><i><u>Effect:</u></i></td>
215            </tr>            </tr>
216            <tr>            <tr>
217              <td align="left" valign="top">0x0000</td>              <td align="left" valign="top"><tt>0x00</tt></td>
218              <td align="left" valign="top">              <td align="left" valign="top">
219                  Read: <b>getchar()</b> (non-blocking)<br>                  Read: <b><tt>getchar()</tt></b> (non-blocking; returns
220                  Write: <b>putchar(ch)</b></td>                  <tt>0</tt> if no char was available)<br>
221                    Write: <b><tt>putchar(ch)</tt></b></td>
222            </tr>            </tr>
223            <tr>            <tr>
224              <td align="left" valign="top">0x0010</td>              <td align="left" valign="top"><tt>0x10</tt></td>
225              <td align="left" valign="top">Read or write: <b>halt()</b><br>              <td align="left" valign="top">Read or write: <b><tt>halt()</tt></b><br>
226                  (Useful for exiting the emulator.)</td>                  (Useful for exiting the emulator.)</td>
227            </tr>            </tr>
228          </table>          </table>
# Line 260  The "test" MIPS machine has the followin Line 235  The "test" MIPS machine has the followin
235    
236    <tr>    <tr>
237      <td align="left" valign="top">      <td align="left" valign="top">
238          <b>mp:</b>          <b><tt>mp</tt>:</b>
239          <p>This device controls the behaviour of CPUs in an emulated          <p>This device controls the behaviour of CPUs in an emulated
240          multi-processor system.          multi-processor system.
241          <p>Source code:&nbsp;&nbsp;<font color="#0000f0">devices/dev_mp.c</font>          <p>Source code:&nbsp;&nbsp;<font color="#0000f0"><tt>src/devices/dev_mp.c</tt></font>
242          <br>Default physical address:&nbsp&nbsp;<font color="#0000f0">0x11000000</font>          <br>Default physical address:&nbsp&nbsp;<font color="#0000f0">0x11000000</font>
243      </td>      </td>
244      <td></td>      <td></td>
# Line 274  The "test" MIPS machine has the followin Line 249  The "test" MIPS machine has the followin
249              <td align="left" valign="top"><i><u>Effect:</u></i></td>              <td align="left" valign="top"><i><u>Effect:</u></i></td>
250            </tr>            </tr>
251            <tr>            <tr>
252              <td align="left" valign="top">0x0000</td>              <td align="left" valign="top"><tt>0x0000</tt></td>
253              <td align="left" valign="top">Read: <b>whoami()</b>.              <td align="left" valign="top">Read: <b><tt>whoami()</tt></b>.
254                  Returns the id of the CPU doing the read.</td>                  Returns the id of the CPU doing the read.</td>
255            </tr>            </tr>
256            <tr>            <tr>
257              <td align="left" valign="top">0x0010</td>              <td align="left" valign="top"><tt>0x0010</tt></td>
258              <td align="left" valign="top">Read: <b>ncpus()</b>.              <td align="left" valign="top">Read: <b><tt>ncpus()</tt></b>.
259                  Returns the number of CPUs in the system.</td>                  Returns the number of CPUs in the system.</td>
260            </tr>            </tr>
261            <tr>            <tr>
262              <td align="left" valign="top">0x0020</td>              <td align="left" valign="top"><tt>0x0020</tt></td>
263              <td align="left" valign="top">Write: <b>startupcpu(i)</b>.              <td align="left" valign="top">Write: <b><tt>startupcpu(i)</tt></b>.
264                  Starts CPU i. It begins execution at the address                  Starts CPU i. It begins execution at the address
265                  set by a write to startupaddr (see below).</td>                  set by a write to startupaddr (see below).</td>
266            </tr>            </tr>
267            <tr>            <tr>
268              <td align="left" valign="top">0x0030</td>              <td align="left" valign="top"><tt>0x0030</tt></td>
269              <td align="left" valign="top">Write: <b>startupaddr(addr)</b>.              <td align="left" valign="top">Write: <b><tt>startupaddr(addr)</tt></b>.
270                  Sets the starting address for CPUs.</td>                  Sets the starting address for CPUs.</td>
271            </tr>            </tr>
272            <tr>            <tr>
273              <td align="left" valign="top">0x0040</td>              <td align="left" valign="top"><tt>0x0040</tt></td>
274              <td align="left" valign="top">Write: <b>pause_addr(addr)</b>.              <td align="left" valign="top">Write: <b><tt>pause_addr(addr)</tt></b>.
275                  Sets the pause address. (TODO: This is not                  Sets the pause address. (TODO: This is not
276                  used anymore?)</td>                  used anymore?)</td>
277            </tr>            </tr>
278            <tr>            <tr>
279              <td align="left" valign="top">0x0050</td>              <td align="left" valign="top"><tt>0x0050</tt></td>
280              <td align="left" valign="top">Write: <b>pause_cpu(i)</b>.              <td align="left" valign="top">Write: <b><tt>pause_cpu(i)</tt></b>.
281                  Stops all CPUs <i>except</i> CPU i.</td>                  Stops all CPUs <i>except</i> CPU i.</td>
282            </tr>            </tr>
283            <tr>            <tr>
284              <td align="left" valign="top">0x0060</td>              <td align="left" valign="top"><tt>0x0060</tt></td>
285              <td align="left" valign="top">Write: <b>unpause_cpu(i)</b>.              <td align="left" valign="top">Write: <b><tt>unpause_cpu(i)</tt></b>.
286                  Unpauses all CPUs <i>except</i> CPU i.</td>                  Unpauses all CPUs <i>except</i> CPU i.</td>
287            </tr>            </tr>
288            <tr>            <tr>
289              <td align="left" valign="top">0x0070</td>              <td align="left" valign="top"><tt>0x0070</tt></td>
290              <td align="left" valign="top">Write: <b>startupstack(addr)</b>.              <td align="left" valign="top">Write: <b><tt>startupstack(addr)</tt></b>.
291                  Sets the startup stack address. (CPUs started with                  Sets the startup stack address. (CPUs started with
292                  startupcpu() above will have their stack pointer                  startupcpu() above will have their stack pointer
293                  set to this value.)</td>                  set to this value.)</td>
294            </tr>            </tr>
295            <tr>            <tr>
296              <td align="left" valign="top">0x0080</td>              <td align="left" valign="top"><tt>0x0080</tt></td>
297              <td align="left" valign="top">Read: <b>hardware_random()</b>.              <td align="left" valign="top">Read: <b><tt>hardware_random()</tt></b>.
298                  This produces a "random" number.</td>                  This produces a "random" number.</td>
299            </tr>            </tr>
300            <tr>            <tr>
301              <td align="left" valign="top">0x0090</td>              <td align="left" valign="top"><tt>0x0090</tt></td>
302              <td align="left" valign="top">Read: <b>memory()</b>.              <td align="left" valign="top">Read: <b><tt>memory()</tt></b>.
303                  Returns the number of bytes of RAM in the system.</td>                  Returns the number of bytes of RAM in the system.</td>
304            </tr>            </tr>
305              <tr>
306                <td align="left" valign="top"><tt>0x00a0</tt></td>
307                <td align="left" valign="top">Write: <b><tt>ipi_one((nr &lt;&lt; 16) + cpuid)</tt></b>.
308                    Sends IPI <tt>nr</tt> to a specific CPU.</td>
309              </tr>
310              <tr>
311                <td align="left" valign="top"><tt>0x00b0</tt></td>
312                <td align="left" valign="top">Write: <b><tt>ipi_many((nr &lt;&lt; 16) + cpuid)</tt></b>.
313                    Sends IPI <tt>nr</tt> to all CPUs <i>except</i>
314                    the specified one.</td>
315              </tr>
316              <tr>
317                <td align="left" valign="top">0x00c0</tt></td>
318                <td align="left" valign="top">Read: <b><tt>ipi_read()</tt></b>.
319                    Returns the next pending IPI. 0 is returned if there is no
320                    pending IPI (so 0 shouldn't be used for valid IPIs).
321                    Hardware int 6 is deasserted when the IPI queue is empty.
322                <br>Write: <b><tt>ipi_flush()</tt></b>.
323                    Clears the IPI queue, discarding any pending IPIs.</td>
324              </tr>
325          </table>          </table>
326      </td>      </td>
327    </tr>    </tr>
# Line 337  The "test" MIPS machine has the followin Line 332  The "test" MIPS machine has the followin
332    
333    <tr>    <tr>
334      <td align="left" valign="top">      <td align="left" valign="top">
335          <b>fb:</b>          <b><tt>fb</tt>:</b>
336          <p>A simple linear framebuffer, for graphics output.          <p>A simple linear framebuffer, for graphics output.
337          640 x 480 pixels, 3 bytes per pixel (red, green, blue, 8 bits each).          640 x 480 pixels, 3 bytes per pixel (red, green, blue, 8 bits each).
338          <p>Source code:&nbsp;&nbsp;<font color="#0000f0">devices/dev_fb.c</font>          <p>Source code:&nbsp;&nbsp;<font color="#0000f0"><tt>src/devices/dev_fb.c</tt></font>
339          <br>Default physical address:&nbsp&nbsp;<font color="#0000f0">0x12000000</font>          <br>Default physical address:&nbsp&nbsp;<font color="#0000f0">0x12000000</font>
340      </td>      </td>
341      <td></td>      <td></td>
# Line 351  The "test" MIPS machine has the followin Line 346  The "test" MIPS machine has the followin
346              <td align="left" valign="top"><i><u>Effect:</u></i></td>              <td align="left" valign="top"><i><u>Effect:</u></i></td>
347            </tr>            </tr>
348            <tr>            <tr>
349              <td align="left" valign="top">...</td>              <td align="left" valign="top"><tt>0x00000-</tt><br><tt>0xe0fff</tt></td>
350              <td align="left" valign="top">Read: read pixel values.              <td align="left" valign="top">Read: read pixel values.
351                  <br>Write: write pixel values.</td>                  <br>Write: write pixel values.</td>
352            </tr>            </tr>
# Line 359  The "test" MIPS machine has the followin Line 354  The "test" MIPS machine has the followin
354      </td>      </td>
355    </tr>    </tr>
356    
357  </table></center>    <tr height="15">
358        <td height="15">&nbsp;</td>
359  <p>    </tr>
 While these devices may resemble real-world hardware, they are  
 intentionally made simpler to use. (An exception is the framebuffer;  
 some machines actually have simple linear framebuffers like this.)  
360    
361  <p>    <tr>
362  If the physical address is 0x10000000, then for MIPS that means that it      <td align="left" valign="top">
363  can be accessed at virtual address 0xffffffffb0000000. (Actually it can be          <b><tt>disk</tt>:</b>
364  accessed at 0xffffffff90000000 too, but devices should usually be accessed          <p>Disk controller, which can read from and write
365  in a non-cached manner.)          to disk images. It does not use interrupts; read and
366            write operations finish instantaneously.
367            <p>Source code:&nbsp;&nbsp;<font color="#0000f0"><tt>src/devices/dev_disk.c</tt></font>
368            <br>Default physical address:&nbsp&nbsp;<font color="#0000f0">0x13000000</font>
369        </td>
370        <td></td>
371        <td align="left" valign="top">
372            <table border="0">
373              <tr>
374                <td align="left" valign="top"><i><u>Offset:</u></i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
375                <td align="left" valign="top"><i><u>Effect:</u></i></td>
376              </tr>
377              <tr>
378                <td align="left" valign="top"><tt>0x0000</tt></td>
379                <td align="left" valign="top">Write: Set the offset (in bytes) from the beginning
380                    of the disk image. This offset will be used for the next read/write operation.</td>
381              </tr>
382              <tr>
383                <td align="left" valign="top"><tt>0x0010</tt></td>
384                <td align="left" valign="top">Write: Select the SCSI ID to be used in the next
385                    read/write operation.</td>
386              </tr>
387              <tr>
388                <td align="left" valign="top"><tt>0x0020</tt></td>
389                <td align="left" valign="top">Write: Start a read or write operation.
390                    (Writing <tt>0</tt> means a Read operation, a <tt>1</tt> means a
391                    Write operation.)</td>
392              </tr>
393              <tr>
394                <td align="left" valign="top"><tt>0x0030</tt></td>
395                <td align="left" valign="top">Read: Get status of the last operation.
396                    (Status 0 means failure, non-zero means success.)</td>
397              </tr>
398              <tr>
399                <td align="left" valign="top"><tt>0x4000-</tt><br><tt>0x41ff</tt>&nbsp;&nbsp;&nbsp;</td>
400                <td align="left" valign="top">Read/Write: 512 bytes data buffer.</td>
401              </tr>
402            </table>
403        </td>
404      </tr>
405    
406  <p>    <tr height="15">
407  (When using the PPC test machine, "testppc", the addresses are      <td height="15">&nbsp;</td>
408  0x10000000, 0x11000000 etc., so no need to add any virtual displacement.)    </tr>
409    
410  <p>    <tr>
411  The <b>mp</b> device is agnostic when it comes to      <td align="left" valign="top">
412  word-length. For example, when reading offset 0x0000 of the <b>mp</b>          <b><tt>ether</tt>:</b>
413  device, you may use any kind of read (an 8-bit read will work just as well          <p>A simple ethernet controller, enough to send
414  as a 64-bit read, although the value will be truncated to 8 bits in the          and receive packets on a simulated network.
415  first case).          <p>Source code:&nbsp;&nbsp;<font color="#0000f0"><tt>src/devices/dev_ether.c</tt></font>
416            <br>Default physical address:&nbsp&nbsp;<font color="#0000f0">0x14000000</font>
417        </td>
418        <td></td>
419        <td align="left" valign="top">
420            <table border="0">
421              <tr>
422                <td align="left" valign="top"><i><u>Offset:</u></i>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</td>
423                <td align="left" valign="top"><i><u>Effect:</u></i></td>
424              </tr>
425              <tr>
426                <td align="left" valign="top"><tt>0x0000-</tt><br><tt>0x3fff</tt></td>
427                <td align="left" valign="top">Read/write buffer for the packet to be sent/received.</td>
428              </tr>
429              <tr>
430                <td align="left" valign="top"><tt>0x4000</tt></td>
431                <td align="left" valign="top">Read: status word, one or more of these:
432                    <br><tt>0x01</tt>&nbsp;=&nbsp;something was received (because of
433                    the last command)
434                    <br><tt>0x02</tt>&nbsp;=&nbsp;more packets are available
435                    <br><i>NOTE:</i> Whenever the status word is non-zero,
436                            an interrupt is asserted. Reading the status word
437                            clears it, and deasserts the interrupt.</td>
438              </tr>
439              <tr>
440                <td align="left" valign="top"><tt>0x4010</tt></td>
441                <td align="left" valign="top">Read: get the Length of the received packet
442                    <br>Write: set the Length of the next packet to transmit</td>
443              </tr>
444              <tr>
445                <td align="left" valign="top"><tt>0x4020</tt></td>
446                <td align="left" valign="top">Write: command:
447                    <br><tt>0x00:</tt>&nbsp;receive a packet
448                    <br><tt>0x01:</tt>&nbsp;send a packet</td>
449              </tr>
450            </table>
451        </td>
452      </tr>
453    
454  <p>  </table></center>
 The <b>cons</b> device should be accessed using 8-bit reads and writes.  
 Doing a getchar() (ie reading from offset 0x0000) returns 0x00 if no  
 character was available.  
455    
456  <p>  <p>
457  On MIPS, the <b>cons</b> device is hardwired to interrupt 2 (the lowest  While these devices may resemble real-world hardware, they are
458  hardware interrupt). Whenever a character is available, the interrupt is  intentionally made simpler to use. (An exception is the framebuffer;
459  asserted. When there are no more available characters, the interrupt is  some machines actually have simple linear framebuffers like this.)
 deasserted. (Remember that the interrupt has to be enabled in the status  
 register of the system coprocessor.)  
460    
461    <p>If the physical address is <tt>0x10000000</tt>, then for MIPS that
462    means that it can be accessed at virtual address
463    <tt>0xffffffffb0000000</tt>. (Actually it can be accessed at
464    <tt>0xffffffff90000000</tt> too, but devices should usually be accessed in
465    a non-cached manner.)
466    
467    <p> (When using the PPC test machine (<tt>testppc</tt>), the addresses are
468    <tt>0x10000000</tt>, <tt>0x11000000</tt> etc., so no need to add any
469    virtual displacement.)
470    
471    <p>The <b><tt>mp</tt></b>, <b><tt>disk</tt></b>, and <b><tt>ether</tt></b>
472    devices are agnostic when it comes to word-length. For example, when
473    reading offset <tt>0x0000</tt> of the <b><tt>mp</tt></b>
474    device, you may use any kind of read (an 8-bit read will work just as well
475    as a 64-bit read, although the value will be truncated to 8 bits in the
476    first case). You can <i>not</i>, however, read one byte from <tt>0x0000</tt>
477    and one from <tt>0x0001</tt>, and combine the result. The read from
478    <tt>0x0001</tt> will be invalid.
479    
480    <p>The <b><tt>cons</tt></b> device should be accessed using 8-bit reads
481    and writes. Doing a getchar() (ie reading from offset <tt>0x00</tt>)  
482    returns <tt>0</tt> if no character was available.
483    
484    <p>On MIPS, the <b><tt>cons</tt></b> device is hardwired to interrupt 2
485    (the lowest hardware interrupt). Whenever a character is available, the
486    interrupt is asserted. When there are no more available characters, the
487    interrupt is deasserted. (Remember that the interrupt has to be enabled in
488    the status register of the system coprocessor.)
489    
490    <p>The <b><tt>ether</tt></b> device is hardwired to interrupt 3.
491    
492    <p>The IPIs controlled by the <b><tt>mp</tt></b> device are hardwired to
493    interrupt 6. Whenever an IPI is "sent", interrupt 6 is asserted on the
494    target CPU(s), and the IPI number is added last in the IPI queue for that
495    CPU. It is then up to that CPU to read from offset <tt>0x00c0</tt>, to
496    figure out what kind of IPI it was.
497    
498    <p>A simple tutorial on how to use the <tt>disk</tt> device, if not clear
499    from the description above, can be found here: <a
500    href="test_disk.c"><tt>test_disk.c</tt></a>
501    
502    
503    
# Line 405  register of the system coprocessor.) Line 508  register of the system coprocessor.)
508  <h3>Experiments with other kernels and guest OSes:</h3>  <h3>Experiments with other kernels and guest OSes:</h3>
509    
510  <p>  <p>
511  Operating system kernels and other test programs can be downloaded from  Free Operating system kernels and other test programs can be
512  various places. Here are links to some of the kernels that I usually  downloaded from various places on the Internet. Other kinds of software
513  experiment with.  (non-Free), if obsolete enough (such as Ultrix or Windows NT), can
514    sometimes be found in garbage containers, or perhaps be found for a cheap
515    price on ebay or at a flea market.
516    
517  <p>  <p>
518  <font color="#ff0000">  <font color="#ff0000">
519  NOTE: This is <i>not</i> a list of kernels that work in the emulator.  NOTE: This is <i>not</i> a list of kernels that work in the emulator.
520  It is a list of kernels that I experiment with.  It is a list of kernels that I have experimented with.
521  </font>  </font>
522    
523  <p>  <p>
# Line 428  probably doesn't work in GXemul. Line 533  probably doesn't work in GXemul.
533        <li><a href="http://www.netbsd.org/Ports/pmax/">NetBSD/pmax</a>:        <li><a href="http://www.netbsd.org/Ports/pmax/">NetBSD/pmax</a>:
534          <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>          <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>
535          <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>          <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>
536          <br>gunzip the files, and run the emulator with <b>-E dec -e 3max -q -N -XY2</b>          <br>gunzip the files, and run the emulator with <b><tt>-e 3max -q -N -XY2</tt></b>
537          for a graphical framebuffer console. Remove <b>-XY2</b> and <b>-N</b> to use serial (stdin/stdout) console.          for a graphical framebuffer console. Remove <b><tt>-XY2</tt></b> and <b><tt>-N</tt></b> to use serial (stdin/stdout) console.
538          Read <a href="guestoses.html#netbsdinstall">this section</a> about how to install NetBSD/pmax onto a harddisk image.          Read <a href="guestoses.html#netbsdinstall">this section</a> about how to install NetBSD/pmax onto a harddisk image.
539        <p>        <p>
540        <li><a href="http://www.openbsd.org/pmax.html">OpenBSD/pmax</a>:        <li><a href="http://www.openbsd.org/pmax.html">OpenBSD/pmax</a>:
541          <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>          <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>
542          <br>This is an old OpenBSD kernel in a.out format. Try <b>-E dec -e 3max</b>.          <br>This is an old OpenBSD kernel in a.out format. Try <b><tt>-e 3max</tt></b>.
543          <br>Read <a href="guestoses.html#openbsdinstall">this section</a> about how to install OpenBSD/pmax onto a harddisk image.          <br>Read <a href="guestoses.html#openbsdinstall">this section</a> about how to install OpenBSD/pmax onto a harddisk image.
544          It's a bit more complicated than installing NetBSD/pmax, but might work.          It's a bit more complicated than installing NetBSD/pmax, but
545            it usually works.
546        <p>        <p>
547        <li>Linux for DECstation:        <li>Linux for DECstation:
         <br>Here is a Debian package containing a Linux 2.4.26 kernel for  
                 DECstation which supports framebuffer!  
         <br><a href="http://ftp.debian.org/debian/pool/main/k/kernel-patch-2.4.26-mips/kernel-image-2.4.26-r3k-kn02_2.4.26-0.040505.1_mipsel.deb">http://ftp.debian.org/debian/pool/main/k/kernel-patch-2.4.26-mips/  
         <br>kernel-image-2.4.26-r3k-kn02_2.4.26-0.040505.1_mipsel.deb</a>  
         <br>Run the following commands to extract the kernel:<pre>  
         <b>ar x kernel-image-2.4.26-r3k-kn02_2.4.26-0.040505.1_mipsel.deb data.tar.gz</b>  
         <b>tar xfzv data.tar.gz ./boot/vmlinux-2.4.26-r3k-kn02</b>  
         <b>mv boot/vmlinux-* .; rmdir boot</b>  
 </pre>  
         <br>To try with the framebuffer: <b>-E dec -e 3max -X vmlinux-2.4.26-r3k-kn02</b>  
         <br>To try with serial console: <b>-E dec -e 3max -o 'console=ttyS3' vmlinux-2.4.26-r3k-kn02</b>  
548          <br>Read <a href="guestoses.html#declinux">this section</a> about how to run a Debian Linux install kernel.          <br>Read <a href="guestoses.html#declinux">this section</a> about how to run a Debian Linux install kernel.
549          <br>Here are some older kernels (these don't support framebuffer, I think):          <br>Here are some older kernels (these don't support framebuffer, I think):
550                  <a href="http://www.xs4all.nl/~vhouten/mipsel/kernels.html">http://www.xs4all.nl/~vhouten/mipsel/kernels.html</a>                  <a href="http://www.xs4all.nl/~vhouten/mipsel/kernels.html">http://www.xs4all.nl/~vhouten/mipsel/kernels.html</a>
551          <br>Note: Make sure you add <b>-CR4400</b> to the command line for          <br>Note: Make sure you add <b><tt>-CR4400</tt></b> to the command line for
552                  R4000 kernels, as Linux doesn't autodetect CPU type at runtime.                  R4000 kernels, as Linux doesn't autodetect CPU type at runtime.
553            <br>Linux also doesn't detect automatically whether you are booting
554                    in graphical or serial console mode, so you need to add
555                    <tt><b>-o 'console=ttyS3'</b></tt> or similar for serial
556                    console mode.
557        <p>        <p>
558        <li>Sprite:        <li><a href="http://www.cs.berkeley.edu/projects/sprite/retrospective.html">Sprite</a>:
559          <br>The Unix Heritage Society (TUHS, <a href="http://www.tuhs.org">www.tuhs.org</a>)          <br>The Unix Heritage Society (TUHS, <a href="http://www.tuhs.org">www.tuhs.org</a>)
560                  has preserved a copy of a harddisk image for a DECstation 5000/200:                  has preserved a copy of a harddisk image for a DECstation
561                  <a href="http://www.es.embnet.org/Services/ftp/misc/TUHS/other_os/Sprite/">http://www.es.embnet.org/Services/ftp/misc/TUHS/other_os/Sprite</a>/<a href="http://www.es.embnet.org/Services/ftp/misc/TUHS/other_os/Sprite/ds5000.bt">ds5000.bt</a>                  5000/200 (3MAX).
         <br>(MD5 (ds5000.bt) = ec84eeeb20fe77b758370d5e312e4a5e)  
562          <br>Read <a href="guestoses.html#sprite">this section</a> for more information          <br>Read <a href="guestoses.html#sprite">this section</a> for more information
563                  about running this harddisk image in the emulator.                  about running this harddisk image in the emulator.
564        <p>        <p>
565        <li><a href="http://www-2.cs.cmu.edu/afs/cs/project/mach/public/www/mach.html">Mach</a>:        <li><a href="http://www-2.cs.cmu.edu/afs/cs/project/mach/public/www/mach.html">Mach</a>:
566          <br>Important! Run <b>./configure --caches; make</b>          <br>Important! Run <b><tt>./configure --caches; make</tt></b>
567            <br>Also important: This is broken right now. :-(
568          <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>          <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>
569          <br>tar xfvz pmax.tar.Z pmax_mach/special/mach.boot.MK83.STD+ANY          <br><tt><b>tar xfvz pmax.tar.Z pmax_mach/special/mach.boot.MK83.STD+ANY</b></tt>
570          <br><b>gxemul -E dec -e 3max -X pmax_mach/special/mach.boot.MK83.STD+ANY</b>          <br><tt><b>gxemul -e 3max -X pmax_mach/special/mach.boot.MK83.STD+ANY</b></tt>
571      </ul>      </ul>
572    </li>    </li>
573    
# Line 479  probably doesn't work in GXemul. Line 578  probably doesn't work in GXemul.
578        <li><a href="http://www.netbsd.org/Ports/sgimips/">NetBSD/sgimips</a>:        <li><a href="http://www.netbsd.org/Ports/sgimips/">NetBSD/sgimips</a>:
579          <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>          <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>
580          <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>          <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>
581          <br>gunzip, and try running with <b>-E sgi -e ip32</b>.          <br>gunzip, and try running with <b><tt>-e ip32</tt></b>.
582          <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>          <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>
583          <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>          <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>
584          <br>gunzip, and try running with <b>-E sgi -e ip22</b> (or <b>-e ip24</b> or <b>-e ip20</b>).          <br>gunzip, and try running with <b><tt>-e ip22</tt></b> (or <b><tt>ip24</tt></b> or <b><tt>ip20</tt></b>).
585        <p>        <p>
586        <li>Linux/SGI:        <li>Linux/SGI:
587          <br>Some kernels are available here: <a href="http://www.linux-mips.org/~glaurung/">http://www.linux-mips.org/~glaurung/</a>          <br>Some kernels are available here: <a href="http://www.linux-mips.org/~glaurung/">http://www.linux-mips.org/~glaurung/</a>
588          <br>Try running with <b>-E sgi -e ip32 -X</b> for a graphical framebuffer, or          <br>Try running with <b><tt>-e ip32 -X</tt></b> for a graphical framebuffer, or
589                  <b>-E sgi -e ip32 -o 'console=ttyS0'</b> for serial console.                  <b><tt>-e ip32 -o 'console=ttyS0'</tt></b> for serial console.
590          <br>Adding -b (bintrans) might work sometimes.          <br>Adding <b><tt>-b</tt></b> (bintrans) might work sometimes.
591          <br>(You need to add <b>-CR5000</b> if you're trying to run          <br>(You need to add <b><tt>-CR5000</tt></b> if you're trying to run
592                  a kernel compiled for R5000, because Linux                  a kernel compiled for R5000, because Linux doesn't autodetect
593                  doesn't autodetect CPU at runtime.)                  the CPU type at runtime.)
594          <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>          <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>
595          <br>Try <b>-E sgi -e ip32 -b -X -CR5000 vmlinux64-2.6.8.1-IP32</b>.          <br>Try <b><tt>-e ip32 -X -CR5000 vmlinux64-2.6.8.1-IP32</tt></b>.
596          <br>And also some IP27 kernels:          <br>And also some IP27 kernels:
597                  <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>                  <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>
598                  and                  and
599                  <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>                  <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>
600                  (but unfortunately these lack symbols).                  (but unfortunately these lack symbols).
601          <br>Try the IP27 kernels with <b>-E sgi -e ip27 -t</b>.          <br>Try the IP27 kernels with <b><tt>-e ip27 -t</tt></b>.
602        <p>        <p>
603        <li><a href="http://www.openbsd.org/sgi.html">OpenBSD/sgi</a>:        <li><a href="http://www.openbsd.org/sgi.html">OpenBSD/sgi</a>:
604          <br>Snapshots can be found at <a href="ftp://ftp.OpenBSD.org/pub/OpenBSD/snapshots/sgi/">ftp://ftp.OpenBSD.org/pub/OpenBSD/snapshots/sgi/</a>.          <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>
605          <br>Try <b>gxemul -b -E sgi -e ip32 bsd.rd</b>          <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>.
606            <br>Try <b><tt>gxemul -e ip32 bsd.rd</tt></b>
607        <p>        <p>
608        <li><a href="http://www.freebsd.org/platforms/mips.html">FreeBSD/MIPS</a>:        <li><a href="http://www.freebsd.org/platforms/mips.html">FreeBSD/MIPS</a>:
609                  I don't think public binary snapshots are available yet.                  I don't think public binary snapshots are available yet.
# Line 511  probably doesn't work in GXemul. Line 611  probably doesn't work in GXemul.
611        <li>arcdiag:        <li>arcdiag:
612          <br>The NetBSD people have also made available an "arcdiag" for SGI-IP22:          <br>The NetBSD people have also made available an "arcdiag" for SGI-IP22:
613          <br><a href="ftp://ftp.netbsd.org/pub/NetBSD/arch/sgimips/arcdiag.ip22">ftp://ftp.netbsd.org/pub/NetBSD/arch/sgimips/arcdiag.ip22</a>          <br><a href="ftp://ftp.netbsd.org/pub/NetBSD/arch/sgimips/arcdiag.ip22">ftp://ftp.netbsd.org/pub/NetBSD/arch/sgimips/arcdiag.ip22</a>
614          <br>Try running <b>gxemul -E sgi -e ip22 -x arcdiag.ip22</b>.          <br>Try running <tt><b>gxemul -e ip22 -x arcdiag.ip22</b></tt>.
615      </ul>      </ul>
616    </li>    </li>
617    
# Line 522  probably doesn't work in GXemul. Line 622  probably doesn't work in GXemul.
622        <li><a href="http://www.netbsd.org/Ports/arc/">NetBSD/arc</a>:        <li><a href="http://www.netbsd.org/Ports/arc/">NetBSD/arc</a>:
623          <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>          <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>
624          <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>          <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>
625          <br>gunzip, and try with <b>-E arc -e rd94</b>.          <br>gunzip, and try with <b><tt>-e rd94</tt></b>.
626          <br>(You may also try other ARC models.)          <br>(You may also try other ARC models.)
627          <br>Read <a href="guestoses.html#netbsdarcinstall">this section</a> about how          <br>Read <a href="guestoses.html#netbsdarcinstall">this section</a> about how
628                  to install NetBSD/arc onto a harddisk image.                  to install NetBSD/arc 1.6.2 onto a harddisk image.
629            <br>(NetBSD/arc 2.0 doesn't work with disk images yet in GXemul.)
630        <p>        <p>
631        <li><a href="http://www.openbsd.org/arc.html">OpenBSD/arc</a>:        <li><a href="http://www.openbsd.org/arc.html">OpenBSD/arc</a>:
632          <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>          <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>
633          <br>Try running with <b>-X -E arc -e pica</b> or <b>-X -E arc -e tyne</b>.          <br>Try running with <b><tt>-X -e pica</tt></b> or <b><tt>-X -e tyne</tt></b>.
634          <br>Read <a href="guestoses.html#openbsdarcinstall">this section</a> about how          <br>Read <a href="guestoses.html#openbsdarcinstall">this section</a> about how
635                  to install OpenBSD/arc onto a harddisk image.                  to install OpenBSD/arc onto a harddisk image.
636        <p>        <p>
637        <li>Linux:        <li>Linux:
638          <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>          <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>
639          <br>gunzip, and run with <b>-v -J -X -N -E arc -e m700</b> (Olivetti M700)          <br>gunzip, and run with <b><tt>-v -J -X -N -e m700</tt></b> (Olivetti M700)
640            <br>(This probably doesn't work anymore.)
641        <p>        <p>
642        <li>Pandora:        <li>Pandora:
643          <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>          <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>
644          <br>A generic test/diagnostics program for ARC-based machines.          <br>A generic test/diagnostics program for ARC-based machines.
645          <br>Run with <b>-E arc -e r94 milo-0.27.1/pandora</b>          <br>Run with <b><tt>-e r94 milo-0.27.1/pandora</tt></b>
646        <p>        <p>
647        <li>arcdiag:        <li>arcdiag:
648          <br>Precompiled binary:<a href="ftp://ftp.netbsd.org/pub/NetBSD/arch/arc/arcdiag">ftp://ftp.netbsd.org/pub/NetBSD/arch/arc/arcdiag</a>          <br>Precompiled binary:<a href="ftp://ftp.netbsd.org/pub/NetBSD/arch/arc/arcdiag">ftp://ftp.netbsd.org/pub/NetBSD/arch/arc/arcdiag</a>
649          <br>(alternative: <a href="http://www.sensi.org/~alec/mips/arcdiag">http://www.sensi.org/~alec/mips/arcdiag</a>)          <br>(alternative: <a href="http://www.sensi.org/~alec/mips/arcdiag">http://www.sensi.org/~alec/mips/arcdiag</a>)
650          <br>A generic test/diagnostics program for ARC-based machines.          <br>A generic test/diagnostics program for ARC-based machines.
651          <br>Run with <b>-E arc -e pica arcdiag</b> (or some other ARC mode).          <br>Run with <b><tt>-e pica arcdiag</tt></b> (or some other ARC mode).
652          <br>Example arcdiag output (from real machines):          <br>Example arcdiag output (from real machines):
653          <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)          <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)
654          <br><a href="http://www.sensi.org/~alec/mips/arcdiag.txt">http://www.sensi.org/~alec/mips/arcdiag.txt</a> (PICA-61)          <br><a href="http://www.sensi.org/~alec/mips/arcdiag.txt">http://www.sensi.org/~alec/mips/arcdiag.txt</a> (PICA-61)
655          <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)          <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)
656          <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)          <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)
657          <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)          <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)
658            <br>For some machines, such as <tt><b>-e pica</b></tt>, you can
659                    add <b><tt>-X</tt></b> to boot with a graphical VGA-style
660                    console. This however is probably a bit unstable and/or
661                    broken right now.
662          <p>
663          <li>Windows NT:
664            <br>Put a "Windows NT 4.0 for MIPS" CDROM (or similar) into
665                    your CDROM drive. (On FreeBSD systems, it is usually called
666                    /dev/cd0c or similar. Change that to whatever the CDROM
667                    is called on your system, or the name of a raw .iso image.)
668            <br>I have tried this with the Swedish version, but it might
669                    work with other versions too.<pre>
670            $ <b><tt>dd if=/dev/zero of=winnt_test.img bs=1024 count=1 seek=999000</tt></b>
671            $ <b><tt>gxemul -X -e pica -d winnt_test.img -d bc6:/dev/cd0c -j MIPS\\ARCINST</tt></b>
672            $ <b><tt>gxemul -X -e pica -d winnt_test.img -d bc6:/dev/cd0c -j MIPS\\SETUPLDR</tt></b>
673    </pre>  <br><tt>ARCINST</tt> tries to prepare the disk image for installation. (It <i>almost</i> works.)
674            <br><tt>SETUPLDR</tt> should load some drivers from the cdrom, but then it crashes with a bluescreen.
675      </ul>      </ul>
676    </li>    </li>
677    
# Line 562  probably doesn't work in GXemul. Line 681  probably doesn't work in GXemul.
681      <ul>      <ul>
682        <li><a href="http://www.netbsd.org/Ports/hpcmips/">NetBSD/hpcmips</a>:        <li><a href="http://www.netbsd.org/Ports/hpcmips/">NetBSD/hpcmips</a>:
683          <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>          <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>
684          <br>Try <b>gxemul -X -b -E hpc -e mobilepro770 netbsd</b>          <br>Try <b><tt>gxemul -X -e mobilepro770 netbsd</tt></b>
685          <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>          <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>
686          <br>Try <b>gxemul -X -b -E hpc -e mobilepro770 netbsd-GENERIC</b>          <br>Try <b><tt>gxemul -X -e mobilepro770 netbsd-GENERIC</tt></b>
687        <p>        <p>
688        <li>Linux for BE300:        <li>Linux for BE300:
689          <br><a href="http://www.linux4.be/2004/linux4be20040908.zip">http://www.linux4.be/2004/linux4be20040908.zip</a>          <br><a href="http://www.linux4.be/2004/linux4be20040908.zip">http://www.linux4.be/2004/linux4be20040908.zip</a>
690          <br>Try <b>gxemul -X -b -E hpc -e be300 vmlinux</b>          <br>Try <b><tt>gxemul -X -e be300 vmlinux</tt></b>
691        <p>        <p>
692        <li>Linux for Agenda VR3:        <li>Linux for Agenda VR3:
693          <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>          <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>
694          <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>.          <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>.
695          <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>)          <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>)
696          <br>Try <b>gxemul -b -X -E hpc -e vr3 0xbf200000:root1.2.6.cramfs 0xbf000000:0:0xbf0005e0:root1.2.6.kernel-8.00</b>          <br>Try <b><tt>gxemul -X -e vr3 -x 0xbf200000:root1.2.6.cramfs 0xbf000000:0:0xbf0005e0:root1.2.6.kernel-8.00</tt></b>
697          <br>(or replace root1.2.6.cramfs with dream-1-noxip.cramfs)          <br>(or replace root1.2.6.cramfs with dream-1-noxip.cramfs)
698          <br>Remove <b>-X</b> to try with serial console instead of X, and          <br>Remove <b><tt>-X</tt></b> to try with serial console instead of X, and
699                  remove <b>-b</b> to try without (old) bintrans.                  remove <b><tt>-b</tt></b> to try without (old) bintrans.
700          <br>Add <b>-o 'init=/bin/sh'</b> to boot into a single-user shell.          <br>Add <b><tt>-o 'init=/bin/sh'</tt></b> to boot into a single-user shell.
701          <br>Add <b>-o 'init=/sbin/restore_defaults'</b> to run          <br>Add <b><tt>-o 'init=/sbin/restore_defaults'</tt></b> to run
702                  a /sbin/restore_defaults (attempt to initialize the flash                  a <tt>/sbin/restore_defaults</tt> (attempt to initialize the
703                  memory).                  flash memory).
704        <p>        <p>
705        <li>Linux for MobilePro etc.:        <li>Linux for MobilePro etc.:
706          <br><a href="http://pc1.peanuts.gr.jp/~kei/Hard-Float/Kernels/">http://pc1.peanuts.gr.jp/~kei/Hard-Float/Kernels/</a>          <br><a href="http://pc1.peanuts.gr.jp/~kei/Hard-Float/Kernels/">http://pc1.peanuts.gr.jp/~kei/Hard-Float/Kernels/</a>
707          <br>Uncompress the archive to get a kernel, vmlinux-800 for example.          <br>Uncompress the archive to get a kernel, vmlinux-800 for example.
708          <br>Try <b>./gxemul -b -X -o 'root=/dev/hda1' -d r:disk.img -d r:disk.img -Ehpc -e mobilepro800 vmlinux-800</b>          <br>Try <b><tt>./gxemul -X -o 'root=/dev/hda1' -d r:disk.img -d r:disk.img -e mobilepro800 vmlinux-800</tt></b>
709          <br>where disk.img is an ext2fs filesystem with contents from          <br>where disk.img is an ext2fs filesystem with contents from
710          <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>          <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>
711          <br>(Note the double disk arguments.)          <br>(Note the double disk arguments.)
# Line 594  probably doesn't work in GXemul. Line 713  probably doesn't work in GXemul.
713        <p>        <p>
714        <li><a href="http://www.disorder.ru/openbsd/be300/">OpenBSD/be300</a>:        <li><a href="http://www.disorder.ru/openbsd/be300/">OpenBSD/be300</a>:
715          <br><a href="http://www.disorder.ru/openbsd/be300/bsd.rd">http://www.disorder.ru/openbsd/be300/bsd.rd</a>          <br><a href="http://www.disorder.ru/openbsd/be300/bsd.rd">http://www.disorder.ru/openbsd/be300/bsd.rd</a>
716          <br>Try <b>gxemul -X -b -E hpc -e be300 bsd.rd</b>          <br>Try <b><tt>gxemul -X -e be300 bsd.rd</tt></b>
717          <br>Note: -b might be buggy, so you can try without that if you want to.          <br>Note: bintrans might be buggy, so you can try with -B if you want to.
718        </ul>
719      </li>
720    
721      <p>
722    
723      <li>Cobalt:
724        <ul>
725          <li><a href="http://www.netbsd.org/Ports/cobalt/">NetBSD/cobalt</a>:
726            <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>
727            <br>gunzip, and run with <b><tt>-E cobalt</tt></b>
728            <br>(Or read <a href="guestoses.html#netbsdcobaltinstall">this
729            section</a> on how to install NetBSD/cobalt onto a harddisk image.)
730          <p>
731          <li>Linux:
732            <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>
733            <br>gunzip, and run with <b><tt>-E cobalt</tt></b>
734            <p>
735            <br><a href="http://dev.gentoo.org/~kumba/mips/cobalt/netboot/cobalt-netboot-20040428.img.gz">http://dev.gentoo.org/~kumba/mips/</a>
736            <br>    <a href="http://dev.gentoo.org/~kumba/mips/cobalt/netboot/cobalt-netboot-20040428.img.gz">cobalt/netboot/cobalt-netboot-20040428.img.gz</a>
737            <br><b><tt>gxemul -E cobalt cobalt-netboot-20040428.img.gz</tt></b>
738          <p>
739          <li>CoLo:
740            <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>
741            <br><tt><b>tar zxvf colo-1.19.tar.gz colo-1.19/binaries/colo-rom-image.bin</b></tt>
742            <br><tt><b>gxemul -Q -Ecobalt -v 0xbfc00000:colo-1.19/binaries/colo-rom-image.bin</b></tt>
743            <br>(This doesn't work yet.)
744      </ul>      </ul>
745    </li>    </li>
746    
# Line 607  probably doesn't work in GXemul. Line 752  probably doesn't work in GXemul.
752          <br>NetBSD/playstation2 snapshot kernels are available here: (RAMDISK and GENERIC)          <br>NetBSD/playstation2 snapshot kernels are available here: (RAMDISK and GENERIC)
753          <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>          <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>
754          <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>          <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>
755          <br>Try running with <b>-X -E playstation2</b>  (<b>-X</b> is required, for the framebuffer).          <br>Try running with <b><tt>-X -E playstation2</tt></b>  (<b><tt>-X</tt></b> is required, for the framebuffer).
756    
757        <p>        <p>
758        <li>Linux:        <li>Linux:
759          <br>A Linux kernel (2.2.21-pre1-xr7) is available from          <br>A Linux kernel (2.2.21-pre1-xr7) is available from
760          <a href="http://playstation2-linux.com/projects/xrhino-kernel/">http://playstation2-linux.com/projects/xrhino-kernel/</a>          <a href="http://playstation2-linux.com/projects/xrhino-kernel/">http://playstation2-linux.com/projects/xrhino-kernel/</a>
761          <br>Try running with <b>-X -E playstation2</b>  (<b>-X</b> is required, for the framebuffer).          <br>Try running with <b><tt>-X -E playstation2</tt></b>  (<b><tt>-X</tt></b> is required, for the framebuffer).
762      </ul>      </ul>
763    </li>    </li>
764    
765  </ul>    <p>
   
 <p>  
 The following work even less than the ones listed above:  
766    
767  <p>    <li>EVBMIPS:
 <ul>  
   <li>Cobalt:  
768      <ul>      <ul>
769        <li><a href="http://www.netbsd.org/Ports/cobalt/">NetBSD/cobalt</a>:        <li><a href="http://www.netbsd.org/Ports/evbmips/">NetBSD/evbmips</a>:
770          <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>          <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>
771          <br>gunzip, and run with <b>-E cobalt</b>          <br><b><tt>gxemul -e malta netbsd-MALTA</tt></b>
772        <p>          <br>The default CPU is a 5Kc (MIPS64). Add
773        <li>Linux:                  <tt>-C 4Kc</tt> to use a MIPS32 CPU instead.
774          <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>          <br>(NetBSD/evbmips runs in 32-bit mode on MIPS64 anyway...)
775          <br>gunzip, and run with <b>-E cobalt</b>          <br>Read <a href="guestoses.html#netbsdevbmipsinstall">this
776            section</a> on how to install NetBSD/evbmips onto a harddisk image.
777            <br>or
778            <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>
779            <br><b><tt>gxemul -e pb1000 netbsd-PB1000</tt></b>
780      </ul>      </ul>
781    </li>    </li>
782    
783    <p>  </ul>
784    
785    <p>
786    The following don't work at all, or just very very little.
787    
788    <p>
789    <ul>
790    <li>Sony NeWS:    <li>Sony NeWS:
791      <ul>      <ul>
792        <li><a href="http://www.netbsd.org/Ports/newsmips/">NetBSD/newsmips</a>:        <li><a href="http://www.netbsd.org/Ports/newsmips/">NetBSD/newsmips</a>:
# Line 645  The following work even less than the on Line 794  The following work even less than the on
794                  available here:                  available here:
795          <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>          <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>
796          <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>          <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>
797          <br>Try running with <b>-E sonynews</b>.          <br>Try running with <b><tt>-E sonynews</tt></b>.
798          <br>There's also a boot floppy available, but the emulator currently          <br>There's also a boot floppy available, but the emulator currently
799                  doesn't support booting from it:                  doesn't support booting from it:
800          <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>          <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>
# Line 659  The following work even less than the on Line 808  The following work even less than the on
808        <li>Linux:        <li>Linux:
809          <br>A Linux kernel is available from          <br>A Linux kernel is available from
810          <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>          <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>
811          <br>(This is a Debian package, you can use <b>ar</b> and <b>tar</b>          <br>(This is a Debian package, you can use <tt><b>ar</b></tt> and
812                  to extract kernel.img from it.)                  <tt><b>tar</b></tt> to extract kernel.img from it.)
813          <br>Try running with <b>-E meshcube 0x80800000:kernel.img</b>.          <br>Try running with <b><tt>-E meshcube 0x80800000:kernel.img</tt></b>.
814      </ul>      </ul>
815    </li>    </li>
816    
# Line 673  The following work even less than the on Line 822  The following work even less than the on
822          <br>A Linux kernel is available from          <br>A Linux kernel is available from
823          <a href="ftp://downloads.netgear.com/files/wg602_v1715.zip">ftp://downloads.netgear.com/files/wg602_v1715.zip</a>          <a href="ftp://downloads.netgear.com/files/wg602_v1715.zip">ftp://downloads.netgear.com/files/wg602_v1715.zip</a>
824          <br>(Unzip wg602_v1715.zip to get WG602_V1715.img.)          <br>(Unzip wg602_v1715.zip to get WG602_V1715.img.)
825          <br>Try running with <b>-E netgear 0xbfc80000:0x40:WG602_V1715.img</b>.          <br>Try running with <b><tt>-E netgear 0xbfc80000:0x40:WG602_V1715.img</tt></b>.
826          <br>(It takes some time to decompress the kernel, so be patient.)          <br>(It takes some time to decompress the kernel, so be patient.)
827            <br>(This doesn't really work yet.)
828      </ul>      </ul>
829    </li>    </li>
830    
831    <p>    <p>
832    
   <li>Linksys WRT54G:  
     <ul>  
       <li>Linux:  
         <br><a href="http://openwrt.org/">OpenWRT</a> is a Linux  
                 distribution for the WRT54G.  
         <br><a href="http://www.batbox.org/wrt54g-linux.html">BatBox</a>  
                 is another distribution.  
         <br>Download <a href="http://pjf.dotgeek.org/downloads/openwrt/openwrt-g-code.bin">http://pjf.dotgeek.org/downloads/openwrt/openwrt-g-code.bin</a>  
                 (or a similar .bin file).  
         <br>From offset 60 and forward in the bin file, there is a gzip file.  
         <br>$ <b>dd if=openwrt-g-code.bin of=piggy.gz bs=60 iseek=1 oseek=0</b>  
         <br>$ <b>gunzip piggy.gz</b>  
         <br>$ <b>gxemul -E linksys -t 0x80001000:piggy</b>  
         <br>There's also a .bin file available from linksys:  
                 <a href="ftp://ftp.linksys.com/pub/network/WRT54G_1.30.7_US_code.bin">ftp://ftp.linksys.com/pub/network/WRT54G_1.30.7_US_code.bin</a>  
     </ul>  
   </li>  
 </ul>  
   
 <p>  
 The following don't work at all, actually, because the PPC and SPARC  
 modes are just skeletons so far.  
   
 <p>  
 <ul>  
   
833    <li>Walnut (evbppc):    <li>Walnut (evbppc):
834      <ul>      <ul>
835        <li><a href="http://www.netbsd.org/Ports/evbppc/">NetBSD/evbppc</a>:        <li><a href="http://www.netbsd.org/Ports/evbppc/">NetBSD/evbppc</a>:
836          <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>          <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>
837          <br>gunzip, and try the following:          <br>gunzip, and try the following:
838          <br>$ <b>gxemul -E walnut -v -t netbsd-INSTALL_WALNUT</b>          <br><tt><b>gxemul -E walnut -v -t netbsd-INSTALL_WALNUT</b></tt>
839      </ul>      </ul>
840    </li>    </li>
841    
# Line 722  modes are just skeletons so far. Line 846  modes are just skeletons so far.
846        <li><a href="http://www.netbsd.org/Ports/pmppc/">NetBSD/pmppc</a>:        <li><a href="http://www.netbsd.org/Ports/pmppc/">NetBSD/pmppc</a>:
847          <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>          <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>
848          <br>gunzip, and try the following:          <br>gunzip, and try the following:
849          <br>$ <b>gxemul -E pmppc netbsd-INSTALL</b>          <br><tt><b>gxemul -E pmppc netbsd-INSTALL</b></tt>
850      </ul>      </ul>
851    </li>    </li>
852    
# Line 733  modes are just skeletons so far. Line 857  modes are just skeletons so far.
857        <li><a href="http://www.netbsd.org/Ports/sandpoint/">NetBSD/sandpoint</a>:        <li><a href="http://www.netbsd.org/Ports/sandpoint/">NetBSD/sandpoint</a>:
858          <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>          <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>
859          <br>gunzip, and try the following:          <br>gunzip, and try the following:
860          <br>$ <b>gxemul -E sandpoint -v -t netbsd-INSTALL</b>          <br><tt><b>gxemul -E sandpoint -v -t netbsd-INSTALL</b></tt>
861      </ul>      </ul>
862    </li>    </li>
863    
# Line 744  modes are just skeletons so far. Line 868  modes are just skeletons so far.
868        <li><a href="http://www.netbsd.org/Ports/prep/">NetBSD/prep</a>:        <li><a href="http://www.netbsd.org/Ports/prep/">NetBSD/prep</a>:
869          <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>          <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>
870          <br>gunzip, and try the following:          <br>gunzip, and try the following:
871          <br>$ <b>gxemul -E prep -v -t netbsd-INSTALL</b>          <br><tt><b>gxemul -E prep -v -t netbsd-INSTALL</b></tt>
872        <p>        <p>
873        <li>Linux:        <li>Linux:
874          <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>          <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>
875          <br>$ <b>gxemul -E prep -v -t vmlinux</b>          <br><tt><b>gxemul -E prep -v -t vmlinux</b></tt>
876      </ul>      </ul>
877    </li>    </li>
878    
# Line 758  modes are just skeletons so far. Line 882  modes are just skeletons so far.
882      <ul>      <ul>
883        <li><a href="http://www.netbsd.org/Ports/macppc/">NetBSD/macppc</a>:        <li><a href="http://www.netbsd.org/Ports/macppc/">NetBSD/macppc</a>:
884          <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>          <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>
885          <br>$ <b>gxemul -E macppc -e g4 -t netbsd-INSTALL</b>          <br><tt><b>gxemul -E macppc -e g4 -t netbsd-INSTALL</b></tt>
886        <p>        <p>
887        <li><a href="http://www.openbsd.org/macppc.html">OpenBSD/macppc</a>:        <li><a href="http://www.openbsd.org/macppc.html">OpenBSD/macppc</a>:
888          <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>          <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>
889          <br>$ <b>gxemul -E macppc -e g4 -t bsd.rd</b>          <br><tt><b>gxemul -E macppc -e g4 -t bsd.rd</b></tt>
890      </ul>      </ul>
891    </li>    </li>
892    
# Line 772  modes are just skeletons so far. Line 896  modes are just skeletons so far.
896      <ul>      <ul>
897        <li><a href="http://www.netbsd.org/Ports/bebox/">NetBSD/bebox</a>:        <li><a href="http://www.netbsd.org/Ports/bebox/">NetBSD/bebox</a>:
898          <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>          <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>
899          <br>$ <b>tar tvzf kern.tgz</b>          <br><tt><b>tar xvzf kern.tgz</b></tt>
900          <br>$ <b>gxemul -E bebox netbsd</b>          <br><tt><b>gxemul -E bebox netbsd</b></tt>
901        <p>        <p>
902        <li><a href="http://www.bebox.nu/os.php?s=os/linux/index">Linux/bebox</a>:        <li><a href="http://www.bebox.nu/os.php?s=os/linux/index">Linux/bebox</a>:
903          <br><a href="http://www.bebox.nu/files/linux/BeBox-scsi-980610.gz">http://www.bebox.nu/files/linux/BeBox-scsi-980610.gz</a>          <br><a href="http://www.bebox.nu/files/linux/BeBox-scsi-980610.gz">http://www.bebox.nu/files/linux/BeBox-scsi-980610.gz</a>
904          <br>$ <b>gunzip BeBox-scsi-980610.gz</b>          <br><tt><b>gunzip BeBox-scsi-980610.gz</b></tt>
905          <br>$ <b>gxemul -E bebox 0x3100:0x400:BeBox-scsi-980610</b>          <br><tt><b>gxemul -E bebox 0x3100:0x400:BeBox-scsi-980610</b></tt>
906      </ul>      </ul>
907    </li>    </li>
908    
# Line 789  modes are just skeletons so far. Line 913  modes are just skeletons so far.
913        <li><a href="http://www.netbsd.org/Ports/sparc64/">NetBSD/sparc64</a>:        <li><a href="http://www.netbsd.org/Ports/sparc64/">NetBSD/sparc64</a>:
914          <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>          <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>
915          <br>gunzip, and try the following:          <br>gunzip, and try the following:
916          <br>$ <b>gxemul -E ultra1 -v -i netbsd-INSTALL</b>          <br><tt><b>gxemul -E ultra1 -v -i netbsd-INSTALL</b></tt>
917        <p>        <p>
918        <li><a href="http://www.openbsd.org/sparc64.html">OpenBSD/sparc64</a>:        <li><a href="http://www.openbsd.org/sparc64.html">OpenBSD/sparc64</a>:
919          <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>          <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>
920          <br>rename to bsd.rd.gz, gunzip, and try the following:          <br>rename to bsd.rd.gz, gunzip, and try the following:
921          <br>$ <b>gxemul -E ultra1 -v -i bsd.rd</b>          <br><tt><b>gxemul -E ultra1 -v -i bsd.rd</b></tt>
922      </ul>      </ul>
923    </li>    </li>
924  </ul>  </ul>
925    
 <p>  
 The URISC emulation mode is just for fun. (Read  
 <a href="http://en.wikipedia.org/wiki/URISC">http://en.wikipedia.org/wiki/URISC</a>  
 for more info.)  
   
 <p>  
 <ul>  
   
   <li>URISC:  
     <ul>  
       <li>I've placed a small test program in the experiments directory.  
         <br>Start like this: <b>gxemul -E testurisc 0:urisc_test.bin</b>  
         <br>or, if you want to single-step:  
                 <b>gxemul -V -E testurisc 0:urisc_test.bin</b>  
         <br>2005-03-01: All outputed characters are printed twice. I'll  
         try to make a pseudo-device for outputing to "normal" devices  
         later.  
     </ul>  
   </li>  
   
 </ul>  
926    
927    
928    

Legend:
Removed from v.2  
changed lines
  Added in v.12

  ViewVC Help
Powered by ViewVC 1.1.26