English
Language : 

82801FB Datasheet, PDF (193/786 Pages) Intel Corporation – Intel I/O Controller Hub 6 (ICH6) Family
Functional Description
5.18.5
5.18.6
5.18.7
Interrupt Levels
Interrupts directed to the internal 8259s are active high. See Section 5.10 for information regarding
the polarity programming of the I/O APIC for detecting internal interrupts.
If the interrupts are mapped to the I/O APIC and set for level-triggered mode, they can be shared
with PCI interrupts. This may be shared although it’s unlikely for the operating system to attempt
to do this.
If more than one timer is configured to share the same IRQ (using the TIMERn_INT_ROUT_CNF
fields), then the software must configure the timers to level-triggered mode. Edge-triggered
interrupts cannot be shared.
Handling Interrupts
If each timer has a unique interrupt and the timer has been configured for edge-triggered mode,
then there are no specific steps required. No read is required to process the interrupt.
If a timer has been configured to level-triggered mode, then its interrupt must be cleared by the
software. This is done by reading the interrupt status register and writing a 1 back to the bit position
for the interrupt to be cleared.
Independent of the mode, software can read the value in the main counter to see how time has
passed between when the interrupt was generated and when it was first serviced.
If Timer 0 is set up to generate a periodic interrupt, the software can check to see how much time
remains until the next interrupt by checking the timer value register.
Issues Related to 64-Bit Timers with 32-Bit Processors
A 32-bit timer can be read directly using processors that are capable of 32-bit or 64-bit instructions.
However, a 32-bit processor may not be able to directly read 64-bit timer. A race condition comes
up if a 32-bit processor reads the 64-bit register using two separate 32-bit reads. The danger is that
just after reading one half, the other half rolls over and changes the first half.
If a 32-bit processor needs to access a 64-bit timer, it must first halt the timer before reading both
the upper and lower 32-bits of the timer. If a 32-bit processor does not want to halt the timer, it can
use the 64-bit timer as a 32-bit timer by setting the TIMERn_32MODE_CNF bit. This causes the
timer to behave as a 32-bit timer. The upper 32-bits are always 0.
Intel® I/O Controller Hub 6 (ICH6) Family Datasheet
193