Пример #1
0
static void timer_interrupt(int irq, void *dev_id, struct pt_regs *regs)
{
	/* Clear the interrupt. */
	int val;
	int status;
	REG32(TCIR) |= TCIR_TC0IP;
#ifdef CONFIG_REMOTE_DEBUG
	/* call the generic one */
	if (kdb_port_info.state) 
	{ 	/* need to init device first */
		status = serial_in(&kdb_port_info,UART_LSR);
		if (status)
		{
			if (status & (UART_LSR_BI | UART_LSR_FE))
				serial_out(&kdb_port_info,UART_LSR_BI,status);
			else
			{
				val=serial_in(&kdb_port_info, UART_RX);
				if(val ==(int)'\003')
				set_async_breakpoint(read_32bit_cp0_register(CP0_EPC));
			}
		}
	}
#endif
	do_timer(regs);
}
Пример #2
0
/* KGDB interrupt handler */
asmlinkage void excite_kgdb_inthdl(void)
{
    if (unlikely(
                ((titan_readl(UAIIR) & 0x7) == 4)
                && ((titan_readl(UARBR) & 0xff) == 0x3)))
        set_async_breakpoint(&regs->cp0_epc);
}
Пример #3
0
static void sb1250_kgdb_interrupt(void)
{
	/*
	 * Clear break-change status (allow some time for the remote
	 * host to stop the break, since we would see another
	 * interrupt on the end-of-break too)
	 */
	kstat_this_cpu.irqs[kgdb_irq]++;
	mdelay(500);
	duart_out(R_DUART_CMD, V_DUART_MISC_CMD_RESET_BREAK_INT |
				M_DUART_RX_EN | M_DUART_TX_EN);
	set_async_breakpoint(&get_irq_regs()->cp0_epc);
}
Пример #4
0
void bcm1480_kgdb_interrupt(struct pt_regs *regs)
{
	/*
	 * Clear break-change status (allow some time for the remote
	 * host to stop the break, since we would see another
	 * interrupt on the end-of-break too)
	 */
	kstat.irqs[smp_processor_id()][kgdb_irq]++;
	mdelay(500);
	duart_out(R_DUART_CMD, V_DUART_MISC_CMD_RESET_BREAK_INT |
				M_DUART_RX_EN | M_DUART_TX_EN);
	set_async_breakpoint(&regs->cp0_epc);
}