|
@@ -252,6 +252,23 @@ __create_page_tables:
|
|
|
strls r3, [r0], #4
|
|
|
bls 1b
|
|
|
|
|
|
+#ifdef CONFIG_XIP_KERNEL
|
|
|
+ /*
|
|
|
+ * Map some ram to cover our .data and .bss areas.
|
|
|
+ */
|
|
|
+ orr r3, r7, #(KERNEL_RAM_PADDR & 0xff000000)
|
|
|
+ orr r3, r3, #(KERNEL_RAM_PADDR & 0x00f00000)
|
|
|
+ add r0, r4, #(KERNEL_RAM_VADDR & 0xff000000) >> 18
|
|
|
+ str r3, [r0, #(KERNEL_RAM_VADDR & 0x00f00000) >> 18]!
|
|
|
+ ldr r6, =(_end - 1)
|
|
|
+ add r0, r0, #4
|
|
|
+ add r6, r4, r6, lsr #18
|
|
|
+1: cmp r0, r6
|
|
|
+ add r3, r3, #1 << 20
|
|
|
+ strls r3, [r0], #4
|
|
|
+ bls 1b
|
|
|
+#endif
|
|
|
+
|
|
|
/*
|
|
|
* Then map first 1MB of ram in case it contains our boot params.
|
|
|
*/
|
|
@@ -260,22 +277,6 @@ __create_page_tables:
|
|
|
orr r6, r6, #(PHYS_OFFSET & 0x00e00000)
|
|
|
str r6, [r0]
|
|
|
|
|
|
-#ifdef CONFIG_XIP_KERNEL
|
|
|
- /*
|
|
|
- * Map some ram to cover our .data and .bss areas.
|
|
|
- * Mapping 3MB should be plenty.
|
|
|
- */
|
|
|
- sub r3, r4, #PHYS_OFFSET
|
|
|
- mov r3, r3, lsr #20
|
|
|
- add r0, r0, r3, lsl #2
|
|
|
- add r6, r6, r3, lsl #20
|
|
|
- str r6, [r0], #4
|
|
|
- add r6, r6, #(1 << 20)
|
|
|
- str r6, [r0], #4
|
|
|
- add r6, r6, #(1 << 20)
|
|
|
- str r6, [r0]
|
|
|
-#endif
|
|
|
-
|
|
|
#ifdef CONFIG_DEBUG_LL
|
|
|
ldr r7, [r10, #PROCINFO_IO_MMUFLAGS] @ io_mmuflags
|
|
|
/*
|