Date: Mon, 31 May 2010 20:18:27 -0600 (MDT) From: "M. Warner Losh" <imp@bsdimp.com> To: jmallett@FreeBSD.org Cc: freebsd-mips@FreeBSD.org Subject: Re: HEADS UP: Toolchain changes coming soon. (Octeon, n32, n64) Message-ID: <20100531.201827.56628267929938337.imp@bsdimp.com> In-Reply-To: <AANLkTinXthc8drw_G8gYUCtUefTVb9JQWTIlqtgsofPt@mail.gmail.com> References: <AANLkTinXthc8drw_G8gYUCtUefTVb9JQWTIlqtgsofPt@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
In message: <AANLkTinXthc8drw_G8gYUCtUefTVb9JQWTIlqtgsofPt@mail.gmail.com> Juli Mallett <jmallett@freebsd.org> writes: : Over the next day or two I am planning to merge changes to GCC and : binutils adding support for Octeon and the n32 and n64 ABIs, as well : as fixing a couple of bugs in our GCC spec. Note that the : Octeon-related patches are necessary to support the Cavium Octeon : Simple Executive, which I am planning to import after these changes : have been committed, which will be terribly helpful for the Octeon : port, in particular a new network driver and hopefully soon crypto and : PCI support. : : If you have any questions or comments please get in touch with me. : The contents of the patch may shift some before commit as I do testing : on a wider variety of platforms. : : The full patch to GCC and binutils is at this URL, and I have : reproduced the description below: : : http://people.freebsd.org/~jmallett/mips-toolchain.diff : : o) Add TARGET_ABI to the MIPS toolchain build process. This sets the : default ABI to one of o32, n32 or n64. If it is not set, o32 is : assumed as that is the current default. : o) Set the default GCC cpu type to any specified TARGET_CPUTYPE. This : is necessary to have a working "cc" if e.g. mips64 is specified, as : binutils will refuse to link objects using different ISAs in some : cases. : o) Add support for n32 and n64 ABIs to binutils and GCC. : o) Add additional required libgcc2 stubs for n32 and n64. : o) Add support for the "mips64r2" architecture to GCC. Add the "octeon" : o) When static linking, wrap default libraries in --start-group and : --end-group. This is required for static linking to work on n64 with : the interdependencies between libraries there. This is what other : OSes that support n64 seem to do, as well. : o) Fix our GCC spec to define __mips64 for 64-bit targets, not : __mips64__, the former being what libgcc, etc., check and the latter : seemingly being a misspelling of a hand merge from a Linux spec. : o) When no TARGET_CPUTYPE is specified at build time, make GCC take : the default ISA from the ABI. Our old defaults were too liberal and : assumed that 64-bit ABIs should default to the MIPS64 ISA and that : 32-bit ABIs should default to the MIPS32 ISA, when we are supporting : or will support some systems based on earlier 32-bit and 64-bit ISAs, : most notably MIPS-III. : o) Merge a new opcode file (and support code) from a later version of : binutils and add flags and code necessary to support Octeon-specific : instructions. This should also make merging opcodes for other modern : architectures easier. Great work Juli... I plan on merging my TBEMD branch after the dust from this settles down. Juts so people know... Warner
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20100531.201827.56628267929938337.imp>