/[gxemul]/trunk/doc/intro.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 /trunk/doc/intro.html

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

revision 8 by dpavlin, Mon Oct 8 16:18:19 2007 UTC revision 44 by dpavlin, Mon Oct 8 16:22:56 2007 UTC
# Line 1  Line 1 
1  <html>  <html><head><title>Gavare's eXperimental Emulator:&nbsp;&nbsp;&nbsp;Introduction</title>
2  <head><title>GXemul documentation: Introduction</title>  <meta name="robots" content="noarchive,nofollow,noindex"></head>
 <meta name="robots" content="noarchive,nofollow,noindex">  
 </head>  
3  <body bgcolor="#f8f8f8" text="#000000" link="#4040f0" vlink="#404040" alink="#ff0000">  <body bgcolor="#f8f8f8" text="#000000" link="#4040f0" vlink="#404040" alink="#ff0000">
4  <table border=0 width=100% bgcolor="#d0d0d0"><tr>  <table border=0 width=100% bgcolor="#d0d0d0"><tr>
5  <td width=100% align=center valign=center><table border=0 width=100%><tr>  <td width=100% align=center valign=center><table border=0 width=100%><tr>
6  <td align="left" valign=center bgcolor="#d0efff"><font color="#6060e0" size="6">  <td align="left" valign=center bgcolor="#d0efff"><font color="#6060e0" size="6">
7  <b>GXemul documentation:</b></font>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;  <b>GXemul:</b></font>&nbsp;&nbsp;
8  <font color="#000000" size="6"><b>Introduction</b>  <font color="#000000" size="6"><b>Introduction</b>
9  </font></td></tr></table></td></tr></table><p>  </font></td></tr></table></td></tr></table><p>
10    
11  <!--  <!--
12    
13  $Id: intro.html,v 1.47 2005/06/04 22:47:49 debug Exp $  $Id: intro.html,v 1.125 2007/06/30 14:02:02 debug Exp $
14    
15  Copyright (C) 2003-2005  Anders Gavare.  All rights reserved.  Copyright (C) 2003-2007  Anders Gavare.  All rights reserved.
16    
17  Redistribution and use in source and binary forms, with or without  Redistribution and use in source and binary forms, with or without
18  modification, are permitted provided that the following conditions are met:  modification, are permitted provided that the following conditions are met:
# Line 47  SUCH DAMAGE. Line 45  SUCH DAMAGE.
45  <h2>Introduction</h2>  <h2>Introduction</h2>
46    
47  <p>  <p>
48    <table border="0" width="99%"><tr><td valign="top" align="left">
49  <ul>  <ul>
50    <li><a href="#overview">Overview</a>    <li><a href="#overview">Overview</a>
51    <li><a href="#free">Is GXemul Free software?</a>    <li><a href="#free">Is GXemul Free software?</a>
52    <li><a href="#build">How to compile/build the emulator</a>    <li><a href="#build">How to compile/build the emulator</a>
53    <li><a href="#run">How to run the emulator</a>    <li><a href="#run">How to run the emulator</a>
54    <li><a href="#cpus">Which CPU types does GXemul emulate?</a>    <li><a href="#cpus">Which processor architectures does GXemul emulate?</a>
55      <li><a href="#hosts">Which host architectures/platforms are supported?</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>
   <li><a href="#guestos">Which guest OSes are possible to run?</a>  
58  </ul>  </ul>
59    </td><td valign="center" align="center">
60    <a href="20050317-example.png"><img src="20050317-example_small.png"></a>
61    <p>NetBSD/pmax 1.6.2 with X11<br>running in GXemul</td></tr></table>
62    
63    
64    
# Line 66  SUCH DAMAGE. Line 67  SUCH DAMAGE.
67  <a name="overview"></a>  <a name="overview"></a>
68  <h3>Overview:</h3>  <h3>Overview:</h3>
69    
70  GXemul is a machine emulator, which can be used to experiment with  GXemul is a framework for full-system computer architecture emulation.
71  binary code for (among others) MIPS-based machines. Several emulation  Several processor architectures and machine types have been implemented.
72  modes are available. For some emulation modes, processors and surrounding  It is working well enough to allow <a href="#emulmodes">unmodified
73  hardware components are emulated well enough to let unmodified operating  "guest" operating systems to run inside the emulator</a>, as if they were
74  systems run as if they were running on a real machine.  running on real hardware.
75    
76  <p>  <p>The emulator emulates (networks of) real machines. The machines may
77  Devices and CPUs are not simulated with 100% accuracy. They are only  consist of <a
78  "faked" well enough to make operating systems (eg NetBSD) run without  href="http://en.wikipedia.org/wiki/ARM_architecture">ARM</a>, <a
79  complaining too much. Still, the emulator could be of interest for  href="http://en.wikipedia.org/wiki/MIPS_architecture">MIPS</a>, <a
80  academic research and experiments, such as when learning how to write  href="http://en.wikipedia.org/wiki/Powerpc">PowerPC</a>, and <a
81    href="http://en.wikipedia.org/wiki/SuperH">SuperH</a> processors, and
82    various surrounding hardware components such as framebuffers, busses,
83    interrupt controllers, ethernet controllers, disk controllers, and serial
84    port controllers.
85    
86    <p>GXemul, including the dynamic translation system, is implemented in
87    portable
88    <a href="http://en.wikipedia.org/wiki/C_(programming_language)">C</a>,
89    which means that the emulator will run on practically any 64-bit or 32-bit
90    <a href="http://en.wikipedia.org/wiki/Unix-like">Unix-like</a> systems,
91    with few or no modifications.
92    
93    <p>Devices and processors are not simulated with 100% accuracy. They are
94    only "faked" well enough to allow guest operating systems to run without
95    complaining too much. Still, the emulator could be of interest for
96    academic research and experiments, such as when learning how to write
97  operating system code.  operating system code.
98    
99  <p>  <p>The emulator contains code which tries to emulate the workings of CPUs
100  The emulator is written in C, does not depend on external libraries (except  and surrounding hardware found in real machines, but it does not contain
101  X11, but that is optional), and should compile and run on most Unix-like  any ROM code. You will need some form of program (in binary form) to run
102  systems. If it doesn't, then that is a bug.  in the emulator. For some emulation modes, PROM calls are handled by the
 (You do not need any MIPS compiler toolchain to build or use GXemul.  
 If you need to compile MIPS binaries from sources, then of course you need  
 such a toolchain, but that is completely separate from GXemul.)  
   
 <p>  
 The emulator contains code which tries to emulate the workings of CPUs and  
 surrounding hardware found in real machines, but it does not contain any  
 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  
103  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.
104    
105  <p>  <p>You can use pre-compiled kernels (for example <a href="http://www.netbsd.org/">NetBSD</a>
106  You can use pre-compiled kernels (for example NetBSD kernels, or Linux),  kernels, or Linux), or other programs that are in binary format, and in some cases
107  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:
108  ROM images. A couple of different file formats are supported (ELF, a.out,  <a href="http://en.wikipedia.org/wiki/Executable_and_Linkable_Format">ELF</a>,
109  ECOFF, SREC, and raw binaries).  <a href="http://en.wikipedia.org/wiki/A.out">a.out</a>,
110    <a href="http://en.wikipedia.org/wiki/COFF">COFF</a>/<a href="http://en.wikipedia.org/wiki/ECOFF">ECOFF</a>,
111    <a href="http://en.wikipedia.org/wiki/SREC_%28file_format%29">SREC</a>, and raw binaries.
112    
113  <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  
114  disk image, then it is sometimes possible to boot directly from that  disk image, then it is sometimes possible to boot directly from that
115  image. (This works for example with DECstation emulation, or when booting  image. This works for example with DECstation emulation, <a href="dreamcast.html">Dreamcast
116  from ISO9660 CDROM images.)  emulation</a>, or when booting from generic <a href="http://en.wikipedia.org/wiki/ISO9660">ISO9660</a>
117    CDROM images if the kernel is included in the image as a plain file.
118    
119    <p>Thanks to (in no specific order) Joachim Buss, Olivier Houchard, Juli
120    Mallett, Juan Romero Pardines, Carl van Schaik, Miod Vallat, Alec Voropay,
121    Göran Weinholt, Alexander Yurchenko, and everyone else who has provided me
122    with feedback.
123    
124    
125    
126    
# Line 121  confusing to you, you might want to read Line 137  confusing to you, you might want to read
137  four freedoms associated with Free software, <a  four freedoms associated with Free software, <a
138  href="http://www.gnu.org/philosophy/free-sw.html">http://www.gnu.org/philosophy/free-sw.html</a>.)  href="http://www.gnu.org/philosophy/free-sw.html">http://www.gnu.org/philosophy/free-sw.html</a>.)
139    
140  <p>  <p>The code I have written is released under a 3-clause BSD-style license
141  The code I have written is released under a 3-clause BSD-style license  (or "revised BSD-style" if one wants to use <a
142  (or "revised BSD-style" if one wants to use  href="http://www.gnu.org/philosophy/bsd.html">GNU jargon</a>). Apart from
143  <a href="http://www.gnu.org/philosophy/bsd.html">GNU jargon</a>).  the code I have written, some files are copied from other sources such as
144  Apart from the code I have written, some files are copied from other sources  NetBSD, for example header files containing symbolic names of bitfields in
145  such as NetBSD, for example header files containing symbolic names of  device registers. They are also covered by similar licenses, but with some
146  bitfields in device registers. They are also covered by similar licenses,  additional clauses. The main point, however, is that the licenses require
147  but with some additional clauses. If you plan to redistribute GXemul  that the original Copyright and license terms are included when you make a
148  (for example as a binary package), or reuse code from GXemul,  copy or modification.
149  then you should check those files for their license terms.  
150    <p>If you plan to redistribute GXemul <i>without</i> supplying the source
151  <p>  code, then you need to comply with each individual source file some other
152  (The licenses usually require that the original Copyright and license  way, for example by writing additional documentation containing copyright
153  terms are included when you make a copy or modification. The "easiest way  notes. I have not done this, since I do not plan on making distributions
154  out" if you plan to redistribute code from GXemul is to simply supply  without source code. You need to check all individual files for details.
155  the source code. You should however check individual files for details.)  The "easiest way out" if you plan to redistribute code from GXemul is, of
156    course, to let it remain Free Software and simply include the source code.
157    
158    <p>In case you want to reuse parts of GXemul, but you need to do that
159    under a different license (e.g. the
160    <a href="http://www.gnu.org/licenses/gpl.html">GPL</a>), then contact me and
161    I can probably re-license/dual-license files on a case-by-case basis.
162    
163    
164    
# Line 152  Uncompress the .tar.gz distribution file Line 174  Uncompress the .tar.gz distribution file
174          $ <b>make</b>          $ <b>make</b>
175  </pre>  </pre>
176    
177  <p>  <p>This should work on most Unix-like systems. GXemul does not require any
178  This should work on most Unix-like systems. If it doesn't, then  specific libraries to build, however, if you build on a system which does
179  mail me a bug report.  not have X11 libraries installed, some functionality will be lost.
180    
181  <p>  <p>The emulator's performance is highly dependent on both runtime settings
182  (Note for Windows users: there is a possibility that some releases  and on compiler settings, so you might want to experiment with using
183  and/or snapshots will also work with Cygwin, but I can't promise that.)  different <tt>CC</tt> and <tt>CFLAGS</tt> environment variable values when
184    running the <tt>configure</tt> script.
185  <p>  
186  The emulator's performance is highly dependent on both runtime settings  <p>On some platforms, it is possible that building GXemul will fail
187  and on compiler settings, so you might want to experiment with different  because of too high optimization. When using GCC (the GNU compiler),
188  CC and CFLAGS environment variable values. For example, on a modern PC,  <tt>-O3</tt> is the default optimization level. This works fine on e.g.
189  you could try the following:  amd64 and i386 systems, but on some more uncommon platforms, <tt>-O3</tt>
190  <p>  might trigger internal bugs in GCC itself. If this happens, try setting
191  <pre>  <tt>CFLAGS</tt> to <tt>-O2</tt> before running <tt>./configure</tt>, and
192          $ <b>CFLAGS="-mcpu=pentium4 -O3" ./configure</b>  try again,
193          $ <b>make</b>  
194  </pre>  <p>Note that there is no <tt>make install</tt> functionality; package
195    maintainers for individual operating systems solve this for their
196    corresponding OSes.
197    
 <p>  
 Run <b><tt>./configure --help</tt></b> to get a list of configure options. (The  
 possible options differ between different releases and snapshots.)  
198    
199    
200    
# Line 189  Running <tt><b>gxemul</b></tt> without a Line 210  Running <tt><b>gxemul</b></tt> without a
210  <b><tt>-h</tt></b> or <b><tt>-H</tt></b> command line options) will  <b><tt>-h</tt></b> or <b><tt>-H</tt></b> command line options) will
211  display a help message.  display a help message.
212    
213  <p>  <p>To get some ideas about what is possible to run in the emulator, please
 To get some ideas about what is possible to run in the emulator, please  
214  read the section about <a href="guestoses.html">installing "guest"  read the section about <a href="guestoses.html">installing "guest"
215  operating systems</a>. If you are interested in using the emulator to  operating systems</a>. The most straight forward guest operating to
216  develop code on your own, then you should also read the section about  install is NetBSD/pmax; the instructions provided <a
217  <a href="experiments.html#hello">Hello World</a>.  href="guestoses.html#netbsdpmaxinstall">here</a> should let you install
218    NetBSD/pmax in a way very similar to how it is done on a real DECstation.
219    
220    <p>If you are interested in using the emulator to develop code on your
221    own, then you should also read the section about <a
222    href="experiments.html#hello">Hello World</a>.
223    
224  <p>  <p>To exit the emulator, type CTRL-C to enter the
 To exit the emulator, type CTRL-C to enter the  
225  single-step debugger, and then type <tt><b>quit</b></tt>.  single-step debugger, and then type <tt><b>quit</b></tt>.
226    
227  <p>  <p>If you are starting an emulation by entering settings directly on the
228  If you are starting an emulation by entering settings directly on the  command line, and you are not using the <tt><b>-x</b></tt> option, then
229  command line, and you are not using the <tt><b>-x</b></tt> option, then all  all terminal input and output will go to the main controlling terminal.
 terminal input and output will go to the main controlling terminal.  
230  CTRL-C is used to break into the debugger, so in order to send CTRL-C to  CTRL-C is used to break into the debugger, so in order to send CTRL-C to
231  the running (emulated) program, you may use CTRL-B.  the running (emulated) program, you may use CTRL-B. (This should be a
232  (This should be a reasonable compromise to allow the emulator to be usable  reasonable compromise to allow the emulator to be usable even on systems
233  even on systems without X Windows.)  without X Windows.)
234    
235  <p>  <p>There is no way to send an actual CTRL-B to the emulated program, when
236  There is no way to send an actual CTRL-B to the emulated program, when  typing in the main controlling terminal window. The solution is to either
237  typing in the main controlling terminal window. The solution is to either  use <a href="configfiles.html">configuration files</a>, or use
 use <a href="configfiles.html">configuration files</a>, or use  
238  <tt><b>-x</b></tt>. Both these solutions cause new xterms to be opened for  <tt><b>-x</b></tt>. Both these solutions cause new xterms to be opened for
239  each emulated serial port that is written to. CTRL-B and CTRL-C both have  each emulated serial port that is written to. CTRL-B and CTRL-C both have
240  their original meaning in those xterm windows.  their original meaning in those xterm windows.
# Line 223  their original meaning in those xterm wi Line 245  their original meaning in those xterm wi
245    
246  <p><br>  <p><br>
247  <a name="cpus"></a>  <a name="cpus"></a>
248  <h3>Which CPU types does GXemul emulate?</h3>  <h3>Which processor architectures does GXemul emulate?</h3>
   
 <h4>MIPS:</h4>  
249    
250  Emulation of R4000, which is a 64-bit CPU, was my initial goal.  The architectures that are emulated well enough to let at least one
251  R2000/R3000-like CPUs (32-bit), R1x000, and generic MIPS32/MIPS64-style  guest operating system run (per architecture) are
252  CPUs are also emulated, and are hopefully almost as stable as the R4000  <a href="http://en.wikipedia.org/wiki/ARM_architecture">ARM</a>,  
253  emulation.  <a href="http://en.wikipedia.org/wiki/MIPS_architecture">MIPS</a>,  
254    <a href="http://en.wikipedia.org/wiki/Powerpc">PowerPC</a>, and  
255    <a href="http://en.wikipedia.org/wiki/SuperH">SuperH</a>.
256    
257    <p>Please read the sections about <a href="#emulmodes">emulation
258    modes</a> and <a href="guestoses.html">guest operating
259    systems</a> for more information about the machines and operating systems,
260    respectively, that can be considered "working" in the emulator.
261    
262    <p>(There is some code in GXemul for emulation of other architectures, but
263    they are not stable or complete enough to be listed among the "working"
264    architectures.)
265    
 <p>  
 I have written an experimental dynamic binary translation subsystem.  
 This gives higher total performance than interpreting one instruction at a  
 time and executing it. (If you wish to enable bintrans, add <b>-b</b> to  
 the command line, but keep in mind that it is still experimental.)  
266    
267    
 <h4>URISC:</h4>  
268    
 I have implemented an <a href="http://en.wikipedia.org/wiki/URISC">URISC</a>  
 emulation mode, just for fun. The only instruction available in an URISC  
 machine is "reverse subtract and skip on borrow". (It is probably not  
 worth trying to do bintrans with URISC, because any reasonable URISC  
 program relies on self-modifying code, which is bad for bintrans  
 performance.)  
269    
270    
271  <h4>POWER/PowerPC</h4>  <p><br>
272    <a name="hosts"></a>
273    <h3>Which host architectures/platforms are supported?</h3>
274    
275  There is some code for 64-bit (and 32-bit) POWER/PowerPC emulation, enough  GXemul should compile and run on any modern host architecture (64-bit or
276  to run "Hello World", but not enough to run complete operating systems.    32-bit word-length). I generally test it on
277  This mode isn't really working yet.  <a href="http://www.freebsd.org/platforms/amd64.html">FreeBSD/amd64</a> 6.x,
278    <a href="http://www.freebsd.org/platforms/alpha.html">FreeBSD/alpha</a> 4.x,
279    sometimes also on Linux (various platforms), and every
280    now and then also on <a href="http://www.netbsd.org/">NetBSD</a> or
281    <a href="http://www.openbsd.org/">OpenBSD</a> inside the emulator itself
282    (various platforms).
283    
284    <p>Note 1: The <a href="translation.html">dynamic translation</a> engine
285    does <i>not</i> require backends for native code generation to be written
286    for each individual host architecture; the intermediate representation
287    that the dyntrans system uses can be executed on any host architecture.
288    
289    <p>Note 2: Although GXemul may build and run on non-Unix-like platforms,
290    such as <a href="http://www.cygwin.com/">Cygwin</a>, Unix-like systems are
291    the primary platform. Some functionality may be lost when running on Cygwin.
292    
293    
 <h4>Other CPU types:</h4>  
294    
 Some other CPU architectures (such as x86) can also be partially emulated.  
 These are not enabled by default though, because of their unstable-ness.  
295    
296    
297    
# Line 270  These are not enabled by default though, Line 302  These are not enabled by default though,
302  <h3>Emulation accuracy:</h3>  <h3>Emulation accuracy:</h3>
303    
304  GXemul is an instruction-level emulator; things that would happen in  GXemul is an instruction-level emulator; things that would happen in
305  several steps within a real CPU are not taken into account (eg. pipe-line  several steps within a real CPU are not taken into account (e.g. pipe-line
306  stalls or out-of-order execution). Still, instruction-level accuracy seems  stalls or out-of-order execution). Still, instruction-level accuracy seems
307  to be enough to be able to run complete guest operating systems inside the  to be enough to be able to run complete guest operating systems inside the
308  emulator.  emulator.
309    
310  <p>  <p>The existance of instruction and data caches is "faked" to let
311  Caches are by default not emulated. In some cases, the existance of caches  operating systems think that they are there, but for all practical
312  is "faked" to let operating systems think that they are there. (There is  purposes, these caches are non-working.
313  some old code for R2000/R3000 caches, but it has probably suffered from  
314  bitrot by now.)  <p>The emulator is in general <i>not</i> timing-accurate, neither at the
315    instruction level nor on any higher level. An attempt is made to let
316    emulated clocks run at the same speed as the host (i.e. an emulated timer
317    running at 100 Hz will interrupt around 100 times per real second), but
318    since the host speed may vary, e.g. because of other running processes,
319    there is no guarantee as to how many instructions will be executed in
320    each of these 100 Hz cycles.
321    
322    <p>If the host is very slow, the emulated clocks might even lag behind
323    the real-world clock.
324    
 <p>  
 The emulator is <i>not</i> timing-accurate. It can be run in a  
 "deterministic" mode, <tt><b>-D</b></tt>. The meaning of deterministic is  
 simply that running two emulations with the same settings will result in  
 identical runs. Obviously, this requires that no user interaction is  
 taking place, and that clock speeds are fixed with the <tt><b>-I</b></tt>  
 option. (Deterministic in this case does <i>not</i> mean that the emulation  
 will be identical to some actual real-world machine.)  
325    
326    
327    
# Line 303  are emulated well enough to run at least Line 336  are emulated well enough to run at least
336    
337  <p>  <p>
338  <ul>  <ul>
339    <li><b>DECstation 5000/200</b>&nbsp;&nbsp;("3max")    <li><b><u>ARM</u></b>
340          <br>Serial controller (including keyboard and mouse), ethernet,    <ul>
341          SCSI, and graphical framebuffers.      <li><b>CATS</b> (<a href="guestoses.html#netbsdcatsinstall">NetBSD/cats</a>,
342            <a href="guestoses.html#openbsdcatsinstall">OpenBSD/cats</a>)
343        <li><b>IQ80321</b> (<a href="guestoses.html#netbsdevbarminstall">NetBSD/evbarm</a>)
344        <li><b>NetWinder</b> (<a href="guestoses.html#netbsdnetwinderinstall">NetBSD/netwinder</a>)
345      </ul>
346    <p>    <p>
347    <li><b>Acer Pica-61</b>&nbsp;&nbsp;(an ARC machine)    <li><b><u>MIPS</u></b>
348          <br>Serial controller, "VGA" text console, and SCSI.    <ul>
349        <li><b>DECstation 5000/200</b> (<a href="guestoses.html#netbsdpmaxinstall">NetBSD/pmax</a>,
350            <a href="guestoses.html#openbsdpmaxinstall">OpenBSD/pmax</a>,
351            <a href="guestoses.html#ultrixinstall">Ultrix</a>,
352            <a href="guestoses.html#declinux">Linux/DECstation</a>,
353            <a href="guestoses.html#sprite">Sprite</a>)
354        <li><b>Acer Pica-61</b> (<a href="guestoses.html#netbsdarcinstall">NetBSD/arc</a>)
355        <li><b>NEC MobilePro 770, 780, 800, 880</b> (<a href="guestoses.html#netbsdhpcmipsinstall">NetBSD/hpcmips</a>)
356        <li><b>Cobalt</b> (<a href="guestoses.html#netbsdcobaltinstall">NetBSD/cobalt</a>)
357        <li><b>Malta</b> (<a href="guestoses.html#netbsdevbmipsinstall">NetBSD/evbmips</a>, Linux/Malta <font color="#0000e0">(<super>*1</super>)</font>)
358        <li><b>Algorithmics P5064</b> (<a href="guestoses.html#netbsdalgorinstall">NetBSD/algor</a>)
359        <li><b>SGI O2 (aka IP32)</b> <font color="#0000e0">(<super>*2</super>)</font>
360            (<a href="guestoses.html#netbsdsgimips">NetBSD/sgi</a>)
361      </ul>
362    <p>    <p>
363    <li><b>NEC MobilePro 770, 780, 800, and 880</b>&nbsp;&nbsp;(HPCmips machines)    <li><b><u>PowerPC</u></b>
364          <br>Framebuffer, keyboard, and a PCMCIA IDE controller.    <ul>
365        <li><b>IBM 6050/6070 (PReP, PowerPC Reference Platform)</b> (<a href="guestoses.html#netbsdprepinstall">NetBSD/prep</a>)
366        <li><b>MacPPC (generic "G4" Macintosh)</b> (<a href="guestoses.html#netbsdmacppcinstall">NetBSD/macppc</a>)
367        <li><b>Artesyn PM/PPC</b> <font color="#0000e0">(<super>*2</super>)</font>
368            (<a href="guestoses.html#netbsdpmppc">NetBSD/pmppc</a>)
369      </ul>
370    <p>    <p>
371    <li><b>Cobalt</b>    <li><b><u>SuperH</u></b>
372          <br>Serial controller and PCI IDE.    <ul>
373        <li><b>Sega Dreamcast</b> (<a href="dreamcast.html#netbsd_generic_md">NetBSD/dreamcast</a>, <a href="dreamcast.html#linux_live_cd">Linux/dreamcast</a>)
374        <li><b>Landisk I-O DATA USL-5P</b> (<a href="guestoses.html#openbsdlandiskinstall">OpenBSD/landisk</a>)
375      </ul>
376  </ul>  </ul>
377    
378  <p>  <p>
379  There is code in GXemul for emulation of many other machine types;  <small><font color="#0000e0">(<super>*1</super>)</font> =
380  the degree to which these work range from "almost" being able to run  Linux/Malta may be run as a guest OS, however I have not yet found any stable
381  a complete OS, to almost completely unsupported (perhaps just enough  URL to pre-compiled Linux/Malta kernels. Thus, Linux/Malta emulation is not
382  support to output a few boot messages via serial console).  tested for every release of the emulator; sometimes it works, sometimes
383    it doesn't.</small>
384  <p>  
385  In addition to emulating real machines, there is also a "test-machine".  <br><small><font color="#0000e0">(<super>*2</super>)</font> =
386  A test-machine consists of one or more CPUs and a few experimental  The emulation is enough for root-on-nfs, but no disk controller (SCSI nor
387  devices such as:  IDE) is emulated yet for this machine type.</small>
388    
389    <p>Note that of all of the machines above, none of them is emulated to
390    100%. The most complete emulation mode is probably the DECstation
391    5000/200. Things that will most likely <b>not</b> work include running
392    raw PROM images for most machines, SGI IRIX, MacOS X or Darwin, Windows
393    NT, or Dreamcast games.
394    
395    <p>There is code in GXemul for emulation of several other machine types; the
396    degree to which these work range from almost being able to run a complete
397    OS, to almost completely unsupported, perhaps just enough support to
398    output a few boot messages via serial console. (See the end of
399    <a href="guestoses.html#generalnotes">this section</a> on the Guest OSes
400    page for some examples, but remember that these do not necessarily work.)
401    
402    <p>In addition to emulating real machines, there is also a "test-machine".
403    A test-machine consists of one or more CPUs and a few experimental devices
404    such as:
405    
406  <p>  <p>
407  <ul>  <ul>
408    <li>a console I/O device (putchar() and getchar()...)    <li>a console I/O device (putchar() and getchar()...)
409    <li>an inter-processor communication device, for SMP experiments    <li>an inter-processor communication device, for SMP experiments
410    <li>a very simple linear framebuffer device (for graphics output)    <li>a very simple linear framebuffer device (for graphics output)
411      <li>a simple disk controller
412      <li>a simple ethernet controller
413      <li>a simple interrupt controller
414      <li>a real-time clock device
415  </ul>  </ul>
416    
417  <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  
418  wish to target any specific real-world machine type, for example for  wish to target any specific real-world machine type, for example for
419  educational purposes.  educational purposes.
420    
421  <p>  <p>You can read more about these experimental devices <a
422  You can read more about these experimental devices  href="experiments.html#expdevices">here</a>.
 <a href="experiments.html#expdevices">here</a>.  
   
   
   
   
   
   
423    
 <p><br>  
 <a name="guestos"></a>  
 <h3>Which guest OSes are possible to run?</h3>  
   
 This table lists the guest OSes that run well enough to be considered  
 working in the emulator. They can boot from a harddisk image and be  
 interacted with similar to a real machine.  
   
 <p>  
 <center><table border="0">  
         <tr>  
           <td width="10"></td>  
           <td align="center"><a href="20050317-example.png"><img src="20050317-example_small.png"></a></td>  
           <td width="15"></td>  
           <td><a href="http://www.netbsd.org/Ports/pmax/">NetBSD/pmax</a>  
                 <br>DECstation 5000/200</td>  
           <td width="30"></td>  
           <td align="center"><a href="20041024-netbsd-arc-installed.gif"><img src="20041024-netbsd-arc-installed_small.gif"></a></td>  
           <td width="15"></td>  
           <td><a href="http://www.netbsd.org/Ports/arc/">NetBSD/arc</a>  
                 <br>Acer Pica-61</td>  
   
         </tr>  
   
         <tr><td height="10"></td></tr>  
   
         <tr>  
           <td></td>  
           <td align="center"><a href="openbsd-pmax-20040710.png"><img src="openbsd-pmax-20040710_small.png"></a></td>  
           <td></td>  
           <td><a href="http://www.openbsd.org/pmax.html">OpenBSD/pmax</a>  
                 <br>DECstation 5000/200</td>  
           <td></td>  
           <td align="center"><a href="20041024-openbsd-arc-installed.gif"><img src="20041024-openbsd-arc-installed_small.gif"></a></td>  
           <td></td>  
           <td><a href="http://www.openbsd.org/arc.html">OpenBSD/arc</a>  
                 <br>Acer Pica-61</td>  
         </tr>  
   
         <tr><td height="10"></td></tr>  
   
         <tr>  
           <td></td>  
           <td align="center"><a href="ultrix4.5-20040706.png"><img src="ultrix4.5-20040706_small.gif"></a></td>  
           <td></td>  
           <td>Ultrix/RISC<br>DECstation 5000/200</td>  
           <td></td>  
           <td align="center"><a href="20041213-debian_4.png"><img src="20041213-debian_4_small.gif"></a></td>  
           <td></td>  
           <td><a href="http://www.debian.org/">Debian&nbsp;GNU/Linux</a>&nbsp;<super>*</super>  
                 <br>DECstation 5000/200</td>  
         </tr>  
   
         <tr><td height="10"></td></tr>  
   
         <tr>  
           <td></td>  
           <td align="center"><a href="sprite-20040711.png"><img src="sprite-20040711_small.png"></a></td>  
           <td></td>  
           <td><a href="http://www.cs.berkeley.edu/projects/sprite/retrospective.html">Sprite</a>  
                 <br>DECstation 5000/200</td>  
           <td></td>  
           <td align="center"><a href="20041129-redhat_mips.png"><img src="20041129-redhat_mips_small.png"></a></td>  
           <td></td>  
           <td>Redhat&nbsp;Linux&nbsp;<super>*</super>  
                 <br>DECstation 5000/200</td>  
         </tr>  
   
         <tr><td height="10"></td></tr>  
   
         <tr>  
           <td></td>  
           <td align="center"><a href="20050427-netbsd-hpcmips-2.png"><img src="20050427-netbsd-hpcmips-2_small.png"></a></td>  
           <td></td>  
           <td><a href="http://www.netbsd.org/Ports/hpcmips/">NetBSD/hpcmips</a>  
                 <br>NEC MobilePro 770, 780, 800, 880</td>  
           <td></td>  
           <td align="center"><a href="20050413-netbsd-cobalt.png"><img src="20050413-netbsd-cobalt_small.png"></a></td>  
           <td></td>  
           <td><a href="http://www.netbsd.org/Ports/cobalt/">NetBSD/cobalt</a>  
                 <br>Cobalt</td>  
         </tr>  
   
 </table></center>  
424    
425    
 <p><br>  
426    
 <super>*</super> Although Linux runs under DECstation emulation, the  
 default 2.4.27 kernel in Debian GNU/Linux does not support keyboards on  
 the 5000/200 (the specific DECstation model being emulated), so when the  
 login prompt is reached you cannot interact with the system. Kaj-Michael  
 Lang has compiled and made available a newer kernel from the current  
 mips-linux development tree. You can find it here: <a  
 href="http://home.tal.org/~milang/o2/kernels/">http://home.tal.org/~milang/o2/kernels</a>/<a  
 href="http://home.tal.org/~milang/o2/kernels/vmlinux-2.4.29-rc2-r3k-mipsel-decstation">vmlinux-2.4.29-rc2-r3k-mipsel-decstation</a>  
 This newer kernel supports keyboard input, but it does not have Debian's  
 ethernet patches, so you will not be able to use keyboard/framebuffer  
 <i>and</i> networking at the same time.  
427    
428    
429  </body>  </body>

Legend:
Removed from v.8  
changed lines
  Added in v.44

  ViewVC Help
Powered by ViewVC 1.1.26