1 |
<html> |
<html> |
2 |
<head><title>GXemul documentation: Experimenting with GXemul</title> |
<head><title>GXemul documentation: Experimenting with GXemul</title> |
3 |
|
<meta name="robots" content="noarchive,nofollow,noindex"> |
4 |
</head> |
</head> |
5 |
<body bgcolor="#f8f8f8" text="#000000" link="#4040f0" vlink="#404040" alink="#ff0000"> |
<body bgcolor="#f8f8f8" text="#000000" link="#4040f0" vlink="#404040" alink="#ff0000"> |
6 |
<table border=0 width=100% bgcolor="#d0d0d0"><tr> |
<table border=0 width=100% bgcolor="#d0d0d0"><tr> |
9 |
<b>GXemul documentation:</b></font> |
<b>GXemul documentation:</b></font> |
10 |
<font color="#000000" size="6"><b>Experimenting with GXemul</b> |
<font color="#000000" size="6"><b>Experimenting with GXemul</b> |
11 |
</font></td></tr></table></td></tr></table><p> |
</font></td></tr></table></td></tr></table><p> |
|
<!-- The first 10 lines are cut away by the homepage updating script. --> |
|
|
|
|
12 |
|
|
13 |
<!-- |
<!-- |
14 |
|
|
15 |
$Id: experiments.html,v 1.68 2005/05/27 07:29:23 debug Exp $ |
$Id: experiments.html,v 1.76 2005/06/24 09:33:32 debug Exp $ |
16 |
|
|
17 |
Copyright (C) 2003-2005 Anders Gavare. All rights reserved. |
Copyright (C) 2003-2005 Anders Gavare. All rights reserved. |
18 |
|
|
106 |
</font></pre> |
</font></pre> |
107 |
</td></tr></table> |
</td></tr></table> |
108 |
|
|
109 |
<p> |
<p>(This hello world program is available here as well: |
110 |
(This hello world program is available here as well: |
<a href="hello_mips.c"><tt>hello_mips.c</tt></a>) |
|
<a href="hello_mips.c">hello_mips.c</a>) |
|
111 |
|
|
112 |
<p> |
<p>I recommend that you build a GCC cross compiler for the |
|
I recommend that you build a GCC cross compiler for the |
|
113 |
<b>mips64-unknown-elf</b> target, and install it. Other compilers could |
<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 |
work too, but GCC is good because of its portability. Then try to compile |
115 |
the hello world program: |
and link the hello world program: |
116 |
<pre> |
<pre> |
117 |
$ <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> |
118 |
$ <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> |
185 |
<h4>Hello World for GXemul's PPC mode</h4> |
<h4>Hello World for GXemul's PPC mode</h4> |
186 |
|
|
187 |
GXemul also has an experimental PowerPC emulation mode. |
GXemul also has an experimental PowerPC emulation mode. |
188 |
<a href="hello_ppc.c">hello_ppc.c</a> is similar to hello_mips.c, but |
<a href="hello_ppc.c"><tt>hello_ppc.c</tt></a> is similar to |
189 |
should be compiled and run as follows: |
<tt>hello_mips.c</tt>, but should be compiled and run as follows: |
190 |
<p> |
<p> |
191 |
<pre> |
<pre> |
192 |
$ <b>ppc-unknown-elf-gcc -O2 hello_ppc.c -c</b> |
$ <b>ppc-unknown-elf-gcc -O2 hello_ppc.c -c</b> |
218 |
emulated. |
emulated. |
219 |
|
|
220 |
<p> |
<p> |
221 |
The "test" MIPS machine has the following experimental devices: |
The <tt>testmips</tt> machine has the following experimental devices: |
222 |
|
|
223 |
<p> |
<p> |
224 |
<center><table border="0" width="80%"> |
<center><table border="0" width="80%"> |
225 |
|
|
226 |
<tr> |
<tr> |
227 |
<td align="left" valign="top" width="200"> |
<td align="left" valign="top" width="200"> |
228 |
<b>cons:</b> |
<b><tt>cons</tt>:</b> |
229 |
<p>This is a simple console device, for writing |
<p>This is a simple console device, for writing |
230 |
characters to the controlling terminal. |
characters to the controlling terminal. |
231 |
<p>Source code: <font color="#0000f0">devices/dev_cons.c</font> |
<p>Source code: <font color="#0000f0"><tt>src/devices/dev_cons.c</tt></font> |
232 |
<br>Default physical address:  <font color="#0000f0">0x10000000</font> |
<br>Default physical address:  <font color="#0000f0">0x10000000</font> |
233 |
</td> |
</td> |
234 |
<td align="left" valign="top" width="25"> </td> |
<td align="left" valign="top" width="25"> </td> |
241 |
<tr> |
<tr> |
242 |
<td align="left" valign="top">0x0000</td> |
<td align="left" valign="top">0x0000</td> |
243 |
<td align="left" valign="top"> |
<td align="left" valign="top"> |
244 |
Read: <b>getchar()</b> (non-blocking)<br> |
Read: <b><tt>getchar()</tt></b> (non-blocking)<br> |
245 |
Write: <b>putchar(ch)</b></td> |
Write: <b><tt>putchar(ch)</tt></b></td> |
246 |
</tr> |
</tr> |
247 |
<tr> |
<tr> |
248 |
<td align="left" valign="top">0x0010</td> |
<td align="left" valign="top">0x0010</td> |
249 |
<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> |
250 |
(Useful for exiting the emulator.)</td> |
(Useful for exiting the emulator.)</td> |
251 |
</tr> |
</tr> |
252 |
</table> |
</table> |
259 |
|
|
260 |
<tr> |
<tr> |
261 |
<td align="left" valign="top"> |
<td align="left" valign="top"> |
262 |
<b>mp:</b> |
<b><tt>mp</tt>:</b> |
263 |
<p>This device controls the behaviour of CPUs in an emulated |
<p>This device controls the behaviour of CPUs in an emulated |
264 |
multi-processor system. |
multi-processor system. |
265 |
<p>Source code: <font color="#0000f0">devices/dev_mp.c</font> |
<p>Source code: <font color="#0000f0"><tt>src/devices/dev_mp.c</tt></font> |
266 |
<br>Default physical address:  <font color="#0000f0">0x11000000</font> |
<br>Default physical address:  <font color="#0000f0">0x11000000</font> |
267 |
</td> |
</td> |
268 |
<td></td> |
<td></td> |
274 |
</tr> |
</tr> |
275 |
<tr> |
<tr> |
276 |
<td align="left" valign="top">0x0000</td> |
<td align="left" valign="top">0x0000</td> |
277 |
<td align="left" valign="top">Read: <b>whoami()</b>. |
<td align="left" valign="top">Read: <b><tt>whoami()</tt></b>. |
278 |
Returns the id of the CPU doing the read.</td> |
Returns the id of the CPU doing the read.</td> |
279 |
</tr> |
</tr> |
280 |
<tr> |
<tr> |
281 |
<td align="left" valign="top">0x0010</td> |
<td align="left" valign="top">0x0010</td> |
282 |
<td align="left" valign="top">Read: <b>ncpus()</b>. |
<td align="left" valign="top">Read: <b><tt>ncpus()</tt></b>. |
283 |
Returns the number of CPUs in the system.</td> |
Returns the number of CPUs in the system.</td> |
284 |
</tr> |
</tr> |
285 |
<tr> |
<tr> |
286 |
<td align="left" valign="top">0x0020</td> |
<td align="left" valign="top">0x0020</td> |
287 |
<td align="left" valign="top">Write: <b>startupcpu(i)</b>. |
<td align="left" valign="top">Write: <b><tt>startupcpu(i)</tt></b>. |
288 |
Starts CPU i. It begins execution at the address |
Starts CPU i. It begins execution at the address |
289 |
set by a write to startupaddr (see below).</td> |
set by a write to startupaddr (see below).</td> |
290 |
</tr> |
</tr> |
291 |
<tr> |
<tr> |
292 |
<td align="left" valign="top">0x0030</td> |
<td align="left" valign="top">0x0030</td> |
293 |
<td align="left" valign="top">Write: <b>startupaddr(addr)</b>. |
<td align="left" valign="top">Write: <b><tt>startupaddr(addr)</tt></b>. |
294 |
Sets the starting address for CPUs.</td> |
Sets the starting address for CPUs.</td> |
295 |
</tr> |
</tr> |
296 |
<tr> |
<tr> |
297 |
<td align="left" valign="top">0x0040</td> |
<td align="left" valign="top">0x0040</td> |
298 |
<td align="left" valign="top">Write: <b>pause_addr(addr)</b>. |
<td align="left" valign="top">Write: <b><tt>pause_addr(addr)</tt></b>. |
299 |
Sets the pause address. (TODO: This is not |
Sets the pause address. (TODO: This is not |
300 |
used anymore?)</td> |
used anymore?)</td> |
301 |
</tr> |
</tr> |
302 |
<tr> |
<tr> |
303 |
<td align="left" valign="top">0x0050</td> |
<td align="left" valign="top">0x0050</td> |
304 |
<td align="left" valign="top">Write: <b>pause_cpu(i)</b>. |
<td align="left" valign="top">Write: <b><tt>pause_cpu(i)</tt></b>. |
305 |
Stops all CPUs <i>except</i> CPU i.</td> |
Stops all CPUs <i>except</i> CPU i.</td> |
306 |
</tr> |
</tr> |
307 |
<tr> |
<tr> |
308 |
<td align="left" valign="top">0x0060</td> |
<td align="left" valign="top">0x0060</td> |
309 |
<td align="left" valign="top">Write: <b>unpause_cpu(i)</b>. |
<td align="left" valign="top">Write: <b><tt>unpause_cpu(i)</tt></b>. |
310 |
Unpauses all CPUs <i>except</i> CPU i.</td> |
Unpauses all CPUs <i>except</i> CPU i.</td> |
311 |
</tr> |
</tr> |
312 |
<tr> |
<tr> |
313 |
<td align="left" valign="top">0x0070</td> |
<td align="left" valign="top">0x0070</td> |
314 |
<td align="left" valign="top">Write: <b>startupstack(addr)</b>. |
<td align="left" valign="top">Write: <b><tt>startupstack(addr)</tt></b>. |
315 |
Sets the startup stack address. (CPUs started with |
Sets the startup stack address. (CPUs started with |
316 |
startupcpu() above will have their stack pointer |
startupcpu() above will have their stack pointer |
317 |
set to this value.)</td> |
set to this value.)</td> |
318 |
</tr> |
</tr> |
319 |
<tr> |
<tr> |
320 |
<td align="left" valign="top">0x0080</td> |
<td align="left" valign="top">0x0080</td> |
321 |
<td align="left" valign="top">Read: <b>hardware_random()</b>. |
<td align="left" valign="top">Read: <b><tt>hardware_random()</tt></b>. |
322 |
This produces a "random" number.</td> |
This produces a "random" number.</td> |
323 |
</tr> |
</tr> |
324 |
<tr> |
<tr> |
325 |
<td align="left" valign="top">0x0090</td> |
<td align="left" valign="top">0x0090</td> |
326 |
<td align="left" valign="top">Read: <b>memory()</b>. |
<td align="left" valign="top">Read: <b><tt>memory()</tt></b>. |
327 |
Returns the number of bytes of RAM in the system.</td> |
Returns the number of bytes of RAM in the system.</td> |
328 |
</tr> |
</tr> |
329 |
|
<tr> |
330 |
|
<td align="left" valign="top">0x00a0</td> |
331 |
|
<td align="left" valign="top">Write: <b><tt>ipi_one((nr << 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 << 16) + cpuid)</tt></b>. |
337 |
|
Sends IPI <tt>nr</tt> to all CPUs <i>except</i> |
338 |
|
the specified one.</td> |
339 |
|
</tr> |
340 |
|
<tr> |
341 |
|
<td align="left" valign="top">0x00c0</td> |
342 |
|
<td align="left" valign="top">Read: <b><tt>ipi_read()</tt></b>. |
343 |
|
Returns the next pending IPI. 0 is returned if there is no |
344 |
|
pending IPI (so 0 shouldn't be used for valid IPIs). |
345 |
|
Hardware int 6 is deasserted when the IPI queue is empty. |
346 |
|
<br>Write: <b><tt>ipi_flush()</tt></b>. |
347 |
|
Clears the IPI queue, discarding any pending IPIs.</td> |
348 |
|
</tr> |
349 |
</table> |
</table> |
350 |
</td> |
</td> |
351 |
</tr> |
</tr> |
356 |
|
|
357 |
<tr> |
<tr> |
358 |
<td align="left" valign="top"> |
<td align="left" valign="top"> |
359 |
<b>fb:</b> |
<b><tt>fb</tt>:</b> |
360 |
<p>A simple linear framebuffer, for graphics output. |
<p>A simple linear framebuffer, for graphics output. |
361 |
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). |
362 |
<p>Source code: <font color="#0000f0">devices/dev_fb.c</font> |
<p>Source code: <font color="#0000f0"><tt>src/devices/dev_fb.c</tt></font> |
363 |
<br>Default physical address:  <font color="#0000f0">0x12000000</font> |
<br>Default physical address:  <font color="#0000f0">0x12000000</font> |
364 |
</td> |
</td> |
365 |
<td></td> |
<td></td> |
392 |
in a non-cached manner.) |
in a non-cached manner.) |
393 |
|
|
394 |
<p> |
<p> |
395 |
(When using the PPC test machine, "testppc", the addresses are |
(When using the PPC test machine (<tt>testppc</tt>), the addresses are |
396 |
0x10000000, 0x11000000 etc., so no need to add any virtual displacement.) |
0x10000000, 0x11000000 etc., so no need to add any virtual displacement.) |
397 |
|
|
398 |
<p> |
<p>The <b><tt>mp</tt></b> device is agnostic when it comes to word-length. |
399 |
The <b>mp</b> device is agnostic when it comes to |
For example, when reading offset 0x0000 of the <b><tt>mp</tt></b> device, |
400 |
word-length. For example, when reading offset 0x0000 of the <b>mp</b> |
you may use any kind of read (an 8-bit read will work just as well as a |
401 |
device, you may use any kind of read (an 8-bit read will work just as well |
64-bit read, although the value will be truncated to 8 bits in the first |
402 |
as a 64-bit read, although the value will be truncated to 8 bits in the |
case). |
403 |
first case). |
|
404 |
|
<p>The <b><tt>cons</tt></b> device should be accessed using 8-bit reads |
405 |
<p> |
and writes. Doing a getchar() (ie reading from offset 0x0000) returns 0x00 |
406 |
The <b>cons</b> device should be accessed using 8-bit reads and writes. |
if no character was available. |
407 |
Doing a getchar() (ie reading from offset 0x0000) returns 0x00 if no |
|
408 |
character was available. |
<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 |
<p> |
interrupt is asserted. When there are no more available characters, the |
411 |
On MIPS, the <b>cons</b> device is hardwired to interrupt 2 (the lowest |
interrupt is deasserted. (Remember that the interrupt has to be enabled in |
412 |
hardware interrupt). Whenever a character is available, the interrupt is |
the status register of the system coprocessor.) |
413 |
asserted. When there are no more available characters, the interrupt is |
|
414 |
deasserted. (Remember that the interrupt has to be enabled in the status |
<p>The IPIs controlled by the <b><tt>mp</tt></b> device are hardwired to |
415 |
register of the system coprocessor.) |
interrupt 6. Whenever an IPI is "sent", interrupt 6 is asserted on the |
416 |
|
target CPU(s), and the IPI number is added last in the IPI queue for that |
417 |
|
CPU. It is then up to that CPU to read from offset 0x00c0, to figure out |
418 |
|
what kind of IPI it was. |
419 |
|
|
420 |
|
|
421 |
|
|
510 |
a kernel compiled for R5000, because Linux doesn't autodetect |
a kernel compiled for R5000, because Linux doesn't autodetect |
511 |
the CPU type at runtime.) |
the CPU type at runtime.) |
512 |
<br>Also: <a href="http://www.tal.org/~milang/o2/kernels/">http://www.tal.org/~milang/o2/kernels</a>/<a href="http://home.tal.org/~milang/o2/kernels/vmlinux64-2.6.8.1-IP32">vmlinux64-2.6.8.1-IP32</a> |
<br>Also: <a href="http://www.tal.org/~milang/o2/kernels/">http://www.tal.org/~milang/o2/kernels</a>/<a href="http://home.tal.org/~milang/o2/kernels/vmlinux64-2.6.8.1-IP32">vmlinux64-2.6.8.1-IP32</a> |
513 |
<br>Try <b><tt>-E sgi -e ip32 -b -X -CR5000 vmlinux64-2.6.8.1-IP32</tt></b>. |
<br>Try <b><tt>-E sgi -e ip32 -X -CR5000 vmlinux64-2.6.8.1-IP32</tt></b>. |
514 |
<br>And also some IP27 kernels: |
<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> |
<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 |
and |
521 |
<li><a href="http://www.openbsd.org/sgi.html">OpenBSD/sgi</a>: |
<li><a href="http://www.openbsd.org/sgi.html">OpenBSD/sgi</a>: |
522 |
<br><a href="ftp://ftp.openbsd.org/pub/OpenBSD/3.7/sgi/bsd.rd">ftp://ftp.openbsd.org/pub/OpenBSD/3.7/sgi/bsd.rd</a> |
<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>. |
<br>More recent snapshots can be found at <a href="ftp://ftp.OpenBSD.org/pub/OpenBSD/snapshots/sgi/">ftp://ftp.OpenBSD.org/pub/OpenBSD/snapshots/sgi/</a>. |
524 |
<br>Try <b><tt>gxemul -b -E sgi -e ip32 bsd.rd</tt></b> |
<br>Try <b><tt>gxemul -E sgi -e ip32 bsd.rd</tt></b> |
525 |
<p> |
<p> |
526 |
<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>: |
527 |
I don't think public binary snapshots are available yet. |
I don't think public binary snapshots are available yet. |
586 |
<br>I have tried this with the Swedish version, but it might |
<br>I have tried this with the Swedish version, but it might |
587 |
work with other versions too.<pre> |
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> |
$ <b><tt>dd if=/dev/zero of=winnt_test.img bs=1024 count=1 seek=999000</tt></b> |
589 |
$ <b><tt>gxemul -X -b -Earc -epica -d winnt_test.img -d bc6:/dev/cd0c -j MIPS\\ARCINST</tt></b> |
$ <b><tt>gxemul -X -Earc -epica -d winnt_test.img -d bc6:/dev/cd0c -j MIPS\\ARCINST</tt></b> |
590 |
$ <b><tt>gxemul -X -b -Earc -epica -d winnt_test.img -d bc6:/dev/cd0c -j MIPS\\SETUPLDR</tt></b> |
$ <b><tt>gxemul -X -Earc -epica -d winnt_test.img -d bc6:/dev/cd0c -j MIPS\\SETUPLDR</tt></b> |
591 |
</pre> <br><tt>ARCINST</tt> tries to prepare the disk image for installation. (It <i>almost</i> works.) |
</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. |
<br><tt>SETUPLDR</tt> should load some drivers from the cdrom, but then it crashes with a bluescreen. |
593 |
</ul> |
</ul> |
599 |
<ul> |
<ul> |
600 |
<li><a href="http://www.netbsd.org/Ports/hpcmips/">NetBSD/hpcmips</a>: |
<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> |
<br><a href="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/hpcmips/installation/">ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/hpcmips/installation</a>/<a href="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/hpcmips/installation/netbsd.gz">netbsd.gz</a> |
602 |
<br>Try <b><tt>gxemul -X -b -E hpc -e mobilepro770 netbsd</tt></b> |
<br>Try <b><tt>gxemul -X -E hpc -e mobilepro770 netbsd</tt></b> |
603 |
<br><a href="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/hpcmips/binary/kernel/netbsd-GENERIC.gz">ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/hpcmips/binary/kernel/netbsd-GENERIC.gz</a> |
<br><a href="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/hpcmips/binary/kernel/netbsd-GENERIC.gz">ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0/hpcmips/binary/kernel/netbsd-GENERIC.gz</a> |
604 |
<br>Try <b><tt>gxemul -X -b -E hpc -e mobilepro770 netbsd-GENERIC</tt></b> |
<br>Try <b><tt>gxemul -X -E hpc -e mobilepro770 netbsd-GENERIC</tt></b> |
605 |
<p> |
<p> |
606 |
<li>Linux for BE300: |
<li>Linux for BE300: |
607 |
<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> |
608 |
<br>Try <b><tt>gxemul -X -b -E hpc -e be300 vmlinux</tt></b> |
<br>Try <b><tt>gxemul -X -E hpc -e be300 vmlinux</tt></b> |
609 |
<p> |
<p> |
610 |
<li>Linux for Agenda VR3: |
<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> |
<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>. |
<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>) |
<br>(or <a href="http://www.ipsec.info/~www/agenda/dream-1-noxip.cramfs">http://www.ipsec.info/~www/agenda/dream-1-noxip.cramfs</a>) |
614 |
<br>Try <b><tt>gxemul -b -X -E hpc -e vr3 -x 0xbf200000:root1.2.6.cramfs 0xbf000000:0:0xbf0005e0:root1.2.6.kernel-8.00</tt></b> |
<br>Try <b><tt>gxemul -X -E hpc -e vr3 -x 0xbf200000:root1.2.6.cramfs 0xbf000000:0:0xbf0005e0:root1.2.6.kernel-8.00</tt></b> |
615 |
<br>(or replace root1.2.6.cramfs with dream-1-noxip.cramfs) |
<br>(or replace root1.2.6.cramfs with dream-1-noxip.cramfs) |
616 |
<br>Remove <b><tt>-X</tt></b> to try with serial console instead of X, and |
<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. |
remove <b><tt>-b</tt></b> to try without (old) bintrans. |
623 |
<li>Linux for MobilePro etc.: |
<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> |
<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. |
<br>Uncompress the archive to get a kernel, vmlinux-800 for example. |
626 |
<br>Try <b><tt>./gxemul -b -X -o 'root=/dev/hda1' -d r:disk.img -d r:disk.img -Ehpc -e mobilepro800 vmlinux-800</tt></b> |
<br>Try <b><tt>./gxemul -X -o 'root=/dev/hda1' -d r:disk.img -d r:disk.img -Ehpc -e mobilepro800 vmlinux-800</tt></b> |
627 |
<br>where disk.img is an ext2fs filesystem with contents from |
<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> |
<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.) |
<br>(Note the double disk arguments.) |
631 |
<p> |
<p> |
632 |
<li><a href="http://www.disorder.ru/openbsd/be300/">OpenBSD/be300</a>: |
<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> |
<br><a href="http://www.disorder.ru/openbsd/be300/bsd.rd">http://www.disorder.ru/openbsd/be300/bsd.rd</a> |
634 |
<br>Try <b><tt>gxemul -X -b -E hpc -e be300 bsd.rd</tt></b> |
<br>Try <b><tt>gxemul -X -E hpc -e be300 bsd.rd</tt></b> |
635 |
<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. |
636 |
</ul> |
</ul> |
637 |
</li> |
</li> |
638 |
|
|
676 |
</ul> |
</ul> |
677 |
</li> |
</li> |
678 |
|
|
679 |
|
<p> |
680 |
|
|
681 |
|
<li>EVBMIPS: |
682 |
|
<ul> |
683 |
|
<li><a href="http://www.netbsd.org/Ports/evbmips/">NetBSD/evbmips</a>: |
684 |
|
<br><a href="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0.2/evbmips-mipseb/binary/kernel/">ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0.2/evbmips-mipseb/binary/kernel</a>/<a href="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0.2/evbmips-mipseb/binary/kernel/netbsd-MALTA.gz">netbsd-MALTA.gz</a> |
685 |
|
<br><b><tt>gxemul -E evbmips -e malta netbsd-MALTA</tt></b> |
686 |
|
<br>The default CPU is a 5Kc (MIPS64). Add |
687 |
|
<tt>-C 4Kc</tt> to use a MIPS32 CPU instead. |
688 |
|
<br>(NetBSD/evbmips runs in 32-bit mode on MIPS64 anyway...) |
689 |
|
<br>Read <a href="guestoses.html#netbsdevbmipsinstall">this |
690 |
|
section</a> on how to install NetBSD/evbmips onto a harddisk image. |
691 |
|
<br>or |
692 |
|
<br><a href="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0.2/evbmips-mipseb/binary/kernel/">ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0.2/evbmips-mipseb/binary/kernel</a>/<a href="ftp://ftp.netbsd.org/pub/NetBSD/NetBSD-2.0.2/evbmips-mipseb/binary/kernel/netbsd-PB1000.gz">netbsd-PB1000.gz</a> |
693 |
|
<br><b><tt>gxemul -E evbmips -e pb1000 netbsd-PB1000</tt></b> |
694 |
|
</ul> |
695 |
|
</li> |
696 |
|
|
697 |
</ul> |
</ul> |
698 |
|
|
699 |
<p> |
<p> |
700 |
The following work even less than the ones listed above: |
The following don't work at all, or just very very little. |
701 |
|
|
702 |
<p> |
<p> |
703 |
<ul> |
<ul> |
742 |
</ul> |
</ul> |
743 |
</li> |
</li> |
744 |
|
|
745 |
</ul> |
<p> |
|
|
|
|
<p> |
|
|
The following don't work at all, actually, because the PPC and SPARC |
|
|
modes are just skeletons so far. |
|
|
|
|
|
<p> |
|
|
<ul> |
|
746 |
|
|
747 |
<li>Walnut (evbppc): |
<li>Walnut (evbppc): |
748 |
<ul> |
<ul> |