| From 86d3e65a5df49e7a021425549e64e1d97056165d Mon Sep 17 00:00:00 2001 |
| From: Randy Dunlap <rdunlap@infradead.org> |
| Date: Fri, 5 Apr 2019 18:39:30 -0700 |
| Subject: sh: fix multiple function definition build errors |
| |
| [ Upstream commit acaf892ecbf5be7710ae05a61fd43c668f68ad95 ] |
| |
| Many of the sh CPU-types have their own plat_irq_setup() and |
| arch_init_clk_ops() functions, so these same (empty) functions in |
| arch/sh/boards/of-generic.c are not needed and cause build errors. |
| |
| If there is some case where these empty functions are needed, they can |
| be retained by marking them as "__weak" while at the same time making |
| builds that do not need them succeed. |
| |
| Fixes these build errors: |
| |
| arch/sh/boards/of-generic.o: In function `plat_irq_setup': |
| (.init.text+0x134): multiple definition of `plat_irq_setup' |
| arch/sh/kernel/cpu/sh2/setup-sh7619.o:(.init.text+0x30): first defined here |
| arch/sh/boards/of-generic.o: In function `arch_init_clk_ops': |
| (.init.text+0x118): multiple definition of `arch_init_clk_ops' |
| arch/sh/kernel/cpu/sh2/clock-sh7619.o:(.init.text+0x0): first defined here |
| |
| Link: http://lkml.kernel.org/r/9ee4e0c5-f100-86a2-bd4d-1d3287ceab31@infradead.org |
| Signed-off-by: Randy Dunlap <rdunlap@infradead.org> |
| Reported-by: kbuild test robot <lkp@intel.com> |
| Cc: Takashi Iwai <tiwai@suse.de> |
| Cc: Yoshinori Sato <ysato@users.sourceforge.jp> |
| Cc: Rich Felker <dalias@libc.org> |
| Signed-off-by: Andrew Morton <akpm@linux-foundation.org> |
| Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org> |
| Signed-off-by: Sasha Levin (Microsoft) <sashal@kernel.org> |
| --- |
| arch/sh/boards/of-generic.c | 4 ++-- |
| 1 file changed, 2 insertions(+), 2 deletions(-) |
| |
| diff --git a/arch/sh/boards/of-generic.c b/arch/sh/boards/of-generic.c |
| index 958f46da3a79..d91065e81a4e 100644 |
| --- a/arch/sh/boards/of-generic.c |
| +++ b/arch/sh/boards/of-generic.c |
| @@ -164,10 +164,10 @@ static struct sh_machine_vector __initmv sh_of_generic_mv = { |
| |
| struct sh_clk_ops; |
| |
| -void __init arch_init_clk_ops(struct sh_clk_ops **ops, int idx) |
| +void __init __weak arch_init_clk_ops(struct sh_clk_ops **ops, int idx) |
| { |
| } |
| |
| -void __init plat_irq_setup(void) |
| +void __init __weak plat_irq_setup(void) |
| { |
| } |
| -- |
| 2.20.1 |
| |