Date: Thu, 28 Oct 2010 10:13:02 -0400 From: John Baldwin <jhb@freebsd.org> To: Attilio Rao <attilio@freebsd.org> Cc: Warner Losh <imp@freebsd.org>, freebsd-arch@freebsd.org Subject: Re: [PATCH] Headers for the x86 subtree Message-ID: <201010281013.03261.jhb@freebsd.org> In-Reply-To: <AANLkTimWx5QtADFv65BQX%2BgMnnDvWYw6PgUZCSS5khdE@mail.gmail.com> References: <AANLkTiktoYyxmE8nyGeoc4_ov35fR7iN83444MfhYg-e@mail.gmail.com> <201010271355.40685.jhb@freebsd.org> <AANLkTimWx5QtADFv65BQX%2BgMnnDvWYw6PgUZCSS5khdE@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
On Thursday, October 28, 2010 3:44:21 am Attilio Rao wrote: > 2010/10/27 John Baldwin <jhb@freebsd.org>: > > On Wednesday, October 27, 2010 10:56:06 am Attilio Rao wrote: > >> This patch should convert a (simple and 100% shared between amd64 and > >> i386 header) under the x86 sub-tree. Please note that in this patch I > >> "svn cp" the file from sys/amd64/include/mptable.h into > >> sys/x86/include/mptable.h: > >> http://www.freebsd.org/~attilio/headers-x86.diff > >> > >> This is someway a POC, that I really want to get in. The idea is > >> simple and someway follows the pc98 case (even if not entirely): the > >> files under machine/include/* became just mere stubs for x86/include/* > >> contents and redirect there. > >> This won't particulary help reducing the number of available files, > >> but generally removing verbatim and would also be the way to go for > >> handling MFCs. > >> If you find this is the right way I'll commit the fix and start moving > >> other files as time permits. > > > > No, we want to do this differently because we also want this to work in > > userland. (e.g. I'd like to outright move mca.h to x86/include and then use > > '#include <x86/mca.h>' in both kernel and userland for it). We'd need some > > special glue to setup an 'x86' symlink during a kernel build that points to > > @/x86/include as we do now to setup an 'i386' link for pc98 kernels. > > > > We'd also need to install the x86 headers into /usr/include during an > > installworld. Warner has some more pointers on this I think. > > I spoke with Warner briefly about it. > One question I'm having now, though, is how getting co-living of pc98 > and x86 now, as we are basically overriding the same infrastructure > (MACHINE_CPUARCH) in the i386/amd64 case? > Do you have ideas about that? I'm still doing testing, but this seems to be working so far. I am moving mca.h as my current test. Index: include/Makefile =================================================================== --- include/Makefile (revision 214386) +++ include/Makefile (working copy) @@ -116,8 +116,11 @@ .endfor .if ${MACHINE} != ${MACHINE_CPUARCH} -_MARCH=${MACHINE_CPUARCH} +_MARCHS= ${MACHINE_CPUARCH} .endif +.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64" +_MARCHS+= x86 +.endif .include <bsd.prog.mk> @@ -126,7 +129,7 @@ # Take care of stale directory-level symlinks. compat: -.for i in ${LDIRS} ${LSUBDIRS} machine ${_MARCH} crypto +.for i in ${LDIRS} ${LSUBDIRS} machine ${_MARCHS} crypto if [ -L ${DESTDIR}${INCLUDEDIR}/$i ]; then \ rm -f ${DESTDIR}${INCLUDEDIR}/$i; \ fi @@ -142,7 +145,7 @@ copies: .for i in ${LDIRS} ${LSUBDIRS} ${LSUBSUBDIRS} altq crypto machine machine/pc \ - ${_MARCH} + ${_MARCHS} .if exists(${DESTDIR}${INCLUDEDIR}/$i) cd ${DESTDIR}${INCLUDEDIR}/$i; \ for h in *.h; do \ @@ -189,7 +192,8 @@ ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 *.h \ ${DESTDIR}${INCLUDEDIR}/machine/pc .endif -.if defined(_MARCH) && exists(${.CURDIR}/../sys/${_MARCH}/include) +.for _MARCH in ${_MARCHS} +.if exists(${.CURDIR}/../sys/${_MARCH}/include) ${INSTALL} -d -o ${BINOWN} -g ${BINGRP} -m 755 \ ${DESTDIR}${INCLUDEDIR}/${_MARCH}; \ cd ${.CURDIR}/../sys/${_MARCH}/include; \ @@ -203,6 +207,7 @@ ${DESTDIR}${INCLUDEDIR}/${_MARCH}/pc .endif .endif +.endfor cd ${.CURDIR}/../sys/rpc; \ ${INSTALL} -C -o ${BINOWN} -g ${BINGRP} -m 444 types.h \ ${DESTDIR}${INCLUDEDIR}/rpc Index: sys/conf/kern.post.mk =================================================================== --- sys/conf/kern.post.mk (revision 214386) +++ sys/conf/kern.post.mk (working copy) @@ -169,6 +169,9 @@ .if ${MACHINE} != ${MACHINE_CPUARCH} _ILINKS+= ${MACHINE_CPUARCH} .endif +.if ${MACHINE_CPUARCH} == "i386" || ${MACHINE_CPUARCH} == "amd64" +_ILINKS+= x86 +.endif # Ensure that the link exists without depending on it when it exists. .for _link in ${_ILINKS} @@ -181,8 +184,8 @@ @case ${.TARGET} in \ machine) \ path=${S}/${MACHINE}/include ;; \ - ${MACHINE_CPUARCH}) \ - path=${S}/${MACHINE_CPUARCH}/include ;; \ + *) \ + path=${S}/${.TARGET}/include ;; \ esac ; \ ${ECHO} ${.TARGET} "->" $$path ; \ ln -s $$path ${.TARGET} -- John Baldwin
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201010281013.03261.jhb>