Execute-only for macppc G5
authorgkoehler <gkoehler@openbsd.org>
Tue, 31 Jan 2023 01:27:58 +0000 (01:27 +0000)
committergkoehler <gkoehler@openbsd.org>
Tue, 31 Jan 2023 01:27:58 +0000 (01:27 +0000)
commit9bd4dd0f969eee33c21106fbb4e2e73cb9ab1369
tree1c3f4e1cde173cb30b864c25533bcc8a6450c9c8
parent71410e9b97ab8e9c8903f9a8250fb18633268e9f
Execute-only for macppc G5

The G5 PowerPC 970 has a Data Address Compare mechanism that can trap
loads and stores to pages with PTE_AC_64, while allowing instruction
fetches.  Use this for execute-only mappings, like we do on powerpc64.

Add a check to pte_spill_v for execute-only mappings.  Without this,
we would forever retry reading an execute-only page.

In altivec_assist, copyin would fail to read the instruction from an
execute-only page.  Add copyinsn to bypass x-only, like sparc64.

with help from abieber@ deraadt@ kettenis@
ok deraadt@
sys/arch/powerpc/include/pmap.h
sys/arch/powerpc/include/pte.h
sys/arch/powerpc/powerpc/pmap.c
sys/arch/powerpc/powerpc/trap.c