diff for duplicates of <AANLkTikGVZ5Na0GSG5ynO+YM2M6x65yb3dwJeBZjzFMN@mail.gmail.com>
diff --git a/a/1.txt b/N1/1.txt
index b844cb5..4af7280 100644
--- a/a/1.txt
+++ b/N1/1.txt
@@ -11,108 +11,108 @@ On 22 November 2010 13:10, Russell King - ARM Linux
>> --- a/arch/arm/kernel/head.S
>> +++ b/arch/arm/kernel/head.S
>> @@ -21,6 +21,7 @@
->> #include <asm/memory.h>
->> #include <asm/thread_info.h>
->> #include <asm/system.h>
+>> ?#include <asm/memory.h>
+>> ?#include <asm/thread_info.h>
+>> ?#include <asm/system.h>
>> +#include <asm/pgtable.h>
>>
->> #ifdef CONFIG_DEBUG_LL
->> #include <mach/debug-macro.S>
+>> ?#ifdef CONFIG_DEBUG_LL
+>> ?#include <mach/debug-macro.S>
>> @@ -45,11 +46,20 @@
->> #error KERNEL_RAM_VADDR must start at 0xXXXX8000
->> #endif
+>> ?#error KERNEL_RAM_VADDR must start at 0xXXXX8000
+>> ?#endif
>>
>> +#ifdef CONFIG_ARM_LPAE
->> + /* LPAE requires an additional page for the PGD */
->> +#define PG_DIR_SIZE 0x5000
->> +#define PTE_WORDS 3
+>> + ? ? /* LPAE requires an additional page for the PGD */
+>> +#define PG_DIR_SIZE ?0x5000
+>> +#define PTE_WORDS ? ?3
>> +#else
->> +#define PG_DIR_SIZE 0x4000
->> +#define PTE_WORDS 2
+>> +#define PG_DIR_SIZE ?0x4000
+>> +#define PTE_WORDS ? ?2
>
> PTE is not the right prefix here - we don't deal with the lowest level
-> of page tables, which in Linux is called PTE. I think you mean PMD_WORDS
+> of page tables, which in Linux is called PTE. ?I think you mean PMD_WORDS
> instead.
It should actually be something PMD_ORDER because of the log2 value.
->> #ifdef CONFIG_XIP_KERNEL
+>> ?#ifdef CONFIG_XIP_KERNEL
>> @@ -129,11 +139,11 @@ __create_page_tables:
->> pgtbl r4 @ page table address
+>> ? ? ? pgtbl ? r4 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?@ page table address
>>
->> /*
->> - * Clear the 16K level 1 swapper page table
->> + * Clear the swapper page table
->> */
->> mov r0, r4
->> mov r3, #0
->> - add r6, r0, #0x4000
->> + add r6, r0, #PG_DIR_SIZE
->> 1: str r3, [r0], #4
->> str r3, [r0], #4
->> str r3, [r0], #4
+>> ? ? ? /*
+>> - ? ? ?* Clear the 16K level 1 swapper page table
+>> + ? ? ?* Clear the swapper page table
+>> ? ? ? ?*/
+>> ? ? ? mov ? ? r0, r4
+>> ? ? ? mov ? ? r3, #0
+>> - ? ? add ? ? r6, r0, #0x4000
+>> + ? ? add ? ? r6, r0, #PG_DIR_SIZE
+>> ?1: ? str ? ? r3, [r0], #4
+>> ? ? ? str ? ? r3, [r0], #4
+>> ? ? ? str ? ? r3, [r0], #4
>> @@ -141,6 +151,23 @@ __create_page_tables:
->> teq r0, r6
->> bne 1b
+>> ? ? ? teq ? ? r0, r6
+>> ? ? ? bne ? ? 1b
>>
>> +#ifdef CONFIG_ARM_LPAE
->> + /*
->> + * Build the PGD table (first level) to point to the PMD table. A PGD
->> + * entry is 64-bit wide and the top 32 bits are 0.
->> + */
->> + mov r0, r4
->> + add r3, r4, #0x1000 @ first PMD table address
->> + orr r3, r3, #3 @ PGD block type
->> + mov r6, #4 @ PTRS_PER_PGD
->> +1: str r3, [r0], #8 @ set PGD entry
->> + add r3, r3, #0x1000 @ next PMD table
->> + subs r6, r6, #1
->> + bne 1b
+>> + ? ? /*
+>> + ? ? ?* Build the PGD table (first level) to point to the PMD table. A PGD
+>> + ? ? ?* entry is 64-bit wide and the top 32 bits are 0.
+>> + ? ? ?*/
+>> + ? ? mov ? ? r0, r4
+>> + ? ? add ? ? r3, r4, #0x1000 ? ? ? ? ? ? ? ? @ first PMD table address
+>> + ? ? orr ? ? r3, r3, #3 ? ? ? ? ? ? ? ? ? ? ?@ PGD block type
+>> + ? ? mov ? ? r6, #4 ? ? ? ? ? ? ? ? ? ? ? ? ?@ PTRS_PER_PGD
+>> +1: ? str ? ? r3, [r0], #8 ? ? ? ? ? ? ? ? ? ?@ set PGD entry
+>> + ? ? add ? ? r3, r3, #0x1000 ? ? ? ? ? ? ? ? @ next PMD table
+>> + ? ? subs ? ?r6, r6, #1
+>> + ? ? bne ? ? 1b
>> +
->> + add r4, r4, #0x1000 @ point to the PMD tables
+>> + ? ? add ? ? r4, r4, #0x1000 ? ? ? ? ? ? ? ? @ point to the PMD tables
>> +#endif
>> +
->> ldr r7, [r10, #PROCINFO_MM_MMUFLAGS] @ mm_mmuflags
+>> ? ? ? ldr ? ? r7, [r10, #PROCINFO_MM_MMUFLAGS] @ mm_mmuflags
>>
->> /*
+>> ? ? ? /*
>> @@ -152,30 +179,30 @@ __create_page_tables:
->> sub r0, r0, r3 @ virt->phys offset
->> add r5, r5, r0 @ phys __enable_mmu
->> add r6, r6, r0 @ phys __enable_mmu_end
->> - mov r5, r5, lsr #20
->> - mov r6, r6, lsr #20
->> + mov r5, r5, lsr #SECTION_SHIFT
->> + mov r6, r6, lsr #SECTION_SHIFT
+>> ? ? ? sub ? ? r0, r0, r3 ? ? ? ? ? ? ? ? ? ? ?@ virt->phys offset
+>> ? ? ? add ? ? r5, r5, r0 ? ? ? ? ? ? ? ? ? ? ?@ phys __enable_mmu
+>> ? ? ? add ? ? r6, r6, r0 ? ? ? ? ? ? ? ? ? ? ?@ phys __enable_mmu_end
+>> - ? ? mov ? ? r5, r5, lsr #20
+>> - ? ? mov ? ? r6, r6, lsr #20
+>> + ? ? mov ? ? r5, r5, lsr #SECTION_SHIFT
+>> + ? ? mov ? ? r6, r6, lsr #SECTION_SHIFT
>>
->> -1: orr r3, r7, r5, lsl #20 @ flags + kernel base
->> - str r3, [r4, r5, lsl #2] @ identity mapping
->> - teq r5, r6
->> - addne r5, r5, #1 @ next section
->> - bne 1b
->> +1: orr r3, r7, r5, lsl #SECTION_SHIFT @ flags + kernel base
->> + str r3, [r4, r5, lsl #PTE_WORDS] @ identity mapping
->> + cmp r5, r6
->> + addlo r5, r5, #SECTION_SHIFT >> 20 @ next section
->> + blo 1b
+>> -1: ? orr ? ? r3, r7, r5, lsl #20 ? ? ? ? ? ? @ flags + kernel base
+>> - ? ? str ? ? r3, [r4, r5, lsl #2] ? ? ? ? ? ?@ identity mapping
+>> - ? ? teq ? ? r5, r6
+>> - ? ? addne ? r5, r5, #1 ? ? ? ? ? ? ? ? ? ? ?@ next section
+>> - ? ? bne ? ? 1b
+>> +1: ? orr ? ? r3, r7, r5, lsl #SECTION_SHIFT ?@ flags + kernel base
+>> + ? ? str ? ? r3, [r4, r5, lsl #PTE_WORDS] ? ?@ identity mapping
+>> + ? ? cmp ? ? r5, r6
+>> + ? ? addlo ? r5, r5, #SECTION_SHIFT >> 20 ? ?@ next section
+>> + ? ? blo ? ? 1b
>>
->> /*
->> * Now setup the pagetables for our kernel direct
->> * mapped region.
->> */
->> mov r3, pc
->> - mov r3, r3, lsr #20
->> - orr r3, r7, r3, lsl #20
->> + mov r3, r3, lsr #SECTION_SHIFT
->> + orr r3, r7, r3, lsl #SECTION_SHIFT
->> add r0, r4, #(KERNEL_START & 0xff000000) >> 18
->> - str r3, [r0, #(KERNEL_START & 0x00f00000) >> 18]!
->> + str r3, [r0, #(KERNEL_START & 0x00e00000) >> 18]!
->> ldr r6, =(KERNEL_END - 1)
->> - add r0, r0, #4
->> + add r0, r0, #1 << PTE_WORDS
->> add r6, r4, r6, lsr #18
+>> ? ? ? /*
+>> ? ? ? ?* Now setup the pagetables for our kernel direct
+>> ? ? ? ?* mapped region.
+>> ? ? ? ?*/
+>> ? ? ? mov ? ? r3, pc
+>> - ? ? mov ? ? r3, r3, lsr #20
+>> - ? ? orr ? ? r3, r7, r3, lsl #20
+>> + ? ? mov ? ? r3, r3, lsr #SECTION_SHIFT
+>> + ? ? orr ? ? r3, r7, r3, lsl #SECTION_SHIFT
+>> ? ? ? add ? ? r0, r4, ?#(KERNEL_START & 0xff000000) >> 18
+>> - ? ? str ? ? r3, [r0, #(KERNEL_START & 0x00f00000) >> 18]!
+>> + ? ? str ? ? r3, [r0, #(KERNEL_START & 0x00e00000) >> 18]!
+>> ? ? ? ldr ? ? r6, =(KERNEL_END - 1)
+>> - ? ? add ? ? r0, r0, #4
+>> + ? ? add ? ? r0, r0, #1 << PTE_WORDS
+>> ? ? ? add ? ? r6, r4, r6, lsr #18
>
-> Are you sure these shifts by 18 places are correct? They're actually
+> Are you sure these shifts by 18 places are correct? ?They're actually
> (val >> SECTION_SHIFT) << 2, so maybe they should be (SECTION_SHIFT -
> PMD_WORDS) ?
diff --git a/a/content_digest b/N1/content_digest
index 946d3ac..d5957db 100644
--- a/a/content_digest
+++ b/N1/content_digest
@@ -8,20 +8,16 @@
"ref\00020101122131010.GD31227\@n2100.arm.linux.org.uk\0"
]
[
- "From\0Catalin Marinas <catalin.marinas\@arm.com>\0"
+ "From\0catalin.marinas\@arm.com (Catalin Marinas)\0"
]
[
- "Subject\0Re: [PATCH v2 08/20] ARM: LPAE: MMU setup for the 3-level page table format\0"
+ "Subject\0[PATCH v2 08/20] ARM: LPAE: MMU setup for the 3-level page table format\0"
]
[
"Date\0Tue, 23 Nov 2010 11:38:15 +0000\0"
]
[
- "To\0Russell King - ARM Linux <linux\@arm.linux.org.uk>\0"
-]
-[
- "Cc\0linux-arm-kernel\@lists.infradead.org",
- " linux-kernel\@vger.kernel.org\0"
+ "To\0linux-arm-kernel\@lists.infradead.org\0"
]
[
"\0000:1\0"
@@ -43,108 +39,108 @@
">> --- a/arch/arm/kernel/head.S\n",
">> +++ b/arch/arm/kernel/head.S\n",
">> \@\@ -21,6 +21,7 \@\@\n",
- ">> \302\240#include <asm/memory.h>\n",
- ">> \302\240#include <asm/thread_info.h>\n",
- ">> \302\240#include <asm/system.h>\n",
+ ">> ?#include <asm/memory.h>\n",
+ ">> ?#include <asm/thread_info.h>\n",
+ ">> ?#include <asm/system.h>\n",
">> +#include <asm/pgtable.h>\n",
">>\n",
- ">> \302\240#ifdef CONFIG_DEBUG_LL\n",
- ">> \302\240#include <mach/debug-macro.S>\n",
+ ">> ?#ifdef CONFIG_DEBUG_LL\n",
+ ">> ?#include <mach/debug-macro.S>\n",
">> \@\@ -45,11 +46,20 \@\@\n",
- ">> \302\240#error KERNEL_RAM_VADDR must start at 0xXXXX8000\n",
- ">> \302\240#endif\n",
+ ">> ?#error KERNEL_RAM_VADDR must start at 0xXXXX8000\n",
+ ">> ?#endif\n",
">>\n",
">> +#ifdef CONFIG_ARM_LPAE\n",
- ">> + \302\240 \302\240 /* LPAE requires an additional page for the PGD */\n",
- ">> +#define PG_DIR_SIZE \302\2400x5000\n",
- ">> +#define PTE_WORDS \302\240 \302\2403\n",
+ ">> + ? ? /* LPAE requires an additional page for the PGD */\n",
+ ">> +#define PG_DIR_SIZE ?0x5000\n",
+ ">> +#define PTE_WORDS ? ?3\n",
">> +#else\n",
- ">> +#define PG_DIR_SIZE \302\2400x4000\n",
- ">> +#define PTE_WORDS \302\240 \302\2402\n",
+ ">> +#define PG_DIR_SIZE ?0x4000\n",
+ ">> +#define PTE_WORDS ? ?2\n",
">\n",
"> PTE is not the right prefix here - we don't deal with the lowest level\n",
- "> of page tables, which in Linux is called PTE. \302\240I think you mean PMD_WORDS\n",
+ "> of page tables, which in Linux is called PTE. ?I think you mean PMD_WORDS\n",
"> instead.\n",
"\n",
"It should actually be something PMD_ORDER because of the log2 value.\n",
"\n",
- ">> \302\240#ifdef CONFIG_XIP_KERNEL\n",
+ ">> ?#ifdef CONFIG_XIP_KERNEL\n",
">> \@\@ -129,11 +139,11 \@\@ __create_page_tables:\n",
- ">> \302\240 \302\240 \302\240 pgtbl \302\240 r4 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240\@ page table address\n",
+ ">> ? ? ? pgtbl ? r4 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?\@ page table address\n",
">>\n",
- ">> \302\240 \302\240 \302\240 /*\n",
- ">> - \302\240 \302\240 \302\240* Clear the 16K level 1 swapper page table\n",
- ">> + \302\240 \302\240 \302\240* Clear the swapper page table\n",
- ">> \302\240 \302\240 \302\240 \302\240*/\n",
- ">> \302\240 \302\240 \302\240 mov \302\240 \302\240 r0, r4\n",
- ">> \302\240 \302\240 \302\240 mov \302\240 \302\240 r3, #0\n",
- ">> - \302\240 \302\240 add \302\240 \302\240 r6, r0, #0x4000\n",
- ">> + \302\240 \302\240 add \302\240 \302\240 r6, r0, #PG_DIR_SIZE\n",
- ">> \302\2401: \302\240 str \302\240 \302\240 r3, [r0], #4\n",
- ">> \302\240 \302\240 \302\240 str \302\240 \302\240 r3, [r0], #4\n",
- ">> \302\240 \302\240 \302\240 str \302\240 \302\240 r3, [r0], #4\n",
+ ">> ? ? ? /*\n",
+ ">> - ? ? ?* Clear the 16K level 1 swapper page table\n",
+ ">> + ? ? ?* Clear the swapper page table\n",
+ ">> ? ? ? ?*/\n",
+ ">> ? ? ? mov ? ? r0, r4\n",
+ ">> ? ? ? mov ? ? r3, #0\n",
+ ">> - ? ? add ? ? r6, r0, #0x4000\n",
+ ">> + ? ? add ? ? r6, r0, #PG_DIR_SIZE\n",
+ ">> ?1: ? str ? ? r3, [r0], #4\n",
+ ">> ? ? ? str ? ? r3, [r0], #4\n",
+ ">> ? ? ? str ? ? r3, [r0], #4\n",
">> \@\@ -141,6 +151,23 \@\@ __create_page_tables:\n",
- ">> \302\240 \302\240 \302\240 teq \302\240 \302\240 r0, r6\n",
- ">> \302\240 \302\240 \302\240 bne \302\240 \302\240 1b\n",
+ ">> ? ? ? teq ? ? r0, r6\n",
+ ">> ? ? ? bne ? ? 1b\n",
">>\n",
">> +#ifdef CONFIG_ARM_LPAE\n",
- ">> + \302\240 \302\240 /*\n",
- ">> + \302\240 \302\240 \302\240* Build the PGD table (first level) to point to the PMD table. A PGD\n",
- ">> + \302\240 \302\240 \302\240* entry is 64-bit wide and the top 32 bits are 0.\n",
- ">> + \302\240 \302\240 \302\240*/\n",
- ">> + \302\240 \302\240 mov \302\240 \302\240 r0, r4\n",
- ">> + \302\240 \302\240 add \302\240 \302\240 r3, r4, #0x1000 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \@ first PMD table address\n",
- ">> + \302\240 \302\240 orr \302\240 \302\240 r3, r3, #3 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240\@ PGD block type\n",
- ">> + \302\240 \302\240 mov \302\240 \302\240 r6, #4 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240\@ PTRS_PER_PGD\n",
- ">> +1: \302\240 str \302\240 \302\240 r3, [r0], #8 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240\@ set PGD entry\n",
- ">> + \302\240 \302\240 add \302\240 \302\240 r3, r3, #0x1000 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \@ next PMD table\n",
- ">> + \302\240 \302\240 subs \302\240 \302\240r6, r6, #1\n",
- ">> + \302\240 \302\240 bne \302\240 \302\240 1b\n",
+ ">> + ? ? /*\n",
+ ">> + ? ? ?* Build the PGD table (first level) to point to the PMD table. A PGD\n",
+ ">> + ? ? ?* entry is 64-bit wide and the top 32 bits are 0.\n",
+ ">> + ? ? ?*/\n",
+ ">> + ? ? mov ? ? r0, r4\n",
+ ">> + ? ? add ? ? r3, r4, #0x1000 ? ? ? ? ? ? ? ? \@ first PMD table address\n",
+ ">> + ? ? orr ? ? r3, r3, #3 ? ? ? ? ? ? ? ? ? ? ?\@ PGD block type\n",
+ ">> + ? ? mov ? ? r6, #4 ? ? ? ? ? ? ? ? ? ? ? ? ?\@ PTRS_PER_PGD\n",
+ ">> +1: ? str ? ? r3, [r0], #8 ? ? ? ? ? ? ? ? ? ?\@ set PGD entry\n",
+ ">> + ? ? add ? ? r3, r3, #0x1000 ? ? ? ? ? ? ? ? \@ next PMD table\n",
+ ">> + ? ? subs ? ?r6, r6, #1\n",
+ ">> + ? ? bne ? ? 1b\n",
">> +\n",
- ">> + \302\240 \302\240 add \302\240 \302\240 r4, r4, #0x1000 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \@ point to the PMD tables\n",
+ ">> + ? ? add ? ? r4, r4, #0x1000 ? ? ? ? ? ? ? ? \@ point to the PMD tables\n",
">> +#endif\n",
">> +\n",
- ">> \302\240 \302\240 \302\240 ldr \302\240 \302\240 r7, [r10, #PROCINFO_MM_MMUFLAGS] \@ mm_mmuflags\n",
+ ">> ? ? ? ldr ? ? r7, [r10, #PROCINFO_MM_MMUFLAGS] \@ mm_mmuflags\n",
">>\n",
- ">> \302\240 \302\240 \302\240 /*\n",
+ ">> ? ? ? /*\n",
">> \@\@ -152,30 +179,30 \@\@ __create_page_tables:\n",
- ">> \302\240 \302\240 \302\240 sub \302\240 \302\240 r0, r0, r3 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240\@ virt->phys offset\n",
- ">> \302\240 \302\240 \302\240 add \302\240 \302\240 r5, r5, r0 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240\@ phys __enable_mmu\n",
- ">> \302\240 \302\240 \302\240 add \302\240 \302\240 r6, r6, r0 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240\@ phys __enable_mmu_end\n",
- ">> - \302\240 \302\240 mov \302\240 \302\240 r5, r5, lsr #20\n",
- ">> - \302\240 \302\240 mov \302\240 \302\240 r6, r6, lsr #20\n",
- ">> + \302\240 \302\240 mov \302\240 \302\240 r5, r5, lsr #SECTION_SHIFT\n",
- ">> + \302\240 \302\240 mov \302\240 \302\240 r6, r6, lsr #SECTION_SHIFT\n",
+ ">> ? ? ? sub ? ? r0, r0, r3 ? ? ? ? ? ? ? ? ? ? ?\@ virt->phys offset\n",
+ ">> ? ? ? add ? ? r5, r5, r0 ? ? ? ? ? ? ? ? ? ? ?\@ phys __enable_mmu\n",
+ ">> ? ? ? add ? ? r6, r6, r0 ? ? ? ? ? ? ? ? ? ? ?\@ phys __enable_mmu_end\n",
+ ">> - ? ? mov ? ? r5, r5, lsr #20\n",
+ ">> - ? ? mov ? ? r6, r6, lsr #20\n",
+ ">> + ? ? mov ? ? r5, r5, lsr #SECTION_SHIFT\n",
+ ">> + ? ? mov ? ? r6, r6, lsr #SECTION_SHIFT\n",
">>\n",
- ">> -1: \302\240 orr \302\240 \302\240 r3, r7, r5, lsl #20 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \@ flags + kernel base\n",
- ">> - \302\240 \302\240 str \302\240 \302\240 r3, [r4, r5, lsl #2] \302\240 \302\240 \302\240 \302\240 \302\240 \302\240\@ identity mapping\n",
- ">> - \302\240 \302\240 teq \302\240 \302\240 r5, r6\n",
- ">> - \302\240 \302\240 addne \302\240 r5, r5, #1 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240 \302\240\@ next section\n",
- ">> - \302\240 \302\240 bne \302\240 \302\240 1b\n",
- ">> +1: \302\240 orr \302\240 \302\240 r3, r7, r5, lsl #SECTION_SHIFT \302\240\@ flags + kernel base\n",
- ">> + \302\240 \302\240 str \302\240 \302\240 r3, [r4, r5, lsl #PTE_WORDS] \302\240 \302\240\@ identity mapping\n",
- ">> + \302\240 \302\240 cmp \302\240 \302\240 r5, r6\n",
- ">> + \302\240 \302\240 addlo \302\240 r5, r5, #SECTION_SHIFT >> 20 \302\240 \302\240\@ next section\n",
- ">> + \302\240 \302\240 blo \302\240 \302\240 1b\n",
+ ">> -1: ? orr ? ? r3, r7, r5, lsl #20 ? ? ? ? ? ? \@ flags + kernel base\n",
+ ">> - ? ? str ? ? r3, [r4, r5, lsl #2] ? ? ? ? ? ?\@ identity mapping\n",
+ ">> - ? ? teq ? ? r5, r6\n",
+ ">> - ? ? addne ? r5, r5, #1 ? ? ? ? ? ? ? ? ? ? ?\@ next section\n",
+ ">> - ? ? bne ? ? 1b\n",
+ ">> +1: ? orr ? ? r3, r7, r5, lsl #SECTION_SHIFT ?\@ flags + kernel base\n",
+ ">> + ? ? str ? ? r3, [r4, r5, lsl #PTE_WORDS] ? ?\@ identity mapping\n",
+ ">> + ? ? cmp ? ? r5, r6\n",
+ ">> + ? ? addlo ? r5, r5, #SECTION_SHIFT >> 20 ? ?\@ next section\n",
+ ">> + ? ? blo ? ? 1b\n",
">>\n",
- ">> \302\240 \302\240 \302\240 /*\n",
- ">> \302\240 \302\240 \302\240 \302\240* Now setup the pagetables for our kernel direct\n",
- ">> \302\240 \302\240 \302\240 \302\240* mapped region.\n",
- ">> \302\240 \302\240 \302\240 \302\240*/\n",
- ">> \302\240 \302\240 \302\240 mov \302\240 \302\240 r3, pc\n",
- ">> - \302\240 \302\240 mov \302\240 \302\240 r3, r3, lsr #20\n",
- ">> - \302\240 \302\240 orr \302\240 \302\240 r3, r7, r3, lsl #20\n",
- ">> + \302\240 \302\240 mov \302\240 \302\240 r3, r3, lsr #SECTION_SHIFT\n",
- ">> + \302\240 \302\240 orr \302\240 \302\240 r3, r7, r3, lsl #SECTION_SHIFT\n",
- ">> \302\240 \302\240 \302\240 add \302\240 \302\240 r0, r4, \302\240#(KERNEL_START & 0xff000000) >> 18\n",
- ">> - \302\240 \302\240 str \302\240 \302\240 r3, [r0, #(KERNEL_START & 0x00f00000) >> 18]!\n",
- ">> + \302\240 \302\240 str \302\240 \302\240 r3, [r0, #(KERNEL_START & 0x00e00000) >> 18]!\n",
- ">> \302\240 \302\240 \302\240 ldr \302\240 \302\240 r6, =(KERNEL_END - 1)\n",
- ">> - \302\240 \302\240 add \302\240 \302\240 r0, r0, #4\n",
- ">> + \302\240 \302\240 add \302\240 \302\240 r0, r0, #1 << PTE_WORDS\n",
- ">> \302\240 \302\240 \302\240 add \302\240 \302\240 r6, r4, r6, lsr #18\n",
+ ">> ? ? ? /*\n",
+ ">> ? ? ? ?* Now setup the pagetables for our kernel direct\n",
+ ">> ? ? ? ?* mapped region.\n",
+ ">> ? ? ? ?*/\n",
+ ">> ? ? ? mov ? ? r3, pc\n",
+ ">> - ? ? mov ? ? r3, r3, lsr #20\n",
+ ">> - ? ? orr ? ? r3, r7, r3, lsl #20\n",
+ ">> + ? ? mov ? ? r3, r3, lsr #SECTION_SHIFT\n",
+ ">> + ? ? orr ? ? r3, r7, r3, lsl #SECTION_SHIFT\n",
+ ">> ? ? ? add ? ? r0, r4, ?#(KERNEL_START & 0xff000000) >> 18\n",
+ ">> - ? ? str ? ? r3, [r0, #(KERNEL_START & 0x00f00000) >> 18]!\n",
+ ">> + ? ? str ? ? r3, [r0, #(KERNEL_START & 0x00e00000) >> 18]!\n",
+ ">> ? ? ? ldr ? ? r6, =(KERNEL_END - 1)\n",
+ ">> - ? ? add ? ? r0, r0, #4\n",
+ ">> + ? ? add ? ? r0, r0, #1 << PTE_WORDS\n",
+ ">> ? ? ? add ? ? r6, r4, r6, lsr #18\n",
">\n",
- "> Are you sure these shifts by 18 places are correct? \302\240They're actually\n",
+ "> Are you sure these shifts by 18 places are correct? ?They're actually\n",
"> (val >> SECTION_SHIFT) << 2, so maybe they should be (SECTION_SHIFT -\n",
"> PMD_WORDS) ?\n",
"\n",
@@ -156,4 +152,4 @@
"Catalin"
]
-d405e88c30b5de8c89db364a27671256d253da316a8a82da6ac890e8fe1737c7
+d50f62c79d714b32ff4d3b4657edb68c34cf545d8b3d1a560dac74f8ff2bde3f
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.