46,6 → 46,16 |
|
#define IT_SERVICE_CLOCKS 64 |
|
#define FREQ_NUMERATOR_SHIFT 32 |
#define FREQ_NUMERATOR_MASK 0xffffffff00000000LL |
|
#define FREQ_DENOMINATOR_SHIFT 0 |
#define FREQ_DENOMINATOR_MASK 0xffffffffLL |
|
|
uint64_t it_delta; |
|
|
static irq_t it_irq; |
|
static irq_ownership_t it_claim(void); |
64,6 → 74,14 |
it_irq.claim = it_claim; |
it_irq.handler = it_interrupt; |
irq_register(&it_irq); |
|
uint64_t base_freq; |
base_freq = ((bootinfo->freq_scale) & FREQ_NUMERATOR_MASK) >> FREQ_NUMERATOR_SHIFT; |
base_freq *= bootinfo->sys_freq; |
base_freq /= ((bootinfo->freq_scale) & FREQ_DENOMINATOR_MASK) >> FREQ_DENOMINATOR_SHIFT; |
|
it_delta = base_freq /HZ; |
|
} |
|
/* initialize Interval Timer external interrupt vector */ |