Linux-2.6.12-rc2
Initial git repository build. I'm not bothering with the full history, even though we have it. We can create a separate "historical" git archive of that later if we want to, and in the meantime it's about 3.2GB when imported into git - space that would just make the early git days unnecessarily complicated, when we don't have a lot of good infrastructure for it. Let it rip!
This commit is contained in:
24
arch/arm/boot/bootp/Makefile
Normal file
24
arch/arm/boot/bootp/Makefile
Normal file
@@ -0,0 +1,24 @@
|
||||
#
|
||||
# linux/arch/arm/boot/bootp/Makefile
|
||||
#
|
||||
|
||||
LDFLAGS_bootp :=-p --no-undefined -X \
|
||||
--defsym initrd_phys=$(INITRD_PHYS) \
|
||||
--defsym params_phys=$(PARAMS_PHYS) -T
|
||||
AFLAGS_initrd.o :=-DINITRD=\"$(INITRD)\"
|
||||
|
||||
targets := bootp init.o kernel.o initrd.o
|
||||
|
||||
# Note that bootp.lds picks up kernel.o and initrd.o
|
||||
$(obj)/bootp: $(src)/bootp.lds $(addprefix $(obj)/,init.o kernel.o initrd.o) FORCE
|
||||
$(call if_changed,ld)
|
||||
@:
|
||||
|
||||
# kernel.o and initrd.o includes a binary image using
|
||||
# .incbin, a dependency which is not tracked automatically
|
||||
|
||||
$(obj)/kernel.o: arch/arm/boot/zImage FORCE
|
||||
|
||||
$(obj)/initrd.o: $(INITRD) FORCE
|
||||
|
||||
.PHONY: $(INITRD) FORCE
|
30
arch/arm/boot/bootp/bootp.lds
Normal file
30
arch/arm/boot/bootp/bootp.lds
Normal file
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
* linux/arch/arm/boot/bootp/bootp.lds
|
||||
*
|
||||
* Copyright (C) 2000-2002 Russell King
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*/
|
||||
OUTPUT_ARCH(arm)
|
||||
ENTRY(_start)
|
||||
SECTIONS
|
||||
{
|
||||
. = 0;
|
||||
.text : {
|
||||
_stext = .;
|
||||
*(.start)
|
||||
*(.text)
|
||||
initrd_size = initrd_end - initrd_start;
|
||||
_etext = .;
|
||||
}
|
||||
|
||||
.stab 0 : { *(.stab) }
|
||||
.stabstr 0 : { *(.stabstr) }
|
||||
.stab.excl 0 : { *(.stab.excl) }
|
||||
.stab.exclstr 0 : { *(.stab.exclstr) }
|
||||
.stab.index 0 : { *(.stab.index) }
|
||||
.stab.indexstr 0 : { *(.stab.indexstr) }
|
||||
.comment 0 : { *(.comment) }
|
||||
}
|
86
arch/arm/boot/bootp/init.S
Normal file
86
arch/arm/boot/bootp/init.S
Normal file
@@ -0,0 +1,86 @@
|
||||
/*
|
||||
* linux/arch/arm/boot/bootp/init.S
|
||||
*
|
||||
* Copyright (C) 2000-2003 Russell King.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License version 2 as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* "Header" file for splitting kernel + initrd. Note that we pass
|
||||
* r0 through to r3 straight through.
|
||||
*
|
||||
* This demonstrates how to append code to the start of the kernel
|
||||
* zImage, and boot the kernel without copying it around. This
|
||||
* example would be simpler; if we didn't have an object of unknown
|
||||
* size immediately following the kernel, we could build this into
|
||||
* a binary blob, and concatenate the zImage using the cat command.
|
||||
*/
|
||||
.section .start,#alloc,#execinstr
|
||||
.type _start, #function
|
||||
.globl _start
|
||||
|
||||
_start: add lr, pc, #-0x8 @ lr = current load addr
|
||||
adr r13, data
|
||||
ldmia r13!, {r4-r6} @ r5 = dest, r6 = length
|
||||
add r4, r4, lr @ r4 = initrd_start + load addr
|
||||
bl move @ move the initrd
|
||||
|
||||
/*
|
||||
* Setup the initrd parameters to pass to the kernel. This can only be
|
||||
* passed in via the tagged list.
|
||||
*/
|
||||
ldmia r13, {r5-r9} @ get size and addr of initrd
|
||||
@ r5 = ATAG_CORE
|
||||
@ r6 = ATAG_INITRD2
|
||||
@ r7 = initrd start
|
||||
@ r8 = initrd end
|
||||
@ r9 = param_struct address
|
||||
|
||||
ldr r10, [r9, #4] @ get first tag
|
||||
teq r10, r5 @ is it ATAG_CORE?
|
||||
/*
|
||||
* If we didn't find a valid tag list, create a dummy ATAG_CORE entry.
|
||||
*/
|
||||
movne r10, #0 @ terminator
|
||||
movne r4, #2 @ Size of this entry (2 words)
|
||||
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.
|
||||
* If there is already an INITRD tag, then we ignore it; the last INITRD
|
||||
* tag takes precidence.
|
||||
*/
|
||||
taglist: ldr r10, [r9, #0] @ tag length
|
||||
teq r10, #0 @ last tag (zero length)?
|
||||
addne r9, r9, r10, lsl #2
|
||||
bne taglist
|
||||
|
||||
mov r5, #4 @ Size of initrd tag (4 words)
|
||||
stmia r9, {r5, r6, r7, r8, r10}
|
||||
b kernel_start @ call kernel
|
||||
|
||||
/*
|
||||
* Move the block of memory length r6 from address r4 to address r5
|
||||
*/
|
||||
move: ldmia r4!, {r7 - r10} @ move 32-bytes at a time
|
||||
stmia r5!, {r7 - r10}
|
||||
ldmia r4!, {r7 - r10}
|
||||
stmia r5!, {r7 - r10}
|
||||
subs r6, r6, #8 * 4
|
||||
bcs move
|
||||
mov pc, lr
|
||||
|
||||
.size _start, . - _start
|
||||
|
||||
.type data,#object
|
||||
data: .word initrd_start @ source initrd address
|
||||
.word initrd_phys @ destination initrd address
|
||||
.word initrd_size @ initrd size
|
||||
|
||||
.word 0x54410001 @ r5 = ATAG_CORE
|
||||
.word 0x54420005 @ r6 = ATAG_INITRD2
|
||||
.word initrd_phys @ r7
|
||||
.word initrd_size @ r8
|
||||
.word params_phys @ r9
|
||||
.size data, . - data
|
6
arch/arm/boot/bootp/initrd.S
Normal file
6
arch/arm/boot/bootp/initrd.S
Normal file
@@ -0,0 +1,6 @@
|
||||
.type initrd_start,#object
|
||||
.globl initrd_start
|
||||
initrd_start:
|
||||
.incbin INITRD
|
||||
.globl initrd_end
|
||||
initrd_end:
|
6
arch/arm/boot/bootp/kernel.S
Normal file
6
arch/arm/boot/bootp/kernel.S
Normal file
@@ -0,0 +1,6 @@
|
||||
.globl kernel_start
|
||||
kernel_start:
|
||||
.incbin "arch/arm/boot/zImage"
|
||||
.globl kernel_end
|
||||
kernel_end:
|
||||
.align 2
|
Reference in New Issue
Block a user