Changeset a35b458 in mainline for kernel/arch/ia64/src/drivers/it.c
- Timestamp:
- 2018-03-02T20:10:49Z (7 years ago)
- Branches:
- lfn, master, serial, ticket/834-toolchain-update, topic/msim-upgrade, topic/simplify-dev-export
- Children:
- f1380b7
- Parents:
- 3061bc1
- git-author:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-02-28 17:38:31)
- git-committer:
- Jiří Zárevúcky <zarevucky.jiri@…> (2018-03-02 20:10:49)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
kernel/arch/ia64/src/drivers/it.c
r3061bc1 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.