Commit e06ef8ac authored by Russell King's avatar Russell King

[ARM] Convert bootp to use kbuild infrastructure.

parent c2fbce1e
...@@ -2,21 +2,23 @@ ...@@ -2,21 +2,23 @@
# linux/arch/arm/boot/bootp/Makefile # linux/arch/arm/boot/bootp/Makefile
# #
ZSYSTEM = arch/arm/boot/zImage LDFLAGS_bootp :=-p --no-undefined -X \
ZLDFLAGS =-p -X -T $(obj)/bootp.lds \
--defsym initrd_phys=$(INITRD_PHYS) \ --defsym initrd_phys=$(INITRD_PHYS) \
--defsym params_phys=$(PARAMS_PHYS) --defsym params_phys=$(PARAMS_PHYS) -T
AFLAGS_initrd.o :=-DINITRD=\"$(INITRD)\"
extra-y := bootp targets := bootp bootp.lds init.o kernel.o initrd.o
# Note that bootp.lds picks up kernel.o and initrd.o # Note that bootp.lds picks up kernel.o and initrd.o
$(obj)/bootp: $(addprefix $(obj)/,init.o kernel.o initrd.o bootp.lds) $(obj)/bootp: $(addprefix $(obj)/,bootp.lds init.o kernel.o initrd.o) FORCE
$(LD) $(ZLDFLAGS) -o $@ $(obj)/init.o $(call if_changed,ld)
@:
$(obj)/kernel.o: $(ZSYSTEM) # kernel.o and initrd.o includes a binary image using
$(LD) -r -s -o $@ -b binary $(ZSYSTEM) # .incbin, a dependency which is not tracked automatically
$(obj)/initrd.o: $(INITRD) $(obj)/kernel.o: arch/arm/boot/zImage FORCE
$(LD) -r -s -o $@ -b binary $(INITRD)
.PHONY: $(INITRD) $(ZSYSTEM) $(obj)/initrd.o: $(INITRD) FORCE
.PHONY: $(INITRD) FORCE
...@@ -12,16 +12,11 @@ ENTRY(_start) ...@@ -12,16 +12,11 @@ ENTRY(_start)
SECTIONS SECTIONS
{ {
. = 0; . = 0;
_text = .;
.text : { .text : {
_stext = .; _stext = .;
*(.start) *(.start)
arch/arm/boot/bootp/kernel.o *(.text)
. = ALIGN(32); initrd_size = initrd_end - initrd_start;
initrd_start = .;
arch/arm/boot/bootp/initrd.o
initrd_len = . - initrd_start;
. = ALIGN(32);
_etext = .; _etext = .;
} }
......
...@@ -20,11 +20,8 @@ ...@@ -20,11 +20,8 @@
.type _start, #function .type _start, #function
.globl _start .globl _start
_start: adr r12, kernel_start @ offset of kernel zImage _start: adr r13, data
ldr r4, [r12, #0x2c] @ length of zImage ldmia r13!, {r4-r6} @ r5 = dest, r6 = length
adr r13, data
add r4, r4, r12 @ end of zImage, start of initrd
ldmia r13!, {r5-r6} @ r5 = dest, r6 = length
bl move @ move the initrd bl move @ move the initrd
/* /*
...@@ -45,7 +42,7 @@ _start: adr r12, kernel_start @ offset of kernel zImage ...@@ -45,7 +42,7 @@ _start: adr r12, kernel_start @ offset of kernel zImage
*/ */
movne r10, #0 @ terminator movne r10, #0 @ terminator
movne r4, #2 @ Size of this entry (2 words) movne r4, #2 @ Size of this entry (2 words)
stmneia r8, {r4, r5, r10} @ Size, ATAG_CORE, terminator stmneia r9, {r4, r5, r10} @ Size, ATAG_CORE, terminator
/* /*
* find the end of the tag list, and then add an INITRD tag on the end. * find the end of the tag list, and then add an INITRD tag on the end.
...@@ -59,7 +56,7 @@ taglist: ldr r10, [r9, #0] @ tag length ...@@ -59,7 +56,7 @@ taglist: ldr r10, [r9, #0] @ tag length
mov r5, #4 @ Size of initrd tag (4 words) mov r5, #4 @ Size of initrd tag (4 words)
stmia r9, {r5, r6, r7, r8, r10} stmia r9, {r5, r6, r7, r8, r10}
mov pc, r12 @ call kernel b kernel_start @ call kernel
/* /*
* Move the block of memory length r6 from address r4 to address r5 * Move the block of memory length r6 from address r4 to address r5
...@@ -75,16 +72,13 @@ move: ldmia r4!, {r7 - r10} @ move 32-bytes at a time ...@@ -75,16 +72,13 @@ move: ldmia r4!, {r7 - r10} @ move 32-bytes at a time
.size _start, . - _start .size _start, . - _start
.type data,#object .type data,#object
data: .word initrd_phys @ destination initrd address data: .word initrd_start @ source initrd address
.word initrd_len @ initrd size .word initrd_phys @ destination initrd address
.word initrd_size @ initrd size
.word 0x54410001 @ r4 = ATAG_CORE .word 0x54410001 @ r5 = ATAG_CORE
.word 0x54420005 @ r5 = ATAG_INITRD2 .word 0x54420005 @ r6 = ATAG_INITRD2
.word initrd_phys @ r6 .word initrd_phys @ r7
.word initrd_len @ r7 .word initrd_size @ r8
.word params_phys @ r8 .word params_phys @ r9
.size data, . - _data .size data, . - data
.type initrd_start,#object
kernel_start:
.type initrd_start,#object
.globl initrd_start
initrd_start:
.incbin INITRD
.globl initrd_end
initrd_end:
.globl kernel_start
kernel_start:
.incbin "arch/arm/boot/zImage"
.globl kernel_end
kernel_end:
.align 2
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment