Makefile 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276
  1. # This is far from simple, but I couldn't think of a good name. This is
  2. # for making the 'zImage' or 'zImage.initrd' on a number of targets.
  3. #
  4. # Author: Tom Rini <trini@mvista.com>
  5. #
  6. # Notes:
  7. # (1) For machines that do not want to use the ELF image directly (including
  8. # stripping just the ELF header off), they must set the variables
  9. # zimage-$(CONFIG_MACHINE) and zimagerd-$(CONFIG_MACHINE) to the target
  10. # that produces the desired image and they must set end-$(CONFIG_MACHINE)
  11. # to what will be suffixed to the image filename.
  12. # (2) Regardless of (1), to have the resulting image be something other
  13. # than 'zImage.elf', set end-$(CONFIG_MACHINE) to be the suffix used for
  14. # the zImage, znetboot, and znetbootrd targets.
  15. # (3) For machine targets which use the mktree program, you can optionally
  16. # set entrypoint-$(CONFIG_MACHINE) to the location which the image should be
  17. # loaded at. The optimal setting for entrypoint-$(CONFIG_MACHINE) is the link
  18. # address.
  19. # (4) It is advisable to pass in the memory size using BI_MEMSIZE and
  20. # get_mem_size(), which is memory controller dependent. Add in the correct
  21. # XXX_memory.o file for this to work, as well as editing the
  22. # misc-$(CONFIG_MACHINE) variable.
  23. boot := arch/ppc/boot
  24. common := $(boot)/common
  25. utils := $(boot)/utils
  26. bootlib := $(boot)/lib
  27. images := $(boot)/images
  28. of1275 := $(boot)/of1275
  29. tftpboot := /tftpboot
  30. # Normally, we use the 'misc.c' file for decompress_kernel and
  31. # whatnot. Sometimes we need to override this however.
  32. misc-y := misc.o
  33. # Normally, we have our images end in .elf, but something we want to
  34. # change this.
  35. end-y := elf
  36. # Additionally, we normally don't need to mess with the L2 / L3 caches
  37. # if present on 'classic' PPC.
  38. cacheflag-y := -DCLEAR_CACHES=""
  39. # This file will flush / disable the L2, and L3 if present.
  40. clear_L2_L3 := $(srctree)/$(boot)/simple/clear.S
  41. #
  42. # See arch/ppc/kconfig and arch/ppc/platforms/Kconfig
  43. # for definition of what platform each config option refer to.
  44. #----------------------------------------------------------------------------
  45. zimage-$(CONFIG_CPCI690) := zImage-STRIPELF
  46. zimageinitrd-$(CONFIG_CPCI690) := zImage.initrd-STRIPELF
  47. extra.o-$(CONFIG_CPCI690) := misc-cpci690.o
  48. end-$(CONFIG_CPCI690) := cpci690
  49. cacheflag-$(CONFIG_CPCI690) := -include $(clear_L2_L3)
  50. zimage-$(CONFIG_IBM_OPENBIOS) := zImage-TREE
  51. zimageinitrd-$(CONFIG_IBM_OPENBIOS) := zImage.initrd-TREE
  52. end-$(CONFIG_IBM_OPENBIOS) := treeboot
  53. misc-$(CONFIG_IBM_OPENBIOS) := misc-embedded.o
  54. end-$(CONFIG_EMBEDDEDBOOT) := embedded
  55. misc-$(CONFIG_EMBEDDEDBOOT) := misc-embedded.o
  56. zimage-$(CONFIG_BAMBOO) := zImage-TREE
  57. zimageinitrd-$(CONFIG_BAMBOO) := zImage.initrd-TREE
  58. end-$(CONFIG_BAMBOO) := bamboo
  59. entrypoint-$(CONFIG_BAMBOO) := 0x01000000
  60. extra.o-$(CONFIG_BAMBOO) := pibs.o
  61. zimage-$(CONFIG_BUBINGA) := zImage-TREE
  62. zimageinitrd-$(CONFIG_BUBINGA) := zImage.initrd-TREE
  63. end-$(CONFIG_BUBINGA) := bubinga
  64. entrypoint-$(CONFIG_BUBINGA) := 0x01000000
  65. extra.o-$(CONFIG_BUBINGA) := openbios.o
  66. zimage-$(CONFIG_EBONY) := zImage-TREE
  67. zimageinitrd-$(CONFIG_EBONY) := zImage.initrd-TREE
  68. end-$(CONFIG_EBONY) := ebony
  69. entrypoint-$(CONFIG_EBONY) := 0x01000000
  70. extra.o-$(CONFIG_EBONY) := openbios.o
  71. zimage-$(CONFIG_LUAN) := zImage-TREE
  72. zimageinitrd-$(CONFIG_LUAN) := zImage.initrd-TREE
  73. end-$(CONFIG_LUAN) := luan
  74. entrypoint-$(CONFIG_LUAN) := 0x01000000
  75. extra.o-$(CONFIG_LUAN) := pibs.o
  76. zimage-$(CONFIG_YUCCA) := zImage-TREE
  77. zimageinitrd-$(CONFIG_YUCCA) := zImage.initrd-TREE
  78. end-$(CONFIG_YUCCA) := yucca
  79. entrypoint-$(CONFIG_YUCCA) := 0x01000000
  80. extra.o-$(CONFIG_YUCCA) := pibs.o
  81. zimage-$(CONFIG_OCOTEA) := zImage-TREE
  82. zimageinitrd-$(CONFIG_OCOTEA) := zImage.initrd-TREE
  83. end-$(CONFIG_OCOTEA) := ocotea
  84. entrypoint-$(CONFIG_OCOTEA) := 0x01000000
  85. extra.o-$(CONFIG_OCOTEA) := pibs.o
  86. zimage-$(CONFIG_SYCAMORE) := zImage-TREE
  87. zimageinitrd-$(CONFIG_SYCAMORE) := zImage.initrd-TREE
  88. end-$(CONFIG_SYCAMORE) := sycamore
  89. entrypoint-$(CONFIG_SYCAMORE) := 0x01000000
  90. extra.o-$(CONFIG_SYCAMORE) := openbios.o
  91. zimage-$(CONFIG_WALNUT) := zImage-TREE
  92. zimageinitrd-$(CONFIG_WALNUT) := zImage.initrd-TREE
  93. end-$(CONFIG_WALNUT) := walnut
  94. entrypoint-$(CONFIG_WALNUT) := 0x01000000
  95. extra.o-$(CONFIG_WALNUT) := openbios.o
  96. extra.o-$(CONFIG_EV64260) := misc-ev64260.o
  97. end-$(CONFIG_EV64260) := ev64260
  98. cacheflag-$(CONFIG_EV64260) := -include $(clear_L2_L3)
  99. extra.o-$(CONFIG_CHESTNUT) := misc-chestnut.o
  100. end-$(CONFIG_CHESTNUT) := chestnut
  101. extra.o-$(CONFIG_KATANA) := misc-katana.o
  102. end-$(CONFIG_KATANA) := katana
  103. cacheflag-$(CONFIG_KATANA) := -include $(clear_L2_L3)
  104. extra.o-$(CONFIG_RADSTONE_PPC7D) := misc-radstone_ppc7d.o
  105. end-$(CONFIG_RADSTONE_PPC7D) := radstone_ppc7d
  106. cacheflag-$(CONFIG_RADSTONE_PPC7D) := -include $(clear_L2_L3)
  107. extra.o-$(CONFIG_EV64360) := misc-ev64360.o
  108. end-$(CONFIG_EV64360) := ev64360
  109. cacheflag-$(CONFIG_EV64360) := -include $(clear_L2_L3)
  110. # kconfig 'feature', only one of these will ever be 'y' at a time.
  111. # The rest will be unset.
  112. motorola := $(CONFIG_MVME5100)$(CONFIG_PRPMC750) \
  113. $(CONFIG_PRPMC800)$(CONFIG_LOPEC)$(CONFIG_PPLUS)
  114. motorola := $(strip $(motorola))
  115. zimage-$(motorola) := zImage-PPLUS
  116. zimageinitrd-$(motorola) := zImage.initrd-PPLUS
  117. end-$(motorola) := pplus
  118. # Overrides previous assingment
  119. extra.o-$(CONFIG_PPLUS) := prepmap.o
  120. extra.o-$(CONFIG_LOPEC) := mpc10x_memory.o
  121. # Really only valid if CONFIG_6xx=y
  122. zimage-$(CONFIG_PPC_PREP) := zImage-PPLUS
  123. zimageinitrd-$(CONFIG_PPC_PREP) := zImage.initrd-PPLUS
  124. ifeq ($(CONFIG_6xx),y)
  125. extra.o-$(CONFIG_PPC_PREP) := prepmap.o
  126. misc-$(CONFIG_PPC_PREP) += misc-prep.o mpc10x_memory.o
  127. endif
  128. end-$(CONFIG_PPC_PREP) := prep
  129. end-$(CONFIG_SANDPOINT) := sandpoint
  130. cacheflag-$(CONFIG_SANDPOINT) := -include $(clear_L2_L3)
  131. zimage-$(CONFIG_SPRUCE) := zImage-TREE
  132. zimageinitrd-$(CONFIG_SPRUCE) := zImage.initrd-TREE
  133. end-$(CONFIG_SPRUCE) := spruce
  134. entrypoint-$(CONFIG_SPRUCE) := 0x00800000
  135. misc-$(CONFIG_SPRUCE) += misc-spruce.o
  136. zimage-$(CONFIG_LITE5200) := zImage-STRIPELF
  137. zimageinitrd-$(CONFIG_LITE5200) := zImage.initrd-STRIPELF
  138. end-$(CONFIG_LITE5200) := lite5200
  139. cacheflag-$(CONFIG_LITE5200) := -include $(clear_L2_L3)
  140. # SMP images should have a '.smp' suffix.
  141. end-$(CONFIG_SMP) := $(end-y).smp
  142. # This is a treeboot that needs init functions until the
  143. # boot rom is sorted out (i.e. this is short lived)
  144. EXTRA_AFLAGS := $(extra-aflags-y)
  145. # head.o needs to get the cacheflags defined.
  146. AFLAGS_head.o += $(cacheflag-y)
  147. # Linker args. This specifies where the image will be run at.
  148. LD_ARGS := -T $(srctree)/$(boot)/ld.script \
  149. -Ttext $(CONFIG_BOOT_LOAD) -Bstatic
  150. OBJCOPY_ARGS := -O elf32-powerpc
  151. # head.o and relocate.o must be at the start.
  152. boot-y := head.o relocate.o $(extra.o-y) $(misc-y)
  153. boot-$(CONFIG_REDWOOD_5) += embed_config.o
  154. boot-$(CONFIG_REDWOOD_6) += embed_config.o
  155. boot-$(CONFIG_8xx) += embed_config.o
  156. boot-$(CONFIG_8260) += embed_config.o
  157. boot-$(CONFIG_EP405) += embed_config.o
  158. boot-$(CONFIG_XILINX_ML300) += embed_config.o
  159. boot-$(CONFIG_XILINX_ML403) += embed_config.o
  160. boot-$(CONFIG_BSEIP) += iic.o
  161. boot-$(CONFIG_MBX) += iic.o pci.o qspan_pci.o
  162. boot-$(CONFIG_MV64X60) += misc-mv64x60.o
  163. boot-$(CONFIG_RPXCLASSIC) += iic.o pci.o qspan_pci.o
  164. boot-$(CONFIG_RPXLITE) += iic.o
  165. # Different boards need different serial implementations.
  166. ifeq ($(CONFIG_SERIAL_CPM_CONSOLE),y)
  167. boot-$(CONFIG_8xx) += m8xx_tty.o
  168. boot-$(CONFIG_8260) += m8260_tty.o
  169. endif
  170. boot-$(CONFIG_SERIAL_MPC52xx_CONSOLE) += mpc52xx_tty.o
  171. boot-$(CONFIG_SERIAL_MPSC_CONSOLE) += mv64x60_tty.o
  172. LIBS := $(common)/lib.a $(bootlib)/lib.a
  173. ifeq ($(CONFIG_PPC_PREP),y)
  174. LIBS += $(of1275)/lib.a
  175. endif
  176. OBJS := $(addprefix $(obj)/,$(boot-y))
  177. # Tools
  178. MKBUGBOOT := $(utils)/mkbugboot
  179. MKPREP := $(utils)/mkprep
  180. MKTREE := $(utils)/mktree
  181. targets := dummy.o
  182. $(obj)/zvmlinux: $(OBJS) $(LIBS) $(srctree)/$(boot)/ld.script \
  183. $(images)/vmlinux.gz $(obj)/dummy.o
  184. $(OBJCOPY) $(OBJCOPY_ARGS) \
  185. --add-section=.image=$(images)/vmlinux.gz \
  186. --set-section-flags=.image=contents,alloc,load,readonly,data \
  187. $(obj)/dummy.o $(obj)/image.o
  188. $(LD) $(LD_ARGS) -o $@ $(OBJS) $(obj)/image.o $(LIBS)
  189. $(OBJCOPY) $(OBJCOPY_ARGS) $@ $@ -R .comment -R .stab \
  190. -R .stabstr -R .ramdisk
  191. $(obj)/zvmlinux.initrd: $(OBJS) $(LIBS) $(srctree)/$(boot)/ld.script \
  192. $(images)/vmlinux.gz $(obj)/dummy.o
  193. $(OBJCOPY) $(OBJCOPY_ARGS) \
  194. --add-section=.ramdisk=$(images)/ramdisk.image.gz \
  195. --set-section-flags=.ramdisk=contents,alloc,load,readonly,data \
  196. --add-section=.image=$(images)/vmlinux.gz \
  197. --set-section-flags=.image=contents,alloc,load,readonly,data \
  198. $(obj)/dummy.o $(obj)/image.o
  199. $(LD) $(LD_ARGS) -o $@ $(OBJS) $(obj)/image.o $(LIBS)
  200. $(OBJCOPY) $(OBJCOPY_ARGS) $@ $@ -R .comment -R .stab \
  201. -R .stabstr
  202. # Sort-of dummy rules, that let us format the image we want.
  203. zImage: $(images)/$(zimage-y) $(obj)/zvmlinux
  204. cp -f $(obj)/zvmlinux $(images)/zImage.elf
  205. rm -f $(obj)/zvmlinux
  206. zImage.initrd: $(images)/$(zimageinitrd-y) $(obj)/zvmlinux.initrd
  207. cp -f $(obj)/zvmlinux.initrd $(images)/zImage.initrd.elf
  208. rm -f $(obj)/zvmlinux.initrd
  209. znetboot: zImage
  210. cp $(images)/zImage.$(end-y) $(tftpboot)/zImage.$(end-y)
  211. znetboot.initrd: zImage.initrd
  212. cp $(images)/zImage.initrd.$(end-y) $(tftpboot)/zImage.initrd.$(end-y)
  213. $(images)/zImage-STRIPELF: $(obj)/zvmlinux
  214. dd if=$(obj)/zvmlinux of=$(images)/zImage.$(end-y) skip=64 bs=1k
  215. $(images)/zImage.initrd-STRIPELF: $(obj)/zvmlinux.initrd
  216. dd if=$(obj)/zvmlinux.initrd of=$(images)/zImage.initrd.$(end-y) \
  217. skip=64 bs=1k
  218. $(images)/zImage-TREE: $(obj)/zvmlinux $(MKTREE)
  219. $(MKTREE) $(obj)/zvmlinux $(images)/zImage.$(end-y) $(entrypoint-y)
  220. $(images)/zImage.initrd-TREE: $(obj)/zvmlinux.initrd $(MKTREE)
  221. $(MKTREE) $(obj)/zvmlinux.initrd $(images)/zImage.initrd.$(end-y) \
  222. $(entrypoint-y)
  223. $(images)/zImage-PPLUS: $(obj)/zvmlinux $(MKPREP) $(MKBUGBOOT)
  224. $(MKPREP) -pbp $(obj)/zvmlinux $(images)/zImage.$(end-y)
  225. $(MKBUGBOOT) $(obj)/zvmlinux $(images)/zImage.bugboot
  226. $(images)/zImage.initrd-PPLUS: $(obj)/zvmlinux.initrd $(MKPREP) $(MKBUGBOOT)
  227. $(MKPREP) -pbp $(obj)/zvmlinux.initrd $(images)/zImage.initrd.$(end-y)
  228. $(MKBUGBOOT) $(obj)/zvmlinux.initrd $(images)/zImage.initrd.bugboot