Implement splassert(9) for powerpc.
authormpi <mpi@openbsd.org>
Sun, 4 Jan 2015 13:01:42 +0000 (13:01 +0000)
committermpi <mpi@openbsd.org>
Sun, 4 Jan 2015 13:01:42 +0000 (13:01 +0000)
commit1c471f421f412895a8ccf0461fc716494b91bf1d
tree04a13b5d6c71c2cbb74d06dbf54660020c201768
parent97aa12f8cca67a7637e4e3fcda6fa2fd9df43c08
Implement splassert(9) for powerpc.

This changes the logic to prevent a recursion when processing soft
interrupts.  Previously a per-CPU flag was set before re-enabling
interrupts.  Now the IPL level is raised to SOFTTTY which makes
splsoftassert() happy, greatly inspired by mips64.

As a side effect, the ppc_intr_{disable,enable}() dance is now done
only once instead of twice per splx(9).

While here, make use of dosoftint() instead of having 3 different
functions for dispatching soft interrupts.

Tested by deraadt@ on G4 smp and by myself G5 smp, G3, G4 and socppc.

No objection from the usual (and over busy) suspects.
sys/arch/macppc/dev/macintr.c
sys/arch/macppc/dev/openpic.c
sys/arch/powerpc/include/cpu.h
sys/arch/powerpc/include/intr.h
sys/arch/powerpc/powerpc/intr.c
sys/arch/powerpc/powerpc/softintr.c
sys/arch/socppc/dev/ipic.c
sys/arch/socppc/socppc/machdep.c