9
0
Fork 0

enable/disable IRQ backward

git-svn-id: https://nuttx.svn.sourceforge.net/svnroot/nuttx/trunk@3363 7fd9a85b-ad96-42d3-883c-3090e2eb8679
This commit is contained in:
patacongo 2011-03-10 23:37:45 +00:00
parent 3ece12d2fe
commit 619968406b
3 changed files with 17 additions and 14 deletions

View File

@ -138,6 +138,11 @@ static void up_remappic(void)
idt_outb(0x28, PIC2_ICW2);
idt_outb(PIC_ICW3_SID2, PIC2_ICW3);
idt_outb(PIC_ICW4_808xMODE, PIC2_ICW4);
/* Mask interrupts from PIC */
idt_outb(PIC1_IMR_ALL, PIC1_IMR);
idt_outb(PIC2_IMR_ALL, PIC2_IMR);
}
/****************************************************************************
@ -276,16 +281,16 @@ void up_disable_irq(int irq)
unsigned int regaddr;
uint8_t regbit;
if ((unsigned)irq >= IRQ0)
if (irq >= IRQ0)
{
/* Map the IRQ IMR regiser to a PIC and a bit number */
if ((unsigned)irq <= IRQ7)
if (irq <= IRQ7)
{
regaddr = PIC1_IMR;
regbit = (1 << (irq - IRQ0));
}
else if ((unsigned)irq <= IRQ15)
else if (irq <= IRQ15)
{
regaddr = PIC2_IMR;
regbit = (1 << (irq - IRQ8));
@ -295,9 +300,9 @@ void up_disable_irq(int irq)
return;
}
/* Disable the interrupt */
/* Disable (mask) the interrupt */
modifyreg8(regaddr, regbit, 0);
modifyreg8(regaddr, 0, regbit);
}
}
@ -314,16 +319,16 @@ void up_enable_irq(int irq)
unsigned int regaddr;
uint8_t regbit;
if ((unsigned)irq >= IRQ0)
if (irq >= IRQ0)
{
/* Map the IRQ IMR regiser to a PIC and a bit number */
if ((unsigned)irq <= IRQ7)
if (irq <= IRQ7)
{
regaddr = PIC1_IMR;
regbit = (1 << (irq - IRQ0));
}
else if ((unsigned)irq <= IRQ15)
else if (irq <= IRQ15)
{
regaddr = PIC2_IMR;
regbit = (1 << (irq - IRQ8));
@ -333,9 +338,9 @@ void up_enable_irq(int irq)
return;
}
/* Enable the interrupt */
/* Enable (unmask) the interrupt */
modifyreg8(regaddr, 0, regbit);
modifyreg8(regaddr, regbit, 0);
}
}

View File

@ -76,7 +76,7 @@ void up_registerdump(uint32_t *regs)
regs[REG_EDI], regs[REG_ESI], regs[REG_EBP], regs[REG_ESP]);
lldbg("ebx:%08x edx:%08x ecx:%08x eax:%08x\n",
regs[REG_EBX], regs[REG_EDX], regs[REG_ECX], regs[REG_EAX]);
lldbg("eip:%08x cs:%08x flg:%08x sp:%08x ss:%08x\n",
lldbg("eip:%08x cs:%08x flg:%08x sp:%08x ss:%08x\n",
regs[REG_EIP], regs[REG_CS], regs[REG_EFLAGS], regs[REG_SP],
regs[REG_SS]);
}

View File

@ -47,6 +47,7 @@
#include <debug.h>
#include <nuttx/arch.h>
#include <arch/irq.h>
#include <arch/io.h>
#include <arch/board/board.h>
@ -87,9 +88,6 @@
* Private Function Prototypes
****************************************************************************/
static void outb(uint8_t val, uint16_t addr) __attribute__((noinline));
static int up_timerisr(int irq, uint32_t *regs);
/****************************************************************************
* Private Functions
****************************************************************************/