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 <[email protected]>
---
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 [email protected]
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 [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to