Implement execute-only mappings by using the Virtual Page Class Key
authorkettenis <kettenis@openbsd.org>
Wed, 25 Jan 2023 09:53:53 +0000 (09:53 +0000)
committerkettenis <kettenis@openbsd.org>
Wed, 25 Jan 2023 09:53:53 +0000 (09:53 +0000)
commit6bd9427e6879f79e0e2c1e03d8411439da5bb692
tree825ace9f7277f4b8f71ad06a0d0b198fe8102501
parent6231c12217cf0adf30fe1793c44574edb2e82c29
Implement execute-only mappings by using the Virtual Page Class Key
Protection mechanism provided by modern POWER CPUs.  This is implemented
in a way data allows us to use the Data Address Compare mechanism that
was available on older versions of the architecture if we ever add support
for these older CPUs (e.g. the PowerPC 970 aka G5).

Special thanks to gkoehler@ for spotting the bug in my initial
implementation that made this not work at all.

ok deraadt@, gkoehler@
sys/arch/powerpc64/include/cpufunc.h
sys/arch/powerpc64/include/pte.h
sys/arch/powerpc64/powerpc64/cpu.c
sys/arch/powerpc64/powerpc64/pmap.c