1 |
<html> |
<html> |
2 |
<head><title>GXemul documentation: Introduction</title> |
<head><title>GXemul documentation: Introduction</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>Introduction</b> |
<font color="#000000" size="6"><b>Introduction</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: intro.html,v 1.46 2005/06/04 12:02:17 debug Exp $ |
$Id: intro.html,v 1.53 2005/06/26 08:42:26 debug Exp $ |
16 |
|
|
17 |
Copyright (C) 2003-2005 Anders Gavare. All rights reserved. |
Copyright (C) 2003-2005 Anders Gavare. All rights reserved. |
18 |
|
|
55 |
<li><a href="#cpus">Which CPU types does GXemul emulate?</a> |
<li><a href="#cpus">Which CPU types does GXemul emulate?</a> |
56 |
<li><a href="#accuracy">Emulation accuracy</a> |
<li><a href="#accuracy">Emulation accuracy</a> |
57 |
<li><a href="#emulmodes">Which machines does GXemul emulate?</a> |
<li><a href="#emulmodes">Which machines does GXemul emulate?</a> |
58 |
<li><a href="#guestos">Which guest OSes are possible to run?</a> |
<li><a href="#guestos">Which guest OSes are possible to run in GXemul?</a> |
59 |
</ul> |
</ul> |
60 |
|
|
61 |
|
|
66 |
<a name="overview"></a> |
<a name="overview"></a> |
67 |
<h3>Overview:</h3> |
<h3>Overview:</h3> |
68 |
|
|
69 |
GXemul is a machine emulator, which can be used to experiment with |
GXemul is an experimental instruction-level machine emulator. It can be |
70 |
binary code for (among others) MIPS-based machines. Several emulation |
used to run binary code for (among others) MIPS-based machines, regardless |
71 |
modes are available. For some emulation modes, processors and surrounding |
of host platform. Several emulation modes are available. For some modes, |
72 |
hardware components are emulated well enough to let unmodified operating |
processors and surrounding hardware components are emulated well enough to |
73 |
systems run as if they were running on a real machine. |
let unmodified operating systems run as if they were running on a real |
74 |
|
machine. |
75 |
|
|
76 |
<p> |
<p>Devices and CPUs are not simulated with 100% accuracy. They are only |
77 |
Devices and CPUs are not simulated with 100% accuracy. They are only |
``faked'' well enough to make operating systems (e.g. NetBSD) run without |
|
"faked" well enough to make operating systems (eg NetBSD) run without |
|
78 |
complaining too much. Still, the emulator could be of interest for |
complaining too much. Still, the emulator could be of interest for |
79 |
academic research and experiments, such as when learning how to write |
academic research and experiments, such as when learning how to write |
80 |
operating system code. |
operating system code. |
81 |
|
|
82 |
<p> |
<p>The emulator is written in C, does not depend on external libraries |
83 |
The emulator is written in C, does not depend on external libraries (except |
(except X11, but that is optional), and should compile and run on most |
84 |
X11, but that is optional), and should compile and run on most Unix-like |
Unix-like systems. If it doesn't, then that is a bug. (You do not need any |
85 |
systems. If it doesn't, then that is a bug. |
MIPS compiler toolchain to build or use GXemul. If you need to compile |
86 |
(You do not need any MIPS compiler toolchain to build or use GXemul. |
MIPS binaries from sources, then of course you need such a toolchain, but |
87 |
If you need to compile MIPS binaries from sources, then of course you need |
that is completely separate from GXemul.) |
88 |
such a toolchain, but that is completely separate from GXemul.) |
|
89 |
|
<p>The emulator contains code which tries to emulate the workings of CPUs |
90 |
<p> |
and surrounding hardware found in real machines, but it does not contain |
91 |
The emulator contains code which tries to emulate the workings of CPUs and |
any ROM code. You will need some form of program (in binary form) to run |
92 |
surrounding hardware found in real machines, but it does not contain any |
in the emulator. For many emulation modes, PROM calls are handled by the |
|
ROM code. You will need some form of program (in binary form) to run in |
|
|
the emulator. For many emulation modes, PROM calls are handled by the |
|
93 |
emulator itself, so you do not need to use any ROM image at all. |
emulator itself, so you do not need to use any ROM image at all. |
94 |
|
|
95 |
<p> |
<p>You can use pre-compiled kernels (for example NetBSD kernels, or |
96 |
You can use pre-compiled kernels (for example NetBSD kernels, or Linux), |
Linux), or other programs that are in binary format, and in some cases |
97 |
or other programs that are in binary format, and in some cases even actual |
even actual ROM images. A couple of different file formats are supported |
98 |
ROM images. A couple of different file formats are supported (ELF, a.out, |
(ELF, a.out, ECOFF, SREC, and raw binaries). |
|
ECOFF, SREC, and raw binaries). |
|
99 |
|
|
100 |
<p> |
<p>If you do not have a kernel as a separate file, but you have a bootable |
|
If you do not have a kernel as a separate file, but you have a bootable |
|
101 |
disk image, then it is sometimes possible to boot directly from that |
disk image, then it is sometimes possible to boot directly from that |
102 |
image. (This works for example with DECstation emulation, or when booting |
image. (This works for example with DECstation emulation, or when booting |
103 |
from ISO9660 CDROM images.) |
from ISO9660 CDROM images.) |
107 |
|
|
108 |
|
|
109 |
|
|
110 |
|
|
111 |
|
|
112 |
<p><br> |
<p><br> |
113 |
<a name="free"></a> |
<a name="free"></a> |
114 |
<h3>Is GXemul Free software?</h3> |
<h3>Is GXemul Free software?</h3> |
247 |
performance.) |
performance.) |
248 |
|
|
249 |
|
|
|
<h4>POWER/PowerPC</h4> |
|
|
|
|
|
There is some code for 64-bit (and 32-bit) POWER/PowerPC emulation, enough |
|
|
to run "Hello World", but not enough to run complete operating systems. |
|
|
This mode isn't really working yet. |
|
|
|
|
|
|
|
250 |
<h4>Other CPU types:</h4> |
<h4>Other CPU types:</h4> |
251 |
|
|
252 |
Some other CPU architectures (such as x86) can also be partially emulated. |
Some other CPU architectures can also be partially emulated. These are not |
253 |
These are not enabled by default though, because of their unstable-ness. |
working well enough yet to run guest operating systems. |
254 |
|
|
255 |
|
|
256 |
|
|
257 |
|
|
307 |
<p> |
<p> |
308 |
<li><b>Cobalt</b> |
<li><b>Cobalt</b> |
309 |
<br>Serial controller and PCI IDE. |
<br>Serial controller and PCI IDE. |
310 |
|
<p> |
311 |
|
<li><b>Malta (evbmips)</b> |
312 |
|
<br>Serial controller and PCI IDE. |
313 |
|
<p> |
314 |
|
<li><b>SGI O2 ("IP32")</b> |
315 |
|
<br>Serial controller and ethernet. <small>(Enough for |
316 |
|
root-on-nfs, but not for disk boot.)</small> |
317 |
</ul> |
</ul> |
318 |
|
|
319 |
<p> |
<p>There is code in GXemul for emulation of many other machine types; the |
320 |
There is code in GXemul for emulation of many other machine types; |
degree to which these work range from almost being able to run a complete |
321 |
the degree to which these work range from "almost" being able to run |
OS, to almost completely unsupported (perhaps just enough support to |
322 |
a complete OS, to almost completely unsupported (perhaps just enough |
output a few boot messages via serial console). |
323 |
support to output a few boot messages via serial console). |
|
324 |
|
<p>In addition to emulating real machines, there is also a "test-machine". |
325 |
<p> |
A test-machine consists of one or more CPUs and a few experimental devices |
326 |
In addition to emulating real machines, there is also a "test-machine". |
such as: |
|
A test-machine consists of one or more CPUs and a few experimental |
|
|
devices such as: |
|
327 |
|
|
328 |
<p> |
<p> |
329 |
<ul> |
<ul> |
332 |
<li>a very simple linear framebuffer device (for graphics output) |
<li>a very simple linear framebuffer device (for graphics output) |
333 |
</ul> |
</ul> |
334 |
|
|
335 |
<p> |
<p>This mode is useful if you wish to run experimental code, but do not |
|
This mode is useful if you wish to run experimental code, but do not |
|
336 |
wish to target any specific real-world machine type, for example for |
wish to target any specific real-world machine type, for example for |
337 |
educational purposes. |
educational purposes. |
338 |
|
|
339 |
<p> |
<p>You can read more about these experimental devices <a |
340 |
You can read more about these experimental devices |
href="experiments.html#expdevices">here</a>. |
|
<a href="experiments.html#expdevices">here</a>. |
|
341 |
|
|
342 |
|
|
343 |
|
|
347 |
|
|
348 |
<p><br> |
<p><br> |
349 |
<a name="guestos"></a> |
<a name="guestos"></a> |
350 |
<h3>Which guest OSes are possible to run?</h3> |
<h3>Which guest OSes are possible to run in GXemul?</h3> |
351 |
|
|
352 |
This table lists the guest OSes that run well enough to be considered |
This table lists the guest OSes that run well enough to be considered |
353 |
working in the emulator. They can boot from a harddisk image and be |
working in the emulator. They can boot from a harddisk image and be |
428 |
<br>Cobalt</td> |
<br>Cobalt</td> |
429 |
</tr> |
</tr> |
430 |
|
|
431 |
|
<tr><td height="10"></td></tr> |
432 |
|
|
433 |
|
<tr> |
434 |
|
<td></td> |
435 |
|
<td align="center"><a href="20050626-netbsd-sgimips-netboot.png"><img src="20050626-netbsd-sgimips-netboot_small.png"></a></td> |
436 |
|
<td></td> |
437 |
|
<td><a href="http://www.netbsd.org/Ports/sgimips/">NetBSD/sgimips</a> |
438 |
|
<br>SGI O2 ("IP32")</td> |
439 |
|
<td></td> |
440 |
|
<td align="center"><a href="20050622-netbsd-evbmips-malta.png"><img src="20050622-netbsd-evbmips-malta_small.png"></a></td> |
441 |
|
<td></td> |
442 |
|
<td><a href="http://www.netbsd.org/Ports/evbmips/">NetBSD/evbmips</a> |
443 |
|
<br>5Kc (and 4Kc) Malta<br>evaluation boards</td> |
444 |
|
<td></td> |
445 |
|
</tr> |
446 |
|
|
447 |
</table></center> |
</table></center> |
448 |
|
|
449 |
|
|