sh: speculative execution support for SH7780.
SH7780 has a speculative execution mode where it can speculatively perform an instruction fetch for subroutine returns, this allows it to be enabled. There are some various pitfalls associated with this mode, so it's left as depending on CONFIG_EXPERIMENTAL and not enabled by default. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
@@ -41,6 +41,23 @@ __setup("no" __stringify(x), x##_setup);
|
||||
onchip_setup(fpu);
|
||||
onchip_setup(dsp);
|
||||
|
||||
#ifdef CONFIG_SPECULATIVE_EXECUTION
|
||||
#define CPUOPM 0xff2f0000
|
||||
#define CPUOPM_RABD (1 << 5)
|
||||
|
||||
static void __init speculative_execution_init(void)
|
||||
{
|
||||
/* Clear RABD */
|
||||
ctrl_outl(ctrl_inl(CPUOPM) & ~CPUOPM_RABD, CPUOPM);
|
||||
|
||||
/* Flush the update */
|
||||
(void)ctrl_inl(CPUOPM);
|
||||
ctrl_barrier();
|
||||
}
|
||||
#else
|
||||
#define speculative_execution_init() do { } while (0)
|
||||
#endif
|
||||
|
||||
/*
|
||||
* Generic first-level cache init
|
||||
*/
|
||||
@@ -261,4 +278,6 @@ asmlinkage void __init sh_cpu_init(void)
|
||||
*/
|
||||
ubc_wakeup();
|
||||
#endif
|
||||
|
||||
speculative_execution_init();
|
||||
}
|
||||
|
Reference in New Issue
Block a user