aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIvan Kokshaysky <ink@jurassic.park.msu.ru>2007-12-17 19:19:57 -0500
committerLinus Torvalds <torvalds@woody.linux-foundation.org>2007-12-17 22:28:16 -0500
commit9548b209a37397f3036aa5bd3d5b4d3b725aa11a (patch)
tree9861b26f3ad69f0ac30ac04cf877faa951c9acd5
parentb47b6f38e5202c924bfe7632dce5dda4e3d40731 (diff)
alpha: build fixes
This fixes some of the alpha-specific build problems, except a) modpost warning about COMMON symbol "saved_config" and b) nasty final link failure with gcc-4.x, -Os and scsi-disk driver configured built-in (due to jump table in .rodata referencing discarded .exit.text). - build failure with gcc-4.2.x: fix up casts in cia_io* routines to avoid warnings ('discards qualifiers from pointer target type'), which are failures, thanks to -Werror; - modpost warnings: add missing __init qualifier for titan and marvel; for non-generic build, move machine vectors from .data to .data.init.refok section; - unbreak CPU-specific optimization: rearrange cpuflags-y assignments so that extended -mcpu value (ev56, pca56, ev67) overrides basic one (ev5, ev6) and not vice versa. Signed-off-by: Ivan Kokshaysky <ink@jurassic.park.msu.ru> Cc: Richard Henderson <rth@twiddle.net> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r--arch/alpha/Makefile10
-rw-r--r--arch/alpha/kernel/err_ev7.c2
-rw-r--r--arch/alpha/kernel/err_marvel.c2
-rw-r--r--arch/alpha/kernel/err_titan.c2
-rw-r--r--arch/alpha/kernel/machvec_impl.h2
-rw-r--r--include/asm-alpha/io_trivial.h12
6 files changed, 17 insertions, 13 deletions
diff --git a/arch/alpha/Makefile b/arch/alpha/Makefile
index 63104ebd1806..4e1a8e2c4541 100644
--- a/arch/alpha/Makefile
+++ b/arch/alpha/Makefile
@@ -14,13 +14,13 @@ LDFLAGS_vmlinux := -static -N #-relax
14CHECKFLAGS += -D__alpha__ -m64 14CHECKFLAGS += -D__alpha__ -m64
15cflags-y := -pipe -mno-fp-regs -ffixed-8 -msmall-data 15cflags-y := -pipe -mno-fp-regs -ffixed-8 -msmall-data
16 16
17cpuflags-$(CONFIG_ALPHA_EV67) := -mcpu=ev67 17cpuflags-$(CONFIG_ALPHA_EV4) := -mcpu=ev4
18cpuflags-$(CONFIG_ALPHA_EV6) := -mcpu=ev6 18cpuflags-$(CONFIG_ALPHA_EV5) := -mcpu=ev5
19cpuflags-$(CONFIG_ALPHA_EV56) := -mcpu=ev56
19cpuflags-$(CONFIG_ALPHA_POLARIS) := -mcpu=pca56 20cpuflags-$(CONFIG_ALPHA_POLARIS) := -mcpu=pca56
20cpuflags-$(CONFIG_ALPHA_SX164) := -mcpu=pca56 21cpuflags-$(CONFIG_ALPHA_SX164) := -mcpu=pca56
21cpuflags-$(CONFIG_ALPHA_EV56) := -mcpu=ev56 22cpuflags-$(CONFIG_ALPHA_EV6) := -mcpu=ev6
22cpuflags-$(CONFIG_ALPHA_EV5) := -mcpu=ev5 23cpuflags-$(CONFIG_ALPHA_EV67) := -mcpu=ev67
23cpuflags-$(CONFIG_ALPHA_EV4) := -mcpu=ev4
24# If GENERIC, make sure to turn off any instruction set extensions that 24# If GENERIC, make sure to turn off any instruction set extensions that
25# the host compiler might have on by default. Given that EV4 and EV5 25# the host compiler might have on by default. Given that EV4 and EV5
26# have the same instruction set, prefer EV5 because an EV5 schedule is 26# have the same instruction set, prefer EV5 because an EV5 schedule is
diff --git a/arch/alpha/kernel/err_ev7.c b/arch/alpha/kernel/err_ev7.c
index bc799f72d8c1..68cd493f54c5 100644
--- a/arch/alpha/kernel/err_ev7.c
+++ b/arch/alpha/kernel/err_ev7.c
@@ -273,7 +273,7 @@ ev7_process_pal_subpacket(struct el_subpacket *header)
273struct el_subpacket_handler ev7_pal_subpacket_handler = 273struct el_subpacket_handler ev7_pal_subpacket_handler =
274 SUBPACKET_HANDLER_INIT(EL_CLASS__PAL, ev7_process_pal_subpacket); 274 SUBPACKET_HANDLER_INIT(EL_CLASS__PAL, ev7_process_pal_subpacket);
275 275
276void 276void __init
277ev7_register_error_handlers(void) 277ev7_register_error_handlers(void)
278{ 278{
279 int i; 279 int i;
diff --git a/arch/alpha/kernel/err_marvel.c b/arch/alpha/kernel/err_marvel.c
index 497877bf2012..413bf37eb094 100644
--- a/arch/alpha/kernel/err_marvel.c
+++ b/arch/alpha/kernel/err_marvel.c
@@ -1152,7 +1152,7 @@ marvel_machine_check(u64 vector, u64 la_ptr)
1152 mb(); 1152 mb();
1153} 1153}
1154 1154
1155void 1155void __init
1156marvel_register_error_handlers(void) 1156marvel_register_error_handlers(void)
1157{ 1157{
1158 ev7_register_error_handlers(); 1158 ev7_register_error_handlers();
diff --git a/arch/alpha/kernel/err_titan.c b/arch/alpha/kernel/err_titan.c
index 6f3867877d9e..257449ed15ef 100644
--- a/arch/alpha/kernel/err_titan.c
+++ b/arch/alpha/kernel/err_titan.c
@@ -564,7 +564,7 @@ static struct el_subpacket_handler titan_subpacket_handler =
564 SUBPACKET_HANDLER_INIT(EL_CLASS__REGATTA_FAMILY, 564 SUBPACKET_HANDLER_INIT(EL_CLASS__REGATTA_FAMILY,
565 el_process_regatta_subpacket); 565 el_process_regatta_subpacket);
566 566
567void 567void __init
568titan_register_error_handlers(void) 568titan_register_error_handlers(void)
569{ 569{
570 size_t i; 570 size_t i;
diff --git a/arch/alpha/kernel/machvec_impl.h b/arch/alpha/kernel/machvec_impl.h
index 0caa45aa128d..466c9dff8181 100644
--- a/arch/alpha/kernel/machvec_impl.h
+++ b/arch/alpha/kernel/machvec_impl.h
@@ -134,7 +134,7 @@
134#define __initmv __initdata 134#define __initmv __initdata
135#define ALIAS_MV(x) 135#define ALIAS_MV(x)
136#else 136#else
137#define __initmv 137#define __initmv __initdata_refok
138 138
139/* GCC actually has a syntax for defining aliases, but is under some 139/* GCC actually has a syntax for defining aliases, but is under some
140 delusion that you shouldn't be able to declare it extern somewhere 140 delusion that you shouldn't be able to declare it extern somewhere
diff --git a/include/asm-alpha/io_trivial.h b/include/asm-alpha/io_trivial.h
index b10d1aa4cdd1..1c77f10b4b36 100644
--- a/include/asm-alpha/io_trivial.h
+++ b/include/asm-alpha/io_trivial.h
@@ -72,25 +72,29 @@ IO_CONCAT(__IO_PREFIX,writew)(u16 b, volatile void __iomem *a)
72__EXTERN_INLINE u8 72__EXTERN_INLINE u8
73IO_CONCAT(__IO_PREFIX,readb)(const volatile void __iomem *a) 73IO_CONCAT(__IO_PREFIX,readb)(const volatile void __iomem *a)
74{ 74{
75 return IO_CONCAT(__IO_PREFIX,ioread8)((void __iomem *)a); 75 void __iomem *addr = (void __iomem *)a;
76 return IO_CONCAT(__IO_PREFIX,ioread8)(addr);
76} 77}
77 78
78__EXTERN_INLINE u16 79__EXTERN_INLINE u16
79IO_CONCAT(__IO_PREFIX,readw)(const volatile void __iomem *a) 80IO_CONCAT(__IO_PREFIX,readw)(const volatile void __iomem *a)
80{ 81{
81 return IO_CONCAT(__IO_PREFIX,ioread16)((void __iomem *)a); 82 void __iomem *addr = (void __iomem *)a;
83 return IO_CONCAT(__IO_PREFIX,ioread16)(addr);
82} 84}
83 85
84__EXTERN_INLINE void 86__EXTERN_INLINE void
85IO_CONCAT(__IO_PREFIX,writeb)(u8 b, volatile void __iomem *a) 87IO_CONCAT(__IO_PREFIX,writeb)(u8 b, volatile void __iomem *a)
86{ 88{
87 IO_CONCAT(__IO_PREFIX,iowrite8)(b, (void __iomem *)a); 89 void __iomem *addr = (void __iomem *)a;
90 IO_CONCAT(__IO_PREFIX,iowrite8)(b, addr);
88} 91}
89 92
90__EXTERN_INLINE void 93__EXTERN_INLINE void
91IO_CONCAT(__IO_PREFIX,writew)(u16 b, volatile void __iomem *a) 94IO_CONCAT(__IO_PREFIX,writew)(u16 b, volatile void __iomem *a)
92{ 95{
93 IO_CONCAT(__IO_PREFIX,iowrite16)(b, (void __iomem *)a); 96 void __iomem *addr = (void __iomem *)a;
97 IO_CONCAT(__IO_PREFIX,iowrite16)(b, addr);
94} 98}
95#endif 99#endif
96 100