From: Geert Uytterhoeven M68k: gcc lately manages to generate the code sequence described in the 060 errata I14, so use the described workaround (from Roman Zippel) Signed-off-by: Roman Zippel Signed-off-by: Geert Uytterhoeven Signed-off-by: Andrew Morton --- 25-akpm/arch/m68k/kernel/setup.c | 12 ++++++++++++ 1 files changed, 12 insertions(+) diff -puN arch/m68k/kernel/setup.c~m68k-68060-errata-i14 arch/m68k/kernel/setup.c --- 25/arch/m68k/kernel/setup.c~m68k-68060-errata-i14 2004-07-26 17:25:07.809789064 -0700 +++ 25-akpm/arch/m68k/kernel/setup.c 2004-07-26 17:25:07.813788456 -0700 @@ -237,6 +237,18 @@ void __init setup_arch(char **cmdline_p) } #endif + if (CPU_IS_060) { + u32 pcr; + + asm (".chip 68060; movec %%pcr,%0; .chip 68k" + : "=d" (pcr)); + if (((pcr >> 8) & 0xff) <= 5) { + printk("Enabling workaround for errata I14\n"); + asm (".chip 68060; movec %0,%%pcr; .chip 68k" + : : "d" (pcr | 0x20)); + } + } + init_mm.start_code = PAGE_OFFSET; init_mm.end_code = (unsigned long) &_etext; init_mm.end_data = (unsigned long) &_edata; _