|
|
1.1 root 1: /*
2: * Copyright (c) 1995 The University of Utah and
3: * the Computer Systems Laboratory at the University of Utah (CSL).
4: * All rights reserved.
5: *
6: * Permission to use, copy, modify and distribute this software is hereby
7: * granted provided that (1) source code retains these copyright, permission,
8: * and disclaimer notices, and (2) redistributions including binaries
9: * reproduce the notices in supporting documentation, and (3) all advertising
10: * materials mentioning features or use of this software display the following
11: * acknowledgement: ``This product includes software developed by the
12: * Computer Systems Laboratory at the University of Utah.''
13: *
14: * THE UNIVERSITY OF UTAH AND CSL ALLOW FREE USE OF THIS SOFTWARE IN ITS "AS
15: * IS" CONDITION. THE UNIVERSITY OF UTAH AND CSL DISCLAIM ANY LIABILITY OF
16: * ANY KIND FOR ANY DAMAGES WHATSOEVER RESULTING FROM THE USE OF THIS SOFTWARE.
17: *
18: * CSL requests users of this software to return to [email protected] any
19: * improvements that they make and grant CSL redistribution rights.
20: *
21: * Author: Bryan Ford, University of Utah CSL
22: */
23: #ifndef _I386_PC_IRQ_H_
24: #define _I386_PC_IRQ_H_
25:
26: /* On normal PCs, there are always 16 IRQ lines. */
27: #define IRQ_COUNT 16
28:
29: /* Start of hardware interrupt vectors in the IDT. */
30: #define IDT_IRQ_BASE 0x20
31:
32: /* Variables storing the master and slave PIC interrupt vector base. */
33: extern int irq_master_base, irq_slave_base;
34:
35: /* Routine called just after entering protected mode for the first time,
36: to set up the IRQ interrupt vectors in the protected-mode IDT.
37: It should initialize IDT entries irq_master_base through irq_master_base+7,
38: and irq_slave_base through irq_slave_base+7. */
39: extern void idt_irq_init(void);
40:
41: /* Fill an IRQ gate in a CPU's IDT.
42: Always uses an interrupt gate; just set `access' to the privilege level. */
43: #define fill_irq_gate(cpu, irq_num, entry, selector, access) \
44: fill_idt_gate(cpu, (irq_num) < 8 \
45: ? irq_master_base+(irq_num) \
46: : irq_slave_base+(irq_num)-8, \
47: entry, selector, ACC_INTR_GATE | (access))
48:
49: #endif _I386_PC_IRQ_H_
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.