diff options
author | Ivan Kokshaysky <ink@jurassic.park.msu.ru> | 2007-12-17 19:19:57 -0500 |
---|---|---|
committer | Linus Torvalds <torvalds@woody.linux-foundation.org> | 2007-12-17 22:28:16 -0500 |
commit | 9548b209a37397f3036aa5bd3d5b4d3b725aa11a (patch) | |
tree | 9861b26f3ad69f0ac30ac04cf877faa951c9acd5 | |
parent | b47b6f38e5202c924bfe7632dce5dda4e3d40731 (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/Makefile | 10 | ||||
-rw-r--r-- | arch/alpha/kernel/err_ev7.c | 2 | ||||
-rw-r--r-- | arch/alpha/kernel/err_marvel.c | 2 | ||||
-rw-r--r-- | arch/alpha/kernel/err_titan.c | 2 | ||||
-rw-r--r-- | arch/alpha/kernel/machvec_impl.h | 2 | ||||
-rw-r--r-- | include/asm-alpha/io_trivial.h | 12 |
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 | |||
14 | CHECKFLAGS += -D__alpha__ -m64 | 14 | CHECKFLAGS += -D__alpha__ -m64 |
15 | cflags-y := -pipe -mno-fp-regs -ffixed-8 -msmall-data | 15 | cflags-y := -pipe -mno-fp-regs -ffixed-8 -msmall-data |
16 | 16 | ||
17 | cpuflags-$(CONFIG_ALPHA_EV67) := -mcpu=ev67 | 17 | cpuflags-$(CONFIG_ALPHA_EV4) := -mcpu=ev4 |
18 | cpuflags-$(CONFIG_ALPHA_EV6) := -mcpu=ev6 | 18 | cpuflags-$(CONFIG_ALPHA_EV5) := -mcpu=ev5 |
19 | cpuflags-$(CONFIG_ALPHA_EV56) := -mcpu=ev56 | ||
19 | cpuflags-$(CONFIG_ALPHA_POLARIS) := -mcpu=pca56 | 20 | cpuflags-$(CONFIG_ALPHA_POLARIS) := -mcpu=pca56 |
20 | cpuflags-$(CONFIG_ALPHA_SX164) := -mcpu=pca56 | 21 | cpuflags-$(CONFIG_ALPHA_SX164) := -mcpu=pca56 |
21 | cpuflags-$(CONFIG_ALPHA_EV56) := -mcpu=ev56 | 22 | cpuflags-$(CONFIG_ALPHA_EV6) := -mcpu=ev6 |
22 | cpuflags-$(CONFIG_ALPHA_EV5) := -mcpu=ev5 | 23 | cpuflags-$(CONFIG_ALPHA_EV67) := -mcpu=ev67 |
23 | cpuflags-$(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) | |||
273 | struct el_subpacket_handler ev7_pal_subpacket_handler = | 273 | struct 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 | ||
276 | void | 276 | void __init |
277 | ev7_register_error_handlers(void) | 277 | ev7_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 | ||
1155 | void | 1155 | void __init |
1156 | marvel_register_error_handlers(void) | 1156 | marvel_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 | ||
567 | void | 567 | void __init |
568 | titan_register_error_handlers(void) | 568 | titan_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 |
73 | IO_CONCAT(__IO_PREFIX,readb)(const volatile void __iomem *a) | 73 | IO_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 |
79 | IO_CONCAT(__IO_PREFIX,readw)(const volatile void __iomem *a) | 80 | IO_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 |
85 | IO_CONCAT(__IO_PREFIX,writeb)(u8 b, volatile void __iomem *a) | 87 | IO_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 |
91 | IO_CONCAT(__IO_PREFIX,writew)(u16 b, volatile void __iomem *a) | 94 | IO_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 | ||