comments; rename irq_ to pic_
This commit is contained in:
parent
5516be1fed
commit
eb52c7de1d
9 changed files with 25 additions and 18 deletions
|
@ -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 "types.h"
|
||||||
#include "defs.h"
|
#include "defs.h"
|
||||||
#include "param.h"
|
#include "param.h"
|
||||||
|
@ -278,7 +282,7 @@ console_init(void)
|
||||||
devsw[CONSOLE].read = console_read;
|
devsw[CONSOLE].read = console_read;
|
||||||
//use_console_lock = 1;
|
//use_console_lock = 1;
|
||||||
|
|
||||||
irq_enable(IRQ_KBD);
|
pic_enable(IRQ_KBD);
|
||||||
ioapic_enable(IRQ_KBD, 0);
|
ioapic_enable(IRQ_KBD, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
2
defs.h
2
defs.h
|
@ -85,7 +85,7 @@ void mp_init(void);
|
||||||
void mp_startthem(void);
|
void mp_startthem(void);
|
||||||
|
|
||||||
// picirq.c
|
// picirq.c
|
||||||
void irq_enable(int);
|
void pic_enable(int);
|
||||||
void pic_init(void);
|
void pic_init(void);
|
||||||
|
|
||||||
// pipe.c
|
// pipe.c
|
||||||
|
|
2
ide.c
2
ide.c
|
@ -47,7 +47,7 @@ ide_init(void)
|
||||||
int i;
|
int i;
|
||||||
|
|
||||||
initlock(&ide_lock, "ide");
|
initlock(&ide_lock, "ide");
|
||||||
irq_enable(IRQ_IDE);
|
pic_enable(IRQ_IDE);
|
||||||
ioapic_enable(IRQ_IDE, ncpu - 1);
|
ioapic_enable(IRQ_IDE, ncpu - 1);
|
||||||
ide_wait_ready(0);
|
ide_wait_ready(0);
|
||||||
|
|
||||||
|
|
4
init.c
4
init.c
|
@ -1,10 +1,10 @@
|
||||||
|
// init: The initial user-level program
|
||||||
|
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
#include "stat.h"
|
#include "stat.h"
|
||||||
#include "user.h"
|
#include "user.h"
|
||||||
#include "fcntl.h"
|
#include "fcntl.h"
|
||||||
|
|
||||||
// init: The initial user-level program
|
|
||||||
|
|
||||||
char *sh_args[] = { "sh", 0 };
|
char *sh_args[] = { "sh", 0 };
|
||||||
|
|
||||||
int
|
int
|
||||||
|
|
1
ioapic.c
1
ioapic.c
|
@ -1,5 +1,6 @@
|
||||||
// The I/O APIC manages hardware interrupts for an SMP system.
|
// The I/O APIC manages hardware interrupts for an SMP system.
|
||||||
// http://www.intel.com/design/chipsets/datashts/29056601.pdf
|
// http://www.intel.com/design/chipsets/datashts/29056601.pdf
|
||||||
|
// See also picirq.c.
|
||||||
|
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
#include "defs.h"
|
#include "defs.h"
|
||||||
|
|
1
kbd.c
1
kbd.c
|
@ -48,4 +48,3 @@ kbd_intr(void)
|
||||||
{
|
{
|
||||||
console_intr(kbd_getc);
|
console_intr(kbd_getc);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
2
mp.c
2
mp.c
|
@ -1,3 +1,5 @@
|
||||||
|
// Multiprocessor bootstrap.
|
||||||
|
// Search memory for MP description structures.
|
||||||
// http://developer.intel.com/design/pentium/datashts/24201606.pdf
|
// http://developer.intel.com/design/pentium/datashts/24201606.pdf
|
||||||
|
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
|
|
23
picirq.c
23
picirq.c
|
@ -1,8 +1,10 @@
|
||||||
|
// Intel 8259A programmable interrupt controllers.
|
||||||
|
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
#include "x86.h"
|
#include "x86.h"
|
||||||
#include "traps.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_PIC1 0x20 // Master (IRQs 0-7)
|
||||||
#define IO_PIC2 0xA0 // Slave (IRQs 8-15)
|
#define IO_PIC2 0xA0 // Slave (IRQs 8-15)
|
||||||
|
|
||||||
|
@ -10,21 +12,20 @@
|
||||||
|
|
||||||
// Current IRQ mask.
|
// Current IRQ mask.
|
||||||
// Initial IRQ mask has interrupt 2 enabled (for slave 8259A).
|
// 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
|
static void
|
||||||
irq_setmask_8259A(ushort mask)
|
pic_setmask(ushort mask)
|
||||||
{
|
{
|
||||||
irq_mask_8259A = mask;
|
irqmask = mask;
|
||||||
|
outb(IO_PIC1+1, mask);
|
||||||
outb(IO_PIC1+1, (char)mask);
|
outb(IO_PIC2+1, mask >> 8);
|
||||||
outb(IO_PIC2+1, (char)(mask >> 8));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
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.
|
// Initialize the 8259A interrupt controllers.
|
||||||
|
@ -78,6 +79,6 @@ pic_init(void)
|
||||||
outb(IO_PIC2, 0x68); // OCW3
|
outb(IO_PIC2, 0x68); // OCW3
|
||||||
outb(IO_PIC2, 0x0a); // OCW3
|
outb(IO_PIC2, 0x0a); // OCW3
|
||||||
|
|
||||||
if(irq_mask_8259A != 0xFFFF)
|
if(irqmask != 0xFFFF)
|
||||||
irq_setmask_8259A(irq_mask_8259A);
|
pic_setmask(irqmask);
|
||||||
}
|
}
|
||||||
|
|
2
timer.c
2
timer.c
|
@ -28,5 +28,5 @@ timer_init(void)
|
||||||
outb(TIMER_MODE, TIMER_SEL0 | TIMER_RATEGEN | TIMER_16BIT);
|
outb(TIMER_MODE, TIMER_SEL0 | TIMER_RATEGEN | TIMER_16BIT);
|
||||||
outb(IO_TIMER1, TIMER_DIV(100) % 256);
|
outb(IO_TIMER1, TIMER_DIV(100) % 256);
|
||||||
outb(IO_TIMER1, TIMER_DIV(100) / 256);
|
outb(IO_TIMER1, TIMER_DIV(100) / 256);
|
||||||
irq_enable(IRQ_TIMER);
|
pic_enable(IRQ_TIMER);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue