/* ************************************************************************************************************ * * function * * name : * * parmeters : * * return : * * note : * * ************************************************************************************************************ */ static void gic_clear_pending(uint irq_no) { uint reg_val; uint offset; offset = irq_no >> 5; // ³ý32 reg_val = readl(GIC_PEND_CLR(offset)); reg_val |= (1 << (irq_no & 0x1f)); writel(reg_val, GIC_PEND_CLR(offset)); return ; }
/* ************************************************************************************************************ * * function * * 函数名称: * * 参数列表: * * 返回值 : * * 说明 : * * ************************************************************************************************************ */ void standby_gic_clear_pengding(void) { __u32 reg_val; __u32 offset; __u32 idnum; idnum = readl(GIC_INT_ACK_REG); writel(idnum, GIC_END_INT_REG); writel(idnum, GIC_DEACT_INT_REG); offset = idnum >> 5; // 除32 reg_val = readl(GIC_PEND_CLR(offset)); reg_val |= (1 << (idnum & 0x1f)); writel(reg_val, GIC_PEND_CLR(offset)); return ; }
void gic_clear_pending(u32 id) { u32 base; u32 base_os; u32 bit_os; base_os = id >> 5; // ³ý32 base = GIC_PEND_CLR(base_os); bit_os = id & 0x1f; // %32 writel(1<<bit_os, base); }