aboutsummaryrefslogtreecommitdiffstats
path: root/arch/ppc/boot/openfirmware/Makefile
diff options
context:
space:
mode:
Diffstat (limited to 'arch/ppc/boot/openfirmware/Makefile')
-rw-r--r--arch/ppc/boot/openfirmware/Makefile188
1 files changed, 188 insertions, 0 deletions
diff --git a/arch/ppc/boot/openfirmware/Makefile b/arch/ppc/boot/openfirmware/Makefile
new file mode 100644
index 000000000000..4eacbd8c772a
--- /dev/null
+++ b/arch/ppc/boot/openfirmware/Makefile
@@ -0,0 +1,188 @@
1# Makefile for making bootable images on various OpenFirmware machines.
2#
3# Paul Mackerras January 1997
4# XCOFF bootable images for PowerMacs
5# Geert Uytterhoeven September 1997
6# ELF bootable iamges for CHRP machines.
7# Tom Rini January 2001
8# Cleaned up, moved into arch/ppc/boot/pmac
9# Tom Rini July/August 2002
10# Merged 'chrp' and 'pmac' into 'openfirmware', and cleaned up the
11# rules.
12
13zImage.initrd znetboot.initrd: del-ramdisk-sec := -R .ramdisk
14zImage.initrd znetboot.initrd: initrd := .initrd
15
16
17boot := arch/ppc/boot
18common := $(boot)/common
19utils := $(boot)/utils
20bootlib := $(boot)/lib
21of1275 := $(boot)/of1275
22images := $(boot)/images
23
24OBJCOPY_ARGS := -O aixcoff-rs6000 -R .stab -R .stabstr -R .comment
25COFF_LD_ARGS := -T $(srctree)/$(boot)/ld.script -e _start -Ttext 0x00500000 \
26 -Bstatic
27CHRP_LD_ARGS := -T $(srctree)/$(boot)/ld.script -e _start -Ttext 0x00800000
28NEWWORLD_LD_ARGS:= -T $(srctree)/$(boot)/ld.script -e _start -Ttext 0x01000000
29
30COMMONOBJS := start.o misc.o common.o
31COFFOBJS := coffcrt0.o $(COMMONOBJS) coffmain.o
32CHRPOBJS := crt0.o $(COMMONOBJS) chrpmain.o
33NEWWORLDOBJS := crt0.o $(COMMONOBJS) newworldmain.o
34
35targets := $(COFFOBJS) $(CHRPOBJS) $(NEWWORLDOBJS) dummy.o
36COFFOBJS := $(addprefix $(obj)/, $(COFFOBJS))
37CHRPOBJS := $(addprefix $(obj)/, $(CHRPOBJS))
38NEWWORLDOBJS := $(addprefix $(obj)/, $(NEWWORLDOBJS))
39
40LIBS := lib/lib.a $(bootlib)/lib.a $(of1275)/lib.a $(common)/lib.a
41
42HACKCOFF := $(utils)/hack-coff
43
44ifdef CONFIG_SMP
45END := .smp
46endif
47ifdef CONFIG_PPC64BRIDGE
48END += .64
49endif
50
51
52$(images)/ramdisk.image.gz:
53 @echo ' MISSING $@'
54 @echo ' RAM disk image must be provided separately'
55 @/bin/false
56
57objcpxmon-$(CONFIG_XMON) := --add-section=.sysmap=System.map \
58 --set-section-flags=.sysmap=contents,alloc,load,readonly,data
59quiet_cmd_genimage = GEN $@
60 cmd_genimage = $(OBJCOPY) -R .comment \
61 --add-section=.image=$(images)/vmlinux.gz \
62 --set-section-flags=.image=contents,alloc,load,readonly,data \
63 $(objcpxmon-y) $< $@
64
65targets += image.o
66$(obj)/image.o: $(obj)/dummy.o $(images)/vmlinux.gz FORCE
67 $(call if_changed,genimage)
68
69# Place the ramdisk in the initrd image.
70quiet_cmd_genimage-initrd = GEN $@
71 cmd_genimage-initrd = $(OBJCOPY) $< $@ \
72 --add-section=.ramdisk=$(images)/ramdisk.image.gz \
73 --set-section-flags=.ramdisk=contents,alloc,load,readonly,data
74targets += image.initrd.o
75$(obj)/image.initrd.o: $(obj)/image.o $(images)/ramdisk.image.gz FORCE
76 $(call if_changed,genimage-initrd)
77
78# Create the note section for New-World PowerMacs.
79quiet_cmd_mknote = MKNOTE $@
80 cmd_mknote = $(utils)/mknote > $@
81targets += note
82$(obj)/note: $(utils)/mknote FORCE
83 $(call if_changed,mknote)
84
85
86$(obj)/coffcrt0.o: EXTRA_AFLAGS := -traditional -DXCOFF
87$(obj)/crt0.o: EXTRA_AFLAGS := -traditional
88targets += coffcrt0.o crt0.o
89$(obj)/coffcrt0.o $(obj)/crt0.o: $(common)/crt0.S FORCE
90 $(call if_changed_dep,as_o_S)
91
92quiet_cmd_gencoffb = COFF $@
93 cmd_gencoffb = $(LD) -o $@ $(COFF_LD_ARGS) $(COFFOBJS) $< $(LIBS) && \
94 $(OBJCOPY) $@ $@ -R .comment $(del-ramdisk-sec)
95targets += coffboot
96$(obj)/coffboot: $(obj)/image.o $(COFFOBJS) $(LIBS) $(srctree)/$(boot)/ld.script FORCE
97 $(call if_changed,gencoffb)
98targets += coffboot.initrd
99$(obj)/coffboot.initrd: $(obj)/image.initrd.o $(COFFOBJS) $(LIBS) \
100 $(srctree)/$(boot)/ld.script FORCE
101 $(call if_changed,gencoffb)
102
103
104quiet_cmd_gen-coff = COFF $@
105 cmd_gen-coff = $(OBJCOPY) $(OBJCOPY_ARGS) $< $@ && \
106 $(HACKCOFF) $@ && \
107 ln -sf $(notdir $@) $(images)/zImage$(initrd).pmac
108
109$(images)/vmlinux.coff: $(obj)/coffboot
110 $(call cmd,gen-coff)
111
112$(images)/vmlinux.initrd.coff: $(obj)/coffboot.initrd
113 $(call cmd,gen-coff)
114
115quiet_cmd_gen-elf-pmac = ELF $@
116 cmd_gen-elf-pmac = $(LD) $(NEWWORLD_LD_ARGS) -o $@ \
117 $(NEWWORLDOBJS) $(LIBS) $< && \
118 $(OBJCOPY) $@ $@ --add-section=.note=$(obj)/note \
119 -R .comment $(del-ramdisk-sec)
120
121$(images)/vmlinux.elf-pmac: $(obj)/image.o $(NEWWORLDOBJS) $(LIBS) \
122 $(obj)/note $(srctree)/$(boot)/ld.script
123 $(call cmd,gen-elf-pmac)
124$(images)/vmlinux.initrd.elf-pmac: $(obj)/image.initrd.o $(NEWWORLDOBJS) \
125 $(LIBS) $(obj)/note \
126 $(srctree)/$(boot)/ld.script
127 $(call cmd,gen-elf-pmac)
128
129quiet_cmd_gen-chrp = CHRP $@
130 cmd_gen-chrp = $(LD) $(CHRP_LD_ARGS) -o $@ $(CHRPOBJS) $< $(LIBS) && \
131 $(OBJCOPY) $@ $@ -R .comment $(del-ramdisk-sec)
132
133$(images)/zImage.chrp: $(obj)/image.o $(CHRPOBJS) $(LIBS) \
134 $(srctree)/$(boot)/ld.script
135 $(call cmd,gen-chrp)
136$(images)/zImage.initrd.chrp: $(obj)/image.initrd.o $(CHRPOBJS) $(LIBS) \
137 $(srctree)/$(boot)/ld.script
138 $(call cmd,gen-chrp)
139
140quiet_cmd_addnote = ADDNOTE $@
141 cmd_addnote = cat $< > $@ && $(utils)/addnote $@
142$(images)/zImage.chrp-rs6k $(images)/zImage.initrd.chrp-rs6k: \
143 %-rs6k: %
144 $(call cmd,addnote)
145
146quiet_cmd_gen-miboot = GEN $@
147 cmd_gen-miboot = $(OBJCOPY) $(OBJCOPY_ARGS) \
148 --add-section=$1=$(word 2, $^) $< $@
149$(images)/miboot.image: $(obj)/dummy.o $(images)/vmlinux.gz
150 $(call cmd,gen-miboot,image)
151
152$(images)/miboot.initrd.image: $(images)/miboot.image $(images)/ramdisk.image.gz
153 $(call cmd,gen-miboot,initrd)
154
155# The targets used on the make command-line
156
157.PHONY: zImage zImage.initrd
158zImage: $(images)/vmlinux.coff \
159 $(images)/vmlinux.elf-pmac \
160 $(images)/zImage.chrp \
161 $(images)/zImage.chrp-rs6k \
162 $(images)/miboot.image
163 @echo ' kernel: $@ is ready ($<)'
164zImage.initrd: $(images)/vmlinux.initrd.coff \
165 $(images)/vmlinux.initrd.elf-pmac \
166 $(images)/zImage.initrd.chrp \
167 $(images)/zImage.initrd.chrp-rs6k \
168 $(images)/miboot.initrd.image
169 @echo ' kernel: $@ is ready ($<)'
170
171TFTPIMAGE := /tftpboot/zImage
172
173.PHONY: znetboot znetboot.initrd
174znetboot: $(images)/vmlinux.coff \
175 $(images)/vmlinux.elf-pmac \
176 $(images)/zImage.chrp
177 cp $(images)/vmlinux.coff $(TFTPIMAGE).pmac$(END)
178 cp $(images)/vmlinux.elf-pmac $(TFTPIMAGE).pmac$(END).elf
179 cp $(images)/zImage.chrp $(TFTPIMAGE).chrp$(END)
180 @echo ' kernel: $@ is ready ($<)'
181znetboot.initrd:$(images)/vmlinux.initrd.coff \
182 $(images)/vmlinux.initrd.elf-pmac \
183 $(images)/zImage.initrd.chrp
184 cp $(images)/vmlinux.initrd.coff $(TFTPIMAGE).pmac$(END)
185 cp $(images)/vmlinux.initrd.elf-pmac $(TFTPIMAGE).pmac$(END).elf
186 cp $(images)/zImage.initrd.chrp $(TFTPIMAGE).chrp$(END)
187 @echo ' kernel: $@ is ready ($<)'
188