OpenBSD/sgi on octane2 - ipendingをcurcpu()->ci_ipendingへ移動
こんなんでどうでっしゃろ。
あーもう説明かくの面倒い。
Index: mips64/exception.S =================================================================== RCS file: /cvs/src/sys/arch/mips64/mips64/exception.S,v retrieving revision 1.16 diff -r1.16 exception.S 609,610c623,625 < sw zero, cpl # lower to spl0 < lw t0, ipending --- > GET_CPU_INFO(t0, t1) > sw zero, CI_CPL(t0) # lower to spl0 > lw t0, CI_IPENDING(t0)
Index: mips64/interrupt.c =================================================================== RCS file: /cvs/src/sys/arch/mips64/mips64/interrupt.c,v retrieving revision 1.35 diff -r1.35 interrupt.c 1c1 < /* $OpenBSD: interrupt.c,v 1.35 2009/04/25 20:35:06 miod Exp $ */ --- > /* $OpenBSD: interrupt.c,v 1.34 2009/03/20 18:41:06 miod Exp $ */ 62,63c62 < volatile intrmask_t cpl; < volatile intrmask_t ipending, astpending; --- > volatile intrmask_t astpending; 192c192 < if ((ipending & SINT_ALLMASK) & ~xcpl) { --- > if ((ci->ci_ipending & SINT_ALLMASK) & ~xcpl) { 302c303,327 < #endif --- > > void > splx(int newcpl) > { > struct cpu_info *ci = curcpu(); > if (ci->ci_ipending & ~newcpl) > (*pending_hand)(newcpl); > else > ci->ci_cpl = newcpl; > } > > int > spllower(int newcpl) > { > struct cpu_info *ci = curcpu(); > int oldcpl; > > oldcpl = ci->ci_cpl; > if (ci->ci_ipending & ~newcpl) > (*pending_hand)(newcpl); > else > ci->ci_cpl = newcpl; > return (oldcpl); > } > Index: mips64/softintr.c =================================================================== RCS file: /cvs/src/sys/arch/mips64/mips64/softintr.c,v retrieving revision 1.1 diff -r1.1 softintr.c 177c177 < atomic_setbits_int(&ipending, SINTMASK(siq->siq_si)); --- > atomic_setbits_int(&curcpu()->ci_ipending, SINTMASK(siq->siq_si)); 206,207c206,207 < while ((sir = (ipending & SINT_ALLMASK & ~xcpl)) != 0) { < atomic_clearbits_int(&ipending, sir); --- > while ((sir = (curcpu()->ci_ipending & SINT_ALLMASK & ~xcpl)) != 0) { > atomic_clearbits_int(&curcpu()->ci_ipending, sir); Index: xheart.c =================================================================== RCS file: /cvs/src/sys/arch/sgi/xbow/xheart.c,v retrieving revision 1.7 diff -r1.7 xheart.c 405c406 < if (ipending & SINT_ALLMASK & ~newcpl) --- > if (ci->ci_ipending & SINT_ALLMASK & ~newcpl) 437c439 < atomic_setbits_int(&ipending, mask); --- > atomic_setbits_int(&ci->ci_ipending, mask); 445c447 < atomic_clearbits_int(&ipending, isr); --- > atomic_clearbits_int(&ci->ci_ipending, isr);