void __ipipe_mach_set_dec(unsigned long delay) { if (delay > mxc_min_delay) { unsigned long tcmp; if (!timer_is_v2()) { tcmp = __raw_readl(timer_base + MX1_2_TCN) + delay; __raw_writel(tcmp, timer_base + MX1_2_TCMP); } else { tcmp = __raw_readl(timer_base + V2_TCN) + delay; __raw_writel(tcmp, timer_base + V2_TCMP); } } else ipipe_trigger_irq(__ipipe_mach_timerint); }
int __ipipe_send_ipi(unsigned ipi, cpumask_t cpumask) { unsigned long flags; int self; local_irq_save_hw(flags); self = cpu_isset(ipipe_processor_id(),cpumask); cpu_clear(ipipe_processor_id(), cpumask); if (!cpus_empty(cpumask)) apic->send_IPI_mask(&cpumask, ipipe_apic_irq_vector(ipi)); if (self) ipipe_trigger_irq(ipi); local_irq_restore_hw(flags); return 0; }
int fastcall __ipipe_send_ipi(unsigned ipi, cpumask_t cpumask) { unsigned long flags; ipipe_declare_cpuid; int self; ipipe_lock_cpu(flags); self = cpu_isset(cpuid,cpumask); cpu_clear(cpuid,cpumask); if (!cpus_empty(cpumask)) send_IPI_mask(cpumask,ipi + FIRST_EXTERNAL_VECTOR); if (self) ipipe_trigger_irq(ipi); ipipe_unlock_cpu(flags); return 0; }