diff options
| author | Will Deacon <will.deacon@arm.com> | 2012-07-19 11:51:05 +0100 | 
|---|---|---|
| committer | Will Deacon <will.deacon@arm.com> | 2012-11-09 14:13:19 +0000 | 
| commit | dbf62d50067e55a782583fe53c3d2a3d98b1f6f3 (patch) | |
| tree | 1bca43e9824e79d97bc32445182fe91a6600e035 /arch/arm/mm | |
| parent | 0cbbbad63179652272cc5e18a68d69bfc8dd25ce (diff) | |
| download | olio-linux-3.10-dbf62d50067e55a782583fe53c3d2a3d98b1f6f3.tar.xz olio-linux-3.10-dbf62d50067e55a782583fe53c3d2a3d98b1f6f3.zip  | |
ARM: mm: introduce L_PTE_VALID for page table entries
For long-descriptor translation table formats, the ARMv7 architecture
defines the last two bits of the second- and third-level descriptors to
be:
	x0b	- Invalid
	01b	- Block (second-level), Reserved (third-level)
	11b	- Table (second-level), Page (third-level)
This allows us to define L_PTE_PRESENT as (3 << 0) and use this value to
create ptes directly. However, when determining whether a given pte
value is present in the low-level page table accessors, we only need to
check the least significant bit of the descriptor, allowing us to write
faulting, present entries which are required for PROT_NONE mappings.
This patch introduces L_PTE_VALID, which can be used to test whether a
pte should fault, and updates the low-level page table accessors
accordingly.
Signed-off-by: Will Deacon <will.deacon@arm.com>
Diffstat (limited to 'arch/arm/mm')
| -rw-r--r-- | arch/arm/mm/proc-v7-2level.S | 2 | ||||
| -rw-r--r-- | arch/arm/mm/proc-v7-3level.S | 2 | 
2 files changed, 2 insertions, 2 deletions
diff --git a/arch/arm/mm/proc-v7-2level.S b/arch/arm/mm/proc-v7-2level.S index e37600b91b2..e755e9f8d1b 100644 --- a/arch/arm/mm/proc-v7-2level.S +++ b/arch/arm/mm/proc-v7-2level.S @@ -100,7 +100,7 @@ ENTRY(cpu_v7_set_pte_ext)  	orrne	r3, r3, #PTE_EXT_XN  	tst	r1, #L_PTE_YOUNG -	tstne	r1, #L_PTE_PRESENT +	tstne	r1, #L_PTE_VALID  	moveq	r3, #0   ARM(	str	r3, [r0, #2048]! ) diff --git a/arch/arm/mm/proc-v7-3level.S b/arch/arm/mm/proc-v7-3level.S index 8de0f1dd154..d23d067e190 100644 --- a/arch/arm/mm/proc-v7-3level.S +++ b/arch/arm/mm/proc-v7-3level.S @@ -65,7 +65,7 @@ ENDPROC(cpu_v7_switch_mm)   */  ENTRY(cpu_v7_set_pte_ext)  #ifdef CONFIG_MMU -	tst	r2, #L_PTE_PRESENT +	tst	r2, #L_PTE_VALID  	beq	1f  	tst	r3, #1 << (55 - 32)		@ L_PTE_DIRTY  	orreq	r2, #L_PTE_RDONLY  |