Changes in kernel/arch/ia64/src/drivers/it.c [24abb85d:a35b458] in mainline
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia64/src/drivers/it.c
r24abb85d ra35b458 68 68 it_irq.handler = it_interrupt; 69 69 irq_register(&it_irq); 70 70 71 71 uint64_t base_freq; 72 72 base_freq = ((bootinfo->freq_scale) & FREQ_NUMERATOR_MASK) >> … … 75 75 base_freq /= ((bootinfo->freq_scale) & FREQ_DENOMINATOR_MASK) >> 76 76 FREQ_DENOMINATOR_SHIFT; 77 77 78 78 it_delta = base_freq / HZ; 79 79 } 80 80 81 81 /* Initialize Interval Timer external interrupt vector */ 82 82 cr_itv_t itv; 83 83 84 84 itv.value = itv_read(); 85 85 itv.vector = INTERRUPT_TIMER; 86 86 itv.m = 0; 87 87 itv_write(itv.value); 88 88 89 89 /* Set Interval Timer Counter to zero */ 90 90 itc_write(0); 91 91 92 92 /* Generate first Interval Timer interrupt in IT_DELTA ticks */ 93 93 itm_write(IT_DELTA); 94 94 95 95 /* Propagate changes */ 96 96 srlz_d(); … … 113 113 { 114 114 eoi_write(EOI); 115 115 116 116 int64_t itm = itm_read(); 117 117 118 118 while (true) { 119 119 int64_t itc = itc_read(); 120 120 itc += IT_SERVICE_CLOCKS; 121 121 122 122 itm += IT_DELTA; 123 123 if (itm - itc < 0) … … 126 126 break; 127 127 } 128 128 129 129 itm_write(itm); 130 130 srlz_d(); /* Propagate changes */ 131 131 132 132 /* 133 133 * We are holding a lock which prevents preemption.
Note:
See TracChangeset
for help on using the changeset viewer.