Exemplo n.º 1
0
void hal_interrupt_acknowledge(int vector)
{

#ifdef HAL_EXTENDED_INTERRUPT_UNMASK
    // Use platform specific handling, if defined
    // Note: this macro should do a 'return' for "extended" values of 'vector'
    // Normal vectors are handled by code subsequent to the macro call.
    HAL_EXTENDED_INTERRUPT_ACKNOWLEDGE(vector);
#endif
	if (vector == CYGNUM_HAL_INTERRUPT_GPIO0 || vector == CYGNUM_HAL_INTERRUPT_GPIO1)
	{
		*PXA2X0_GEDR0  = (1 << (vector - 8));
	}else{
	    if (vector >= CYGNUM_HAL_INTERRUPT_GPIO64) {
			*PXA2X0_GEDR2  = (1 << (vector - 96));
		} else if (vector >= CYGNUM_HAL_INTERRUPT_GPIO32) {
			*PXA2X0_GEDR1  = (1 << (vector - 64));
		} else if (vector >= CYGNUM_HAL_INTERRUPT_GPIO2) {
			*PXA2X0_GEDR0  = (1 << (vector - 32));
		} else {
			// Not a GPIO interrupt
			return;
		}
	}
}
Exemplo n.º 2
0
void hal_interrupt_acknowledge(int vector)
{

#ifdef HAL_EXTENDED_INTERRUPT_ACKNOWLEDGE
    // Use platform specific handling, if defined
    // Note: this macro should do a 'return' for "extended" values of 'vector'
    // Normal vectors are handled by code subsequent to the macro call.
    HAL_EXTENDED_INTERRUPT_ACKNOWLEDGE(vector);
#endif
    if (vector == CYGNUM_HAL_INTERRUPT_GPIO0 || vector == CYGNUM_HAL_INTERRUPT_GPIO1) {
        *PXA2X0_GEDR0  = (1 << (vector - 8));
    } else {
#ifdef CYGOPT_HAL_ARM_XSCALE_PXA2X0_VARIANT_PXA27X
        if (vector >= CYGNUM_HAL_INTERRUPT_GPIO(96)) {
            *PXA2X0_GEDR3 = (1 << (vector - CYGNUM_HAL_INTERNAL_IRQS - 96));
        } else
#endif
	if (vector >= CYGNUM_HAL_INTERRUPT_GPIO(64)) {
            *PXA2X0_GEDR2  = (1 << (vector - CYGNUM_HAL_INTERNAL_IRQS - 64));
        } else if (vector >= CYGNUM_HAL_INTERRUPT_GPIO(32)) {
            *PXA2X0_GEDR1  = (1 << (vector - CYGNUM_HAL_INTERNAL_IRQS - 32));
        } else if (vector >= CYGNUM_HAL_INTERRUPT_GPIO(2)) {
            *PXA2X0_GEDR0  = (1 << (vector - CYGNUM_HAL_INTERNAL_IRQS));
        } else {
            // Not a GPIO interrupt
            return;
        }
    }
}