void sb1250_timer_interrupt(struct pt_regs *regs) { int cpu = smp_processor_id(); int irq = K_INT_TIMER_0+cpu; /* Reset the timer */ out64(M_SCD_TIMER_ENABLE|M_SCD_TIMER_MODE_CONTINUOUS, KSEG1 + A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_CFG)); /* * CPU 0 handles the global timer interrupt job */ if (cpu == 0) { ll_timer_interrupt(irq, regs); } /* * every CPU should do profiling and process accouting */ ll_local_timer_interrupt(irq, regs); }
void bcm1480_timer_interrupt(void) { int cpu = smp_processor_id(); int irq = K_BCM1480_INT_TIMER_0 + cpu; /* Reset the timer */ __raw_writeq(M_SCD_TIMER_ENABLE|M_SCD_TIMER_MODE_CONTINUOUS, IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_CFG))); if (cpu == 0) { /* * CPU 0 handles the global timer interrupt job */ ll_timer_interrupt(irq); } else { /* * other CPUs should just do profiling and process accounting */ ll_local_timer_interrupt(irq); } }
void sb1250_timer_interrupt(struct pt_regs *regs) { extern asmlinkage void ll_local_timer_interrupt(int irq, struct pt_regs *regs); int cpu = smp_processor_id(); int irq = K_INT_TIMER_0 + cpu; /* Reset the timer */ __bus_writeq(M_SCD_TIMER_ENABLE | M_SCD_TIMER_MODE_CONTINUOUS, IOADDR(A_SCD_TIMER_REGISTER(cpu, R_SCD_TIMER_CFG))); /* * CPU 0 handles the global timer interrupt job */ if (cpu == 0) { ll_timer_interrupt(irq, regs); } if (cpu != 0) { /* * every CPU should do profiling and process accouting */ ll_local_timer_interrupt(irq, regs); } }