aboutsummaryrefslogtreecommitdiffstats
path: root/arch
diff options
context:
space:
mode:
Diffstat (limited to 'arch')
-rw-r--r--arch/sh/Makefile16
-rw-r--r--arch/sh/kernel/sh_ksyms_32.c11
2 files changed, 22 insertions, 5 deletions
diff --git a/arch/sh/Makefile b/arch/sh/Makefile
index 1f409bf81809..3b2d8e232240 100644
--- a/arch/sh/Makefile
+++ b/arch/sh/Makefile
@@ -38,6 +38,22 @@ cflags-$(CONFIG_CPU_SH4A) += $(call cc-option,-m4a,) \
38 $(call cc-option,-m4a-nofpu,) 38 $(call cc-option,-m4a-nofpu,)
39cflags-$(CONFIG_CPU_SH5) := $(call cc-option,-m5-32media-nofpu,) 39cflags-$(CONFIG_CPU_SH5) := $(call cc-option,-m5-32media-nofpu,)
40 40
41ifeq ($(cflags-y),)
42#
43# In the case where we are stuck with a compiler that has been uselessly
44# restricted to a particular ISA, a favourite default of newer GCCs when
45# extensive multilib targets are not provided, ensure we get the best fit
46# regarding FP generation. This is necessary to avoid references to FP
47# variants in libgcc where integer variants exist, which otherwise result
48# in link errors. This is intentionally stupid (albeit many orders of
49# magnitude less than GCC's default behaviour), as anything with a large
50# number of multilib targets better have been built correctly for
51# the target in mind.
52#
53cflags-y += $(shell $(CC) $(KBUILD_CFLAGS) -print-multi-lib | \
54 grep nofpu | sed q | sed -e 's/^/-/;s/;.*$$//')
55endif
56
41cflags-$(CONFIG_CPU_BIG_ENDIAN) += -mb 57cflags-$(CONFIG_CPU_BIG_ENDIAN) += -mb
42cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -ml 58cflags-$(CONFIG_CPU_LITTLE_ENDIAN) += -ml
43 59
diff --git a/arch/sh/kernel/sh_ksyms_32.c b/arch/sh/kernel/sh_ksyms_32.c
index d366a7443720..d998f4c795be 100644
--- a/arch/sh/kernel/sh_ksyms_32.c
+++ b/arch/sh/kernel/sh_ksyms_32.c
@@ -50,7 +50,10 @@ EXPORT_SYMBOL(__udelay);
50EXPORT_SYMBOL(__ndelay); 50EXPORT_SYMBOL(__ndelay);
51EXPORT_SYMBOL(__const_udelay); 51EXPORT_SYMBOL(__const_udelay);
52 52
53#define DECLARE_EXPORT(name) extern void name(void);EXPORT_SYMBOL(name) 53#define DECLARE_EXPORT(name) \
54 extern void name(void);EXPORT_SYMBOL(name)
55#define MAYBE_DECLARE_EXPORT(name) \
56 extern void name(void) __weak;EXPORT_SYMBOL(name)
54 57
55/* These symbols are generated by the compiler itself */ 58/* These symbols are generated by the compiler itself */
56DECLARE_EXPORT(__udivsi3); 59DECLARE_EXPORT(__udivsi3);
@@ -109,10 +112,8 @@ DECLARE_EXPORT(__movmemSI12_i4);
109 * compiler which include backported patches. 112 * compiler which include backported patches.
110 */ 113 */
111DECLARE_EXPORT(__udiv_qrnnd_16); 114DECLARE_EXPORT(__udiv_qrnnd_16);
112#if !defined(CONFIG_CPU_SH2) 115MAYBE_DECLARE_EXPORT(__sdivsi3_i4i);
113DECLARE_EXPORT(__sdivsi3_i4i); 116MAYBE_DECLARE_EXPORT(__udivsi3_i4i);
114DECLARE_EXPORT(__udivsi3_i4i);
115#endif
116#endif 117#endif
117#else /* GCC 3.x */ 118#else /* GCC 3.x */
118DECLARE_EXPORT(__movstr_i4_even); 119DECLARE_EXPORT(__movstr_i4_even);