Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

sh: Get multiple boards in one image working again.

This tidies up the build rules and permits multiple boards to be
linked in to the same kernel. The earlier Kconfig work ensures that
the CPU configuration is consistent across the boards, as this is
the only thing that we can't do dynamically.

Signed-off-by: Paul Mundt <lethal@linux-sh.org>

authored by

Paul Mundt and committed by
Paul Mundt
25f8151b ba36197c

+50 -38
+49 -37
arch/sh/Makefile
··· 87 87 core-$(CONFIG_SH_FPU_EMU) += arch/sh/math-emu/ 88 88 89 89 # Boards 90 - machdir-$(CONFIG_SH_SOLUTION_ENGINE) := se/770x 91 - machdir-$(CONFIG_SH_7722_SOLUTION_ENGINE) := se/7722 92 - machdir-$(CONFIG_SH_7751_SOLUTION_ENGINE) := se/7751 93 - machdir-$(CONFIG_SH_7780_SOLUTION_ENGINE) := se/7780 94 - machdir-$(CONFIG_SH_7300_SOLUTION_ENGINE) := se/7300 95 - machdir-$(CONFIG_SH_7343_SOLUTION_ENGINE) := se/7343 96 - machdir-$(CONFIG_SH_73180_SOLUTION_ENGINE) := se/73180 97 - machdir-$(CONFIG_SH_HP6XX) := hp6xx 98 - machdir-$(CONFIG_SH_SATURN) := saturn 99 - machdir-$(CONFIG_SH_DREAMCAST) := dreamcast 100 - machdir-$(CONFIG_SH_MPC1211) := mpc1211 101 - machdir-$(CONFIG_SH_SH03) := sh03 102 - machdir-$(CONFIG_SH_SECUREEDGE5410) := snapgear 103 - machdir-$(CONFIG_SH_HS7751RVOIP) := renesas/hs7751rvoip 104 - machdir-$(CONFIG_SH_RTS7751R2D) := renesas/rts7751r2d 105 - machdir-$(CONFIG_SH_7751_SYSTEMH) := renesas/systemh 106 - machdir-$(CONFIG_SH_EDOSK7705) := renesas/edosk7705 107 - machdir-$(CONFIG_SH_HIGHLANDER) := renesas/r7780rp 108 - machdir-$(CONFIG_SH_7710VOIPGW) := renesas/sh7710voipgw 109 - machdir-$(CONFIG_SH_SH4202_MICRODEV) := superh/microdev 110 - machdir-$(CONFIG_SH_LANDISK) := landisk 111 - machdir-$(CONFIG_SH_TITAN) := titan 112 - machdir-$(CONFIG_SH_SHMIN) := shmin 113 - machdir-$(CONFIG_SH_7206_SOLUTION_ENGINE) := se/7206 114 - machdir-$(CONFIG_SH_7619_SOLUTION_ENGINE) := se/7619 115 - machdir-$(CONFIG_SH_LBOX_RE2) := lboxre2 116 - machdir-$(CONFIG_SH_UNKNOWN) := unknown 90 + machdir-$(CONFIG_SH_SOLUTION_ENGINE) += se/770x 91 + machdir-$(CONFIG_SH_7722_SOLUTION_ENGINE) += se/7722 92 + machdir-$(CONFIG_SH_7751_SOLUTION_ENGINE) += se/7751 93 + machdir-$(CONFIG_SH_7780_SOLUTION_ENGINE) += se/7780 94 + machdir-$(CONFIG_SH_7300_SOLUTION_ENGINE) += se/7300 95 + machdir-$(CONFIG_SH_7343_SOLUTION_ENGINE) += se/7343 96 + machdir-$(CONFIG_SH_73180_SOLUTION_ENGINE) += se/73180 97 + machdir-$(CONFIG_SH_HP6XX) += hp6xx 98 + machdir-$(CONFIG_SH_SATURN) += saturn 99 + machdir-$(CONFIG_SH_DREAMCAST) += dreamcast 100 + machdir-$(CONFIG_SH_MPC1211) += mpc1211 101 + machdir-$(CONFIG_SH_SH03) += sh03 102 + machdir-$(CONFIG_SH_SECUREEDGE5410) += snapgear 103 + machdir-$(CONFIG_SH_HS7751RVOIP) += renesas/hs7751rvoip 104 + machdir-$(CONFIG_SH_RTS7751R2D) += renesas/rts7751r2d 105 + machdir-$(CONFIG_SH_7751_SYSTEMH) += renesas/systemh 106 + machdir-$(CONFIG_SH_EDOSK7705) += renesas/edosk7705 107 + machdir-$(CONFIG_SH_HIGHLANDER) += renesas/r7780rp 108 + machdir-$(CONFIG_SH_7710VOIPGW) += renesas/sh7710voipgw 109 + machdir-$(CONFIG_SH_SH4202_MICRODEV) += superh/microdev 110 + machdir-$(CONFIG_SH_LANDISK) += landisk 111 + machdir-$(CONFIG_SH_TITAN) += titan 112 + machdir-$(CONFIG_SH_SHMIN) += shmin 113 + machdir-$(CONFIG_SH_7206_SOLUTION_ENGINE) += se/7206 114 + machdir-$(CONFIG_SH_7619_SOLUTION_ENGINE) += se/7619 115 + machdir-$(CONFIG_SH_LBOX_RE2) += lboxre2 116 + machdir-$(CONFIG_SH_UNKNOWN) += unknown 117 117 118 - incdir-y := $(notdir $(machdir-y)) 119 - incdir-$(CONFIG_SH_HP6XX) := hp6xx 118 + incdir-y := $(notdir $(machdir-y)) 120 119 121 120 ifneq ($(machdir-y),) 122 - core-y += arch/sh/boards/$(machdir-y)/ 121 + core-y += $(addprefix arch/sh/boards/, \ 122 + $(filter-out ., $(patsubst %,%/,$(machdir-y)))) 123 123 endif 124 124 125 125 # Companion chips ··· 157 157 # Most boards have their own mach directories. For the ones that 158 158 # don't, just reference the parent directory so the semantics are 159 159 # kept roughly the same. 160 + # 161 + # When multiple boards are compiled in at the same time, preference 162 + # for the mach link is given to whichever has a directory for its 163 + # headers. However, this is only a workaround until platforms that 164 + # can live in the same kernel image back away from relying on the 165 + # mach link. 160 166 161 167 include/asm-sh/.mach: $(wildcard include/config/sh/*.h) \ 162 168 include/config/auto.conf FORCE 163 - @echo -n ' SYMLINK include/asm-sh/mach -> ' 164 169 $(Q)if [ ! -d include/asm-sh ]; then mkdir -p include/asm-sh; fi 165 - $(Q)if [ -d $(incdir-prefix)$(incdir-y) ]; then \ 166 - echo -e 'include/asm-sh/$(incdir-y)'; \ 167 - ln -fsn $(incdir-prefix)$(incdir-y) \ 170 + $(Q)rm -f include/asm-sh/mach 171 + $(Q)for i in $(incdir-y); do \ 172 + if [ -d $(incdir-prefix)$$i ]; then \ 173 + echo -n ' SYMLINK include/asm-sh/mach -> '; \ 174 + echo -e "include/asm-sh/$$i"; \ 175 + ln -fsn $(incdir-prefix)$$i \ 168 176 include/asm-sh/mach; \ 169 177 else \ 170 - echo -e 'include/asm-sh'; \ 171 - ln -fsn $(incdir-prefix) include/asm-sh/mach; \ 172 - fi 178 + if [ ! -d include/asm-sh/mach ]; then \ 179 + echo -n ' SYMLINK include/asm-sh/mach -> '; \ 180 + echo -e 'include/asm-sh'; \ 181 + ln -fsn $(incdir-prefix) include/asm-sh/mach; \ 182 + fi; \ 183 + fi; \ 184 + done 173 185 @touch $@ 174 186 175 187 archprepare: include/asm-sh/.cpu include/asm-sh/.mach maketools
+1 -1
include/asm-sh/machvec_init.h
··· 14 14 15 15 #define __initmv __attribute__((unused,__section__ (".machvec.init"))) 16 16 #define ALIAS_MV(system) \ 17 - asm(".global sh_mv\nsh_mv = mv_"#system ); 17 + asm(".weak sh_mv\nsh_mv = mv_"#system ); 18 18 19 19 #endif /* __SH_MACHVEC_INIT_H */