aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNicolas Pitre <nico@cam.org>2006-01-14 11:33:50 -0500
committerRussell King <rmk+kernel@arm.linux.org.uk>2006-01-14 11:33:50 -0500
commit704bdda03827db8a551e82b312037d63ba3c22ff (patch)
tree9e87a55ffd8189116ed7ae6df9fe5862fd0e7bb6
parentc155fc95befc95f4a9d6497f5fadec22f4bc3a24 (diff)
[ARM] 3107/3: ARM EABI: last bits to configure it
Patch from Nicolas Pitre This adds the configuration option, and disables any FPA floating point emulators which are not EABI compatible. It also disables Acorn RISC OS/Arthur binary support when CONFIG_EABI=y since it is incompatible with an EABI kernel. Signed-off-by: Nicolas Pitre <nico@cam.org> Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r--arch/arm/Kconfig19
-rw-r--r--arch/arm/Makefile7
2 files changed, 24 insertions, 2 deletions
diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig
index c4d585e2de7a..ead6172692db 100644
--- a/arch/arm/Kconfig
+++ b/arch/arm/Kconfig
@@ -401,6 +401,21 @@ config NO_IDLE_HZ
401 Currently at least OMAP, PXA2xx and SA11x0 platforms are known 401 Currently at least OMAP, PXA2xx and SA11x0 platforms are known
402 to have accurate timekeeping with dynamic tick. 402 to have accurate timekeeping with dynamic tick.
403 403
404config AEABI
405 bool "Use the ARM EABI to compile the kernel"
406 help
407 This option allows for the kernel to be compiled using the latest
408 ARM ABI (aka EABI). This is only useful if you are using a user
409 space environment that is also compiled with EABI.
410
411 Since there are major incompatibilities between the legacy ABI and
412 EABI, especially with regard to structure member alignment, this
413 option also changes the kernel syscall calling convention to
414 disambiguate both ABIs and allow for backward compatibility support
415 (selected with CONFIG_OABI_COMPAT).
416
417 To use this you need GCC version 4.0.0 or later.
418
404config ARCH_DISCONTIGMEM_ENABLE 419config ARCH_DISCONTIGMEM_ENABLE
405 bool 420 bool
406 default (ARCH_LH7A40X && !LH7A40X_CONTIGMEM) 421 default (ARCH_LH7A40X && !LH7A40X_CONTIGMEM)
@@ -587,6 +602,7 @@ comment "At least one emulation must be selected"
587 602
588config FPE_NWFPE 603config FPE_NWFPE
589 bool "NWFPE math emulation" 604 bool "NWFPE math emulation"
605 depends on !AEABI
590 ---help--- 606 ---help---
591 Say Y to include the NWFPE floating point emulator in the kernel. 607 Say Y to include the NWFPE floating point emulator in the kernel.
592 This is necessary to run most binaries. Linux does not currently 608 This is necessary to run most binaries. Linux does not currently
@@ -610,7 +626,7 @@ config FPE_NWFPE_XP
610 626
611config FPE_FASTFPE 627config FPE_FASTFPE
612 bool "FastFPE math emulation (EXPERIMENTAL)" 628 bool "FastFPE math emulation (EXPERIMENTAL)"
613 depends on !CPU_32v3 && EXPERIMENTAL 629 depends on !AEABI && !CPU_32v3 && EXPERIMENTAL
614 ---help--- 630 ---help---
615 Say Y here to include the FAST floating point emulator in the kernel. 631 Say Y here to include the FAST floating point emulator in the kernel.
616 This is an experimental much faster emulator which now also has full 632 This is an experimental much faster emulator which now also has full
@@ -642,6 +658,7 @@ source "fs/Kconfig.binfmt"
642 658
643config ARTHUR 659config ARTHUR
644 tristate "RISC OS personality" 660 tristate "RISC OS personality"
661 depends on !AEABI
645 help 662 help
646 Say Y here to include the kernel code necessary if you want to run 663 Say Y here to include the kernel code necessary if you want to run
647 Acorn RISC OS/Arthur binaries under Linux. This code is still very 664 Acorn RISC OS/Arthur binaries under Linux. This code is still very
diff --git a/arch/arm/Makefile b/arch/arm/Makefile
index 1fa2a1011584..fbfc14a56b96 100644
--- a/arch/arm/Makefile
+++ b/arch/arm/Makefile
@@ -56,8 +56,13 @@ tune-$(CONFIG_CPU_SA1100) :=-mtune=strongarm1100
56tune-$(CONFIG_CPU_XSCALE) :=$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale 56tune-$(CONFIG_CPU_XSCALE) :=$(call cc-option,-mtune=xscale,-mtune=strongarm110) -Wa,-mcpu=xscale
57tune-$(CONFIG_CPU_V6) :=$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm) 57tune-$(CONFIG_CPU_V6) :=$(call cc-option,-mtune=arm1136j-s,-mtune=strongarm)
58 58
59# Need -Uarm for gcc < 3.x 59ifeq ($(CONFIG_AEABI),y)
60CFLAGS_ABI :=-mabi=aapcs -mno-thumb-interwork
61else
60CFLAGS_ABI :=$(call cc-option,-mapcs-32,-mabi=apcs-gnu) $(call cc-option,-mno-thumb-interwork,) 62CFLAGS_ABI :=$(call cc-option,-mapcs-32,-mabi=apcs-gnu) $(call cc-option,-mno-thumb-interwork,)
63endif
64
65# Need -Uarm for gcc < 3.x
61CFLAGS +=$(CFLAGS_ABI) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -msoft-float -Uarm 66CFLAGS +=$(CFLAGS_ABI) $(arch-y) $(tune-y) $(call cc-option,-mshort-load-bytes,$(call cc-option,-malignment-traps,)) -msoft-float -Uarm
62AFLAGS +=$(CFLAGS_ABI) $(arch-y) $(tune-y) -msoft-float 67AFLAGS +=$(CFLAGS_ABI) $(arch-y) $(tune-y) -msoft-float
63 68