Mikael Pettersson wrote:
The fix is simple: define ALLOWINT as ~0x500 instead. This makes
arch_local_irq_enable() consistent with default_idle(), and prevents
the !irqs_disabled() problems for ipl 3 interrupts.
Tested on Atari running in an Aranym VM.
Tested on my Falcon/CT60.
Michael
Signed-off-by: Mikael Pettersson <mikpe@xxxxxxxx>
---
Since ipl is interpreted by HW as a numerical level, the current
simple-minded bit masking operations in arch_local_irq_enable(),
arch_irqs_disabled_flags(), and entry_mm.S aren't really correct,
but only Atari is affected, and it doesn't seem to hurt in practice.
--- linux-3.4-rc3/arch/m68k/include/asm/entry.h.~1~ 2012-03-19 14:06:52.000000000 +0100
+++ linux-3.4-rc3/arch/m68k/include/asm/entry.h 2012-04-18 22:07:52.000000000 +0200
@@ -33,8 +33,8 @@
/* the following macro is used when enabling interrupts */
#if defined(MACH_ATARI_ONLY)
- /* block out HSYNC on the atari */
-#define ALLOWINT (~0x400)
+ /* block out HSYNC = ipl 2 on the atari */
+#define ALLOWINT (~0x500)
#define MAX_NOINT_IPL 3
#else
/* portable version */
--
To unsubscribe from this list: send the line "unsubscribe linux-m68k" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-m68k" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html