Ejemplo n.º 1
0
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);
}
Ejemplo n.º 2
0
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;
}
Ejemplo n.º 3
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;
}