NOVA User-Level Environment
Version testbox/changed-memory-timing-317-g320d8b5
|
An implementation of the Intel 8259. More...
Public Member Functions | |
bool | receive (MessageLegacy &msg) |
The CPU send an int-ack cycle? | |
bool | receive (MessagePic &msg) |
We get an request on the three-wire PIC bus. | |
bool | receive (MessageIOIn &msg) |
bool | receive (MessageIOOut &msg) |
Write to the PIC via IO ports. | |
bool | receive (MessageIrqLines &msg) |
Raise the an irqline. | |
PicDevice (DBus< MessageIrqLines > &bus_irq, DBus< MessagePic > &bus_pic, DBus< MessageLegacy > &bus_legacy, DBus< MessageIrqNotify > &bus_notify, unsigned short base, unsigned char irq, unsigned short elcr_base, unsigned char virq) | |
Public Member Functions inherited from StaticReceiver< PicDevice > | |
StaticReceiver () | |
Public Member Functions inherited from Device | |
void | debug_dump () |
Device (const char *debug_name) |
Private Types | |
enum | ICW_MODE { ICW1, ICW2, ICW3, ICW4, OCW1 = 0 } |
enum | { ICW1_IC4 = 0x01, ICW1_SNGL = 0x02, ICW1_LTIM = 0x08, ICW4_AEOI = 0x02, ICW4_MS = 0x04, ICW4_BUF = 0x08, ICW4_SFNM = 0x10 } |
Private Member Functions | |
bool | is_slave () |
void | rotate_prios () |
void | specific_eoi (unsigned char irq) |
void | non_specific_eoi () |
void | reset_values () |
bool | prioritize_irq (unsigned char &irq_index, bool int_ack) |
Check whether irqs will happen, optionally ACK irq and return the irq index. | |
void | propagate_irq (bool send_deassert) |
Propagate an irq upstream. | |
void | get_irqvector (unsigned char &res) |
Upstream requests an irq vector. |
Private Attributes | |
DBus< MessageIrqLines > & | _bus_irq |
DBus< MessagePic > & | _bus_pic |
DBus< MessageLegacy > & | _bus_legacy |
DBus< MessageIrqNotify > & | _bus_notify |
unsigned short | _base |
unsigned | _upstream_irq |
unsigned short | _elcr_base |
unsigned char | _virq |
unsigned char | _icw [4] |
ICW_MODE | _icw_mode |
bool | _rotate_on_aeoi |
bool | _smm |
bool | _read_isr_reg |
bool | _poll_mode |
unsigned char | _prio_lowest |
unsigned char | _imr |
unsigned char | _isr |
unsigned char | _irr |
unsigned char | _elcr |
unsigned char | _notify |
Additional Inherited Members | |
Static Public Member Functions inherited from StaticReceiver< PicDevice > | |
static bool | receive_static (Device *o, M &msg) |
An implementation of the Intel 8259.
State: stable Ignored bits: ADI, yPM Documentation: Intel 8259a - 8259A.pdf
|
private |
|
private |
|
inline |
|
inlineprivate |
Upstream requests an irq vector.
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
Check whether irqs will happen, optionally ACK irq and return the irq index.
|
inlineprivate |
Propagate an irq upstream.
|
inline |
The CPU send an int-ack cycle?
|
inline |
We get an request on the three-wire PIC bus.
|
inline |
|
inline |
Write to the PIC via IO ports.
|
inline |
Raise the an irqline.
This function needs to be multi-entrance ready! It should only touch the _irr.
|
inlineprivate |
|
inlineprivate |
|
inlineprivate |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |
|
private |