Put PG_EXEC and PG_FOE into the PG_PROT mask, and make sure the default
authormiod <miod@openbsd.org>
Mon, 6 Jan 2014 20:27:44 +0000 (20:27 +0000)
committermiod <miod@openbsd.org>
Mon, 6 Jan 2014 20:27:44 +0000 (20:27 +0000)
commit438fd3242db8643873824e560e5ad940ff04d4ad
treec4564cf18869641d0bdd96f13409a8ebecc2a062
parentcaf5976e70231e43d4268463049fbf424324b6a0
Put PG_EXEC and PG_FOE into the PG_PROT mask, and make sure the default
pte protection masks, as initialized in alpha_protection_init(), set PG_FOE
by default when VM_PROT_EXECUTE is not set.

Also, change pmap_emulate_reference() to only clear PG_FOE if the affected
pte has executable permission.

This allows various pmap_pte_exec() checks (added to explicitely set PG_FOE)
to be removed.

All tests of regress/sys/kern/noexec now reliably pass on EV5. EV6 systems
still see spurious (but no longer 100% reproduceable) failures of the `catch
a signal' tests, which is likely caused by the effect of mprotect() removing
execute permission not taking effect correctly, despite PAL IMB being issued
(and no, this is not caused by the previous pmap_changebit() change), to be
investigated.
sys/arch/alpha/alpha/pmap.c
sys/arch/alpha/alpha/trap.c
sys/arch/alpha/include/pte.h