Intel 386 User Manual
Page 234

9-35
INTERRUPT CONTROL UNIT
/*****************************************************************************
InitICUSlave
Description:
Initialization only the internal slave Interrupt Control Units (ICU).
This routine only initializes the internal interrupt controller,
external ICUs must be initialized separately.
Parameters:
SlaveMode
Mode of operation for Slave ICU
SlaveBase
Specifies the base interrupt vector number for the
Slave interrupts.
For example, if IR1 of the slave goes active and the
SlaveBase = 0x40 the processor uses interrupt
vector table entry 0x41.
SlavePins
Defines what EX pins are available externally to the
chip for the Slave.
Returns:Error Code
E_OK
-- Initialized OK, No error.
Assumptions:
REMAPCFG register has Expanded I/O space access enabled (ESE bit set).
Syntax:
/* ICU Modes */
#define ICU_SFNM
0x10
#define ICU_AUTOEOI
0x2
#define ICU_TRIGGER_LEVEL
0x8
#define ICU_TRIGGER_EDGE
0x0
/* ICU Slave Pins */
#define SPIN_INT4
0x1
#define SPIN_INT5
0x2
#define SPIN_INT6
0x4
#define SPIN_INT7
0x8
int error_code;
error_code = InitICUSlave(ICU_TRIGGER_EDGE, 0x30, SPIN_INT4);
Real/Protected Mode
No changes required.
*****************************************************************************/
int InitICUSlave(BYTE SlaveMode, BYTE SlaveBase, BYTE SlavePins)
{
BYTE
cfg_pins;
/* Program Slave ICU */