summaryrefslogtreecommitdiffstats
path: root/target/device/Atmel/linux/kernel-patches-2.6.22.1/linux-2.6.22.1-005-atags-support.patch
diff options
context:
space:
mode:
Diffstat (limited to 'target/device/Atmel/linux/kernel-patches-2.6.22.1/linux-2.6.22.1-005-atags-support.patch')
-rw-r--r--target/device/Atmel/linux/kernel-patches-2.6.22.1/linux-2.6.22.1-005-atags-support.patch122
1 files changed, 0 insertions, 122 deletions
diff --git a/target/device/Atmel/linux/kernel-patches-2.6.22.1/linux-2.6.22.1-005-atags-support.patch b/target/device/Atmel/linux/kernel-patches-2.6.22.1/linux-2.6.22.1-005-atags-support.patch
deleted file mode 100644
index 0068ef17c7..0000000000
--- a/target/device/Atmel/linux/kernel-patches-2.6.22.1/linux-2.6.22.1-005-atags-support.patch
+++ /dev/null
@@ -1,122 +0,0 @@
---- linux-2.6.22/arch/arm/kernel/head-common.S 2007-05-16 10:13:04.000000000 -0500
-+++ linux-2.6.22-bgat/arch/arm/kernel/head-common.S 2007-05-30 21:54:45.000000000 -0500
-@@ -20,7 +20,8 @@
- .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 @@
- *
- * r0 = cp#15 control register
- * r1 = machine ID
-+ * r2 = atags pointer
- * r9 = processor ID
- */
- .type __mmap_switched, %function
-@@ -47,11 +49,12 @@
- 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 @@
- 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
---- linux-2.6.22/arch/arm/kernel/head.S 2007-05-30 08:29:34.000000000 -0500
-+++ linux-2.6.22-bgat/arch/arm/kernel/head.S 2007-05-30 22:05:53.000000000 -0500
-@@ -29,6 +29,10 @@
- #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 @@
- *
- * 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 @@
- 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
-
- /*
---- linux-2.6.22/arch/arm/kernel/setup.c 2007-05-30 08:29:34.000000000 -0500
-+++ linux-2.6.22-bgat/arch/arm/kernel/setup.c 2007-05-30 22:07:08.000000000 -0500
-@@ -63,6 +63,8 @@
- 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 @@
- 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);
-
- /*
OpenPOWER on IntegriCloud