提交 9548b209 编写于 作者: I Ivan Kokshaysky 提交者: Linus Torvalds

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: NIvan Kokshaysky <ink@jurassic.park.msu.ru>
Cc: Richard Henderson <rth@twiddle.net>
Signed-off-by: NAndrew Morton <akpm@linux-foundation.org>
Signed-off-by: NLinus Torvalds <torvalds@linux-foundation.org>
上级 b47b6f38
...@@ -14,13 +14,13 @@ LDFLAGS_vmlinux := -static -N #-relax ...@@ -14,13 +14,13 @@ LDFLAGS_vmlinux := -static -N #-relax
CHECKFLAGS += -D__alpha__ -m64 CHECKFLAGS += -D__alpha__ -m64
cflags-y := -pipe -mno-fp-regs -ffixed-8 -msmall-data cflags-y := -pipe -mno-fp-regs -ffixed-8 -msmall-data
cpuflags-$(CONFIG_ALPHA_EV67) := -mcpu=ev67 cpuflags-$(CONFIG_ALPHA_EV4) := -mcpu=ev4
cpuflags-$(CONFIG_ALPHA_EV6) := -mcpu=ev6 cpuflags-$(CONFIG_ALPHA_EV5) := -mcpu=ev5
cpuflags-$(CONFIG_ALPHA_EV56) := -mcpu=ev56
cpuflags-$(CONFIG_ALPHA_POLARIS) := -mcpu=pca56 cpuflags-$(CONFIG_ALPHA_POLARIS) := -mcpu=pca56
cpuflags-$(CONFIG_ALPHA_SX164) := -mcpu=pca56 cpuflags-$(CONFIG_ALPHA_SX164) := -mcpu=pca56
cpuflags-$(CONFIG_ALPHA_EV56) := -mcpu=ev56 cpuflags-$(CONFIG_ALPHA_EV6) := -mcpu=ev6
cpuflags-$(CONFIG_ALPHA_EV5) := -mcpu=ev5 cpuflags-$(CONFIG_ALPHA_EV67) := -mcpu=ev67
cpuflags-$(CONFIG_ALPHA_EV4) := -mcpu=ev4
# If GENERIC, make sure to turn off any instruction set extensions that # If GENERIC, make sure to turn off any instruction set extensions that
# the host compiler might have on by default. Given that EV4 and EV5 # the host compiler might have on by default. Given that EV4 and EV5
# have the same instruction set, prefer EV5 because an EV5 schedule is # have the same instruction set, prefer EV5 because an EV5 schedule is
......
...@@ -273,7 +273,7 @@ ev7_process_pal_subpacket(struct el_subpacket *header) ...@@ -273,7 +273,7 @@ ev7_process_pal_subpacket(struct el_subpacket *header)
struct el_subpacket_handler ev7_pal_subpacket_handler = struct el_subpacket_handler ev7_pal_subpacket_handler =
SUBPACKET_HANDLER_INIT(EL_CLASS__PAL, ev7_process_pal_subpacket); SUBPACKET_HANDLER_INIT(EL_CLASS__PAL, ev7_process_pal_subpacket);
void void __init
ev7_register_error_handlers(void) ev7_register_error_handlers(void)
{ {
int i; int i;
......
...@@ -1152,7 +1152,7 @@ marvel_machine_check(u64 vector, u64 la_ptr) ...@@ -1152,7 +1152,7 @@ marvel_machine_check(u64 vector, u64 la_ptr)
mb(); mb();
} }
void void __init
marvel_register_error_handlers(void) marvel_register_error_handlers(void)
{ {
ev7_register_error_handlers(); ev7_register_error_handlers();
......
...@@ -564,7 +564,7 @@ static struct el_subpacket_handler titan_subpacket_handler = ...@@ -564,7 +564,7 @@ static struct el_subpacket_handler titan_subpacket_handler =
SUBPACKET_HANDLER_INIT(EL_CLASS__REGATTA_FAMILY, SUBPACKET_HANDLER_INIT(EL_CLASS__REGATTA_FAMILY,
el_process_regatta_subpacket); el_process_regatta_subpacket);
void void __init
titan_register_error_handlers(void) titan_register_error_handlers(void)
{ {
size_t i; size_t i;
......
...@@ -134,7 +134,7 @@ ...@@ -134,7 +134,7 @@
#define __initmv __initdata #define __initmv __initdata
#define ALIAS_MV(x) #define ALIAS_MV(x)
#else #else
#define __initmv #define __initmv __initdata_refok
/* GCC actually has a syntax for defining aliases, but is under some /* GCC actually has a syntax for defining aliases, but is under some
delusion that you shouldn't be able to declare it extern somewhere delusion that you shouldn't be able to declare it extern somewhere
......
...@@ -72,25 +72,29 @@ IO_CONCAT(__IO_PREFIX,writew)(u16 b, volatile void __iomem *a) ...@@ -72,25 +72,29 @@ IO_CONCAT(__IO_PREFIX,writew)(u16 b, volatile void __iomem *a)
__EXTERN_INLINE u8 __EXTERN_INLINE u8
IO_CONCAT(__IO_PREFIX,readb)(const volatile void __iomem *a) IO_CONCAT(__IO_PREFIX,readb)(const volatile void __iomem *a)
{ {
return IO_CONCAT(__IO_PREFIX,ioread8)((void __iomem *)a); void __iomem *addr = (void __iomem *)a;
return IO_CONCAT(__IO_PREFIX,ioread8)(addr);
} }
__EXTERN_INLINE u16 __EXTERN_INLINE u16
IO_CONCAT(__IO_PREFIX,readw)(const volatile void __iomem *a) IO_CONCAT(__IO_PREFIX,readw)(const volatile void __iomem *a)
{ {
return IO_CONCAT(__IO_PREFIX,ioread16)((void __iomem *)a); void __iomem *addr = (void __iomem *)a;
return IO_CONCAT(__IO_PREFIX,ioread16)(addr);
} }
__EXTERN_INLINE void __EXTERN_INLINE void
IO_CONCAT(__IO_PREFIX,writeb)(u8 b, volatile void __iomem *a) IO_CONCAT(__IO_PREFIX,writeb)(u8 b, volatile void __iomem *a)
{ {
IO_CONCAT(__IO_PREFIX,iowrite8)(b, (void __iomem *)a); void __iomem *addr = (void __iomem *)a;
IO_CONCAT(__IO_PREFIX,iowrite8)(b, addr);
} }
__EXTERN_INLINE void __EXTERN_INLINE void
IO_CONCAT(__IO_PREFIX,writew)(u16 b, volatile void __iomem *a) IO_CONCAT(__IO_PREFIX,writew)(u16 b, volatile void __iomem *a)
{ {
IO_CONCAT(__IO_PREFIX,iowrite16)(b, (void __iomem *)a); void __iomem *addr = (void __iomem *)a;
IO_CONCAT(__IO_PREFIX,iowrite16)(b, addr);
} }
#endif #endif
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册