diff options
author | Ralf Baechle <ralf@linux-mips.org> | 2000-10-05 01:18:40 +0000 |
---|---|---|
committer | Ralf Baechle <ralf@linux-mips.org> | 2000-10-05 01:18:40 +0000 |
commit | 012bb3e61e5eced6c610f9e036372bf0c8def2d1 (patch) | |
tree | 87efc733f9b164e8c85c0336f92c8fb7eff6d183 /arch/arm/boot | |
parent | 625a1589d3d6464b5d90b8a0918789e3afffd220 (diff) |
Merge with Linux 2.4.0-test9. Please check DECstation, I had a number
of rejects to fixup while integrating Linus patches. I also found
that this kernel will only boot SMP on Origin; the UP kernel freeze
soon after bootup with SCSI timeout messages. I commit this anyway
since I found that the last CVS versions had the same problem.
Diffstat (limited to 'arch/arm/boot')
-rw-r--r-- | arch/arm/boot/Makefile | 11 | ||||
-rw-r--r-- | arch/arm/boot/bootp/Makefile | 2 | ||||
-rw-r--r-- | arch/arm/boot/bootp/bootp.lds | 39 | ||||
-rw-r--r-- | arch/arm/boot/bootp/init.S | 12 | ||||
-rw-r--r-- | arch/arm/boot/compressed/Makefile | 4 | ||||
-rw-r--r-- | arch/arm/boot/compressed/head-ftvpci.S | 40 | ||||
-rw-r--r-- | arch/arm/boot/compressed/head-netwinder.S | 9 | ||||
-rw-r--r-- | arch/arm/boot/compressed/head-nexuspci.S | 101 | ||||
-rw-r--r-- | arch/arm/boot/compressed/head.S | 29 | ||||
-rw-r--r-- | arch/arm/boot/compressed/ll_char_wr.S | 14 | ||||
-rw-r--r-- | arch/arm/boot/compressed/setup-sa1100.S | 2 | ||||
-rw-r--r-- | arch/arm/boot/compressed/vmlinux.lds.in | 9 |
12 files changed, 155 insertions, 117 deletions
diff --git a/arch/arm/boot/Makefile b/arch/arm/boot/Makefile index 2811e80ef..6fbdb5ea1 100644 --- a/arch/arm/boot/Makefile +++ b/arch/arm/boot/Makefile @@ -42,6 +42,13 @@ INITRD_PHYS = 0x00800000 INITRD_VIRT = 0xc0800000 endif +ifeq ($(CONFIG_ARCH_INTEGRATOR),y) +ZTEXTADDR = 0x00008000 +PARAMS = 0x00000100 +INITRD_PHYS = 0x00800000 +INITRD_VIRT = 0xc0800000 +endif + ifeq ($(CONFIG_ARCH_NEXUSPCI),y) ZTEXTADDR = 0x40200000 ZRELADDR = 0x40008000 @@ -105,10 +112,10 @@ initrd: @test "$(INITRD)" != "" || (echo You must specify INITRD; exit -1) install: $(CONFIGURE) Image - sh ./install.sh $(VERSION).$(PATCHLEVEL).$(SUBLEVEL) Image $(TOPDIR)/System.map "$(INSTALL_PATH)" + sh ./install.sh $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) Image $(TOPDIR)/System.map "$(INSTALL_PATH)" zinstall: $(CONFIGURE) zImage - sh ./install.sh $(VERSION).$(PATCHLEVEL).$(SUBLEVEL) zImage $(TOPDIR)/System.map "$(INSTALL_PATH)" + sh ./install.sh $(VERSION).$(PATCHLEVEL).$(SUBLEVEL)$(EXTRAVERSION) zImage $(TOPDIR)/System.map "$(INSTALL_PATH)" clean: $(RM) Image zImage bootpImage diff --git a/arch/arm/boot/bootp/Makefile b/arch/arm/boot/bootp/Makefile index c513c8ad3..918e3eb9e 100644 --- a/arch/arm/boot/bootp/Makefile +++ b/arch/arm/boot/bootp/Makefile @@ -23,4 +23,4 @@ initrd.o: $(INITRD) .PHONY: $(INITRD) $(ZSYSTEM) -clean:; $(RM) bootp bootp.lds +clean:; $(RM) bootp diff --git a/arch/arm/boot/bootp/bootp.lds b/arch/arm/boot/bootp/bootp.lds new file mode 100644 index 000000000..8c4e6895f --- /dev/null +++ b/arch/arm/boot/bootp/bootp.lds @@ -0,0 +1,39 @@ +/* + * linux/arch/arm/boot/bootp/bootp.lds + * + * Copyright (C) 2000 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 = .; + .text : { + _stext = .; + _start = .; + init.o(.start) + kernel_start = .; + kernel.o + kernel_len = . - kernel_start; + . = ALIGN(32); + *(.text) + initrd_start = .; + initrd.o + initrd_len = . - initrd_start; + . = ALIGN(32); + _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) } +} diff --git a/arch/arm/boot/bootp/init.S b/arch/arm/boot/bootp/init.S index c5682212f..2b498b7bb 100644 --- a/arch/arm/boot/bootp/init.S +++ b/arch/arm/boot/bootp/init.S @@ -1,6 +1,14 @@ /* - * Header file for splitting kernel + initrd. Note that we pass - * r0 through to r3 straight through. + * linux/arch/arm/boot/bootp/init.S + * + * Copyright (C) 2000 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. */ .section .start,#alloc,#execinstr .type _entry, #function diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile index 2a0108021..46b754ec5 100644 --- a/arch/arm/boot/compressed/Makefile +++ b/arch/arm/boot/compressed/Makefile @@ -24,6 +24,10 @@ ifeq ($(CONFIG_ARCH_NETWINDER),y) OBJS += head-netwinder.o endif +ifeq ($(CONFIG_ARCH_INTEGRATOR),y) +OBJS += head-netwinder.o +endif + ifeq ($(CONFIG_ARCH_NEXUSPCI),y) HEAD = head-nexuspci.o endif diff --git a/arch/arm/boot/compressed/head-ftvpci.S b/arch/arm/boot/compressed/head-ftvpci.S new file mode 100644 index 000000000..a8c806ef3 --- /dev/null +++ b/arch/arm/boot/compressed/head-ftvpci.S @@ -0,0 +1,40 @@ +/* + * linux/arch/arm/boot/compressed/head-ftvpci.S + * + * Copyright (C) 2000 FutureTV Labs Ltd. + * + * Special startup code for FTV PCI board. + */ + + .section ".start", #alloc, #execinstr +ftv_start: + mcr p15, 0, r0, c7, c5, 0 @ flush I cache + mrc p15, 0, r0, c1, c0 + orr r0, r0, #1 << 12 + mcr p15, 0, r0, c1, c0 @ enable I cache + mov r0, #0 + mcreq p15, 0, r0, c15, c1, 2 @ enable clock switching + + /* check to see if the kernel must be relocated */ + ldr ip, =ftv_start + adr sl, ftv_start + teq ip, sl + beq 2f @ no need to copy + + /* in the wrong place -> presumably, executing out of ROM */ + sub ip, ip, sl @ displacement + ldr lr, =_start @ destination + sub sp, lr, ip @ source + ldr fp, =_edata @ end of copied area +1: ldmia sp!, {r0, r1, r2, r3, r4, r5, r6, r10} + stmia lr!, {r0, r1, r2, r3, r4, r5, r6, r10} + cmp lr, fp + ble 1b + +2: + mov r8, #0 + mov r7, #3 + b 1f +.ltorg +1: + /* fall back into head.S */ diff --git a/arch/arm/boot/compressed/head-netwinder.S b/arch/arm/boot/compressed/head-netwinder.S index eca1d773d..5eecdec42 100644 --- a/arch/arm/boot/compressed/head-netwinder.S +++ b/arch/arm/boot/compressed/head-netwinder.S @@ -1,3 +1,12 @@ +/* + * linux/arch/arm/boot/compressed/head-netwinder.S + * + * Copyright (C) 2000 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. + */ #define K(a,b,c) ((a) << 24 | (b) << 12 | (c)) .section ".start", #alloc, #execinstr diff --git a/arch/arm/boot/compressed/head-nexuspci.S b/arch/arm/boot/compressed/head-nexuspci.S deleted file mode 100644 index 1fd49a95c..000000000 --- a/arch/arm/boot/compressed/head-nexuspci.S +++ /dev/null @@ -1,101 +0,0 @@ -/* - * linux/arch/arm/boot/compressed/head-nexuspci.S - * - * Copyright (C) 1996, 1997, 1998 Philip Blundell - * - * NexusPCI is unusual because we don't have a bootloader -- the kernel is - * run directly out of ROM at the moment. Maybe this will change one day and - * then this file can go away. - * - */ - - .text - -.globl _start -_start: b reset - b undefined - b undefined - b undefined - b undefined - b undefined - b undefined - b undefined - b go_uncompress - -reset: mov r2, #0x20000000 @ LED off - mov r1, #0x1a - str r1, [r2] - - mov r2, #0x10000000 @ SCC init - - mov r1, #42 - strb r1, [r2, #8] - - mov r1, #48 - strb r1, [r2, #8] - - mov r1, #16 - strb r1, [r2, #8] - - mov r1, #0x93 - strb r1, [r2, #0] - mov r1, #0x17 - strb r1, [r2, #0] - - mov r1, #0xbb - strb r1, [r2, #0x4] - - mov r1, #0x78 - strb r1, [r2, #0x10] - - mov r1, #160 - strb r1, [r2, #0x8] - - mov r1, #5 - strb r1, [r2, #0x8] - - ldr r2, =_start - ldr r3, =_edata - mov r8, r2 - mov r0, #0 -1: - ldmia r0!, {r4, r5, r6, r7} - stmia r2!, {r4, r5, r6, r7} - cmp r2, r3 - ble 1b - - ldr r3, =_edata - ldr r1, =_end - mov r2, #0 -1: - strb r2, [r3] - cmp r3, r1 - beq 2f - add r3, r3, #1 - b 1b -2: - add pc, r8, #0x20 - -undefined: ldr r4, =undef_msg -1: ldrb r0, [r4], #1 - movs r0, r0 -2: beq 2b - bl _ll_write_char - b 1b - -undef_msg: .ascii "Undefined instruction (or other problem)\000" - .align 4 - -/* - * Uncompress the kernel - */ -go_uncompress: - mov r0, #0x40000000 - ldr sp, =user_stack - add sp, sp, #4096 - bl decompress_kernel - - mov r2, #0x40000000 - mov r0, #0 - mov r1, #3 - add pc, r2, #0x20 @ call via EXEC entry diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index ef9090f72..21bdb43c0 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S @@ -1,7 +1,11 @@ /* - * linux/arch/arm/boot/compressed/head.S + * linux/arch/arm/boot/compressed/head.S * - * Copyright (C) 1996-1999 Russell King + * Copyright (C) 1996-1999 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. */ #include <linux/config.h> #include <linux/linkage.h> @@ -85,7 +89,7 @@ start: .word 0x016f2818 @ Magic numbers to help the loader .word start 1: mov r7, r1 @ save architecture ID - mov r8, r0 @ save r0 + mov r8, #0 @ save r0 #ifdef CONFIG_ANGELBOOT /* * Booting from Angel - need to enter SVC mode and disable @@ -198,9 +202,10 @@ cache_on: ldr r1, proc_sa110_type 1: sub r3, r4, #16384 @ Page directory size bic r3, r3, #0xff @ Align the pointer - bic r3, r3, #0x3f + bic r3, r3, #0x3f00 /* - * Initialise the page tables + * Initialise the page tables, turning on the cacheable and bufferable + * bits for the RAM area only. */ mov r0, r3 mov r8, r0, lsr #18 @@ -217,6 +222,20 @@ cache_on: ldr r1, proc_sa110_type add r1, r1, #1048576 teq r0, r2 bne 1b +/* + * If ever we are running from Flash, then we surely want the cache + * to be enabled also for our execution instance... We map 2MB of it + * so there is no map overlap problem for up to 1 MB compressed kernel. + * If the execution is in RAM then we would only be duplicating the above. + */ + mov r1, #0x1e + orr r1, r1, #3 << 10 + mov r2, pc, lsr #20 + orr r1, r1, r2, lsl #20 + add r0, r3, r2, lsl #2 + str r1, [r0], #4 + add r1, r1, #1048576 + str r1, [r0] mov r0, #0 mcr p15, 0, r0, c7, c10, 4 @ drain write buffer diff --git a/arch/arm/boot/compressed/ll_char_wr.S b/arch/arm/boot/compressed/ll_char_wr.S index 57865f2fd..8e1c8bc34 100644 --- a/arch/arm/boot/compressed/ll_char_wr.S +++ b/arch/arm/boot/compressed/ll_char_wr.S @@ -1,12 +1,16 @@ /* - * linux/arch/arm/lib/ll_char_wr.S + * linux/arch/arm/lib/ll_char_wr.S * - * Copyright (C) 1995, 1996 Russell King. + * Copyright (C) 1995, 1996 Russell King. * - * Speedups & 1bpp code (C) 1996 Philip Blundell & 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. * - * 10-04-96 RMK Various cleanups & reduced register usage. - * 08-04-98 RMK Shifts re-ordered + * Speedups & 1bpp code (C) 1996 Philip Blundell & Russell King. + * + * 10-04-96 RMK Various cleanups & reduced register usage. + * 08-04-98 RMK Shifts re-ordered */ @ Regs: [] = corruptible diff --git a/arch/arm/boot/compressed/setup-sa1100.S b/arch/arm/boot/compressed/setup-sa1100.S index f7657773b..3babde180 100644 --- a/arch/arm/boot/compressed/setup-sa1100.S +++ b/arch/arm/boot/compressed/setup-sa1100.S @@ -138,7 +138,7 @@ skip_uart: @ The machine type is passed in r0 mov r0, r3 #ifdef CONFIG_SA1100_NANOENGINE - teq r0, #32 @ MACH_TYPE_NANOENGINE + teq r0, #MACH_TYPE_NANOENGINE beq SYMBOL_NAME(bse_setup) #endif diff --git a/arch/arm/boot/compressed/vmlinux.lds.in b/arch/arm/boot/compressed/vmlinux.lds.in index f7469c634..86ed5e6e3 100644 --- a/arch/arm/boot/compressed/vmlinux.lds.in +++ b/arch/arm/boot/compressed/vmlinux.lds.in @@ -1,3 +1,12 @@ +/* + * linux/arch/arm/boot/compressed/vmlinux.lds.in + * + * Copyright (C) 2000 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 |