From owner-svn-src-stable-8@FreeBSD.ORG Sat Nov 27 12:26:41 2010 Return-Path: Delivered-To: svn-src-stable-8@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 01AEF106564A; Sat, 27 Nov 2010 12:26:41 +0000 (UTC) (envelope-from jchandra@FreeBSD.org) Received: from svn.freebsd.org (svn.freebsd.org [IPv6:2001:4f8:fff6::2c]) by mx1.freebsd.org (Postfix) with ESMTP id DE4658FC1B; Sat, 27 Nov 2010 12:26:40 +0000 (UTC) Received: from svn.freebsd.org (localhost [127.0.0.1]) by svn.freebsd.org (8.14.3/8.14.3) with ESMTP id oARCQeCo053088; Sat, 27 Nov 2010 12:26:40 GMT (envelope-from jchandra@svn.freebsd.org) Received: (from jchandra@localhost) by svn.freebsd.org (8.14.3/8.14.3/Submit) id oARCQeAw053068; Sat, 27 Nov 2010 12:26:40 GMT (envelope-from jchandra@svn.freebsd.org) Message-Id: <201011271226.oARCQeAw053068@svn.freebsd.org> From: "Jayachandran C." Date: Sat, 27 Nov 2010 12:26:40 +0000 (UTC) To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-stable@freebsd.org, svn-src-stable-8@freebsd.org X-SVN-Group: stable-8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Cc: Subject: svn commit: r215938 - in stable/8: contrib/binutils/bfd contrib/gcc/config/mips gnu/lib/libgcc gnu/usr.bin gnu/usr.bin/binutils gnu/usr.bin/binutils/ld gnu/usr.bin/cc lib/libc lib/libc/mips lib/lib... X-BeenThere: svn-src-stable-8@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: SVN commit messages for only the 8-stable src tree List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 27 Nov 2010 12:26:41 -0000 Author: jchandra Date: Sat Nov 27 12:26:40 2010 New Revision: 215938 URL: http://svn.freebsd.org/changeset/base/215938 Log: Merge MIPS platform support to 8-STABLE. This commit merges the MIPS platform changes that was now stable in -CURRENT into 8-STABLE. The MIPS changesets are too many (~400) to list here. But the changesets merged in this commit that affect other platforms are summarized below: r204635 : (changes to sys/dev/hwpmc, lib/libpmc, sys/sys/pmc.h) Add support for hwpmc(4) on the MIPS 24K, 32 bit, embedded processor. r205845: (changes to sys/modules/Makefile) Fix for building modules on mips and arm. r204031: (changes to sys/kern/link_elf_obj.c) printf fix, as part of kernel module support for MIPS. r206404: (changes to sys/arm/include/bus.h) Add BUS_SPACE_UNRESTRICTED and define it to be ~0, just like all the other platforms - for arm and mips. r206819: (changes to sys/vm/) Add VMFS_TLB_ALIGNED_SPACE option and kmem_alloc_nofault_space(), which is used to allocate kernel stack address on MIPS. r208165, r211087: (sys/kern/subr_smp.c, sys/kern/sched_ule.c) Enable ULE scheduler for MIPS, Fix for an issue in SMP when 32 cpus are enabled. r208659: (sys/{ia64/ia64,mips/mips,sun4v/sun4v}/pmap.c) Simplify the inner loop of get_pv_entry() r208794: (changes to sys/vm/) Make vm_contig_grow_cache() extern, and use it when vm_phys_alloc_contig() fails to allocate MIPS page table pages. r210327: (changes to sys/vm/) Support for MIPS page table page allocation. Add a new function 'vm_page_t vm_page_alloc_freelist(int flind, int order, int req)' to vm/vm_page.c to allocate a page from a specified freelist, and other related changes. Reviewed by: alc(vm changes only) Approved by: kib(re), alc(vm), imp(mips), jmallett(mips), gnn(mips pmc) Added: stable/8/gnu/usr.bin/binutils/ld/elf32btsmipn32_fbsd.sh - copied, changed from r204548, head/gnu/usr.bin/binutils/ld/elf32btsmipn32_fbsd.sh stable/8/gnu/usr.bin/binutils/ld/elf32ltsmipn32_fbsd.sh - copied, changed from r204548, head/gnu/usr.bin/binutils/ld/elf32ltsmipn32_fbsd.sh stable/8/lib/libc/mips/gen/_ctx_start.S - copied unchanged from r209233, head/lib/libc/mips/gen/_ctx_start.S stable/8/lib/libc/mips/gen/hardfloat/ - copied from r201856, head/lib/libc/mips/gen/hardfloat/ stable/8/sys/conf/ldscript.mips.64 - copied unchanged from r209814, head/sys/conf/ldscript.mips.64 stable/8/sys/conf/ldscript.mips.64.cfe - copied unchanged from r212634, head/sys/conf/ldscript.mips.64.cfe stable/8/sys/conf/ldscript.mips.n32 - copied unchanged from r209502, head/sys/conf/ldscript.mips.n32 stable/8/sys/contrib/octeon-sdk/ - copied from r210286, head/sys/contrib/octeon-sdk/ - copied unchanged from r202061, head/sys/dev/cfe/cfe_env.c stable/8/sys/dev/hwpmc/hwpmc_mips.c - copied unchanged from r204635, head/sys/dev/hwpmc/hwpmc_mips.c stable/8/sys/dev/hwpmc/hwpmc_mips24k.c - copied unchanged from r204635, head/sys/dev/hwpmc/hwpmc_mips24k.c stable/8/sys/dev/hwpmc/hwpmc_mips24k.h - copied unchanged from r204635, head/sys/dev/hwpmc/hwpmc_mips24k.h stable/8/sys/mips/alchemy/ - copied from r202041, head/sys/mips/alchemy/ stable/8/sys/mips/atheros/ - copied from r201906, head/sys/mips/atheros/ stable/8/sys/mips/atheros/ar71xx_chip.c - copied, changed from r211482, head/sys/mips/atheros/ar71xx_chip.c stable/8/sys/mips/atheros/ar71xx_chip.h - copied unchanged from r211482, head/sys/mips/atheros/ar71xx_chip.h stable/8/sys/mips/atheros/ar71xx_cpudef.h - copied unchanged from r211449, head/sys/mips/atheros/ar71xx_cpudef.h stable/8/sys/mips/atheros/ar71xx_gpio.c - copied, changed from r213239, head/sys/mips/atheros/ar71xx_gpio.c stable/8/sys/mips/atheros/ar71xx_gpiovar.h - copied unchanged from r213239, head/sys/mips/atheros/ar71xx_gpiovar.h stable/8/sys/mips/atheros/ar71xx_setup.c - copied, changed from r211482, head/sys/mips/atheros/ar71xx_setup.c stable/8/sys/mips/atheros/ar71xx_setup.h - copied unchanged from r211482, head/sys/mips/atheros/ar71xx_setup.h stable/8/sys/mips/atheros/ar724x_chip.c - copied unchanged from r211504, head/sys/mips/atheros/ar724x_chip.c stable/8/sys/mips/atheros/ar724x_chip.h - copied unchanged from r211504, head/sys/mips/atheros/ar724x_chip.h stable/8/sys/mips/atheros/ar724xreg.h - copied, changed from r211440, head/sys/mips/atheros/ar724xreg.h stable/8/sys/mips/atheros/ar91xx_chip.c - copied, changed from r211504, head/sys/mips/atheros/ar91xx_chip.c stable/8/sys/mips/atheros/ar91xx_chip.h - copied unchanged from r211504, head/sys/mips/atheros/ar91xx_chip.h stable/8/sys/mips/atheros/ar91xxreg.h - copied, changed from r211440, head/sys/mips/atheros/ar91xxreg.h stable/8/sys/mips/atheros/pcf2123_rtc.c - copied unchanged from r202839, head/sys/mips/atheros/pcf2123_rtc.c stable/8/sys/mips/atheros/pcf2123reg.h - copied unchanged from r202839, head/sys/mips/atheros/pcf2123reg.h stable/8/sys/mips/cavium/ - copied from r201921, head/sys/mips/cavium/ stable/8/sys/mips/cavium/ciu.c - copied, changed from r210311, head/sys/mips/cavium/ciu.c stable/8/sys/mips/cavium/cryptocteon/ - copied from r210312, head/sys/mips/cavium/cryptocteon/ stable/8/sys/mips/cavium/cvmx_config.h - copied unchanged from r210311, head/sys/mips/cavium/cvmx_config.h stable/8/sys/mips/cavium/octe/ - copied from r210311, head/sys/mips/cavium/octe/ stable/8/sys/mips/cavium/octe/ethernet-mv88e61xx.c - copied, changed from r213346, head/sys/mips/cavium/octe/ethernet-mv88e61xx.c stable/8/sys/mips/cavium/octe/ethernet-mv88e61xx.h - copied unchanged from r213346, head/sys/mips/cavium/octe/ethernet-mv88e61xx.h stable/8/sys/mips/cavium/octe/mv88e61xxphy.c - copied unchanged from r213762, head/sys/mips/cavium/octe/mv88e61xxphy.c stable/8/sys/mips/cavium/octe/mv88e61xxphyreg.h - copied unchanged from r213762, head/sys/mips/cavium/octe/mv88e61xxphyreg.h stable/8/sys/mips/cavium/octeon_ds1337.c - copied unchanged from r210311, head/sys/mips/cavium/octeon_ds1337.c stable/8/sys/mips/cavium/octeon_mp.c - copied, changed from r206721, head/sys/mips/cavium/octeon_mp.c stable/8/sys/mips/cavium/octeon_rnd.c - copied unchanged from r210311, head/sys/mips/cavium/octeon_rnd.c stable/8/sys/mips/cavium/octeon_rtc.c - copied unchanged from r210311, head/sys/mips/cavium/octeon_rtc.c stable/8/sys/mips/cavium/octopci.c - copied, changed from r210311, head/sys/mips/cavium/octopci.c stable/8/sys/mips/cavium/octopci_bus_space.c - copied unchanged from r210311, head/sys/mips/cavium/octopci_bus_space.c stable/8/sys/mips/cavium/octopcireg.h - copied, changed from r210311, head/sys/mips/cavium/octopcireg.h stable/8/sys/mips/cavium/octopcivar.h - copied unchanged from r210311, head/sys/mips/cavium/octopcivar.h stable/8/sys/mips/cavium/usb/ - copied from r210312, head/sys/mips/cavium/usb/ stable/8/sys/mips/conf/ALCHEMY (contents, props changed) - copied, changed from r202041, head/sys/mips/conf/ALCHEMY stable/8/sys/mips/conf/AR71XX (contents, props changed) - copied, changed from r201917, head/sys/mips/conf/AR71XX stable/8/sys/mips/conf/AR71XX.hints (contents, props changed) - copied, changed from r201917, head/sys/mips/conf/AR71XX.hints stable/8/sys/mips/conf/MALTA64 (contents, props changed) - copied, changed from r201917, head/sys/mips/conf/MALTA64 stable/8/sys/mips/conf/OCTEON1 (contents, props changed) - copied, changed from r201917, head/sys/mips/conf/OCTEON1 stable/8/sys/mips/conf/OCTEON1-32 (contents, props changed) - copied, changed from r201917, head/sys/mips/conf/OCTEON1-32 stable/8/sys/mips/conf/OCTEON1.hints (contents, props changed) - copied, changed from r201917, head/sys/mips/conf/OCTEON1.hints stable/8/sys/mips/conf/SWARM (contents, props changed) - copied, changed from r201917, head/sys/mips/conf/SWARM - copied unchanged from r201917, head/sys/mips/conf/SWARM.hints stable/8/sys/mips/conf/SWARM64 - copied, changed from r212634, head/sys/mips/conf/SWARM64 stable/8/sys/mips/conf/SWARM64_SMP - copied, changed from r212634, head/sys/mips/conf/SWARM64_SMP stable/8/sys/mips/conf/SWARM_SMP - copied, changed from r203697, head/sys/mips/conf/SWARM_SMP stable/8/sys/mips/conf/XLR (contents, props changed) - copied, changed from r201917, head/sys/mips/conf/XLR stable/8/sys/mips/conf/XLR64 - copied, changed from r209814, head/sys/mips/conf/XLR64 stable/8/sys/mips/conf/XLRN32 - copied, changed from r209502, head/sys/mips/conf/XLRN32 stable/8/sys/mips/conf/std.SWARM - copied unchanged from r215068, head/sys/mips/conf/std.SWARM stable/8/sys/mips/include/cdefs.h (contents, props changed) - copied, changed from r202041, head/sys/mips/include/cdefs.h - copied unchanged from r202041, head/sys/mips/include/fls64.h stable/8/sys/mips/include/tlb.h - copied, changed from r209243, head/sys/mips/include/tlb.h stable/8/sys/mips/mips/bus_space_generic.c (contents, props changed) - copied, changed from r202041, head/sys/mips/mips/bus_space_generic.c stable/8/sys/mips/mips/elf_trampoline.c (contents, props changed) - copied, changed from r202041, head/sys/mips/mips/elf_trampoline.c - copied unchanged from r202041, head/sys/mips/mips/inckern.S stable/8/sys/mips/mips/minidump_machdep.c - copied unchanged from r214903, head/sys/mips/mips/minidump_machdep.c stable/8/sys/mips/mips/mpboot.S - copied, changed from r203697, head/sys/mips/mips/mpboot.S - copied unchanged from r201976, head/sys/mips/mips/ptrace_machdep.c - copied unchanged from r202041, head/sys/mips/mips/sys_machdep.c stable/8/sys/mips/mips/tlb.c - copied, changed from r209243, head/sys/mips/mips/tlb.c stable/8/sys/mips/rmi/ - copied from r201917, head/sys/mips/rmi/ stable/8/sys/mips/rmi/bus_space_rmi_pci.c - copied, changed from r204137, head/sys/mips/rmi/bus_space_rmi_pci.c stable/8/sys/mips/rmi/dev/ - copied from r201979, head/sys/mips/rmi/dev/ stable/8/sys/mips/rmi/dev/nlge/ - copied from r211946, head/sys/mips/rmi/dev/nlge/ stable/8/sys/mips/rmi/dev/xlr/debug.h - copied unchanged from r211996, head/sys/mips/rmi/dev/xlr/debug.h stable/8/sys/mips/rmi/fmn.c - copied, changed from r211809, head/sys/mips/rmi/fmn.c stable/8/sys/mips/rmi/mpwait.S - copied unchanged from r208250, head/sys/mips/rmi/mpwait.S stable/8/sys/mips/rmi/rmi_boot_info.h - copied unchanged from r211994, head/sys/mips/rmi/rmi_boot_info.h stable/8/sys/mips/rmi/xlr_pcmcia.c - copied unchanged from r211923, head/sys/mips/rmi/xlr_pcmcia.c stable/8/sys/mips/sibyte/ - copied from r201905, head/sys/mips/sibyte/ stable/8/sys/mips/sibyte/sb_bus_space.h - copied unchanged from r203985, head/sys/mips/sibyte/sb_bus_space.h Directory Properties: stable/8/sys/dev/cfe/cfe_env.c (props changed) stable/8/sys/mips/conf/SWARM.hints (props changed) stable/8/sys/mips/include/fls64.h (props changed) stable/8/sys/mips/mips/inckern.S (props changed) stable/8/sys/mips/mips/ptrace_machdep.c (props changed) stable/8/sys/mips/mips/sys_machdep.c (props changed) Deleted: stable/8/lib/libc/mips/gen/fpgetmask.c stable/8/lib/libc/mips/gen/fpgetround.c stable/8/lib/libc/mips/gen/fpgetsticky.c stable/8/lib/libc/mips/gen/fpsetmask.c stable/8/lib/libc/mips/gen/fpsetround.c stable/8/lib/libc/mips/gen/fpsetsticky.c stable/8/sys/mips/include/_bus_octeon.h stable/8/sys/mips/include/archtype.h stable/8/sys/mips/include/asmacros.h stable/8/sys/mips/include/bus_octeon.h stable/8/sys/mips/include/defs.h stable/8/sys/mips/include/intr.h stable/8/sys/mips/include/pltfm.h stable/8/sys/mips/include/psl.h stable/8/sys/mips/include/queue.h stable/8/sys/mips/include/rm7000.h stable/8/sys/mips/include/segments.h stable/8/sys/mips/mips/copystr.S stable/8/sys/mips/mips/psraccess.S stable/8/sys/mips/mips/tlb.S stable/8/sys/mips/sentry5/siba_cc.c stable/8/sys/mips/sentry5/siba_mips.c stable/8/sys/mips/sentry5/siba_sdram.c Modified: stable/8/contrib/binutils/bfd/elfxx-mips.c stable/8/contrib/gcc/config/mips/freebsd.h stable/8/gnu/lib/libgcc/Makefile stable/8/gnu/usr.bin/binutils/Makefile.inc0 stable/8/gnu/usr.bin/binutils/ld/Makefile.mips stable/8/gnu/usr.bin/cc/Makefile.inc stable/8/gnu/usr.bin/cc/Makefile.tgt stable/8/lib/libc/Makefile stable/8/lib/libc/mips/Makefile.inc stable/8/lib/libc/mips/SYS.h stable/8/lib/libc/mips/Symbol.map stable/8/lib/libc/mips/gen/Makefile.inc stable/8/lib/libc/mips/gen/_setjmp.S stable/8/lib/libc/mips/gen/makecontext.c stable/8/lib/libc/mips/gen/setjmp.S stable/8/lib/libc/mips/gen/sigsetjmp.S stable/8/lib/libc/mips/string/bcmp.S stable/8/lib/libc/mips/string/bcopy.S stable/8/lib/libc/mips/string/bzero.S stable/8/lib/libc/mips/string/ffs.S stable/8/lib/libc/mips/string/index.S stable/8/lib/libc/mips/string/rindex.S stable/8/lib/libc/mips/string/strcmp.S stable/8/lib/libc/mips/string/strlen.S stable/8/lib/libc/mips/sys/Makefile.inc stable/8/lib/libc/mips/sys/Ovfork.S stable/8/lib/libc/mips/sys/brk.S stable/8/lib/libc/mips/sys/cerror.S stable/8/lib/libc/mips/sys/exect.S stable/8/lib/libc/mips/sys/fork.S stable/8/lib/libc/mips/sys/pipe.S stable/8/lib/libc/mips/sys/ptrace.S stable/8/lib/libc/mips/sys/sbrk.S stable/8/lib/libpmc/libpmc.c stable/8/lib/libthr/arch/mips/include/pthread_md.h stable/8/libexec/rtld-elf/mips/reloc.c stable/8/libexec/rtld-elf/mips/rtld_start.S stable/8/sys/arm/include/bus.h stable/8/sys/conf/Makefile.mips stable/8/sys/conf/files.mips stable/8/sys/conf/kern.pre.mk stable/8/sys/conf/kmod.mk stable/8/sys/conf/ldscript.mips stable/8/sys/conf/options.mips stable/8/sys/contrib/octeon-sdk/cvmx-access-native.h stable/8/sys/contrib/octeon-sdk/cvmx-app-init.h stable/8/sys/contrib/octeon-sdk/cvmx-asm.h stable/8/sys/contrib/octeon-sdk/cvmx-cmd-queue.c stable/8/sys/contrib/octeon-sdk/cvmx-cmd-queue.h stable/8/sys/contrib/octeon-sdk/cvmx-fpa.c stable/8/sys/contrib/octeon-sdk/cvmx-helper-board.c stable/8/sys/contrib/octeon-sdk/cvmx-helper-errata.c stable/8/sys/contrib/octeon-sdk/cvmx-helper-fpa.c stable/8/sys/contrib/octeon-sdk/cvmx-helper-loop.c stable/8/sys/contrib/octeon-sdk/cvmx-helper-npi.c stable/8/sys/contrib/octeon-sdk/cvmx-helper-rgmii.c stable/8/sys/contrib/octeon-sdk/cvmx-helper-sgmii.c stable/8/sys/contrib/octeon-sdk/cvmx-helper-spi.c stable/8/sys/contrib/octeon-sdk/cvmx-helper-util.c stable/8/sys/contrib/octeon-sdk/cvmx-helper-util.h stable/8/sys/contrib/octeon-sdk/cvmx-helper-xaui.c stable/8/sys/contrib/octeon-sdk/cvmx-helper.c stable/8/sys/contrib/octeon-sdk/cvmx-helper.h stable/8/sys/contrib/octeon-sdk/cvmx-pko.c stable/8/sys/contrib/octeon-sdk/cvmx-platform.h stable/8/sys/contrib/octeon-sdk/cvmx-rtc.h stable/8/sys/contrib/octeon-sdk/cvmx-spi.c stable/8/sys/contrib/octeon-sdk/cvmx-thunder.c stable/8/sys/contrib/octeon-sdk/cvmx-usb.c stable/8/sys/contrib/octeon-sdk/cvmx-usb.h stable/8/sys/contrib/octeon-sdk/octeon-model.h stable/8/sys/dev/cfe/cfe_api.c stable/8/sys/dev/cfe/cfe_console.c stable/8/sys/dev/hwpmc/pmc_events.h stable/8/sys/ia64/ia64/pmap.c stable/8/sys/kern/link_elf_obj.c stable/8/sys/kern/sched_ule.c stable/8/sys/kern/subr_smp.c stable/8/sys/mips/adm5120/adm5120_machdep.c (contents, props changed) stable/8/sys/mips/adm5120/files.adm5120 (contents, props changed) stable/8/sys/mips/adm5120/if_admsw.c (contents, props changed) stable/8/sys/mips/adm5120/if_admswvar.h (contents, props changed) stable/8/sys/mips/adm5120/obio.c (contents, props changed) stable/8/sys/mips/adm5120/uart_cpu_adm5120.c (contents, props changed) stable/8/sys/mips/alchemy/alchemy_machdep.c stable/8/sys/mips/alchemy/obio.c stable/8/sys/mips/atheros/apb.c (contents, props changed) stable/8/sys/mips/atheros/ar71xx_machdep.c (contents, props changed) stable/8/sys/mips/atheros/ar71xx_pci.c (contents, props changed) stable/8/sys/mips/atheros/ar71xx_spi.c (contents, props changed) stable/8/sys/mips/atheros/ar71xx_wdog.c (contents, props changed) stable/8/sys/mips/atheros/ar71xxreg.h (contents, props changed) stable/8/sys/mips/atheros/files.ar71xx (contents, props changed) stable/8/sys/mips/atheros/if_arge.c (contents, props changed) stable/8/sys/mips/atheros/if_argevar.h (contents, props changed) stable/8/sys/mips/atheros/uart_bus_ar71xx.c (contents, props changed) stable/8/sys/mips/atheros/uart_cpu_ar71xx.c (contents, props changed) stable/8/sys/mips/cavium/asm_octeon.S stable/8/sys/mips/cavium/dev/rgmii/octeon_fau.h stable/8/sys/mips/cavium/dev/rgmii/octeon_fpa.c stable/8/sys/mips/cavium/dev/rgmii/octeon_fpa.h stable/8/sys/mips/cavium/dev/rgmii/octeon_ipd.c stable/8/sys/mips/cavium/dev/rgmii/octeon_ipd.h stable/8/sys/mips/cavium/dev/rgmii/octeon_pip.h stable/8/sys/mips/cavium/dev/rgmii/octeon_pko.c stable/8/sys/mips/cavium/dev/rgmii/octeon_pko.h stable/8/sys/mips/cavium/dev/rgmii/octeon_rgmx.c stable/8/sys/mips/cavium/dev/rgmii/octeon_rgmx.h stable/8/sys/mips/cavium/files.octeon1 (contents, props changed) stable/8/sys/mips/cavium/obio.c stable/8/sys/mips/cavium/obiovar.h stable/8/sys/mips/cavium/octe/cavium-ethernet.h stable/8/sys/mips/cavium/octe/ethernet-common.c stable/8/sys/mips/cavium/octe/ethernet-headers.h stable/8/sys/mips/cavium/octe/ethernet-mdio.c stable/8/sys/mips/cavium/octe/ethernet-rgmii.c stable/8/sys/mips/cavium/octe/ethernet-rx.c stable/8/sys/mips/cavium/octe/ethernet-sgmii.c stable/8/sys/mips/cavium/octe/ethernet-tx.c stable/8/sys/mips/cavium/octe/ethernet-xaui.c stable/8/sys/mips/cavium/octe/ethernet.c stable/8/sys/mips/cavium/octe/octe.c stable/8/sys/mips/cavium/octeon_ebt3000_cf.c stable/8/sys/mips/cavium/octeon_machdep.c stable/8/sys/mips/cavium/octeon_pcmap_regs.h stable/8/sys/mips/cavium/std.octeon1 (contents, props changed) stable/8/sys/mips/cavium/uart_bus_octeonusart.c stable/8/sys/mips/cavium/uart_cpu_octeonusart.c stable/8/sys/mips/cavium/uart_dev_oct16550.c stable/8/sys/mips/cavium/usb/octusb.c stable/8/sys/mips/conf/ADM5120 (contents, props changed) stable/8/sys/mips/conf/MALTA (contents, props changed) stable/8/sys/mips/conf/QEMU (contents, props changed) stable/8/sys/mips/conf/SENTRY5 (contents, props changed) stable/8/sys/mips/idt/files.idt (contents, props changed) stable/8/sys/mips/idt/idt_machdep.c (contents, props changed) stable/8/sys/mips/idt/obio.c (contents, props changed) stable/8/sys/mips/idt/uart_bus_rc32434.c (contents, props changed) stable/8/sys/mips/idt/uart_cpu_rc32434.c (contents, props changed) stable/8/sys/mips/include/_bus.h (contents, props changed) stable/8/sys/mips/include/_inttypes.h (contents, props changed) stable/8/sys/mips/include/_limits.h (contents, props changed) stable/8/sys/mips/include/_stdint.h (contents, props changed) stable/8/sys/mips/include/_types.h (contents, props changed) stable/8/sys/mips/include/asm.h (contents, props changed) stable/8/sys/mips/include/atomic.h (contents, props changed) stable/8/sys/mips/include/bus.h (contents, props changed) stable/8/sys/mips/include/cache.h (contents, props changed) stable/8/sys/mips/include/cache_mipsNN.h (contents, props changed) stable/8/sys/mips/include/clock.h (contents, props changed) stable/8/sys/mips/include/cpu.h (contents, props changed) stable/8/sys/mips/include/cpufunc.h (contents, props changed) stable/8/sys/mips/include/cpuinfo.h (contents, props changed) stable/8/sys/mips/include/cpuregs.h (contents, props changed) stable/8/sys/mips/include/db_machdep.h (contents, props changed) stable/8/sys/mips/include/elf.h (contents, props changed) stable/8/sys/mips/include/endian.h (contents, props changed) stable/8/sys/mips/include/float.h (contents, props changed) stable/8/sys/mips/include/hwfunc.h (contents, props changed) stable/8/sys/mips/include/intr_machdep.h (contents, props changed) stable/8/sys/mips/include/kdb.h (contents, props changed) stable/8/sys/mips/include/locore.h (contents, props changed) stable/8/sys/mips/include/md_var.h (contents, props changed) stable/8/sys/mips/include/memdev.h (contents, props changed) stable/8/sys/mips/include/param.h (contents, props changed) stable/8/sys/mips/include/pcb.h (contents, props changed) stable/8/sys/mips/include/pcpu.h (contents, props changed) stable/8/sys/mips/include/pmap.h (contents, props changed) stable/8/sys/mips/include/pmc_mdep.h (contents, props changed) stable/8/sys/mips/include/proc.h (contents, props changed) stable/8/sys/mips/include/profile.h (contents, props changed) stable/8/sys/mips/include/pte.h (contents, props changed) stable/8/sys/mips/include/regdef.h (contents, props changed) stable/8/sys/mips/include/regnum.h (contents, props changed) stable/8/sys/mips/include/runq.h (contents, props changed) stable/8/sys/mips/include/setjmp.h (contents, props changed) stable/8/sys/mips/include/sf_buf.h (contents, props changed) stable/8/sys/mips/include/smp.h (contents, props changed) stable/8/sys/mips/include/sysarch.h (contents, props changed) stable/8/sys/mips/include/trap.h (contents, props changed) stable/8/sys/mips/include/ucontext.h (contents, props changed) stable/8/sys/mips/include/vm.h stable/8/sys/mips/include/vmparam.h (contents, props changed) stable/8/sys/mips/malta/files.malta (contents, props changed) stable/8/sys/mips/malta/gt_pci.c (contents, props changed) stable/8/sys/mips/malta/malta_machdep.c (contents, props changed) stable/8/sys/mips/malta/maltareg.h (contents, props changed) stable/8/sys/mips/malta/obio.c (contents, props changed) stable/8/sys/mips/malta/std.malta (contents, props changed) stable/8/sys/mips/malta/uart_bus_maltausart.c (contents, props changed) stable/8/sys/mips/malta/uart_cpu_maltausart.c (contents, props changed) stable/8/sys/mips/malta/yamon.h (contents, props changed) stable/8/sys/mips/mips/autoconf.c (contents, props changed) stable/8/sys/mips/mips/busdma_machdep.c (contents, props changed) stable/8/sys/mips/mips/cache.c (contents, props changed) stable/8/sys/mips/mips/cache_mipsNN.c (contents, props changed) stable/8/sys/mips/mips/cpu.c (contents, props changed) stable/8/sys/mips/mips/db_interface.c (contents, props changed) stable/8/sys/mips/mips/db_trace.c (contents, props changed) stable/8/sys/mips/mips/dump_machdep.c (contents, props changed) stable/8/sys/mips/mips/elf_machdep.c (contents, props changed) stable/8/sys/mips/mips/exception.S (contents, props changed) stable/8/sys/mips/mips/fp.S (contents, props changed) stable/8/sys/mips/mips/gdb_machdep.c (contents, props changed) stable/8/sys/mips/mips/genassym.c (contents, props changed) stable/8/sys/mips/mips/in_cksum.c (contents, props changed) stable/8/sys/mips/mips/intr_machdep.c (contents, props changed) stable/8/sys/mips/mips/locore.S (contents, props changed) stable/8/sys/mips/mips/machdep.c (contents, props changed) stable/8/sys/mips/mips/mainbus.c (contents, props changed) stable/8/sys/mips/mips/mem.c (contents, props changed) stable/8/sys/mips/mips/mp_machdep.c (contents, props changed) stable/8/sys/mips/mips/nexus.c (contents, props changed) stable/8/sys/mips/mips/pm_machdep.c (contents, props changed) stable/8/sys/mips/mips/pmap.c (contents, props changed) stable/8/sys/mips/mips/stack_machdep.c (contents, props changed) stable/8/sys/mips/mips/support.S (contents, props changed) stable/8/sys/mips/mips/swtch.S (contents, props changed) stable/8/sys/mips/mips/tick.c (contents, props changed) stable/8/sys/mips/mips/trap.c (contents, props changed) stable/8/sys/mips/mips/uio_machdep.c (contents, props changed) stable/8/sys/mips/mips/vm_machdep.c (contents, props changed) stable/8/sys/mips/rmi/board.c (contents, props changed) stable/8/sys/mips/rmi/board.h (contents, props changed) stable/8/sys/mips/rmi/bus_space_rmi.c (contents, props changed) stable/8/sys/mips/rmi/dev/nlge/if_nlge.c stable/8/sys/mips/rmi/dev/nlge/if_nlge.h stable/8/sys/mips/rmi/dev/sec/desc.h (contents, props changed) stable/8/sys/mips/rmi/dev/sec/rmilib.c (contents, props changed) stable/8/sys/mips/rmi/dev/sec/rmilib.h (contents, props changed) stable/8/sys/mips/rmi/dev/sec/rmisec.c (contents, props changed) stable/8/sys/mips/rmi/dev/xlr/rge.c (contents, props changed) stable/8/sys/mips/rmi/dev/xlr/rge.h (contents, props changed) stable/8/sys/mips/rmi/ehcireg.h (contents, props changed) stable/8/sys/mips/rmi/ehcivar.h (contents, props changed) stable/8/sys/mips/rmi/files.xlr (contents, props changed) stable/8/sys/mips/rmi/interrupt.h (contents, props changed) stable/8/sys/mips/rmi/intr_machdep.c (contents, props changed) stable/8/sys/mips/rmi/iodi.c (contents, props changed) stable/8/sys/mips/rmi/iomap.h (contents, props changed) stable/8/sys/mips/rmi/msgring.h (contents, props changed) stable/8/sys/mips/rmi/pcibus.h (contents, props changed) stable/8/sys/mips/rmi/pic.h (contents, props changed) stable/8/sys/mips/rmi/rmi_mips_exts.h (contents, props changed) stable/8/sys/mips/rmi/std.xlr (contents, props changed) stable/8/sys/mips/rmi/tick.c (contents, props changed) stable/8/sys/mips/rmi/uart_bus_xlr_iodi.c (contents, props changed) stable/8/sys/mips/rmi/xlr_i2c.c (contents, props changed) stable/8/sys/mips/rmi/xlr_machdep.c (contents, props changed) stable/8/sys/mips/rmi/xlr_pci.c (contents, props changed) stable/8/sys/mips/rmi/xls_ehci.c (contents, props changed) stable/8/sys/mips/sentry5/files.sentry5 (contents, props changed) stable/8/sys/mips/sentry5/obio.c (contents, props changed) stable/8/sys/mips/sentry5/s5_machdep.c (contents, props changed) stable/8/sys/mips/sentry5/uart_bus_sbusart.c (contents, props changed) stable/8/sys/mips/sentry5/uart_cpu_sbusart.c (contents, props changed) stable/8/sys/mips/sibyte/sb_asm.S stable/8/sys/mips/sibyte/sb_machdep.c stable/8/sys/mips/sibyte/sb_scd.c stable/8/sys/mips/sibyte/sb_scd.h stable/8/sys/mips/sibyte/sb_zbbus.c stable/8/sys/mips/sibyte/sb_zbpci.c stable/8/sys/modules/Makefile stable/8/sys/sun4v/sun4v/pmap.c stable/8/sys/sys/kerneldump.h stable/8/sys/sys/pmc.h stable/8/sys/vm/pmap.h stable/8/sys/vm/vm_contig.c stable/8/sys/vm/vm_extern.h stable/8/sys/vm/vm_glue.c stable/8/sys/vm/vm_kern.c stable/8/sys/vm/vm_map.c stable/8/sys/vm/vm_map.h stable/8/sys/vm/vm_page.c stable/8/sys/vm/vm_page.h stable/8/sys/vm/vm_pageout.h stable/8/sys/vm/vm_phys.c stable/8/sys/vm/vm_phys.h Directory Properties: stable/8/contrib/binutils/ (props changed) stable/8/contrib/gcc/ (props changed) stable/8/gnu/lib/libgcc/ (props changed) stable/8/gnu/usr.bin/ (props changed) stable/8/gnu/usr.bin/Makefile (props changed) stable/8/gnu/usr.bin/dialog/ (props changed) stable/8/gnu/usr.bin/gdb/ (props changed) stable/8/gnu/usr.bin/gdb/kgdb/ (props changed) stable/8/gnu/usr.bin/groff/ (props changed) stable/8/gnu/usr.bin/patch/ (props changed) stable/8/lib/libc/ (props changed) stable/8/lib/libc/locale/ (props changed) stable/8/lib/libc/stdtime/ (props changed) stable/8/lib/libc/sys/ (props changed) stable/8/lib/libthr/ (props changed) stable/8/libexec/rtld-elf/ (props changed) stable/8/sys/ (props changed) stable/8/sys/amd64/include/xen/ (props changed) stable/8/sys/cddl/contrib/opensolaris/ (props changed) stable/8/sys/contrib/dev/acpica/ (props changed) stable/8/sys/contrib/pf/ (props changed) stable/8/sys/mips/adm5120/adm5120reg.h (props changed) stable/8/sys/mips/adm5120/admpci.c (props changed) stable/8/sys/mips/adm5120/console.c (props changed) stable/8/sys/mips/adm5120/if_admswreg.h (props changed) stable/8/sys/mips/adm5120/obiovar.h (props changed) stable/8/sys/mips/adm5120/std.adm5120 (props changed) stable/8/sys/mips/adm5120/uart_bus_adm5120.c (props changed) stable/8/sys/mips/adm5120/uart_dev_adm5120.c (props changed) stable/8/sys/mips/adm5120/uart_dev_adm5120.h (props changed) stable/8/sys/mips/alchemy/files.alchemy (props changed) stable/8/sys/mips/alchemy/std.alchemy (props changed) stable/8/sys/mips/atheros/apbvar.h (props changed) stable/8/sys/mips/atheros/ar71xx_bus_space_reversed.c (props changed) stable/8/sys/mips/atheros/ar71xx_bus_space_reversed.h (props changed) stable/8/sys/mips/atheros/ar71xx_ehci.c (props changed) stable/8/sys/mips/atheros/ar71xx_ohci.c (props changed) stable/8/sys/mips/atheros/ar71xx_pci_bus_space.c (props changed) stable/8/sys/mips/atheros/ar71xx_pci_bus_space.h (props changed) stable/8/sys/mips/cavium/dev/ (props changed) stable/8/sys/mips/conf/.cvsignore (props changed) stable/8/sys/mips/conf/ADM5120.hints (props changed) stable/8/sys/mips/conf/DEFAULTS (props changed) stable/8/sys/mips/conf/IDT (props changed) stable/8/sys/mips/conf/IDT.hints (props changed) stable/8/sys/mips/conf/MALTA.hints (props changed) stable/8/sys/mips/conf/SENTRY5.hints (props changed) stable/8/sys/mips/idt/idtpci.c (props changed) stable/8/sys/mips/idt/idtreg.h (props changed) stable/8/sys/mips/idt/if_kr.c (props changed) stable/8/sys/mips/idt/if_krreg.h (props changed) stable/8/sys/mips/idt/obiovar.h (props changed) stable/8/sys/mips/idt/std.idt (props changed) stable/8/sys/mips/include/bootinfo.h (props changed) stable/8/sys/mips/include/bswap.h (props changed) stable/8/sys/mips/include/bus_dma.h (props changed) stable/8/sys/mips/include/cache_r4k.h (props changed) stable/8/sys/mips/include/clockvar.h (props changed) stable/8/sys/mips/include/cputypes.h (props changed) stable/8/sys/mips/include/exec.h (props changed) stable/8/sys/mips/include/floatingpoint.h (props changed) stable/8/sys/mips/include/fpu.h (props changed) stable/8/sys/mips/include/frame.h (props changed) stable/8/sys/mips/include/gdb_machdep.h (props changed) stable/8/sys/mips/include/ieee.h (props changed) stable/8/sys/mips/include/ieeefp.h (props changed) stable/8/sys/mips/include/in_cksum.h (props changed) stable/8/sys/mips/include/iodev.h (props changed) stable/8/sys/mips/include/limits.h (props changed) stable/8/sys/mips/include/metadata.h (props changed) stable/8/sys/mips/include/minidump.h (props changed) stable/8/sys/mips/include/mips_opcode.h (props changed) stable/8/sys/mips/include/mp_watchdog.h (props changed) stable/8/sys/mips/include/mutex.h (props changed) stable/8/sys/mips/include/pci_cfgreg.h (props changed) stable/8/sys/mips/include/ppireg.h (props changed) stable/8/sys/mips/include/ptrace.h (props changed) stable/8/sys/mips/include/reg.h (props changed) stable/8/sys/mips/include/reloc.h (props changed) stable/8/sys/mips/include/resource.h (props changed) stable/8/sys/mips/include/sigframe.h (props changed) stable/8/sys/mips/include/signal.h (props changed) stable/8/sys/mips/include/stdarg.h (props changed) stable/8/sys/mips/include/timerreg.h (props changed) stable/8/sys/mips/include/varargs.h (props changed) stable/8/sys/mips/malta/gt.c (props changed) stable/8/sys/mips/malta/gtreg.h (props changed) stable/8/sys/mips/malta/gtvar.h (props changed) stable/8/sys/mips/malta/obiovar.h (props changed) stable/8/sys/mips/malta/yamon.c (props changed) stable/8/sys/mips/mips/db_disasm.c (props changed) stable/8/sys/mips/mips/elf64_machdep.c (props changed) stable/8/sys/mips/rmi/Makefile.msgring (props changed) stable/8/sys/mips/rmi/dev/xlr/atx_cpld.h (props changed) stable/8/sys/mips/rmi/dev/xlr/xgmac_mdio.h (props changed) stable/8/sys/mips/rmi/msgring.c (props changed) stable/8/sys/mips/rmi/msgring.cfg (props changed) stable/8/sys/mips/rmi/msgring_xls.c (props changed) stable/8/sys/mips/rmi/msgring_xls.cfg (props changed) stable/8/sys/mips/rmi/rootfs_list.txt (props changed) stable/8/sys/mips/rmi/uart_cpu_mips_xlr.c (props changed) stable/8/sys/mips/rmi/xlr_csum_nocopy.S (props changed) stable/8/sys/mips/sentry5/obiovar.h (props changed) stable/8/sys/mips/sentry5/s5reg.h (props changed) stable/8/sys/mips/sibyte/files.sibyte (props changed) Modified: stable/8/contrib/binutils/bfd/elfxx-mips.c ============================================================================== --- stable/8/contrib/binutils/bfd/elfxx-mips.c Sat Nov 27 09:26:46 2010 (r215937) +++ stable/8/contrib/binutils/bfd/elfxx-mips.c Sat Nov 27 12:26:40 2010 (r215938) @@ -4324,6 +4324,15 @@ _bfd_mips_elf_section_processing (bfd *a bfd_mips_elf_swap_options_in (abfd, (Elf_External_Options *) l, &intopt); + if (intopt.size < sizeof (Elf_External_Options)) + { + (*_bfd_error_handler) + (_("Warning: bad `%s' option size %u smaller than its header"), + MIPS_ELF_OPTIONS_SECTION_NAME (abfd), intopt.size); + break; + } + + if (ABI_64_P (abfd) && intopt.kind == ODK_REGINFO) { bfd_byte buf[8]; @@ -4536,6 +4545,14 @@ _bfd_mips_elf_section_from_shdr (bfd *ab bfd_mips_elf_swap_options_in (abfd, (Elf_External_Options *) l, &intopt); + if (intopt.size < sizeof (Elf_External_Options)) + { + (*_bfd_error_handler) + (_("Warning: bad `%s' option size %u smaller than its header"), + MIPS_ELF_OPTIONS_SECTION_NAME (abfd), intopt.size); + break; + } + if (ABI_64_P (abfd) && intopt.kind == ODK_REGINFO) { Elf64_Internal_RegInfo intreg; Modified: stable/8/contrib/gcc/config/mips/freebsd.h ============================================================================== --- stable/8/contrib/gcc/config/mips/freebsd.h Sat Nov 27 09:26:46 2010 (r215937) +++ stable/8/contrib/gcc/config/mips/freebsd.h Sat Nov 27 12:26:40 2010 (r215938) @@ -65,19 +65,23 @@ Boston, MA 02110-1301, USA. */ #undef LINK_SPEC #define LINK_SPEC "\ - %{G*} %{mips1} %{mips2} %{mips3} %{mips4} %{mips32} %{mips32r2} %{mips64} \ + %{EB} %{EL} %(endian_spec) \ + %{G*} %{mips1} %{mips2} %{mips3} %{mips4} \ + %{mips32} %{mips32r2} %{mips64} %{mips64r2} \ %{bestGnum} %{call_shared} %{no_archive} %{exact_version} \ - %(fbsd_link_spec) " -#if 0 - %(endian_spec) -#endif + %{mabi=32:-melf32%{EB:b}%{EL:l}tsmip_fbsd} \ + %{mabi=n32:-melf32%{EB:b}%{EL:l}tsmipn32_fbsd} \ + %{mabi=64:-melf64%{EB:b}%{EL:l}tsmip_fbsd} \ + %{mabi=o64:-melf64%{EB:b}%{EL:l}tsmip_fbsd} \ + %(fbsd_link_spec)" + /* Reset our STARTFILE_SPEC which was properly set in config/freebsd.h but trashed by config/mips/elf.h. */ #undef STARTFILE_SPEC #define STARTFILE_SPEC FBSD_STARTFILE_SPEC -/* Provide an ENDFILE_SPEC appropriate for FreeBSD/i386. */ +/* Provide an ENDFILE_SPEC appropriate for FreeBSD/mips. */ #undef ENDFILE_SPEC #define ENDFILE_SPEC FBSD_ENDFILE_SPEC @@ -97,6 +101,9 @@ Boston, MA 02110-1301, USA. */ Needs to agree with . GCC defaults come from c-decl.c, c-common.c, and config//.h. */ +#undef TARGET_DEFAULT +#define TARGET_DEFAULT (MASK_ABICALLS | MASK_SOFT_FLOAT) + #if TARGET_ENDIAN_DEFAULT != 0 #define TARGET_VERSION fprintf (stderr, " (FreeBSD/mips)"); #else @@ -127,29 +134,107 @@ Boston, MA 02110-1301, USA. */ if (TARGET_MIPS16) \ builtin_define ("__mips16"); \ \ + if (mips_abi == ABI_N32) \ + { \ + builtin_define ("__mips_n32"); \ + builtin_define ("_ABIN32=2"); \ + builtin_define ("_MIPS_SIM=_ABIN32"); \ + builtin_define ("_MIPS_SZLONG=32"); \ + builtin_define ("_MIPS_SZPTR=32"); \ + } \ + else if (mips_abi == ABI_64) \ + { \ + builtin_define ("__mips_n64"); \ + builtin_define ("_ABI64=3"); \ + builtin_define ("_MIPS_SIM=_ABI64"); \ + builtin_define ("_MIPS_SZLONG=64"); \ + builtin_define ("_MIPS_SZPTR=64"); \ + } \ + else if (mips_abi == ABI_O64) \ + { \ + builtin_define ("__mips_o64"); \ + builtin_define ("_ABIO64=4"); \ + builtin_define ("_MIPS_SIM=_ABIO64"); \ + builtin_define ("_MIPS_SZLONG=64"); \ + builtin_define ("_MIPS_SZPTR=64"); \ + } \ + else if (mips_abi == ABI_EABI) \ + { \ + builtin_define ("__mips_eabi"); \ + builtin_define ("_ABIEMB=5"); \ + builtin_define ("_MIPS_SIM=_ABIEMB"); \ + if (TARGET_LONG64) \ + builtin_define ("_MIPS_SZLONG=64"); \ + else \ + builtin_define ("_MIPS_SZLONG=32"); \ + if (TARGET_64BIT) \ + builtin_define ("_MIPS_SZPTR=64"); \ + else \ + builtin_define ("_MIPS_SZPTR=32"); \ + } \ + else \ + { \ + builtin_define ("__mips_o32"); \ + builtin_define ("_ABIO32=1"); \ + builtin_define ("_MIPS_SIM=_ABIO32"); \ + builtin_define ("_MIPS_SZLONG=32"); \ + builtin_define ("_MIPS_SZPTR=32"); \ + } \ + if (TARGET_FLOAT64) \ + builtin_define ("_MIPS_FPSET=32"); \ + else \ + builtin_define ("_MIPS_FPSET=16"); \ + \ + builtin_define ("_MIPS_SZINT=32"); \ + \ MIPS_CPP_SET_PROCESSOR ("_MIPS_ARCH", mips_arch_info); \ MIPS_CPP_SET_PROCESSOR ("_MIPS_TUNE", mips_tune_info); \ \ - if (ISA_MIPS3) \ - builtin_define ("__mips=3"); \ + if (ISA_MIPS1) \ + { \ + builtin_define ("__mips=1"); \ + builtin_define ("_MIPS_ISA=_MIPS_ISA_MIPS1"); \ + } \ + else if (ISA_MIPS2) \ + { \ + builtin_define ("__mips=2"); \ + builtin_define ("_MIPS_ISA=_MIPS_ISA_MIPS2"); \ + } \ + else if (ISA_MIPS3) \ + { \ + builtin_define ("__mips=3"); \ + builtin_define ("_MIPS_ISA=_MIPS_ISA_MIPS3"); \ + } \ else if (ISA_MIPS4) \ - builtin_define ("__mips=4"); \ + { \ + builtin_define ("__mips=4"); \ + builtin_define ("_MIPS_ISA=_MIPS_ISA_MIPS4"); \ + } \ else if (ISA_MIPS32) \ { \ builtin_define ("__mips=32"); \ + builtin_define ("_MIPS_ISA=_MIPS_ISA_MIPS32"); \ builtin_define ("__mips_isa_rev=1"); \ } \ else if (ISA_MIPS32R2) \ { \ builtin_define ("__mips=32"); \ + builtin_define ("_MIPS_ISA=_MIPS_ISA_MIPS32"); \ builtin_define ("__mips_isa_rev=2"); \ } \ else if (ISA_MIPS64) \ { \ builtin_define ("__mips=64"); \ + builtin_define ("_MIPS_ISA=_MIPS_ISA_MIPS64"); \ builtin_define ("__mips_isa_rev=1"); \ } \ - \ +/* else if (ISA_MIPS64R2) \ + { \ + builtin_define ("__mips=64"); \ + builtin_define ("_MIPS_ISA=_MIPS_ISA_MIPS64"); \ + builtin_define ("__mips_isa_rev=2"); \ + } \ +*/ \ if (TARGET_HARD_FLOAT) \ builtin_define ("__mips_hard_float"); \ else if (TARGET_SOFT_FLOAT) \ @@ -164,29 +249,33 @@ Boston, MA 02110-1301, USA. */ builtin_define ("__MIPSEL__"); \ \ /* No language dialect defines. */ \ - \ - if (mips_abi == ABI_EABI) \ - builtin_define ("__mips_eabi"); \ - else if (mips_abi == ABI_N32) \ - builtin_define ("__mips_n32"); \ - else if (mips_abi == ABI_64) \ - builtin_define ("__mips_n64"); \ - else if (mips_abi == ABI_O64) \ - builtin_define ("__mips_o64"); \ - else \ - builtin_define ("__mips_o32"); \ - \ if (TARGET_ABICALLS) \ builtin_define ("__ABICALLS__"); \ } \ while (0) -/* Default to the mips32 ISA */ -#undef DRIVER_SELF_SPECS +/* Default ABI and ISA */ +#undef DRIVER_SELF_SPECS +#if MIPS_ABI_DEFAULT == ABI_N32 #define DRIVER_SELF_SPECS \ - "%{!march=*: -march=mips32}" -#if 0 - "%{!EB:%{!EL:%(endian_spec)}}", + "%{!EB:%{!EL:%(endian_spec)}}", \ + "%{!march=*: -march=mips64}", \ + "%{!mabi=*: -mabi=n32}" +#elif MIPS_ABI_DEFAULT == ABI_64 +#define DRIVER_SELF_SPECS \ + "%{!EB:%{!EL:%(endian_spec)}}", \ + "%{!march=*: -march=mips64}", \ + "%{!mabi=*: -mabi=64}" +#elif MIPS_ABI_DEFAULT == ABI_O64 +#define DRIVER_SELF_SPECS \ + "%{!EB:%{!EL:%(endian_spec)}}", \ + "%{!march=*: -march=mips64}", \ + "%{!mabi=*: -mabi=o64}" +#else /* default to o32 */ +#define DRIVER_SELF_SPECS \ + "%{!EB:%{!EL:%(endian_spec)}}", \ + "%{!march=*: -march=mips32}", \ + "%{!mabi=*: -mabi=32}" #endif #if 0 @@ -238,6 +327,15 @@ Boston, MA 02110-1301, USA. */ #undef LOCAL_LABEL_PREFIX #define LOCAL_LABEL_PREFIX "." +/* Currently we don't support 128bit long doubles, so for now we force + n32 to be 64bit. */ +#undef LONG_DOUBLE_TYPE_SIZE +#define LONG_DOUBLE_TYPE_SIZE 64 + +#ifdef IN_LIBGCC2 +#undef LIBGCC2_LONG_DOUBLE_TYPE_SIZE +#define LIBGCC2_LONG_DOUBLE_TYPE_SIZE 64 +#endif /************************[ Debugger stuff ]*********************************/ Modified: stable/8/gnu/lib/libgcc/Makefile ============================================================================== --- stable/8/gnu/lib/libgcc/Makefile Sat Nov 27 09:26:46 2010 (r215937) +++ stable/8/gnu/lib/libgcc/Makefile Sat Nov 27 12:26:40 2010 (r215938) @@ -115,6 +115,10 @@ LIB2FUNCS_EXTRA = floatunsidf.c floatuns # _fixsfsi _fixunssfsi _floatdidf _floatdisf .endif +.if ${TARGET_ARCH} == "mips" +LIB2FUNCS_EXTRA = floatunsidf.c floatunsisf.c +.endif + .if ${TARGET_ARCH} == "ia64" # from config/ia64/t-ia64 LIB1ASMSRC = lib1funcs.asm @@ -179,7 +183,7 @@ OBJ_GRPS = STD DIV # # Floating point emulation functions # -.if ${TARGET_ARCH} == "armNOT_YET" || ${TARGET_ARCH} == "mips" || \ +.if ${TARGET_ARCH} == "armNOT_YET" || \ ${TARGET_ARCH} == "powerpc" || ${TARGET_ARCH} == "sparc64" FPBIT_CFLAGS = -DFINE_GRAINED_LIBRARIES -DFLOAT Modified: stable/8/gnu/usr.bin/binutils/Makefile.inc0 ============================================================================== --- stable/8/gnu/usr.bin/binutils/Makefile.inc0 Sat Nov 27 09:26:46 2010 (r215937) +++ stable/8/gnu/usr.bin/binutils/Makefile.inc0 Sat Nov 27 12:26:40 2010 (r215938) @@ -22,7 +22,8 @@ RELTOP:= .. RELSRC= ${RELTOP}/../../../contrib/binutils SRCDIR= ${.CURDIR}/${RELSRC} -.if ${TARGET_ARCH} == "arm" || ${TARGET_ARCH} == "i386" || ${TARGET_ARCH} == "powerpc" +.if ${TARGET_ARCH} == "arm" || ${TARGET_ARCH} == "i386" || \ + ${TARGET_ARCH} == "powerpc" || ${TARGET_ARCH} == "mips" CFLAGS+= -DBFD_DEFAULT_TARGET_SIZE=32 .else CFLAGS+= -DBFD_DEFAULT_TARGET_SIZE=64 Modified: stable/8/gnu/usr.bin/binutils/ld/Makefile.mips ============================================================================== --- stable/8/gnu/usr.bin/binutils/ld/Makefile.mips Sat Nov 27 09:26:46 2010 (r215937) +++ stable/8/gnu/usr.bin/binutils/ld/Makefile.mips Sat Nov 27 12:26:40 2010 (r215938) @@ -10,15 +10,23 @@ NATIVE_EMULATION=elf${_sz}btsmip_fbsd NATIVE_EMULATION=elf${_sz}ltsmip_fbsd .endif -SRCS+= e${NATIVE_EMULATION}.c -CLEANFILES+= e${NATIVE_EMULATION}.c - +MIPS_ABIS=elf32btsmip_fbsd elf32ltsmip_fbsd elf64btsmip_fbsd elf64ltsmip_fbsd \ + elf32btsmipn32_fbsd elf32ltsmipn32_fbsd +.for abi in ${MIPS_ABIS} +#.if (${abi} != ${NATIVE_EMULATION}) +EMS+= ${abi} +#.endif +.for ext in ${ELF_SCR_EXT} +LDSCRIPTS+= ${abi}.${ext} +.endfor +SRCS+= e${abi}.c +CLEANFILES+= e${abi}.c # nb: elf32 handles both elf32 and elf64 targets -e${NATIVE_EMULATION}.c: ${.CURDIR}/${NATIVE_EMULATION}.sh emultempl/elf32.em \ +e${abi}.c: ${.CURDIR}/${abi}.sh emultempl/elf32.em \ scripttempl/elf.sc genscripts.sh stringify.sed sh ${.CURDIR}/genscripts.sh ${SRCDIR}/ld ${LIBSERACHPATH} \ ${TOOLS_PREFIX}/usr \ ${HOST} ${TARGET_TUPLE} ${TARGET_TUPLE} \ - ${NATIVE_EMULATION} "" no ${NATIVE_EMULATION} ${TARGET_TUPLE} \ - ${.CURDIR}/${NATIVE_EMULATION}.sh - + ${abi} "" no ${abi} ${TARGET_TUPLE} \ + ${.CURDIR}/${abi}.sh +.endfor Copied and modified: stable/8/gnu/usr.bin/binutils/ld/elf32btsmipn32_fbsd.sh (from r204548, head/gnu/usr.bin/binutils/ld/elf32btsmipn32_fbsd.sh) ============================================================================== --- head/gnu/usr.bin/binutils/ld/elf32btsmipn32_fbsd.sh Tue Mar 2 05:43:04 2010 (r204548, copy source) +++ stable/8/gnu/usr.bin/binutils/ld/elf32btsmipn32_fbsd.sh Sat Nov 27 12:26:40 2010 (r215938) @@ -1,4 +1,5 @@ # $FreeBSD$ -. ${srcdir}/emulparams/elf32btsmip.sh +. ${srcdir}/emulparams/elf32btsmipn32.sh . ${srcdir}/emulparams/elf_fbsd.sh GENERATE_PIE_SCRIPT=yes +ALIGNMENT=8 Copied and modified: stable/8/gnu/usr.bin/binutils/ld/elf32ltsmipn32_fbsd.sh (from r204548, head/gnu/usr.bin/binutils/ld/elf32ltsmipn32_fbsd.sh) ============================================================================== --- head/gnu/usr.bin/binutils/ld/elf32ltsmipn32_fbsd.sh Tue Mar 2 05:43:04 2010 (r204548, copy source) +++ stable/8/gnu/usr.bin/binutils/ld/elf32ltsmipn32_fbsd.sh Sat Nov 27 12:26:40 2010 (r215938) @@ -1,4 +1,5 @@ # $FreeBSD$ -. ${srcdir}/emulparams/elf32ltsmip.sh +. ${srcdir}/emulparams/elf32ltsmipn32.sh . ${srcdir}/emulparams/elf_fbsd.sh GENERATE_PIE_SCRIPT=yes +ALIGNMENT=8 Modified: stable/8/gnu/usr.bin/cc/Makefile.inc ============================================================================== --- stable/8/gnu/usr.bin/cc/Makefile.inc Sat Nov 27 09:26:46 2010 (r215937) +++ stable/8/gnu/usr.bin/cc/Makefile.inc Sat Nov 27 12:26:40 2010 (r215938) @@ -30,6 +30,39 @@ CFLAGS+= -DLONG_TYPE_SIZE=${LONG_TYPE_SI CFLAGS+= -DCROSS_COMPILE .endif +.if ${TARGET_ARCH} == "mips" +# XXX This is backwards, MIPS should default to BE. +.if !defined(TARGET_BIG_ENDIAN) +CFLAGS += -DTARGET_ENDIAN_DEFAULT=0 +.endif + +.if defined(TARGET_ABI) && ${TARGET_ABI} != "o32" +.if ${TARGET_ABI} == "n32" +MIPS_ABI_DEFAULT=ABI_N32 +.elif ${TARGET_ABI} == "n64" +MIPS_ABI_DEFAULT=ABI_64 +.endif +.endif + +MIPS_ABI_DEFAULT?=ABI_32 +CFLAGS += -DMIPS_ABI_DEFAULT=${MIPS_ABI_DEFAULT} + +# If we are compiling for the O32 ABI, we need to default to MIPS-III rather +# than taking the ISA from the ABI requirements, since FreeBSD is built with +# a number of MIPS-III features/instructions and that is the minimum ISA we +# support, not the O32 default MIPS-I. +.if ${MIPS_ABI_DEFAULT} == "ABI_32" +TARGET_CPUTYPE?=mips3 +.endif + +# GCC by default takes the ISA from the ABI's requirements. If world is built +# with a superior ISA, since we lack multilib, we have to set the right +# default ISA to be able to link against what's in /usr/lib. Terrible stuff. +.if defined(TARGET_CPUTYPE) +CFLAGS += -DMIPS_CPU_STRING_DEFAULT=\"${TARGET_CPUTYPE}\" +.endif +.endif + .if defined(WANT_FORCE_OPTIMIZATION_DOWNGRADE) CFLAGS+= -DFORCE_OPTIMIZATION_DOWNGRADE=${WANT_FORCE_OPTIMIZATION_DOWNGRADE} .endif Modified: stable/8/gnu/usr.bin/cc/Makefile.tgt ============================================================================== --- stable/8/gnu/usr.bin/cc/Makefile.tgt Sat Nov 27 09:26:46 2010 (r215937) +++ stable/8/gnu/usr.bin/cc/Makefile.tgt Sat Nov 27 12:26:40 2010 (r215938) @@ -15,9 +15,6 @@ GCC_CPU= ${TARGET_ARCH} .if ${TARGET_ARCH} == "ia64" TARGET_CPU_DEFAULT= MASK_GNU_AS|MASK_GNU_LD .endif -.if ${TARGET_ARCH} == "mips" -TARGET_CPU_DEFAULT= 16 -.endif .if ${TARGET_ARCH} == "sparc64" TARGET_CPU_DEFAULT= TARGET_CPU_ultrasparc .endif Modified: stable/8/lib/libc/Makefile ============================================================================== --- stable/8/lib/libc/Makefile Sat Nov 27 09:26:46 2010 (r215937) +++ stable/8/lib/libc/Makefile Sat Nov 27 12:26:40 2010 (r215938) @@ -51,7 +51,12 @@ NOASM= .include "${.CURDIR}/posix1e/Makefile.inc" .if ${MACHINE_ARCH} != "amd64" && \ ${MACHINE_ARCH} != "ia64" && \ - ${MACHINE_ARCH} != "sparc64" + ${MACHINE_ARCH} != "sparc64" && \ + ${MACHINE_ARCH} != "mips" +.include "${.CURDIR}/quad/Makefile.inc" +.endif +.if ${MACHINE_ARCH} == "mips" && \ + (!defined(TARGET_ABI) || ${TARGET_ABI} == "o32") .include "${.CURDIR}/quad/Makefile.inc" .endif .include "${.CURDIR}/regex/Makefile.inc" @@ -64,7 +69,7 @@ NOASM= .include "${.CURDIR}/rpc/Makefile.inc" .include "${.CURDIR}/uuid/Makefile.inc" .include "${.CURDIR}/xdr/Makefile.inc" -.if ${MACHINE_ARCH} == "arm" +.if ${MACHINE_ARCH} == "arm" || ${MACHINE_ARCH} == "mips" .include "${.CURDIR}/softfloat/Makefile.inc" .endif .if ${MK_NIS} != "no" Modified: stable/8/lib/libc/mips/Makefile.inc ============================================================================== --- stable/8/lib/libc/mips/Makefile.inc Sat Nov 27 09:26:46 2010 (r215937) +++ stable/8/lib/libc/mips/Makefile.inc Sat Nov 27 12:26:40 2010 (r215938) @@ -1,8 +1,6 @@ # $NetBSD: Makefile.inc,v 1.7 2005/09/17 11:49:39 tsutsui Exp $ # $FreeBSD$ -SOFTFLOAT_BITS=32 - CFLAGS+=-DSOFTFLOAT MDSRCS+= machdep_ldisd.c Modified: stable/8/lib/libc/mips/SYS.h ============================================================================== --- stable/8/lib/libc/mips/SYS.h Sat Nov 27 09:26:46 2010 (r215937) +++ stable/8/lib/libc/mips/SYS.h Sat Nov 27 12:26:40 2010 (r215938) @@ -1,4 +1,4 @@ -/* $NetBSD: SYS.h,v 1.18 2003/10/29 12:28:33 pooka Exp $ */ +/* $NetBSD: SYS.h,v 1.19 2009/12/14 01:07:41 matt Exp $ */ /* $FreeBSD$ */ /*- @@ -79,14 +79,22 @@ */ #ifdef __ABICALLS__ .abicalls -# define PIC_PROLOGUE(x,sr) .set noreorder; .cpload sr; .set reorder -# define PIC_CALL(l,sr) la sr, _C_LABEL(l); jr sr +# if defined(__mips_o32) || defined(__mips_o64) +# define PIC_PROLOGUE(x) SETUP_GP +# define PIC_TAILCALL(l) PTR_LA t9, _C_LABEL(l); jr t9 +# define PIC_RETURN() j ra +# else +# define PIC_PROLOGUE(x) SETUP_GP64(t3, x) +# define PIC_TAILCALL(l) PTR_LA t9, _C_LABEL(l); RESTORE_GP64; jr t9 +# define PIC_RETURN() RESTORE_GP64; j ra +# endif #else -# define PIC_PROLOGUE(x,sr) -# define PIC_CALL(l,sr) j _C_LABEL(l) -#endif +# define PIC_PROLOGUE(x) +# define PIC_TAILCALL(l) j _C_LABEL(l) +# define PIC_RETURN() j ra +#endif /* __ABICALLS__ */ -# define SYSTRAP(x) li v0, SYS_ ## x; syscall; +# define SYSTRAP(x) li v0,SYS_ ## x; syscall; /* * Do a syscall that cannot fail (sync, get{p,u,g,eu,eg)id) @@ -106,7 +114,7 @@ */ #define PSEUDO_NOERROR(x) \ LEAF(__sys_ ## x); \ - .weak _C_LABEL(x); \ + .weak _C_LABEL(x); \ _C_LABEL(x) = _C_LABEL(__CONCAT(__sys_,x)); \ .weak _C_LABEL(__CONCAT(_,x)); \ _C_LABEL(__CONCAT(_,x)) = _C_LABEL(__CONCAT(__sys_,x)); \ @@ -116,14 +124,14 @@ LEAF(__sys_ ## x); \ #define PSEUDO(x) \ LEAF(__sys_ ## x); \ - .weak _C_LABEL(x); \ + .weak _C_LABEL(x); \ _C_LABEL(x) = _C_LABEL(__CONCAT(__sys_,x)); \ .weak _C_LABEL(__CONCAT(_,x)); \ _C_LABEL(__CONCAT(_,x)) = _C_LABEL(__CONCAT(__sys_,x)); \ - PIC_PROLOGUE(x,t9); \ + PIC_PROLOGUE(__sys_ ## x); \ SYSTRAP(x); \ bne a3,zero,err; \ - j ra; \ + PIC_RETURN(); \ err: \ - PIC_CALL(__cerror,t9); \ - END(__sys_ ## x) + PIC_TAILCALL(__cerror); \ +END(__sys_ ## x) Modified: stable/8/lib/libc/mips/Symbol.map ============================================================================== --- stable/8/lib/libc/mips/Symbol.map Sat Nov 27 09:26:46 2010 (r215937) +++ stable/8/lib/libc/mips/Symbol.map Sat Nov 27 12:26:40 2010 (r215938) @@ -24,13 +24,9 @@ FBSD_1.0 { sigsetjmp; siglongjmp; htonl; - __htonl; htons; - __htons; ntohl; - __ntohl; ntohs; - __ntohs; vfork; brk; cerror; /* XXX - Should this be .cerror (see sys/cerror.S)? */ @@ -56,9 +52,27 @@ FBSDprivate_1.0 { __siglongjmp; __sys_vfork; _vfork; - end; /* XXX - Should this be _end (see sys/brk.S)? */ - curbrk; + _end; + __curbrk; minbrk; _brk; _sbrk; + + /* softfloat */ + __addsf3; + __adddf3; + __subsf3; + __subdf3; + __mulsf3; + __muldf3; + __divsf3; + __divdf3; + __floatsisf; + __floatsidf; + __fixsfsi; + __fixdfsi; + __fixunssfsi; + __fixunsdfsi; + __extendsfdf2; + __truncdfsf2; }; Modified: stable/8/lib/libc/mips/gen/Makefile.inc ============================================================================== --- stable/8/lib/libc/mips/gen/Makefile.inc Sat Nov 27 09:26:46 2010 (r215937) +++ stable/8/lib/libc/mips/gen/Makefile.inc Sat Nov 27 12:26:40 2010 (r215938) @@ -6,4 +6,4 @@ SRCS+= infinity.c fabs.c ldexp.c modf.c # SRCS+= flt_rounds.c fpgetmask.c fpgetround.c fpgetsticky.c fpsetmask.c \ # fpsetround.c fpsetsticky.c -SRCS+= _set_tp.c _setjmp.S makecontext.c setjmp.S signalcontext.c sigsetjmp.S +SRCS+= _ctx_start.S _set_tp.c _setjmp.S makecontext.c setjmp.S signalcontext.c sigsetjmp.S Copied: stable/8/lib/libc/mips/gen/_ctx_start.S (from r209233, head/lib/libc/mips/gen/_ctx_start.S) ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ stable/8/lib/libc/mips/gen/_ctx_start.S Sat Nov 27 12:26:40 2010 (r215938, copy of r209233, head/lib/libc/mips/gen/_ctx_start.S) @@ -0,0 +1,41 @@ +/*- + * Copyright (c) 2010 Juli Mallett. + * All rights reserved. + * + * Redistribution and use in source and binary forms, with or without + * modification, are permitted provided that the following conditions + * are met: + * 1. Redistributions of source code must retain the above copyright + * notice, this list of conditions and the following disclaimer. + * 2. Redistributions in binary form must reproduce the above copyright + * notice, this list of conditions and the following disclaimer in the + * documentation and/or other materials provided with the distribution. + * + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND + * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + * ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE + * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + * SUCH DAMAGE. + */ + +#include +__FBSDID("$FreeBSD$"); + +/* + * XXX gp? + */ +ENTRY(_ctx_start) + jalr t9 + + move a0, s0 + PTR_LA t9, _ctx_done + jalr t9 + + break 0 +END(_ctx_start) Modified: stable/8/lib/libc/mips/gen/_setjmp.S ============================================================================== --- stable/8/lib/libc/mips/gen/_setjmp.S Sat Nov 27 09:26:46 2010 (r215937) +++ stable/8/lib/libc/mips/gen/_setjmp.S Sat Nov 27 12:26:40 2010 (r215938) @@ -1,4 +1,4 @@ -/* $NetBSD: _setjmp.S,v 1.20 2005/10/07 17:16:40 tsutsui Exp $ */ +/* $NetBSD: _setjmp.S,v 1.20.34.5 2010/02/03 23:46:47 matt Exp $ */ /*- * Copyright (c) 1991, 1993 @@ -36,14 +36,15 @@ __FBSDID("$FreeBSD$"); #include -#if defined(LIBC_SCCS) && !defined(lint) - ASMSTR("from: @(#)_setjmp.s 8.1 (Berkeley) 6/4/93") - ASMSTR("$NetBSD: _setjmp.S,v 1.20 2005/10/07 17:16:40 tsutsui Exp $") -#endif /* LIBC_SCCS and not lint */ +#include "SYS.h" -#ifdef __ABICALLS__ - .abicalls +#if defined(LIBC_SCCS) && !defined(lint) +#if 0 + RCSID("from: @(#)_setjmp.s 8.1 (Berkeley) 6/4/93") +#else + RCSID("$NetBSD: _setjmp.S,v 1.20.34.5 2010/02/03 23:46:47 matt Exp $") #endif +#endif /* LIBC_SCCS and not lint */ /* * C library -- _setjmp, _longjmp @@ -56,62 +57,70 @@ __FBSDID("$FreeBSD$"); * The previous signal state is NOT restored. */ + .set noreorder LEAF(_setjmp) -#ifdef __ABICALLS__ - .set noreorder - .cpload t9 - subu sp, sp, CALLFRAME_SIZ # allocate stack frame - .cprestore 16 + REG_PROLOGUE + REG_LI v0, _JB_MAGIC__SETJMP + REG_S v0, (_JB_MAGIC * SZREG)(a0) + REG_S ra, (_JB_REG_RA * SZREG)(a0) + REG_S s0, (_JB_REG_S0 * SZREG)(a0) + REG_S s1, (_JB_REG_S1 * SZREG)(a0) + REG_S s2, (_JB_REG_S2 * SZREG)(a0) + REG_S s3, (_JB_REG_S3 * SZREG)(a0) + REG_S s4, (_JB_REG_S4 * SZREG)(a0) + REG_S s5, (_JB_REG_S5 * SZREG)(a0) + REG_S s6, (_JB_REG_S6 * SZREG)(a0) + REG_S s7, (_JB_REG_S7 * SZREG)(a0) + REG_S s8, (_JB_REG_S8 * SZREG)(a0) +#if defined(__mips_n32) || defined(__mips_n64) + REG_S gp, (_JB_REG_GP * SZREG)(a0) # newabi gp is callee-saved #endif - li v0, _JB_MAGIC__SETJMP - sw v0, (_JB_MAGIC * SZREG)(a0) - sw ra, (_JB_REG_RA * SZREG)(a0) - sw s0, (_JB_REG_S0 * SZREG)(a0) - sw s1, (_JB_REG_S1 * SZREG)(a0) - sw s2, (_JB_REG_S2 * SZREG)(a0) - sw s3, (_JB_REG_S3 * SZREG)(a0) - sw s4, (_JB_REG_S4 * SZREG)(a0) - sw s5, (_JB_REG_S5 * SZREG)(a0) - sw s6, (_JB_REG_S6 * SZREG)(a0) - sw s7, (_JB_REG_S7 * SZREG)(a0) - sw s8, (_JB_REG_S8 * SZREG)(a0) -#ifdef __ABICALLS__ - addu sp, sp, CALLFRAME_SIZ # un-allocate the stack frame -#endif - sw sp, (_JB_REG_SP * SZREG)(a0) + REG_S sp, (_JB_REG_SP * SZREG)(a0) + REG_EPILOGUE + j ra move v0, zero END(_setjmp) LEAF(_longjmp) -#ifdef __ABICALLS__ - .set noreorder - .cpload t9 - subu sp, sp, CALLFRAME_SIZ # allocate stack frame - .cprestore 16 -#endif - lw v0, (_JB_MAGIC * SZREG)(a0) - lw ra, (_JB_REG_RA * SZREG)(a0) - li t0, _JB_MAGIC__SETJMP - bne v0, t0, botch # jump if error - lw s0, (_JB_REG_S0 * SZREG)(a0) - lw s1, (_JB_REG_S1 * SZREG)(a0) - lw s2, (_JB_REG_S2 * SZREG)(a0) - lw s3, (_JB_REG_S3 * SZREG)(a0) - lw s4, (_JB_REG_S4 * SZREG)(a0) - lw s5, (_JB_REG_S5 * SZREG)(a0) - lw s6, (_JB_REG_S6 * SZREG)(a0) - lw s7, (_JB_REG_S7 * SZREG)(a0) - lw sp, (_JB_REG_SP * SZREG)(a0) - lw s8, (_JB_REG_S8 * SZREG)(a0) + PIC_PROLOGUE(_longjmp) + PTR_SUBU sp, sp, CALLFRAME_SIZ + SAVE_GP(CALLFRAME_GP) + + REG_PROLOGUE + REG_L v0, (_JB_MAGIC * SZREG)(a0) # get magic number + REG_L ra, (_JB_REG_RA * SZREG)(a0) + REG_LI t0, _JB_MAGIC__SETJMP + bne v0, t0, botch # jump if error + PTR_ADDU sp, sp, CALLFRAME_SIZ # does not matter, sanity + REG_L s0, (_JB_REG_S0 * SZREG)(a0) + REG_L s1, (_JB_REG_S1 * SZREG)(a0) + REG_L s2, (_JB_REG_S2 * SZREG)(a0) + REG_L s3, (_JB_REG_S3 * SZREG)(a0) + REG_L s4, (_JB_REG_S4 * SZREG)(a0) + REG_L s5, (_JB_REG_S5 * SZREG)(a0) + REG_L s6, (_JB_REG_S6 * SZREG)(a0) + REG_L s7, (_JB_REG_S7 * SZREG)(a0) +#if defined(__mips_n32) || defined(__mips_n64) + REG_L gp, (_JB_REG_GP * SZREG)(a0) +#endif + REG_L sp, (_JB_REG_SP * SZREG)(a0) + REG_L s8, (_JB_REG_S8 * SZREG)(a0) + REG_EPILOGUE + move v0, a1 # get return value in 1st arg j ra - move v0, a1 + nop botch: - jal _C_LABEL(longjmperror) - nop - jal _C_LABEL(abort) + /* + * We know we aren't returning so we don't care about restoring + * our caller's GP. + */ + PTR_LA t9, _C_LABEL(longjmperror) + jalr t9 nop + + PIC_TAILCALL(abort) END(_longjmp) Modified: stable/8/lib/libc/mips/gen/makecontext.c ============================================================================== --- stable/8/lib/libc/mips/gen/makecontext.c Sat Nov 27 09:26:46 2010 (r215937) +++ stable/8/lib/libc/mips/gen/makecontext.c Sat Nov 27 12:26:40 2010 (r215938) @@ -1,4 +1,4 @@ -/* $NetBSD: makecontext.c,v 1.3 2003/01/19 08:53:36 matt Exp $ */ +/* $NetBSD: makecontext.c,v 1.5 2009/12/14 01:07:42 matt Exp $ */ /*- * Copyright (c) 2001 The NetBSD Foundation, Inc. @@ -15,13 +15,6 @@ * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in the * documentation and/or other materials provided with the distribution. - * 3. All advertising materials mentioning features or use of this software - * must display the following acknowledgement: - * This product includes software developed by the NetBSD - * Foundation, Inc. and its contributors. - * 4. Neither the name of The NetBSD Foundation nor the names of its - * contributors may be used to endorse or promote products derived - * from this software without specific prior written permission. * * THIS SOFTWARE IS PROVIDED BY THE NETBSD FOUNDATION, INC. AND CONTRIBUTORS * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED @@ -39,48 +32,92 @@ #include __FBSDID("$FreeBSD$"); #if defined(LIBC_SCCS) && !defined(lint) -__RCSID("$NetBSD: makecontext.c,v 1.3 2003/01/19 08:53:36 matt Exp $"); +__RCSID("$NetBSD: makecontext.c,v 1.5 2009/12/14 01:07:42 matt Exp $"); #endif -#include -#include +#include +#include + #include +#include +#include +#include +#include + +__weak_reference(__makecontext, makecontext); + +void _ctx_done(ucontext_t *); +void _ctx_start(void); void -makecontext(ucontext_t *ucp, void (*func)(void), int argc, ...) +__makecontext(ucontext_t *ucp, void (*func)(void), int argc, ...) { - /* XXXMIPS: Implement me */ -#if 0 - __greg_t *gr = ucp->uc_mcontext.__gregs; - uintptr_t *sp; + mcontext_t *mc; + register_t *sp; int i; va_list ap; - void __resumecontext(void); + /* + * XXX/juli + * We need an mc_len or mc_flags like other architectures + * so that we can mark a context as invalid. Store it in + * mc->mc_regs[ZERO] perhaps? + */ + if (argc < 0 || argc > 6 || ucp == NULL || + ucp->uc_stack.ss_sp == NULL || + ucp->uc_stack.ss_size < MINSIGSTKSZ) + return; + mc = &ucp->uc_mcontext; - /* LINTED uintptr_t is safe */ - sp = (uintptr_t *) + sp = (register_t *) ((uintptr_t)ucp->uc_stack.ss_sp + ucp->uc_stack.ss_size); - /* LINTED uintptr_t is safe */ +#if defined(__mips_o32) || defined(__mips_o64) sp -= (argc >= 4 ? argc : 4); /* Make room for >=4 arguments. */ - sp = (uintptr_t *) - ((uintptr_t)sp & ~0x7); /* Align on double-word boundary. */ + sp = (register_t *) + ((uintptr_t)sp & ~0x7); /* Align on double-word boundary. */ +#elif defined(__mips_n32) || defined(__mips_n64) + sp -= (argc > 8 ? argc - 8 : 0); /* Make room for > 8 arguments. */ + sp = (register_t *) + ((uintptr_t)sp & ~0xf); /* Align on quad-word boundary. */ +#endif - gr[_REG_SP] = (__greg_t)sp; - gr[_REG_RA] = (__greg_t)__resumecontext; - gr[_REG_T9] = (__greg_t)func; /* required for .abicalls */ - gr[_REG_EPC] = (__greg_t)func; + mc->mc_regs[SP] = (intptr_t)sp; + mc->mc_regs[S0] = (intptr_t)ucp; + mc->mc_regs[T9] = (intptr_t)func; + mc->mc_pc = (intptr_t)_ctx_start; /* Construct argument list. */ va_start(ap, argc); +#if defined(__mips_o32) || defined(__mips_o64) /* Up to the first four arguments are passed in $a0-3. */ for (i = 0; i < argc && i < 4; i++) - /* LINTED uintptr_t is safe */ - gr[_REG_A0 + i] = va_arg(ap, uintptr_t); + /* LINTED register_t is safe */ + mc->mc_regs[A0 + i] = va_arg(ap, register_t); + /* Pass remaining arguments on the stack above the $a0-3 gap. */ + sp += i; +#endif +#if defined(__mips_n32) || defined(__mips_n64) + /* Up to the first 8 arguments are passed in $a0-7. */ + for (i = 0; i < argc && i < 8; i++) + /* LINTED register_t is safe */ + mc->mc_regs[A0 + i] = va_arg(ap, register_t); /* Pass remaining arguments on the stack above the $a0-3 gap. */ - for (sp += 4; i < argc; i++) +#endif + /* Pass remaining arguments on the stack above the $a0-3 gap. */ + for (; i < argc; i++) /* LINTED uintptr_t is safe */ - *sp++ = va_arg(ap, uintptr_t); + *sp++ = va_arg(ap, register_t); va_end(ap); -#endif +} + +void +_ctx_done(ucontext_t *ucp) +{ + + if (ucp->uc_link == NULL) + exit(0); + else { + setcontext((const ucontext_t *)ucp->uc_link); + abort(); + } } Modified: stable/8/lib/libc/mips/gen/setjmp.S ============================================================================== --- stable/8/lib/libc/mips/gen/setjmp.S Sat Nov 27 09:26:46 2010 (r215937) +++ stable/8/lib/libc/mips/gen/setjmp.S Sat Nov 27 12:26:40 2010 (r215938) @@ -41,6 +41,8 @@ __FBSDID("$FreeBSD$"); ASMSTR("$NetBSD: setjmp.S,v 1.17 2005/09/17 11:49:39 tsutsui Exp $") #endif /* LIBC_SCCS and not lint */ +#include "SYS.h" + #ifdef __ABICALLS__ .abicalls #endif @@ -61,100 +63,102 @@ __FBSDID("$FreeBSD$"); NESTED(setjmp, SETJMP_FRAME_SIZE, ra) .mask 0x80000000, (CALLFRAME_RA - CALLFRAME_SIZ) - .set noreorder -#ifdef __ABICALLS__ - .cpload t9 -#endif - subu sp, sp, SETJMP_FRAME_SIZE # allocate stack frame -#ifdef __ABICALLS__ - .cprestore 16 -#endif - sw ra, CALLFRAME_RA(sp) # save RA - sw a0, CALLFRAME_SIZ(sp) # store env + SETUP_GP + PTR_SUBU sp, sp, SETJMP_FRAME_SIZE # allocate stack frame + SAVE_GP(CALLFRAME_GP) + SETUP_GP64(CALLFRAME_GP, setjmp) + + REG_S ra, CALLFRAME_RA(sp) # save RA + REG_S a0, CALLFRAME_SIZ(sp) # store env /* Get the signal mask. */ - addu a2, a0, _JB_SIGMASK * SZREG # &oenv + PTR_ADDU a2, a0, _JB_SIGMASK * SZREG # &oenv li a0, 1 # SIG_SETBLOCK move a1, zero # &env == 0 - la t9, _C_LABEL(sigprocmask) # get current signal mask - jal t9 - nop + PTR_LA t9, _C_LABEL(sigprocmask) # get current signal mask + jalr t9 - lw a0, CALLFRAME_SIZ(sp) # restore env pointer - lw ra, CALLFRAME_RA(sp) # restore RA - addu sp, sp, SETJMP_FRAME_SIZE # pop stack frame - - li v0, _JB_MAGIC_SETJMP - sw v0, (_JB_MAGIC * SZREG)(a0) - sw ra, (_JB_REG_RA * SZREG)(a0) - sw s0, (_JB_REG_S0 * SZREG)(a0) - sw s1, (_JB_REG_S1 * SZREG)(a0) - sw s2, (_JB_REG_S2 * SZREG)(a0) - sw s3, (_JB_REG_S3 * SZREG)(a0) - sw s4, (_JB_REG_S4 * SZREG)(a0) - sw s5, (_JB_REG_S5 * SZREG)(a0) - sw s6, (_JB_REG_S6 * SZREG)(a0) - sw s7, (_JB_REG_S7 * SZREG)(a0) - sw sp, (_JB_REG_SP * SZREG)(a0) - sw s8, (_JB_REG_S8 * SZREG)(a0) + RESTORE_GP64 + REG_L a0, CALLFRAME_SIZ(sp) # restore env pointer + REG_L ra, CALLFRAME_RA(sp) # restore RA + PTR_ADDU sp, sp, SETJMP_FRAME_SIZE # pop stack frame + + REG_LI v0, _JB_MAGIC_SETJMP + REG_S v0, (_JB_MAGIC * SZREG)(a0) + REG_S ra, (_JB_REG_RA * SZREG)(a0) + REG_S s0, (_JB_REG_S0 * SZREG)(a0) + REG_S s1, (_JB_REG_S1 * SZREG)(a0) + REG_S s2, (_JB_REG_S2 * SZREG)(a0) + REG_S s3, (_JB_REG_S3 * SZREG)(a0) + REG_S s4, (_JB_REG_S4 * SZREG)(a0) + REG_S s5, (_JB_REG_S5 * SZREG)(a0) + REG_S s6, (_JB_REG_S6 * SZREG)(a0) + REG_S s7, (_JB_REG_S7 * SZREG)(a0) + REG_S sp, (_JB_REG_SP * SZREG)(a0) + REG_S s8, (_JB_REG_S8 * SZREG)(a0) +#if defined(__mips_n32) || defined(__mips_n64) + REG_S gp, (_JB_REG_GP * SZREG)(a0) +#endif move v0, zero - j ra + jr ra END(setjmp) #define LONGJMP_FRAME_SIZE (CALLFRAME_SIZ + (SZREG * 2)) NESTED(longjmp, LONGJMP_FRAME_SIZE, ra) .mask 0x80000000, (CALLFRAME_RA - CALLFRAME_SIZ) - .set noreorder -#ifdef __ABICALLS__ - .cpload t9 -#endif - subu sp, sp, LONGJMP_FRAME_SIZE # allocate stack frame -#ifdef __ABICALLS__ - .cprestore 16 -#endif - sw ra, CALLFRAME_RA(sp) # save RA - lw v0, (_JB_MAGIC * SZREG)(a0) - li t0, _JB_MAGIC_SETJMP + PIC_PROLOGUE(longjmp) + PTR_SUBU sp, sp, LONGJMP_FRAME_SIZE # allocate stack frame + SAVE_GP(CALLFRAME_GP) + + REG_S ra, CALLFRAME_RA(sp) # save RA + REG_L v0, (_JB_MAGIC * SZREG)(a0) + REG_LI t0, _JB_MAGIC_SETJMP bne v0, t0, botch # jump if error nop - sw a0, CALLFRAME_SIZ(sp) # save env - sw a1, (CALLFRAME_SIZ + SZREG)(sp) # save return value + REG_S a0, CALLFRAME_SIZ(sp) # save env + REG_S a1, (CALLFRAME_SIZ + SZREG)(sp) # save return value # set sigmask - addu a1, a0, _JB_SIGMASK * SZREG # &set + PTR_ADDU a1, a0, _JB_SIGMASK * SZREG # &set move a2, zero # &oset == NULL li a0, 3 # SIG_SETMASK *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***