Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 1482 → Rev 1481

/kernel/trunk/arch/ia64/src/drivers/it.c
35,11 → 35,8
#include <arch/asm.h>
#include <arch/barrier.h>
#include <time/clock.h>
#include <arch.h>
 
 
#define IT_SERVICE_CLOCKS 64
 
/** Initialize Interval Timer. */
void it_init(void)
{
61,36 → 58,12
srlz_d();
}
 
 
/** Process Interval Timer interrupt. */
void it_interrupt(void)
{
__s64 c;
__s64 m;
eoi_write(EOI);
m=itm_read();
while(1)
{
c=itc_read();
c+=IT_SERVICE_CLOCKS;
 
m+=IT_DELTA;
if(m-c<0)
{
CPU->missed_clock_ticks++;
}
else break;
}
itm_write(m);
itm_write(itc_read() + IT_DELTA); /* program next interruption */
srlz_d(); /* propagate changes */
clock();
poll_keyboard();
}