Skip to content

Commit

Permalink
comments; rename irq_ to pic_
Browse files Browse the repository at this point in the history
  • Loading branch information
rsc committed Aug 28, 2007
1 parent 5516be1 commit eb52c7d
Show file tree
Hide file tree
Showing 9 changed files with 25 additions and 18 deletions.
6 changes: 5 additions & 1 deletion console.c
Original file line number Diff line number Diff line change
@@ -1,3 +1,7 @@
// Console input and output.
// Input is from the keyboard only.
// Output is written to the screen and the printer port.

#include "types.h"
#include "defs.h"
#include "param.h"
Expand Down Expand Up @@ -278,7 +282,7 @@ console_init(void)
devsw[CONSOLE].read = console_read;
//use_console_lock = 1;

irq_enable(IRQ_KBD);
pic_enable(IRQ_KBD);
ioapic_enable(IRQ_KBD, 0);
}

Expand Down
2 changes: 1 addition & 1 deletion defs.h
Original file line number Diff line number Diff line change
Expand Up @@ -85,7 +85,7 @@ void mp_init(void);
void mp_startthem(void);

// picirq.c
void irq_enable(int);
void pic_enable(int);
void pic_init(void);

// pipe.c
Expand Down
2 changes: 1 addition & 1 deletion ide.c
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ ide_init(void)
int i;

initlock(&ide_lock, "ide");
irq_enable(IRQ_IDE);
pic_enable(IRQ_IDE);
ioapic_enable(IRQ_IDE, ncpu - 1);
ide_wait_ready(0);

Expand Down
4 changes: 2 additions & 2 deletions init.c
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
// init: The initial user-level program

#include "types.h"
#include "stat.h"
#include "user.h"
#include "fcntl.h"

// init: The initial user-level program

char *sh_args[] = { "sh", 0 };

int
Expand Down
1 change: 1 addition & 0 deletions ioapic.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
// The I/O APIC manages hardware interrupts for an SMP system.
// http://www.intel.com/design/chipsets/datashts/29056601.pdf
// See also picirq.c.

#include "types.h"
#include "defs.h"
Expand Down
1 change: 0 additions & 1 deletion kbd.c
Original file line number Diff line number Diff line change
Expand Up @@ -48,4 +48,3 @@ kbd_intr(void)
{
console_intr(kbd_getc);
}

2 changes: 2 additions & 0 deletions mp.c
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
// Multiprocessor bootstrap.
// Search memory for MP description structures.
// http://developer.intel.com/design/pentium/datashts/24201606.pdf

#include "types.h"
Expand Down
23 changes: 12 additions & 11 deletions picirq.c
Original file line number Diff line number Diff line change
@@ -1,30 +1,31 @@
// Intel 8259A programmable interrupt controllers.

#include "types.h"
#include "x86.h"
#include "traps.h"

// I/O Addresses of the two 8259A programmable interrupt controllers
// I/O Addresses of the two programmable interrupt controllers
#define IO_PIC1 0x20 // Master (IRQs 0-7)
#define IO_PIC2 0xA0 // Slave (IRQs 8-15)

#define IRQ_SLAVE 2 // IRQ at which slave connects to master

// Current IRQ mask.
// Initial IRQ mask has interrupt 2 enabled (for slave 8259A).
static ushort irq_mask_8259A = 0xFFFF & ~(1<<IRQ_SLAVE);
static ushort irqmask = 0xFFFF & ~(1<<IRQ_SLAVE);

static void
irq_setmask_8259A(ushort mask)
pic_setmask(ushort mask)
{
irq_mask_8259A = mask;

outb(IO_PIC1+1, (char)mask);
outb(IO_PIC2+1, (char)(mask >> 8));
irqmask = mask;
outb(IO_PIC1+1, mask);
outb(IO_PIC2+1, mask >> 8);
}

void
irq_enable(int irq)
pic_enable(int irq)
{
irq_setmask_8259A(irq_mask_8259A & ~(1<<irq));
pic_setmask(irqmask & ~(1<<irq));
}

// Initialize the 8259A interrupt controllers.
Expand Down Expand Up @@ -78,6 +79,6 @@ pic_init(void)
outb(IO_PIC2, 0x68); // OCW3
outb(IO_PIC2, 0x0a); // OCW3

if(irq_mask_8259A != 0xFFFF)
irq_setmask_8259A(irq_mask_8259A);
if(irqmask != 0xFFFF)
pic_setmask(irqmask);
}
2 changes: 1 addition & 1 deletion timer.c
Original file line number Diff line number Diff line change
Expand Up @@ -28,5 +28,5 @@ timer_init(void)
outb(TIMER_MODE, TIMER_SEL0 | TIMER_RATEGEN | TIMER_16BIT);
outb(IO_TIMER1, TIMER_DIV(100) % 256);
outb(IO_TIMER1, TIMER_DIV(100) / 256);
irq_enable(IRQ_TIMER);
pic_enable(IRQ_TIMER);
}

0 comments on commit eb52c7d

Please sign in to comment.