summaryrefslogtreecommitdiff
path: root/arch/arm/mm/mmu.c
diff options
context:
space:
mode:
authorRussell King <rmk+kernel@arm.linux.org.uk>2014-04-13 18:57:29 +0100
committerRussell King <rmk+kernel@arm.linux.org.uk>2014-06-02 09:20:11 +0100
commitb4b20ad881f5a5c19ae9199547ddbb00fa4825eb (patch)
treee493f9f397590561e452a7eee1aa83e2fa8c0d28 /arch/arm/mm/mmu.c
parent4585eaff634b1bbb09686895221b3645f53f7a60 (diff)
ARM: provide common method to clear bits in CPU control register
Several places open-code this manipulation, let's consolidate this. Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mm/mmu.c')
-rw-r--r--arch/arm/mm/mmu.c10
1 files changed, 4 insertions, 6 deletions
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c
index b68c6b22e1c8..d97cb2d8953a 100644
--- a/arch/arm/mm/mmu.c
+++ b/arch/arm/mm/mmu.c
@@ -125,6 +125,7 @@ static struct cachepolicy cache_policies[] __initdata = {
*/
static int __init early_cachepolicy(char *p)
{
+ unsigned long cr = get_cr();
int i;
for (i = 0; i < ARRAY_SIZE(cache_policies); i++) {
@@ -132,8 +133,7 @@ static int __init early_cachepolicy(char *p)
if (memcmp(p, cache_policies[i].policy, len) == 0) {
cachepolicy = i;
- cr_alignment &= ~cache_policies[i].cr_mask;
- cr_no_alignment &= ~cache_policies[i].cr_mask;
+ cr = __clear_cr(cache_policies[i].cr_mask);
break;
}
}
@@ -151,7 +151,7 @@ static int __init early_cachepolicy(char *p)
cachepolicy = CPOLICY_WRITEBACK;
}
flush_cache_all();
- set_cr(cr_alignment);
+ set_cr(cr);
return 0;
}
early_param("cachepolicy", early_cachepolicy);
@@ -188,9 +188,7 @@ early_param("ecc", early_ecc);
static int __init noalign_setup(char *__unused)
{
- cr_alignment &= ~CR_A;
- cr_no_alignment &= ~CR_A;
- set_cr(cr_alignment);
+ set_cr(__clear_cr(CR_A));
return 1;
}
__setup("noalign", noalign_setup);