diff options
author | Paul Mundt <lethal@linux-sh.org> | 2009-08-19 02:12:00 +0200 |
---|---|---|
committer | Paul Mundt <lethal@linux-sh.org> | 2009-08-19 02:12:00 +0200 |
commit | ee8365f23355cdb66e7a6c5c9364e8d3ba4de32f (patch) | |
tree | e77b5ff0d17eb583312fe710de569081a3ec8f8d /arch/sh/kernel/cpu/init.c | |
parent | sh: Merge the _32/_64 variants of arch/sh/mm/Makefile. (diff) | |
parent | sh: Prevent heartbeat from scribbling over non-LED bits. (diff) | |
download | linux-ee8365f23355cdb66e7a6c5c9364e8d3ba4de32f.tar.xz linux-ee8365f23355cdb66e7a6c5c9364e8d3ba4de32f.zip |
Merge branch 'master' into sh/cachetlb
Conflicts:
arch/sh/kernel/Makefile_64
Diffstat (limited to 'arch/sh/kernel/cpu/init.c')
-rw-r--r-- | arch/sh/kernel/cpu/init.c | 34 |
1 files changed, 33 insertions, 1 deletions
diff --git a/arch/sh/kernel/cpu/init.c b/arch/sh/kernel/cpu/init.c index c832fa4cf8ed..e932ebef4738 100644 --- a/arch/sh/kernel/cpu/init.c +++ b/arch/sh/kernel/cpu/init.c @@ -3,7 +3,7 @@ * * CPU init code * - * Copyright (C) 2002 - 2007 Paul Mundt + * Copyright (C) 2002 - 2009 Paul Mundt * Copyright (C) 2003 Richard Curnow * * This file is subject to the terms and conditions of the GNU General Public @@ -62,6 +62,37 @@ static void __init speculative_execution_init(void) #define speculative_execution_init() do { } while (0) #endif +#ifdef CONFIG_CPU_SH4A +#define EXPMASK 0xff2f0004 +#define EXPMASK_RTEDS (1 << 0) +#define EXPMASK_BRDSSLP (1 << 1) +#define EXPMASK_MMCAW (1 << 4) + +static void __init expmask_init(void) +{ + unsigned long expmask = __raw_readl(EXPMASK); + + /* + * Future proofing. + * + * Disable support for slottable sleep instruction + * and non-nop instructions in the rte delay slot. + */ + expmask &= ~(EXPMASK_RTEDS | EXPMASK_BRDSSLP); + + /* + * Enable associative writes to the memory-mapped cache array + * until the cache flush ops have been rewritten. + */ + expmask |= EXPMASK_MMCAW; + + __raw_writel(expmask, EXPMASK); + ctrl_barrier(); +} +#else +#define expmask_init() do { } while (0) +#endif + /* 2nd-level cache init */ void __uses_jump_to_uncached __attribute__ ((weak)) l2_cache_init(void) { @@ -319,4 +350,5 @@ asmlinkage void __init sh_cpu_init(void) #endif speculative_execution_init(); + expmask_init(); } |