Subject: Re: NetBSD/hpcarm snap code
To: Reinoud Zandijk <imago@kabel065011.kabel.utwente.nl>
From: Jason R Thorpe <thorpej@zembu.com>
List: tech-kern
Date: 02/16/2001 13:10:41
On Fri, Feb 16, 2001 at 09:40:53PM +0100, Reinoud Zandijk wrote:

 > As Jason suggested a sys/arch/acorn would be a good idea; they all look
 > alike and can share stuff. But technically they aren't all acorns though
 > :) is the Imago a really new port or a variant on the Acorn theme?
 > 
 > That would bring it down to :
 >   arch/arm          <- for common code
 >   arch/acorn        <- for RiscPC, A310/A410,A5000, A7000, RC7500, ....
 >   arch/hpcarm ?     <- iPAQ, eval boards and other hand held devices?
 >   arch/armisapci    <- for ARM boards using only std. PC pheriphals using
 >                        ISA/PCI like CATS, EBSA, DNARD, ....

Nonono.  You seem to be completely missing the point.

armisapci is completely nonsensical.  You lump CATS/EBSA/DNARD in there.
DNARD is fundamentally incompatible with EBSA.  They could not, and should
not, be reasonably in the same "port".

Let's take it from the top...

We support several ARM CPUs and ARM CPU core logic.  That stuff should
go into sys/arch/arm/.  Stuff that is CPU model specific should go
into a subdirectory of that directory.  E.g.:

	arch/arm/arm	<- contains stuff that works on all ARM CPUs
	arch/arm/arm2	<- contains e.g. the ARM2 pmap module
	arch/arm/arm6	<- contains e.g. the ARM6 pmap module,
			   cache routines, TLB routines, etc.
	arch/arm/arm7	<- contains all the ARM7-specific goo.
	arch/arm/arm8	<- contains all the ARM8-specific goo.
	arch/arm/sa110	<- contains e.g. the SA110 cache routines,
			   TLB routines, etc.
	arch/arm/sa11x0	<- contains all the SA11x0-specific goo,
			   including drivers for the on-chip
			   devices.
	arch/arm/ebsa285 <- Support for the '285 core logic, etc.
			    Note that "EBSA285" is really just an
			    ARM-specific board architecture, but
			    doesn't define e.g. firmware.
	arch/arm/ofw	<- Support for the ARM bindings for
			   OpenFirmware (i.e. the calling
			   convention that is defined by the
			   IEEE OpenFirmare ARM supplement, etc.).

	arch/acorn26	<- port to the A310/A410/A5000 (did I get
			   those right?)  Totally different memory
			   management architecture than the later
			   Acorn machines, tend to have small memory,
			   don't want to bog it down with the other
			   stuff in a GENERIC that supported the 32-bit
			   machines.

	arch/acorn32	<- port to the RiscPC and A7000 (looks like
			   the RiscPC and A7000 could boot the same
			   kernel?  Is that true?  If so, why are
			   there separate kernels for them in the
			   current arm32 port?)

	arch/cats	<- port to the CATS and any other EBSA285
			   that uses the Cyclone firmware.

	arch/dnard	<- port to the DNARD platform, including the
			   DNARD-specific devices.

	dev/acorn/iomd	<- Driver for the IOMD and IOMD attachments of
			   other devices.

	dev/acorn/vidc	<- Driver for the VIDC and the WSCONS glue for it.

...etc.  The way we currently treat all these VERY DIFFERENT platforms
as the same is really wrong-headed.

-- 
        -- Jason R. Thorpe <thorpej@zembu.com>