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