----
r6572 | debug | 2021-08-29 17:53:05 +0100 (Sun, 29 Aug 2021) | 1 line
The ARM "permanently undefined" instructions now result in an und exception
(patch from Nick Hudson).
----
r6573 | debug | 2021-08-29 18:02:18 +0100 (Sun, 29 Aug 2021) | 1 line
Storing to memory is not allowed until the CPU has initialized completely; this
code was for ARM OpenFirmware, which is not currently in use by any machine.
----
r6576 | debug | 2021-08-30 10:23:38 +0100 (Mon, 30 Aug 2021) | 1 line
Fix for ARM carry flag update for some instructions (patch from Nick Hudson).
Also updating the NetBSD/cats installation instructions to 9.2.
ChangeLog:
20210228 Switching back from C++ to plain C.
Implementing a helper method for registering device addresses
as symbols (so that it can be used from several machines).
20210307 Subtle colorized output when stdin/stdout are connected to a
tty, to make it quicker to interpret text output. Enabled with
-G or by setting the CLICOLOR environment variable. Can be
disabled with -A.
20210309 Beginning to separate debug messages into subsystems, that have
individual verbosity levels.
Making -K work more consistently (enter the debugger at the
end of a run). -V implies -K.
Making -T work better for M88K (breaking into the debugger
directly on bad memory accesses, if -K is used).
20210310 All MIPS machines now register their devices as symbols (based
in kseg1, i.e. 0xffffffffa0000000).
20210311 Making -T work better for MIPS, PPC, ARM, and SuperH.
20210314 Adding a -L command line option for enabling tap networking
without using configuration files.
-x is now needed if one wants separate xterm windows for serial
I/O when using configuration files with a single machine.
20210316 debugmsg subsystems can now be registered at runtime; this is
so far done from the Lance Ethernet device.
Adding a 'verbosity' debugger command for inspecting and
setting the verbosity level for individual subsystems.
20210318 Fixing an annoying 'backspace' bug in the debugger command
line handling, where the response sometimes could become
"unknown command ''".
Implementing CTRL-W (erase word) in the debugger.
Implementing CTRL-T (SIGINFO-like status line) in the debugger.
20210320 Removing the UNSTABLE_DEVEL configure define; it was not used
much, and the debugmsg verbosity levels can be used in its
place.
Fixing a bug for MIPS R2000/R3000 when writing to coprocessor 0
"entrylo" register (if the lowest 8 bits were 0, the code took
the non-R2000/R3000 code path).
20210321 Adding an empty i960 CPU skeleton [again].
Moving 'arch' from struct machine to struct cpu; in the future,
perhaps this would allow a machine to have heterogenous CPU
sets (such as the Dreamcast with both SuperH and ARM).
Removing "slow_serial_interrupts_hack_for_linux" (-U) command
line option, since it is not used for most guest OSes, and
occupied a command line option char.
20210323 Breaking out the mb89352 SCSI Protocol Controller from the
luna88k device, and beginning to implement it. Works well
enough for OpenBSD's "boot" to read the disk and load the
kernel, but not well enough for the kernel to like it.
20210324 Adding support for 00 99 01 07 variant of luna88k a.out.
20210325 The mb89352 SCSI controller uses its own subsystem for debug
messages.
20210327 Adding an empty RISC-V CPU skeleton [again].
Implementing enough of the mb89352 to allow OpenBSD/luna88k
to boot with SCSI (both the boot loader and the kernel)!
20210401 Applying a patch from George Matsumura to make things build
better on Linux: __attribute__((__packed__)); in bootblock.h.
20210405 Adding hardcoded boot_unit=0 and boot_partition=0 NVRAM
variables to the LUNA-88K machine, allowing OpenBSD/luna88k
to boot from disk without asking for root and swap partitions.
Adding 'R' (upper-case) disk image prefix, as a shorthand for
creating temporary overlays.
20210407 Code for idling the host processor has been moved out from
individual CPU implementations to the main emul loop.
Implementing an X11 mouse pointer grab mechanism. Grab is
activated by clicking in a framebuffer window, and released
using left CTRL + ALT. When grab is active, the host mouse
cursor is hidden and the window caption changes to indicate
that grab is active.
20210408 Implementing an unusual 88K "not_maxneg_nor_zero" bcnd
condition.
20210409 Moving the LUNA88K framebuffer to its own device file.
Beginning to implement the LUNA88K front panel LCD.
Also fixing a bug where the rightmost pixel (or 8 pixels in
the case of monochrome) were not drawn.
20210410 Also check for X11R7 in the configure script, in addition
to X11R6.
20210417 Porting over i960CA disassembly from the C++ framework.
20210418 More i960 stuff, including re-adding the (so far dummy)
Cyclone VH machine.
Assuming availabilty of __func__ (C99 standard).
20210422 Enabling idle detection for OpenBSD/luna88k, which uses a
bcnd.n instruction. A hack, but it seems to work.
Fixing a bug where console input could randomly be lost when
idling, if there were multiple emulated serial ports.
Changelog:
20210215 Implementing the fadd.dss 88K instruction, and working a bit
more on the exception cases in the xmem instruction.
20210220 Implementing mouse emulation support for the LUNA88K machine.
Updating OpenBSD/sgi install instructions (6.5 -> 6.8),
and including a screenshot of X11 running.
20210221 Handle return values from interrupted select() when checking
for available console input. (Found when using CTRL-C on Linux
to enter the debugger command line, and noticed that it was
spuriously broken.)
20210222 Basic multiprocessor bootup of OpenBSD/luna88k now works, but
it is slightly unstable.
* All pkgsrc patches are included by upstream.
Changelog:
OpenBSD/luna88k can now run in the emulator (with root-on-nfs), and there
is now tap device support for networking contributed by Jason Thorpe.
for it's theory of operation in gxemul and how to configure it.
- Add address filtering to the LANCE and Tulip emulation.
These changes have already been upstreamed in the main gxemul repository.
Bump package version to gxemul-0.6.2nb1.
* All pkgsrc patches are included by upstream or target files are removed.
Changelog:
The most important changes between release 0.6.1 and 0.6.2 are:
When writing to mirrored RAM ranges, any dyntrans translations made in either the mirror or the mirrored ranges are now invalidated. This means that an emulated SGI O2 can now be used with up to 1 GB of RAM when running OpenBSD/sgi as a guest OS. Previously, 256 MB was the maximum amount of emulated RAM possible for the SGI O2.
A fix 2018-06-13 (between 0.6.0.1 and 0.6.0.2) for translation invalidation when using larger than 4 KB pages, which made HelenOS/malta run further, caused a regression which broke NetBSD/hpcmips (on VR4121 CPUs, which have 1 KB native page size). A bit of cleanup seems to have fixed this, so that both NetBSD/hpcmips and HelenOS/malta work now.
Cleanup: The MIPS processor emulation implemented in the "new framework", and the corresponding MIPS machine modes in the new framework, have been removed. (All meaningful MIPS emulation is in the old framework anyway.)
Documentation updates:
Each emulated machine now has a page of its own with the guest OSes or other software that may run in that mode, rather than just having a long unsorted list of guest OS installation instructions.
Less focus on the "new framework", more focus on the old framework where things actually work.
An introduction to using GXemul as a debugger.
A general overhaul to remove old stuff, fix errors, and make things easier to read.
When emulating the MIPS DIV and DDIV instructions, check for divide
overflow instead of performing the overflowing divide on the host and
crashing the emulator. This is needed to run recent versions of the
NetBSD test suite on an emulated MIPS system.
implement trap with immediate instructions present in MIPS32.
When emulating the MIPS DIV and DDIV instructions, check for divide
overflow instead of performing the overflowing divide on the host and
crashing the emulator. This is needed to run recent versions of the
NetBSD test suite on an emulated MIPS system.
Performing substitutions during post-patch breaks tools such as mkpatches,
making it very difficult to regenerate correct patches after making changes,
and often leading to substituted string replacements being committed.
Fix C++11 literals, they are now fatal. Reverting to C++98 does not work
as it is, as this code uses C++11 extensions like 'PRIx32' macros.
Extend one int to long in order to handle all values in a switch() case.
No functional change intended.
TODO: see cpu_arm_instr_dpi; non-zero steps but still under 256 is not implemented yet
to_be_translated(): TODO: unimplemented instruction:
ebf61a60: e28fc600 add ip,pc,#0
Problems found with existing digests:
Package suse131_libSDL
1c4d17a53bece6243cb3e6dd11c36d50f851a4f4 [recorded]
da39a3ee5e6b4b0d3255bfef95601890afd80709 [calculated]
Package suse131_libdbus
de99fcfa8e2c7ced28caf38c24d217d6037aaa56 [recorded]
da39a3ee5e6b4b0d3255bfef95601890afd80709 [calculated]
Package suse131_qt4
94daff738912c96ed8878ce1a131cd49fb379206 [recorded]
886206018431aee9f8a01e1fb7e46973e8dca9d9 [calculated]
Problems found locating distfiles for atari800, compat12, compat 13,
compat14, compat15, compat20, compat30, compat40, compat50,
compat50-x11, compat51, compat51-x11, compat60, compat61,
compat61-x11, fmsx, osf1_lib, vice, xbeeb, xm7.
Otherwise, existing SHA1 digests verified and found to be the same on
the machine holding the existing distfiles (morden). All existing
SHA1 digests retained for now as an audit trail.
Changelog:
[20140817] Release 0.6.0.1. It has been a while since the last
release, and the SVN repository mirror at Sourceforge seems to be
broken, so it felt reasonable to package the current code into a
patch release. Not much has happened feature-wise since 0.6.0.
[20140816] On FreeBSD/amd64 with GCC 4.2.1 as the default compiler,
you may need to install GCC 4.8.4 and run the configure script like
this to avoid triggering a bug in the default compiler:
CXX=c++48 CXXFLAGS=-Wl,-rpath,/usr/local/lib/gcc48 ./configure
[20110820] Not much coding lately. The only thing worth mentioning
is that the Dreamcast emulation mode now gets further when running
Marcus Comstedt's test programs, and also shows "something" when
booting the PROM from my real Dreamcast. (This was in the legacy
Dreamcast mode, for fun. I haven't had time to work on the new
framework at all.)
[20100729] Uploaded a clip to YouTube, showing the NetBSD/pmax
install procedure in GXemul.
Now works with NetBSD 4, 5 & 6 which would have previously failed.
Comment out some unusual sector subtractions which handled values in the
multigigabyte range.
Now allows all tested NetBSD versions (3, 4, 5 & 6) to mount ISO images
---
The main change between release 0.4.7.2 and 0.6.0 is:
* Since late 2007, a complete rewrite of the emulator's base framework
has been going on. GXemul 0.6.0 is a very early release of the new
framework. So far, only the testm88k machine mode has been rewritten
to use the new framework, all other machine modes run in legacy mode
using the old framework (which is still included).
In other words: For most emulation modes, 0.6.0 will be exactly
like 0.4.7.2.
In addition to the new framework, a couple of other changes are
worth mentioning:
* Many unused, rarely used, and bogus emulation modes and features
were removed, to reduce the maintenance burden.
* Some operating systems listed on the guest OS page have had
new releases; the documentation has been updated to reflect this.
* New source code (but not the legacy part) is documented using
Doxygen comments, and there is a unit testing framework in place.
* There is now finally an install Makefile target, and the -j make
option can be used to parallelize builds.
Please read the HISTORY file for more details.
---
Also update pkgsrc files:
* update COMMENT and DESCR per the latest release note
* remove MAKE_JOBS_SAFE=no as mentioned in the above changes list.