diff options
Diffstat (limited to 'packages/linux/ep93xx-kernel/dynamic-phys-offset-2.6.20-rc7.diff')
| -rw-r--r-- | packages/linux/ep93xx-kernel/dynamic-phys-offset-2.6.20-rc7.diff | 199 |
1 files changed, 0 insertions, 199 deletions
diff --git a/packages/linux/ep93xx-kernel/dynamic-phys-offset-2.6.20-rc7.diff b/packages/linux/ep93xx-kernel/dynamic-phys-offset-2.6.20-rc7.diff deleted file mode 100644 index 1f59be644e..0000000000 --- a/packages/linux/ep93xx-kernel/dynamic-phys-offset-2.6.20-rc7.diff +++ /dev/null @@ -1,199 +0,0 @@ -On the Cirrus Logic ep93xx, system RAM isn't one nice physically -contiguous region as it is on most SoCs, but it is spread out over -between one and four memory banks. - -What's worse, RAM doesn't necessarily start at any fixed physical -memory location. The start of RAM (PHYS_OFFSET) is not only board- -specific, but on some boards also depends on jumper settings (whether -async or sync boot mode is selected.) - -The attached patch adds the RUNTIME_PHYS_OFFSET config option, which, -if selected, turns PHYS_OFFSET into a variable which is determined and -set by __create_page_tables by looking at the current pc. This allows -booting a single kernel image on all the different flavors of ep93xx -boards, reducing user confusion and hopefully pleasing our kautobuild -admin :-) If the option isn't selected, there's zero impact. - -Signed-off-by: Lennert Buytenhek <buytenh@wantstofly.org> -=================================================================== -20070202 modified to apply cleanly to linux-2.6.20-rc7 - NZG -=================================================================== -diff -Naur linux-2.6.20-rc7/arch/arm/Kconfig linux-2.6.20-rc7-e1.0/arch/arm/Kconfig ---- linux-2.6.20-rc7/arch/arm/Kconfig 2007-02-02 10:26:21.000000000 -0600 -+++ linux-2.6.20-rc7-e1.0/arch/arm/Kconfig 2007-02-02 16:23:05.000000000 -0600 -@@ -113,6 +113,9 @@ - help - The base address of exception vectors. - -+config RUNTIME_PHYS_OFFSET -+ bool -+ - source "init/Kconfig" - - menu "System Type" -@@ -187,6 +190,7 @@ - bool "EP93xx-based" - select ARM_AMBA - select ARM_VIC -+ select RUNTIME_PHYS_OFFSET - help - This enables support for the Cirrus EP93xx series of CPUs. - -diff -Naur linux-2.6.20-rc7/arch/arm/boot/compressed/Makefile linux-2.6.20-rc7-e1.0/arch/arm/boot/compressed/Makefile ---- linux-2.6.20-rc7/arch/arm/boot/compressed/Makefile 2006-11-29 15:57:37.000000000 -0600 -+++ linux-2.6.20-rc7-e1.0/arch/arm/boot/compressed/Makefile 2007-02-02 16:23:05.000000000 -0600 -@@ -78,13 +78,10 @@ - EXTRA_CFLAGS := -fpic - EXTRA_AFLAGS := - --# Supply ZRELADDR, INITRD_PHYS and PARAMS_PHYS to the decompressor via --# linker symbols. We only define initrd_phys and params_phys if the --# machine class defined the corresponding makefile variable. -+# Supply ZRELADDR and PARAMS_PHYS to the decompressor via linker -+# symbols. We only define params_phys if the machine class defined -+# the corresponding makefile variable. - LDFLAGS_vmlinux := --defsym zreladdr=$(ZRELADDR) --ifneq ($(INITRD_PHYS),) --LDFLAGS_vmlinux += --defsym initrd_phys=$(INITRD_PHYS) --endif - ifneq ($(PARAMS_PHYS),) - LDFLAGS_vmlinux += --defsym params_phys=$(PARAMS_PHYS) - endif -diff -Naur linux-2.6.20-rc7/arch/arm/boot/compressed/head.S linux-2.6.20-rc7-e1.0/arch/arm/boot/compressed/head.S ---- linux-2.6.20-rc7/arch/arm/boot/compressed/head.S 2006-11-29 15:57:37.000000000 -0600 -+++ linux-2.6.20-rc7-e1.0/arch/arm/boot/compressed/head.S 2007-02-02 16:23:05.000000000 -0600 -@@ -156,6 +156,11 @@ - .text - adr r0, LC0 - ldmia r0, {r1, r2, r3, r4, r5, r6, ip, sp} -+#ifdef CONFIG_RUNTIME_PHYS_OFFSET -+ and r10, pc, #0xf0000000 @ fix up zreladdr -+ add r4, r4, r10 -+#endif -+ - subs r0, r0, r1 @ calculate the delta offset - - @ if delta is zero, we are -diff -Naur linux-2.6.20-rc7/arch/arm/kernel/head.S linux-2.6.20-rc7-e1.0/arch/arm/kernel/head.S ---- linux-2.6.20-rc7/arch/arm/kernel/head.S 2007-02-02 10:26:21.000000000 -0600 -+++ linux-2.6.20-rc7-e1.0/arch/arm/kernel/head.S 2007-02-02 16:36:21.000000000 -0600 -@@ -43,8 +43,8 @@ - .globl swapper_pg_dir - .equ swapper_pg_dir, KERNEL_RAM_VADDR - 0x4000 - -- .macro pgtbl, rd -- ldr \rd, =(KERNEL_RAM_PADDR - 0x4000) -+ .macro pgtbl, rd, phys_offset -+ add \rd, \phys_offset, #(TEXT_OFFSET - 0x4000) - .endm - - #ifdef CONFIG_XIP_KERNEL -@@ -206,10 +206,22 @@ - * Returns: - * r0, r3, r6, r7 corrupted - * r4 = physical page table address -+ * r5 = PHYS_OFFSET - */ - .type __create_page_tables, %function - __create_page_tables: -- pgtbl r4 @ page table address -+#ifdef CONFIG_RUNTIME_PHYS_OFFSET -+ adr r5, stext -+ sub r5, r5, #TEXT_OFFSET @ r5 = phys_offset -+ -+ ldr r4, =(phys_offset - PAGE_OFFSET) -+ add r4, r4, r5 -+ str r5, [r4] @ save phys_offset -+#else -+ mov r5, #PHYS_OFFSET @ r5 = phys_offset -+#endif -+ -+ pgtbl r4, r5 @ r4 = page table address - - /* - * Clear the 16K level 1 swapper page table -@@ -255,8 +267,7 @@ - * Then map first 1MB of ram in case it contains our boot params. - */ - add r0, r4, #PAGE_OFFSET >> 18 -- orr r6, r7, #(PHYS_OFFSET & 0xff000000) -- orr r6, r6, #(PHYS_OFFSET & 0x00e00000) -+ orr r6, r7, r5 - str r6, [r0] - - #ifdef CONFIG_XIP_KERNEL -diff -Naur linux-2.6.20-rc7/arch/arm/kernel/setup.c linux-2.6.20-rc7-e1.0/arch/arm/kernel/setup.c ---- linux-2.6.20-rc7/arch/arm/kernel/setup.c 2007-02-02 10:26:21.000000000 -0600 -+++ linux-2.6.20-rc7-e1.0/arch/arm/kernel/setup.c 2007-02-02 16:23:05.000000000 -0600 -@@ -59,6 +59,16 @@ - extern int root_mountflags; - extern void _stext, _text, _etext, __data_start, _edata, _end; - -+#ifdef CONFIG_RUNTIME_PHYS_OFFSET -+/* -+ * The assignment is here solely to prevent this variable from ending -+ * up in bss. As the early startup code writes to it, we don't want it -+ * to be zeroed again later. -+ */ -+unsigned long phys_offset = 0xdeadbeef; -+EXPORT_SYMBOL(phys_offset); -+#endif -+ - unsigned int processor_id; - unsigned int __machine_arch_type; - EXPORT_SYMBOL(__machine_arch_type); -@@ -749,7 +759,7 @@ - { tag_size(tag_core), ATAG_CORE }, - { 1, PAGE_SIZE, 0xff }, - { tag_size(tag_mem32), ATAG_MEM }, -- { MEM_SIZE, PHYS_OFFSET }, -+ { MEM_SIZE, 0 }, - { 0, ATAG_NONE } - }; - -@@ -770,6 +780,8 @@ - struct machine_desc *mdesc; - char *from = default_command_line; - -+ init_tags.mem.start = PHYS_OFFSET; -+ - setup_processor(); - mdesc = setup_machine(machine_arch_type); - machine_name = mdesc->name; -diff -Naur linux-2.6.20-rc7/arch/arm/mach-ep93xx/Makefile.boot linux-2.6.20-rc7-e1.0/arch/arm/mach-ep93xx/Makefile.boot ---- linux-2.6.20-rc7/arch/arm/mach-ep93xx/Makefile.boot 2006-11-29 15:57:37.000000000 -0600 -+++ linux-2.6.20-rc7-e1.0/arch/arm/mach-ep93xx/Makefile.boot 2007-02-02 16:23:05.000000000 -0600 -@@ -1,2 +1 @@ - zreladdr-y := 0x00008000 --params_phys-y := 0x00000100 -diff -Naur linux-2.6.20-rc7/include/asm-arm/arch-ep93xx/memory.h linux-2.6.20-rc7-e1.0/include/asm-arm/arch-ep93xx/memory.h ---- linux-2.6.20-rc7/include/asm-arm/arch-ep93xx/memory.h 2006-11-29 15:57:37.000000000 -0600 -+++ linux-2.6.20-rc7-e1.0/include/asm-arm/arch-ep93xx/memory.h 2007-02-02 16:23:05.000000000 -0600 -@@ -5,7 +5,9 @@ - #ifndef __ASM_ARCH_MEMORY_H - #define __ASM_ARCH_MEMORY_H - -+#ifndef CONFIG_RUNTIME_PHYS_OFFSET - #define PHYS_OFFSET UL(0x00000000) -+#endif - - #define __bus_to_virt(x) __phys_to_virt(x) - #define __virt_to_bus(x) __virt_to_phys(x) -diff -Naur linux-2.6.20-rc7/include/asm-arm/memory.h linux-2.6.20-rc7-e1.0/include/asm-arm/memory.h ---- linux-2.6.20-rc7/include/asm-arm/memory.h 2007-02-02 10:26:27.000000000 -0600 -+++ linux-2.6.20-rc7-e1.0/include/asm-arm/memory.h 2007-02-02 16:23:05.000000000 -0600 -@@ -73,6 +73,14 @@ - */ - #define IOREMAP_MAX_ORDER 24 - -+/* -+ * PHYS_OFFSET determined at run time? -+ */ -+#if defined(CONFIG_RUNTIME_PHYS_OFFSET) && !defined(__ASSEMBLY__) -+extern unsigned long phys_offset; -+#define PHYS_OFFSET (phys_offset) -+#endif -+ - #else /* CONFIG_MMU */ - - /* |
