arch-specific directories

M. Warner Losh imp at bsdimp.com
Thu Jun 17 21:29:05 UTC 2010


In message: <201006141251.45896.jhb at freebsd.org>
            John Baldwin <jhb at FreeBSD.org> writes:
: On Monday 14 June 2010 11:26:45 am mdf at freebsd.org wrote:
: > This is as much as request for information as a suggestion.
: > 
: > I am wondering of the current layout of sys/<arch> make sense given
: > that in several cases the only difference between two "arch" is the
: > bitness, e.g. powerpc and powerpc64.  The 64-bit version supports a
: > few new instructions, but in many cases is the same.  The same issue
: > exists with i386/amd64 but because both have been supported for a long
: > time the have full arch separation.  However, there has been some
: > movement of files that are common between i386 and amd64 into a common
: > x86 directory.
: > 
: > So what I'm wondering is it it makes more sense to have files broken
: > up more like:
: > 
: > sys/<arch>      for common file between bitness
: > sys/<arch>/32
: > sys/<arch>/64  for files that are specific to the bitness
: > 
: > This would presumably serve at least powerpc and i386/amd64 well, and
: > though I don't know for sure I assume at the moment that it works for
: > sun/sparc as well.
: > 
: > So... is this reasonable?  Or does the existence of ia64 throw a
: > monkey wrench into this layout?  Is it not worth the shuffle (though
: > I'd argue that, if we're moving some files to x86 and creating a new
: > powerpc64 that it's better to consider now than later).
: > 
: > I realize there was a discussion earlier along similar lines (the
: > bi-yearly architecture source tree layout discussion) but I don't
: > think it was specifically considering the 32/64 bit differences, which
: > seem to be more common now.
: 
: I think for archs that share a lot in common between 32-bit and 64-bit 
: varieties using shared sources of some sort (e.g. sys/x86) should be 
: encouraged.  This is probably more true (and feasible) for more recently added 
: architectures such as powerpc, arm, and mips.  Alpha and ia64 would not have 
: fit into this category.  Since we do not support 32-bit sparc, sparc64 doesn't 
: really fit into it either.

Having a common directory is a good thing.

: However, I think that some of our build infrastructure assumes that that the 
: current MACHINE/TARGET is in the path, so e.g. make buildkernel uses 
: sys/$TARGET/conf to find the kernel config file to build, so we may be stuck 
: with some of the layout differences at the top-level.  I suspect the arm, 
: powerpc, and mips target names are already embedded at this point, but I would 
: not mind an organization where common code lived in sys/mips and 32-bit and 
: 64-bit bits lived in sys/mips32 and sys/mips64.  (That would work with the 
: existing kernel config path assumptions, but require changing 'arm' -> 
: 'arm32', etc. for MACHINE/TARGET).  I'm sure Warner has some ideas on this 
: topic as well.

MACHINE=arm, but MACHINE_ARCH=arm or armeb.  MACHINE_CPUARCH=arm.

MACHINE specifies the kernel sources.  MACHINE_ARCH is the arch/endian
specification.  MACHINE_CPUARCH is the cpu family.

For mips, all the source is shared between 32-bit and 64-bit
variants for both userland and kernel.

Warner


More information about the freebsd-arch mailing list