Ignore:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • kernel/arch/sparc64/src/drivers/tick.c

    r965dc18 rd46f5cc  
    2727 */
    2828
    29 /** @addtogroup sparc64 
     29/** @addtogroup sparc64
    3030 * @{
    3131 */
     
    5454        interrupt_register(14, "tick_int", tick_interrupt);
    5555        compare.int_dis = false;
    56         compare.tick_cmpr = CPU->arch.clock_frequency / HZ;
     56        compare.tick_cmpr = tick_counter_read() +
     57                CPU->arch.clock_frequency / HZ;
    5758        CPU->arch.next_tick_cmpr = compare.tick_cmpr;
    5859        tick_compare_write(compare.value);
    59         tick_write(0);
    6060
    61 #if defined (US3)
     61#if defined (US3) || defined (SUN4V)
    6262        /* disable STICK interrupts and clear any pending ones */
    6363        tick_compare_reg_t stick_compare;
     
    7777/** Process tick interrupt.
    7878 *
    79  * @param n Interrupt Level, 14,  (can be ignored)
     79 * @param n      Interrupt Level (14, can be ignored)
    8080 * @param istate Interrupted state.
     81 *
    8182 */
    82 void tick_interrupt(int n, istate_t *istate)
     83void tick_interrupt(unsigned int n, istate_t *istate)
    8384{
    8485        softint_reg_t softint, clear;
     
    111112         * overflow only in 146 years.
    112113         */
    113         drift = tick_read() - CPU->arch.next_tick_cmpr;
     114        drift = tick_counter_read() - CPU->arch.next_tick_cmpr;
    114115        while (drift > CPU->arch.clock_frequency / HZ) {
    115116                drift -= CPU->arch.clock_frequency / HZ;
    116117                CPU->missed_clock_ticks++;
    117118        }
    118         CPU->arch.next_tick_cmpr = tick_read() +
     119        CPU->arch.next_tick_cmpr = tick_counter_read() +
    119120            (CPU->arch.clock_frequency / HZ) - drift;
    120121        tick_compare_write(CPU->arch.next_tick_cmpr);
Note: See TracChangeset for help on using the changeset viewer.