Change do_IRQ high bit masking.

Allow more than 256 interrupt vectors on native by only setting the
highest bit when marking orig_eax to indicate that we're not within
a system call.

Signed-off-by: Christian Limpach <Christian.Limpach@cl.cam.ac.uk>
This commit is contained in:
cl349@firebug.cl.cam.ac.uk committed 2006-03-28 14:19:22 +01:00
1 parent 52c437a6da
commit ee35c5fbf6
5 files changed
+10 -10

No files matched your search

@@ -462,7 +462,7 @@ vector=0
ENTRY(irq_entries_start)
.rept NR_IRQS
ALIGN
1: pushl $vector-256
1: pushl 0x80000000+$vector
jmp common_interrupt
.data
.long 1b
@@ -479,7 +479,7 @@ common_interrupt:
#define BUILD_INTERRUPT(name, nr) \
ENTRY(name) \
pushl $nr-256; \
pushl 0x80000000+$nr; \
SAVE_ALL \
movl %esp,%eax; \
call smp_/**/name; \
@@ -53,8 +53,8 @@ static union irq_ctx *softirq_ctx[NR_CPUS];
*/
fastcall unsigned int do_IRQ(struct pt_regs *regs)
{
/* high bits used in ret_from_ code */
int irq = regs->orig_eax & __IRQ_MASK(HARDIRQ_BITS);
/* high bit used in ret_from_ code */
int irq = regs->orig_eax & __IRQ_MASK(BITS_PER_LONG - 1);
#ifdef CONFIG_4KSTACKS
union irq_ctx *curctx, *irqctx;
u32 *isp;
@@ -584,7 +584,7 @@ retint_kernel:
*/
.macro apicinterrupt num,func
INTR_FRAME
pushq $\num-256
pushq 0x8000000000000000+$\num
CFI_ADJUST_CFA_OFFSET 8
interrupt \func
jmp error_entry
@@ -96,8 +96,8 @@ skip:
*/
asmlinkage unsigned int do_IRQ(struct pt_regs *regs)
{
/* high bits used in ret_from_ code */
int irq = regs->orig_rax & __IRQ_MASK(HARDIRQ_BITS);
/* high bit used in ret_from_ code */
int irq = regs->orig_rax & __IRQ_MASK(BITS_PER_LONG - 1);
exit_idle();
irq_enter();
@@ -170,9 +170,9 @@ static inline void exit_idle(void) {}
#include <asm/idle.h>
#define IRQ_REG orig_rax
#endif
#define do_IRQ(irq, regs) do { \
(regs)->IRQ_REG = (irq); \
do_IRQ((regs)); \
#define do_IRQ(irq, regs) do { \
(regs)->IRQ_REG = (irq) | (1UL << (BITS_PER_LONG - 1)); \
do_IRQ((regs)); \
} while (0)
#endif
Reference in new issue
Block a user
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.