Files
m241Neelima/vxworks-6.9/target/h/drv/intrCtl/i8259.h
T
2026-07-30 11:19:44 +05:30

97 lines
2.5 KiB
C

/* i8259.h - Intel 8259a PIC (Programmable Interrupt Controller) */
/* Copyright 1984-2002 Wind River Systems, Inc. */
/*
modification history
--------------------
01h,23apr02,hdn added prototypes for new BOI/EOI rtn (spr 76411)
01g,08mar02,hdn added prototype i8259Init() for HTT (spr 73738)
01f,28may97,hdn copied i8259a.h to i8259.h for APIC support.
01e,17mar97,hdn added function declarations.
01d,03jan95,vin added PIC_ISR_MASK, PIC_IRR_MASK, OCW3
01c,16aug93,hdn deleted PIC_BASE_ADRS macros.
01b,16jun93,hdn updated to 5.1.
01a,15may92,hdn written.
*/
#ifndef __INCi8259h
#define __INCi8259h
#ifdef __cplusplus
extern "C" {
#endif
/*
* The macro PIC_REG_ADDR_INTERVAL must be defined
* when including this header.
*/
/* default definitions */
#define CAST
#define PIC_ADRS(base,reg) (CAST (base+(reg*PIC_REG_ADDR_INTERVAL)))
/* register definitions */
#define PIC_port1(base) PIC_ADRS(base,0x00) /* port 1. */
#define PIC_port2(base) PIC_ADRS(base,0x01) /* port 2. */
/* alias */
#define PIC_IMASK(base) PIC_port2(base) /* Interrupt mask. */
#define PIC_IACK(base) PIC_port1(base) /* Interrupt acknowledge. */
#define PIC_ISR_MASK(base) PIC_port1(base) /* in-service register mask */
#define PIC_IRR_MASK(base) PIC_port1(base) /* interrupt request reg */
#define OCW3_DEF 0x08 /* 3rd default control word */
#define OCW3_PCB 0x04 /* Polling Control Bit */
#define OCW3_ISR 0x03 /* Read in-service reg */
#define OCW3_IRR 0x02 /* Read inter request reg */
#define I8259_EOI 0x20 /* EOI bit in OCW2 */
#ifndef _ASMLANGUAGE
#if defined(__STDC__) || defined(__cplusplus)
IMPORT VOID i8259Init (void);
IMPORT int sysIntLevel (int arg);
IMPORT VOID sysIntLock (void);
IMPORT VOID sysIntUnlock (void);
IMPORT VOID i8259IntBoi (int irqNo);
IMPORT VOID i8259IntBoiEem (int irqNo);
IMPORT VOID i8259IntBoiSmm (int irqNo);
IMPORT VOID i8259IntEoiSmm (int irqNo);
IMPORT VOID i8259IntEoiMaster (int irqNo);
IMPORT VOID i8259IntEoiSlave (int irqNo);
IMPORT VOID i8259IntEoiSlaveNfnm (int irqNo);
IMPORT VOID i8259IntEoiSlaveSfnm (int irqNo);
#else
IMPORT VOID i8259Init ();
IMPORT int sysIntLevel ();
IMPORT VOID sysIntLock ();
IMPORT VOID sysIntUnlock ();
IMPORT VOID i8259IntBoi ();
IMPORT VOID i8259IntBoiEem ();
IMPORT VOID i8259IntBoiSmm ();
IMPORT VOID i8259IntEoiSmm ();
IMPORT VOID i8259IntEoiMaster ();
IMPORT VOID i8259IntEoiSlave ();
IMPORT VOID i8259IntEoiSlaveNfnm ();
IMPORT VOID i8259IntEoiSlaveSfnm ();
#endif /* __STDC__ */
#endif /* _ASMLANGUAGE */
#ifdef __cplusplus
}
#endif
#endif /* __INCi8259h */