GIT 8fd00a8501aef380c171bcc26b0f9d439dd93e3c git+ssh://master.kernel.org/home/rmk/linux-2.6-arm.git#devel commit 86cc8c94fd5c6157536b6656331b36d93c472fd6 Author: Bill Gatliff Date: Thu May 31 22:02:22 2007 +0100 [ARM] 4423/1: add ATAGS support Examines the ATAGS pointer (r2) at boot, and interprets a nonzero value as a reference to an ATAGS structure. A suitable ATAGS structure replaces the kernel's command line. Signed-off-by: Bill Gatliff Signed-off-by: Russell King commit b32437379313f64ff34d57c3172cfdf40203d1b8 Author: Dan Williams Date: Wed Jun 6 17:51:21 2007 +0100 [ARM] 4429/2: iop13xx: expose the 'iop' attribute versions of the tpmi control registers The tpmi control registers can be accessed on the internal bus via an address with PCI attributes or IOP attributes (i.e. read-only, read-write... etc). The sas driver needs access to the iop-attribute registers for initialization. Changelog: * use ARRAY_SIZE for num_resources, Russell King Signed-off-by: Dan Williams Signed-off-by: Russell King commit ac0443df0b5a43cba4813e8fa44ebf8e4199a891 Author: Catalin Marinas Date: Fri Jun 1 17:14:53 2007 +0100 [ARM] 4393/2: ARMv7: Add uncompressing code for the new CPU Id format The current arch/arm/boot/compressed/head.S code only supports cores to ARMv6 with the old CPU Id format. This patch adds support for the new ARMv6 with the new CPU Id and ARMv7 cores that no longer have the ARMv4 cache operations. Signed-off-by: Catalin Marinas Signed-off-by: Russell King commit f9e595090f2cb7c17fba61c3211794a9cfcfb54f Author: Vladimir Barinov Date: Tue Jun 5 16:36:55 2007 +0100 [ARM] 4430/1: davinci: clock control support Support clock control driver for TI DaVinci SoC Signed-off-by: Vladimir Barinov Signed-off-by: Kevin Hilman Signed-off-by: Russell King commit 9fb43a65481d3ab850b1360686ceb26a1f7305c1 Author: Russell King Date: Sun Jun 3 18:50:49 2007 +0100 [ARM] If linux/irq.h is included, asm/irq.h is not required Signed-off-by: Russell King commit bc040e71f7013e12babe26bb24a58e5362e98482 Author: Michael-Luke Jones Date: Sat May 26 21:58:07 2007 +0100 [ARM] 4407/1: Remove in-kernel mach id setting for gtwx5715 ixp4xx board If MACH_GTWX5715 is set in Kconfig, this code sets the mach id automatically. Howeber, this means that any IXP4xx kernel which is setup to support the gtwx5715 board will not successfully boot on any other board. If the bootloader sets the wrong mach id, it should be set correctly by a kernel shim. Signed-off-by: Michael-Luke Jones Signed-off-by: Russell King commit 3f83b5f80b7f1883ca9093abd58c8b5b794fd04c Author: Michael-Luke Jones Date: Thu May 31 12:27:14 2007 +0100 [ARM] 4408/2: Fixup support for gtwx5715 ixp4xx board This patch fixes up compiling of the gtwx5715 board setup code, which has apparently been broken since 2.6.18 and the generic IRQ changes. In addition it removes some unecessary extern declarations in the gtwx5715-pci.c file. Signed-off-by: Michael-Luke Jones Signed-off-by: Russell King commit cae489b1e63770cf1da2b3d17e43553cb6d3f553 Author: Russell King Date: Sun Jun 3 19:26:04 2007 +0100 [ARM] Fix bounding error in ioremap_pfn() If size=16M offset=2K then we should map two supersections rather than just one. Signed-off-by: Russell King commit 95486c3e5bb944726392b0542bd1f83726afdd8b Author: Russell King Date: Sun Jun 3 18:54:42 2007 +0100 [ARM] riscpc: fix decompressor font file handling font_acorn_8x8.o was being built in drivers/video/console/ twice during a build _in the same location_ - once for the kernel proper, and once for the decompressor. The result is when you came to run an install target, the kernel was always rebuilt due to this file apparantly having been built with different compiler arguments. Solve this by making a local copy at build time in the decompressor's directory. Signed-off-by: Russell King commit 7045af14738315229aae8a2dccb062c6aa124fa9 Author: Greg Ungerer Date: Mon Jun 4 06:46:26 2007 +0100 [ARM] 4428/1: modify at91 includes to handle non-MMU at91x40 family Modify the common at91 hardware support to deal with the non-MMU at91x40 family. The base RAM (which is most likely not DRAM) is set to the configured value. Virtual IO device mapping is set to be 1 to 1 with the physical addresses. Signed-off-by: Greg Ungerer Acked-by: Andrew Victor Signed-off-by: Russell King commit 7683e6a043ab95e10a5d0d5974819fc087faa49a Author: Greg Ungerer Date: Mon Jun 4 06:45:38 2007 +0100 [ARM] 4427/1: base Atmel at91x40 architecture defines Base at91x40 architecture support defines. These parts are somewhat simpler than the ARM9 Atmel based parts. Signed-off-by: Greg Ungerer Acked-by: Andrew Victor Signed-off-by: Russell King commit ea7cae54b488acac79d5c22e0f85ef353e7d2814 Author: Greg Ungerer Date: Fri May 18 06:28:01 2007 +0100 [ARM] 4391/1: make at91 debug unit support optional The AT91x40 family doesn't have the debug unit like its bigger brothers. But it does have the ID and extension registers (with the bit meanings the same). Reorganize at91_dbgu.h to cater for this. This also affects the load uncompressor, since it outputs to the debug port. Signed-off-by: Greg Ungerer Acked-by: Andrew Victor Signed-off-by: Russell King commit ffda03be209e78d3e0cd3acccdf89b614e10944c Author: Andrew Victor Date: Mon Jun 4 08:41:59 2007 +0100 [ARM] 4420/2: AT91: GPIO buttons on SAM9261-EK board Register the GPIO-connected buttons on the SAM9261-EK board as a "gpio-keys" platform device. Signed-off-by: Andrew Victor Signed-off-by: Russell King commit b327a86feabece5f5cc920eda4c7fe23f2a41c3c Author: Andrew Victor Date: Mon May 14 15:08:21 2007 +0100 [ARM] 4379/1: AT91: LCD support on SAM9261-EK and SAM9263-EK boards Add board-specific setup for the LCD on the Atmel AT91SAM9261-EK and AT91SAM9263-EK boards. Signed-off-by: Nicolas Ferre Signed-off-by: Andrew Victor Signed-off-by: Russell King commit 68d3446bfd2ea99dde94b2f7588c5a8a0969329c Author: Andrew Victor Date: Mon May 14 14:30:15 2007 +0100 [ARM] 4377/1: KS8695: GPIO driver Driver to control the GPIO pins on the KS8695 processor. The driver natively supports the Generic GPIO interface. Signed-off-by: Andrew Victor Signed-off-by: Russell King commit 3d8c3387da8af373af1d3c4321ab096a481d23bb Author: Pavel Pisa Date: Sun May 13 17:37:33 2007 +0100 [ARM] 4374/3: i.MX/MX1 clock event source Support clock event source based on i.MX general purpose timer in free running timer mode. Signed-off-by: Pavel Pisa Acked-by: Thomas Gleixner Acked-by: Sascha Hauer Signed-off-by: Russell King commit 1621b938fdd0bdc129a4ed2a852f356f85bc33d6 Author: Pavel Pisa Date: Sat May 12 14:31:17 2007 +0100 [ARM] 4373/1: i.MX/MX1 GPIO support implementation Support for generic input output for MX1 family. The implementation prevents allocation of one pin by two users, but does not store pointer to the user description permanently, because this solution would have bigger memory overhead. The simple way to integrate code with per BSP pins setup and allocation is required else all GPIO registration checking is useless. The function imx_gpio_setup_multiple_pins() can be used for this purpose in future. Signed-off-by: Pavel Pisa Signed-off-by: Russell King commit c7dfe9a1b7fa47de575e5c951f558620b60e1c0a Author: Imre Kaloz Date: Sat Jun 2 15:47:51 2007 +0100 [ARM] 4426/2: Netgear WG302 v2 and WAG302 v2 support This patch provides support for the Netgear WG302 v2 and WAG302 v2 AccessPoint series. This patch relies on the patch "Gateway 7001 series support" minimally, as they only have UART2 connected. Updated to stay below the 80 char limit in uncompress.h Signed-off-by: Imre Kaloz Signed-off-by: Deepak Saxena Signed-off-by: Russell King commit a16e6053c101ac2408e2c239e98a20d54dc698bf Author: Imre Kaloz Date: Sat Jun 2 15:44:08 2007 +0100 [ARM] 4425/2: Gateway 7001 series support This patch provides support for the Gateway 7001 AccessPoint series. Updated to stay below the 80 char limit in uncompress.h Signed-off-by: Imre Kaloz Signed-off-by: Deepak Saxena Signed-off-by: Russell King commit 09c5638af0ed33c658f57b9ede19a6abccb68a4e Author: Vladimir Barinov Date: Wed May 16 20:39:02 2007 +0100 [ARM] 4385/2: ixdp425: NAND support IXDP425 NAND support (arch specific part). The generic platform driver that is used by ixdp425 platfrom is already in upstream kernel in 2.6.22-rc1. Signed-off-by: Vladimir Barinov Signed-off-by: Ruslan Sushko Signed-off-by: Deepak Saxena Signed-off-by: Russell King arch/arm/Kconfig | 4 arch/arm/boot/compressed/.gitignore | 1 arch/arm/boot/compressed/Makefile | 13 + arch/arm/boot/compressed/head-xscale.S | 5 arch/arm/boot/compressed/head.S | 93 +++++++++ arch/arm/kernel/head-common.S | 40 +++- arch/arm/kernel/head.S | 7 + arch/arm/kernel/setup.c | 6 - arch/arm/mach-at91/board-sam9261ek.c | 130 ++++++++++++ arch/arm/mach-at91/board-sam9263ek.c | 64 ++++++ arch/arm/mach-davinci/Makefile | 2 arch/arm/mach-davinci/board-evm.c | 2 arch/arm/mach-davinci/clock.c | 323 ++++++++++++++++++++++++++++++ arch/arm/mach-davinci/clock.h | 33 +++ arch/arm/mach-davinci/io.c | 6 + arch/arm/mach-imx/generic.c | 118 +++++++++++ arch/arm/mach-imx/time.c | 121 ++++++++++- arch/arm/mach-iop13xx/tpmi.c | 32 +++ arch/arm/mach-ixp4xx/Kconfig | 16 + arch/arm/mach-ixp4xx/Makefile | 4 arch/arm/mach-ixp4xx/gateway7001-pci.c | 63 ++++++ arch/arm/mach-ixp4xx/gateway7001-setup.c | 108 ++++++++++ arch/arm/mach-ixp4xx/gtwx5715-pci.c | 8 - arch/arm/mach-ixp4xx/ixdp425-setup.c | 96 +++++++++ arch/arm/mach-ixp4xx/wg302v2-pci.c | 63 ++++++ arch/arm/mach-ixp4xx/wg302v2-setup.c | 109 ++++++++++ arch/arm/mach-ks8695/Makefile | 2 arch/arm/mach-ks8695/gpio.c | 218 ++++++++++++++++++++ arch/arm/mm/ioremap.c | 10 - include/asm-arm/arch-at91/at91_dbgu.h | 13 + include/asm-arm/arch-at91/at91x40.h | 55 +++++ include/asm-arm/arch-at91/cpu.h | 5 include/asm-arm/arch-at91/hardware.h | 17 +- include/asm-arm/arch-at91/timex.h | 5 include/asm-arm/arch-at91/uncompress.h | 4 include/asm-arm/arch-davinci/clock.h | 22 ++ include/asm-arm/arch-imx/gpio.h | 102 +++++++++ include/asm-arm/arch-imx/imx-regs.h | 2 include/asm-arm/arch-ixp4xx/ixdp425.h | 4 include/asm-arm/arch-ixp4xx/uncompress.h | 5 include/asm-arm/arch-ks8695/gpio.h | 79 +++++++ 41 files changed, 1954 insertions(+), 56 deletions(-) diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index 50d9f3e..a966106 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -241,6 +241,9 @@ config ARCH_H720X config ARCH_IMX bool "IMX" + select GENERIC_GPIO + select GENERIC_TIME + select GENERIC_CLOCKEVENTS help Support for Motorola's i.MX family of processors (MX1, MXL). @@ -308,6 +311,7 @@ config ARCH_L7200 config ARCH_KS8695 bool "Micrel/Kendin KS8695" + select GENERIC_GPIO help Support for Micrel/Kendin KS8695 "Centaur" (ARM922T) based System-on-Chip devices. diff --git a/arch/arm/boot/compressed/.gitignore b/arch/arm/boot/compressed/.gitignore index aefee20..b15f927 100644 --- a/arch/arm/boot/compressed/.gitignore +++ b/arch/arm/boot/compressed/.gitignore @@ -1 +1,2 @@ piggy.gz +font.c diff --git a/arch/arm/boot/compressed/Makefile b/arch/arm/boot/compressed/Makefile index adddc71..a1f1691 100644 --- a/arch/arm/boot/compressed/Makefile +++ b/arch/arm/boot/compressed/Makefile @@ -6,15 +6,13 @@ # HEAD = head.o OBJS = misc.o -FONTC = drivers/video/console/font_acorn_8x8.c - -FONT = $(addprefix ../../../../drivers/video/console/, font_acorn_8x8.o) +FONTC = $(srctree)/drivers/video/console/font_acorn_8x8.c # # Architecture dependencies # ifeq ($(CONFIG_ARCH_ACORN),y) -OBJS += ll_char_wr.o $(FONT) +OBJS += ll_char_wr.o font.o endif ifeq ($(CONFIG_ARCH_SHARK),y) @@ -73,7 +71,7 @@ endif SEDFLAGS = s/TEXT_START/$(ZTEXTADDR)/;s/BSS_START/$(ZBSSADDR)/ -targets := vmlinux vmlinux.lds piggy.gz piggy.o $(FONT) \ +targets := vmlinux vmlinux.lds piggy.gz piggy.o font.o font.c \ head.o misc.o $(OBJS) EXTRA_CFLAGS := -fpic EXTRA_AFLAGS := @@ -105,7 +103,10 @@ CFLAGS_misc.o := -Dstatic= $(obj)/piggy.o: $(obj)/piggy.gz FORCE -CFLAGS_font_acorn_8x8.o := -Dstatic= +CFLAGS_font.o := -Dstatic= + +$(obj)/font.c: $(FONTC) + $(call cmd,shipped) $(obj)/vmlinux.lds: $(obj)/vmlinux.lds.in arch/arm/boot/Makefile .config @sed "$(SEDFLAGS)" < $< > $@ diff --git a/arch/arm/boot/compressed/head-xscale.S b/arch/arm/boot/compressed/head-xscale.S index 73c5d9e..236bbe5 100644 --- a/arch/arm/boot/compressed/head-xscale.S +++ b/arch/arm/boot/compressed/head-xscale.S @@ -41,11 +41,6 @@ #ifdef CONFIG_ARCH_COTULLA_IDP mov r7, #MACH_TYPE_COTULLA_IDP #endif -#ifdef CONFIG_MACH_GTWX5715 - mov r7, #(MACH_TYPE_GTWX5715 & 0xff) - orr r7, r7, #(MACH_TYPE_GTWX5715 & 0xff00) -#endif - #ifdef CONFIG_ARCH_IXP2000 mov r1, #-1 mov r0, #0xd6000000 diff --git a/arch/arm/boot/compressed/head.S b/arch/arm/boot/compressed/head.S index 680ea6e..d7fb5ee 100644 --- a/arch/arm/boot/compressed/head.S +++ b/arch/arm/boot/compressed/head.S @@ -436,6 +436,28 @@ __armv4_mmu_cache_on: mcr p15, 0, r0, c8, c7, 0 @ flush I,D TLBs mov pc, r12 +__armv7_mmu_cache_on: + mov r12, lr + mrc p15, 0, r11, c0, c1, 4 @ read ID_MMFR0 + tst r11, #0xf @ VMSA + blne __setup_mmu + mov r0, #0 + mcr p15, 0, r0, c7, c10, 4 @ drain write buffer + tst r11, #0xf @ VMSA + mcrne p15, 0, r0, c8, c7, 0 @ flush I,D TLBs + mrc p15, 0, r0, c1, c0, 0 @ read control reg + orr r0, r0, #0x5000 @ I-cache enable, RR cache replacement + orr r0, r0, #0x003c @ write buffer + orrne r0, r0, #1 @ MMU enabled + movne r1, #-1 + mcrne p15, 0, r3, c2, c0, 0 @ load page table pointer + mcrne p15, 0, r1, c3, c0, 0 @ load domain access control + mcr p15, 0, r0, c1, c0, 0 @ load control register + mrc p15, 0, r0, c1, c0, 0 @ and read it back + mov r0, #0 + mcr p15, 0, r0, c7, c5, 4 @ ISB + mov pc, r12 + __arm6_mmu_cache_on: mov r12, lr bl __setup_mmu @@ -622,11 +644,17 @@ proc_types: b __armv4_mmu_cache_flush .word 0x0007b000 @ ARMv6 - .word 0x0007f000 + .word 0x000ff000 b __armv4_mmu_cache_on b __armv4_mmu_cache_off b __armv6_mmu_cache_flush + .word 0x000f0000 @ new CPU Id + .word 0x000f0000 + b __armv7_mmu_cache_on + b __armv7_mmu_cache_off + b __armv7_mmu_cache_flush + .word 0 @ unrecognised type .word 0 mov pc, lr @@ -674,6 +702,16 @@ __armv4_mmu_cache_off: mcr p15, 0, r0, c8, c7 @ invalidate whole TLB v4 mov pc, lr +__armv7_mmu_cache_off: + mrc p15, 0, r0, c1, c0 + bic r0, r0, #0x000d + mcr p15, 0, r0, c1, c0 @ turn MMU and cache off + mov r12, lr + bl __armv7_mmu_cache_flush + mov r0, #0 + mcr p15, 0, r0, c8, c7, 0 @ invalidate whole TLB + mov pc, r12 + __arm6_mmu_cache_off: mov r0, #0x00000030 @ ARM6 control reg. b __armv3_mmu_cache_off @@ -730,6 +768,59 @@ __armv6_mmu_cache_flush: mcr p15, 0, r1, c7, c10, 4 @ drain WB mov pc, lr +__armv7_mmu_cache_flush: + mrc p15, 0, r10, c0, c1, 5 @ read ID_MMFR1 + tst r10, #0xf << 16 @ hierarchical cache (ARMv7) + beq hierarchical + mov r10, #0 + mcr p15, 0, r10, c7, c14, 0 @ clean+invalidate D + b iflush +hierarchical: + stmfd sp!, {r0-r5, r7, r9-r11} + mrc p15, 1, r0, c0, c0, 1 @ read clidr + ands r3, r0, #0x7000000 @ extract loc from clidr + mov r3, r3, lsr #23 @ left align loc bit field + beq finished @ if loc is 0, then no need to clean + mov r10, #0 @ start clean at cache level 0 +loop1: + add r2, r10, r10, lsr #1 @ work out 3x current cache level + mov r1, r0, lsr r2 @ extract cache type bits from clidr + and r1, r1, #7 @ mask of the bits for current cache only + cmp r1, #2 @ see what cache we have at this level + blt skip @ skip if no cache, or just i-cache + mcr p15, 2, r10, c0, c0, 0 @ select current cache level in cssr + mcr p15, 0, r10, c7, c5, 4 @ isb to sych the new cssr&csidr + mrc p15, 1, r1, c0, c0, 0 @ read the new csidr + and r2, r1, #7 @ extract the length of the cache lines + add r2, r2, #4 @ add 4 (line length offset) + ldr r4, =0x3ff + ands r4, r4, r1, lsr #3 @ find maximum number on the way size + .word 0xe16f5f14 @ clz r5, r4 - find bit position of way size increment + ldr r7, =0x7fff + ands r7, r7, r1, lsr #13 @ extract max number of the index size +loop2: + mov r9, r4 @ create working copy of max way size +loop3: + orr r11, r10, r9, lsl r5 @ factor way and cache number into r11 + orr r11, r11, r7, lsl r2 @ factor index number into r11 + mcr p15, 0, r11, c7, c14, 2 @ clean & invalidate by set/way + subs r9, r9, #1 @ decrement the way + bge loop3 + subs r7, r7, #1 @ decrement the index + bge loop2 +skip: + add r10, r10, #2 @ increment cache number + cmp r3, r10 + bgt loop1 +finished: + mov r10, #0 @ swith back to cache level 0 + mcr p15, 2, r10, c0, c0, 0 @ select current cache level in cssr + ldmfd sp!, {r0-r5, r7, r9-r11} +iflush: + mcr p15, 0, r10, c7, c5, 0 @ invalidate I+BTB + mcr p15, 0, r10, c7, c10, 4 @ drain WB + mov pc, lr + __armv4_mmu_cache_flush: mov r2, #64*1024 @ default: 32K dcache size (*2) mov r11, #32 @ default: 32 byte line size diff --git a/arch/arm/kernel/head-common.S b/arch/arm/kernel/head-common.S index a52da0d..024a9cf 100644 --- a/arch/arm/kernel/head-common.S +++ b/arch/arm/kernel/head-common.S @@ -20,7 +20,8 @@ __switch_data: .long _end @ r7 .long processor_id @ r4 .long __machine_arch_type @ r5 - .long cr_alignment @ r6 + .long __atags_pointer @ r6 + .long cr_alignment @ r7 .long init_thread_union + THREAD_START_SP @ sp /* @@ -29,6 +30,7 @@ __switch_data: * * r0 = cp#15 control register * r1 = machine ID + * r2 = atags pointer * r9 = processor ID */ .type __mmap_switched, %function @@ -47,11 +49,12 @@ __mmap_switched: strcc fp, [r6],#4 bcc 1b - ldmia r3, {r4, r5, r6, sp} + ldmia r3, {r4, r5, r6, r7, sp} str r9, [r4] @ Save processor ID str r1, [r5] @ Save machine type + str r2, [r6] @ Save atags pointer bic r4, r0, #CR_A @ Clear 'A' bit - stmia r6, {r0, r4} @ Save control register values + stmia r7, {r0, r4} @ Save control register values b start_kernel /* @@ -215,3 +218,34 @@ ENTRY(lookup_machine_type) bl __lookup_machine_type mov r0, r5 ldmfd sp!, {r4 - r6, pc} + +/* Determine validity of the r2 atags pointer. The heuristic requires + * that the pointer be aligned, in the first 16k of physical RAM and + * that the ATAG_CORE marker is first and present. Future revisions + * of this function may be more lenient with the physical address and + * may also be able to move the ATAGS block if necessary. + * + * r8 = machinfo + * + * Returns: + * r2 either valid atags pointer, or zero + * r5, r6 corrupted + */ + + .type __vet_atags, %function +__vet_atags: + tst r2, #0x3 @ aligned? + bne 1f + + ldr r5, [r2, #0] @ is first tag ATAG_CORE? + subs r5, r5, #ATAG_CORE_SIZE + bne 1f + ldr r5, [r2, #4] + ldr r6, =ATAG_CORE + cmp r5, r6 + bne 1f + + mov pc, lr @ atag pointer is ok + +1: mov r2, #0 + mov pc, lr diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S index 41f98b4..7898cbc 100644 --- a/arch/arm/kernel/head.S +++ b/arch/arm/kernel/head.S @@ -29,6 +29,10 @@ #endif #define KERNEL_RAM_VADDR (PAGE_OFFSET + TEXT_OFFSET) #define KERNEL_RAM_PADDR (PHYS_OFFSET + TEXT_OFFSET) +#define ATAG_CORE 0x54410001 +#define ATAG_CORE_SIZE ((2*4 + 3*4) >> 2) + + /* * swapper_pg_dir is the virtual address of the initial page table. * We place the page tables 16K below KERNEL_RAM_VADDR. Therefore, we must @@ -61,7 +65,7 @@ #endif * * This is normally called from the decompressor code. The requirements * are: MMU = off, D-cache = off, I-cache = dont care, r0 = 0, - * r1 = machine nr. + * r1 = machine nr, r2 = atags pointer. * * This code is mostly position independent, so if you link the kernel at * 0xc0008000, you call this at __pa(0xc0008000). @@ -85,6 +89,7 @@ ENTRY(stext) bl __lookup_machine_type @ r5=machinfo movs r8, r5 @ invalid machine (r5=0)? beq __error_a @ yes, error 'a' + bl __vet_atags bl __create_page_tables /* diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index 650eac1..5be2e98 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c @@ -63,6 +63,8 @@ unsigned int processor_id; unsigned int __machine_arch_type; EXPORT_SYMBOL(__machine_arch_type); +unsigned int __atags_pointer __initdata; + unsigned int system_rev; EXPORT_SYMBOL(system_rev); @@ -780,7 +782,9 @@ void __init setup_arch(char **cmdline_p) if (mdesc->soft_reboot) reboot_setup("s"); - if (mdesc->boot_params) + if (__atags_pointer) + tags = phys_to_virt(__atags_pointer); + else if (mdesc->boot_params) tags = phys_to_virt(mdesc->boot_params); /* diff --git a/arch/arm/mach-at91/board-sam9261ek.c b/arch/arm/mach-at91/board-sam9261ek.c index 26ca8ab..42e172c 100644 --- a/arch/arm/mach-at91/board-sam9261ek.c +++ b/arch/arm/mach-at91/board-sam9261ek.c @@ -27,6 +27,11 @@ #include #include #include #include +#include +#include +#include + +#include