diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2014-04-13 18:57:29 +0100 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2014-06-02 09:20:11 +0100 |
commit | b4b20ad881f5a5c19ae9199547ddbb00fa4825eb (patch) | |
tree | e493f9f397590561e452a7eee1aa83e2fa8c0d28 /arch/arm/mm/mmu.c | |
parent | 4585eaff634b1bbb09686895221b3645f53f7a60 (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.c | 10 |
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); |