static irqreturn_t px_css_isr(int irq, void * dev) { struct pt_regs *regs; unsigned int pid; unsigned int tid; unsigned int cpu; unsigned long long ts; unsigned long flags; irqreturn_t ret; local_irq_save(flags); ret = IRQ_NONE; regs = get_irq_regs(); pid = current->tgid; tid = current->pid; ts = get_timestamp(); cpu = smp_processor_id(); ret = px_pmu_isr(pid, tid, regs, cpu, ts); local_irq_restore(flags); return ret; }
irqreturn_t px_hotspot_isr(int irq, void * dev) { struct pt_regs *regs; unsigned int pid; unsigned int tid; unsigned int pc; unsigned int ts; unsigned long flags; irqreturn_t ret; local_irq_save(flags); ret = IRQ_NONE; regs = get_irq_regs(); pid = current->tgid; tid = current->pid; pc = regs->ARM_pc; ts = get_timestamp(); if (irq == get_timer_irq()) { ret = px_timer_isr(pid, tid, pc, ts); } else if (irq == g_pmu_irq_num) { ret = px_pmu_isr(pid, tid, pc, ts); } local_irq_restore(flags); return ret; }
irqreturn_t px_css_isr(int irq, void * dev) { struct pt_regs *regs; unsigned int pid; unsigned int tid; unsigned int cpu; unsigned long flags; unsigned long long ts; irqreturn_t ret; local_irq_save(flags); ret = IRQ_NONE; regs = get_irq_regs(); pid = current->tgid; tid = current->pid; cpu = smp_processor_id(); ts = get_timestamp(); #ifdef HW_TBS if (irq == get_timer_irq()) { ret = px_timer_isr(regs, pid, tid, cpu, ts); } else #endif { ret = px_pmu_isr(regs, pid, tid, cpu, ts); } local_irq_restore(flags); return ret; }