File: RELEASE.html

package info (click to toggle)
gxemul 0.7.0%2Bdfsg-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 12,152 kB
  • sloc: ansic: 111,065; sh: 972; exp: 354; makefile: 118
file content (196 lines) | stat: -rw-r--r-- 8,527 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <title>GXemul: Release notes</title>
  <meta name="robots" content="noarchive,nofollow,noindex">
</head>
<body style="font-family : sans-serif;">

<!-- 10 lines header.  -->

<h1>Release notes for GXemul 0.7.0</h1>

<p><i>Copyright (C) 2003-2021  Anders Gavare</i>

<p><br>GXemul is a framework for full-system computer architecture emulation. 
Several processor architectures and machine types have been implemented. 
It is working well enough to allow unmodified "guest" operating systems to run
inside the emulator, as if they were running on real hardware.

<p>The emulator emulates (networks of) real machines. The machines may consist
of ARM, MIPS, Motorola 88K, PowerPC, and SuperH processors, and various 
surrounding hardware components such as framebuffers, busses, interrupt 
controllers, ethernet controllers, disk controllers, and serial port 
controllers.


<p><br>The changes between release 0.6.3.1 and 0.7.0 include:
<ul>
	<li>The <a href="machine_luna88k.html">LUNA-88K machine</a> now has
		working SCSI emulation. This allows
		OpenBSD/luna88k to be installed and run using a harddisk image.
		(Previously, a more complicated root-on-nfs setup had to be used.)

	<p>
	<li>There is now a shorthand disk image prefix 'R' (uppercase), to reduce
		the amount of typing when one wants to use a temporary throwaway
		disk image overlay, that is when one does not want to allow
		writes to a disk image. Previously, this would require
		something like:
<ul style="list-style: none;"><li><pre>
<font color="#606000"><b>touch overlay.img overlay.img.map</b></font>
<font color="#4040ff">gxemul -e ..... -d disk.img </font><font color="#606000"><b>-d V0:overlay.img</b></font>
<font color="#606000"><b>rm overlay.img overlay.img.map</b></font>
</pre></ul>
		<p>which now becomes just:
<ul style="list-style: none;"><li><pre><font color="#4040ff">gxemul -e ..... -d <font color="#008000"><b>R:</b></font>disk.img</font>
</pre></ul>
		<p>The difference to using an explicit V: overlay is that the
		temporary file is
		removed automatically when the GXemul process exits. A guest
		operating system will still perceive the disk as writable.

	<p>
	<li>Networking using a tap device can now be enabled directly on the
		command line using a new <tt>-L</tt> option. Previously,
		tap devices could only be enabled when using configuration files.

	<p>
	<li>A bug has been fixed for MIPS R2000/R3000 when writing to
		coprocessor 0's ENTRY LO register. This fixes a regression
		introduced between 0.6.1 and 0.6.2
		where running <tt>xinit</tt> inside Sprite (on an emulated
		DECstation) suddenly failed.

	<p>
	<li>A "mouse grab" mechanism has been implemented for X11 framebuffer
		windows. Previously,
		mouse movements occuring inside a framebuffer window were always
		forwarded to the guest OS. Interaction was akward, in particular
		due to mouse acceleration being performed by the guest OS.
		Now, instead, the framebuffer window needs to
		be clicked in, in order to activate mouse pointer grabbing.
		When the grab mode is active, mouse movements (and button clicks)
		are forwarded to the guest OS, and the host's mouse cursor is
		hidden. Grab mode is released when typing Left CTRL + ALT, or
		when otherwise changing focus to another X11 window.

	<p>
	<li>Previously, the behavior when using configuration files was to
		always start new terminal windows (xterms) for emulated serial
		I/O ports, similar to the <tt>-x</tt> command line option. This
		has now been changed, so that new terminal windows are only used
		if there are <i>two or more machines</i> in the same configuration
		file. If you still want separate terminal windows to be launched
		when using a configuration file with a single machine in it, you
		now need to add <tt>-x</tt> to the command line.

	<p>
	<li>Some cleanup to make the <tt>-K</tt> command line option work
		more like it was always supposed to.
		This option should cause the emulator to show the
		<tt>GXemul&gt;</tt> debugger prompt whenever
		the emulated program or guest operating system ends,
		regardless of whether it was a normal shutdown or some form
		of error. This is useful for example if you wish to disassemble
		the code, or inspect register or memory content, at the point
		of failure. Starting the emulator with <tt>-V</tt> also
		implicitly sets <tt>-K</tt>. If neither <tt>-V</tt> nor <tt>-K</tt>
		is used, and the guest OS halts with powerdown or "reboots", the emulator
		should exit gracefully (for the machine modes where shutdown
		functionality has been implemented via device support or
		prom emulation support).

		<p>(There are still many explicit <tt>exit()</tt> calls throughout the
		code, which over time will need to be manually converted to work
		with <tt>-K</tt>, but the most common ones are fixed.)

	<p>
	<li><tt>-T</tt> has been fixed to work the way it was always intended to
		work, namely to abort immediately on the first load or store
		to non-existant memory. This is useful in combination with
		<tt>-K</tt>, for example when implementing new machine modes
		in the emulator or trying out unsupported guest operating
		systems that access memory or devices in a not-yet-implemented
		way.

	<p>
	<li>Debug messages have traditionally been printed using the rather
		course-grained <tt>debug()</tt> and <tt>fatal()</tt>
		functions. Work has now begun to separate this into a number of
		<i>subsystems</i>, which can have their verbosity levels be
		individually controlled using the new <tt>verbosity</tt>
		debugger command. This also standardizes the way debug messages
		are formatted:

<ul style="list-style: none;"><li><pre>[ machine-and-cpu-path: <font color="brown">subsystem-name</font> <font color="#4040ff">component-or-function-name</font>: text ]</pre></ul>

		<p>Most of the time, not all of these are shown.
		machine-and-cpu-path, for example, is only shown if the message comes
		from a context where a CPU is known to cause the message,
		and there are multiple machines or CPUs being emulated.
		The [ ] brackets are only shown when intermixing debug messages
		with serial I/O coming from the emulated program or guest
		operating system.
		<p>(There are still a huge amount of <tt>debug()</tt>
		and <tt>fatal()</tt> calls in the code, especially in the
		less commonly used code paths.)

	<p>
	<li>Output from the emulator is now subtly colorized, to make it
		easier to quickly interpret the text. This is enabled by
		launching the emulator with the environment variable
		CLICOLOR set, or by usign the <tt>-G</tt> command line option.
		The choice of colors was done to
		a) be reasonably subtle, and b) work
		with both light and dark terminal backgrounds.
		Coloring can be explicitly disabled using <tt>-A</tt> (overriding
		the presence of CLICOLOR), and
		it is also disabled when outputting to a non-tty.
</ul>

<p>The source code has been switched back from C++ to plain C:
<ul>
	<li>The "new" framework was removed. Instead of two different emulators
		in the same program, there's just the traditional emulation
		framework.

	<p>
	<li>A C compiler supporting the C99 standard is needed in
		order to build GXemul.

	<p>
	<li>For third parties that package GXemul (e.g. for package managing
		systems used by operating systems or distributions),
		build scripts may need to be modified:
	<ul>
		<li>The unit tests (<tt>make test</tt>) are gone.
		<li>The (optional) dependency on Valgrind is gone. It was used for
			running leak detection during unit test execution, but
			the unit tests were for the C++ framework.
		<li>The (optional) dependency on Doxygen is gone. It was used for
			building documentation of the source code in the
			C++ framework.
		<li>Automatic generation of machine and component documentation
			is gone (<tt>make documentation</tt>).
		<li>In summary: the <tt>doc/</tt> directory is now just a
			single level without sub-directories, containing static
			content; nothing is generated at build time.
	</ul>
</ul>


<p><br>Please read the HISTORY file for more details.

<p>Regarding files in the <tt>src/include/thirdparty/</tt> directory:
most of these are from other open source projects such as NetBSD. See individual
source files for details, if you plan to redistribute GXemul in binary form,
or reuse the source code.

<p>GXemul's homepage is
<a href="http://gavare.se/gxemul/">http://gavare.se/gxemul/</a>.


</body>
</html>