Subject: Re: m68k comman part (was Re: mips ports ...)
To: Guenther Grau <s_grau@ira.uka.de>
From: Jason Thorpe <thorpej@nas.nasa.gov>
List: current-users
Date: 03/18/1996 13:44:37
On Mon, 18 Mar 1996 15:28:02 +0100
Guenther Grau <s_grau@ira.uka.de> wrote:
> Hmm, Yes, I agree with you, that the Mac and the Atari development are
> coupled quite closly together from what I read on the src-changes list.
> But the Amiga is the most common m68k-plattform in use for NetBSD and
> it does NOT have any FPE emulation built in, i.e. it is not possible to
> boot NetBSD on an Amiga without FPU. Thus your work is shared beween
> Mac and Atari, but not the Amiga community. Therefore I was not wrong
> or incorrect as you say :-)
While it's true that you'll make a fair number of changes, they're not
that difficult. I plan on making the same set of changes to the hp300
port RSN. Doing so will enable the m68k ports to share Yet More Code
(like signal handling foo, etc.) since some of the code requires dealing
with the FPU.
Essentially, every place in src/sys/arch/amiga/*/*.c where you see:
#ifdef FPCOPROC
needs to be changed. Currently, the decision to execute those
intructions is made at compile time, where it needs to be made at
run-time. This is pretty simple to do...your FPU probe code (which
always "succeeds") tests for the existence of an FPU, and sets the
"fputype" global variable appropriately, 0 for "emulator", 1 for "68881",
2 for "68882", and 3 for "68040". Eventually, I imagine there will be a
4 for "68060". To determine if that code should be executed, basically,
do:
if (fputype) {
/* code code code code */
}
The FPU type constants *should* be defined in an m68k-specific header
file, not per-port.
> I agree qith you that some parts are shared between the ports, but there
> are a lot more things which the ports have in common, for example some
> of the device drivers. I seecomments on the src-changes list like
> Mac: taken 5380-driver from Amiga and modified ...
> Atari: taken 5380-driver from Mac and modified ...
> Mac: Using MI-5380-driver now ...
> Amiga: Modified 5380 driver ...
Currently, the Sun 3, SPARC, and pc532 ports use the MI 5380 code. The
mac68k port also has a driver for the MI 5380 code, but apparently is
lacking some of the features of the "other" 5380 driver.
The "other" 5380 driver is one written by Leo Weppleman for the Atari.
It also has some things that cope with hardware weirdness on some
versions of the Atari hardware, which will have to be added to the MI
5380 driver in order for the Atari to use it.
The Amiga 5380 drivers, well, should use the MI 5380 driver, and it
probably wouldn't be *that* hard to make them do so. Currently, the
Amiga has one 5380 back-end ("sci") and N DMA controller front-ends, so
it's really in the spirit of the MI driver...
> In pratice all ports should be using the MI-5380-code, but only some
> of them are actually doing so :-( I'd really like this development
> more coordinated and I'd like your code living in /sys/arch/m68k and
> being used in all m68k-ports, really! :-)
Sometimes, for port-masters, it's a matter of priorities. I haven't been
terribly visible on the "adding features" or "pulling code into
sys/arch/m68k" frontiers for the hp300 port lately, for example. This is
primarily because I've *re-writing* large portions of the hp300 port for
new config (which, I'm happy to report, is coming along nicely ... save
one console bug, I can boot a new config kernel diskless into
multi-user). I think that for many other port-masters, this is also the
case ... trying to fix bugs, or even writing a driver in the first place,
is taking precedence over moving code into sys/arch/m68k...
However, I think it's fair to say that most port-masters appreciate
contributions from the user community. I'm sure if an Amiga user were to
submit a PR with a set of patches to make the FPU probe code work on the
amiga (see the sun3 port for an example), the amiga port-master or one of
the amiga supporting cast would gladly check it in (providing it was the
Right Thing :-)
--------------------------------------------------------------------------
Jason R. Thorpe thorpej@nas.nasa.gov
NASA Ames Research Center Home: 408.866.1912
NAS: M/S 258-6 Work: 415.604.0935
Moffett Field, CA 94035 Pager: 415.428.6939