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);