diff --git a/arch/x86/scc/icc.c b/arch/x86/scc/icc.c index 2e37777d..2b12fb07 100644 --- a/arch/x86/scc/icc.c +++ b/arch/x86/scc/icc.c @@ -172,7 +172,7 @@ int icc_init(void) return 0; } -static inline int icc_send_irq(int ue) +inline int icc_send_irq(int ue) { int tmp, x, y, z, addr; diff --git a/drivers/net/mmnif.c b/drivers/net/mmnif.c index ccb9bf3f..b29f4812 100644 --- a/drivers/net/mmnif.c +++ b/drivers/net/mmnif.c @@ -413,6 +413,7 @@ __inline int mmnif_trigger_irq(dest_ip) #ifdef WIN32 return PulseEvent(remote_process_event); #else +#if 0 /* NOTE: have to check how the remote interrupt managment works * on the SCC */ @@ -442,7 +443,26 @@ __inline int mmnif_trigger_irq(dest_ip) value &= (~(RCK_INTR_MASK|RCK_NMI_MASK)); SetConfigReg((void*)irq_address,value); } +#endif + int tmp, x, y, z, addr; + + int ue = dest_ip -1; + + z = Z_PID(RC_COREID[ue]); + x = X_PID(RC_COREID[ue]); + y = Y_PID(RC_COREID[ue]); + addr = CRB_ADDR(x,y) + (z==0 ? GLCFG0 : GLCFG1); + + // send interrupt to ue + do { + NOP1; + tmp=ReadConfigReg(addr); + } while(tmp & 2); + tmp |= 2; + SetConfigReg(addr, tmp); + + return 0; #endif };