diff options
author | Dale Rahn <drahn@cvs.openbsd.org> | 2002-07-24 02:19:29 +0000 |
---|---|---|
committer | Dale Rahn <drahn@cvs.openbsd.org> | 2002-07-24 02:19:29 +0000 |
commit | c7e7f672d73e4b0521e4932a18643e549b55316c (patch) | |
tree | ca0f87399b88b1ce0a18a98cf0a95c0ecdfe443e /sys/arch/macppc | |
parent | 71762e55310fdb5bd048869aad2685129ba33e81 (diff) |
- change pte_spill_X() to take an extra parameter to determine if
the fault is a EXE fault or R/W fault.
- mask/or the SR_NOEXEC bit into the segment register value
when the number of executable pages becomes 0/non-zero.
- create segments with SR_NOEXEC set, will be cleared when first
exec mapping in the segment is created.
- allow pte_spill_X() to deal with a new type of fault, page mapped
but non executable, when execute was requested.
Adds up to - non-exec stack support for powerpc.
Diffstat (limited to 'sys/arch/macppc')
-rw-r--r-- | sys/arch/macppc/macppc/locore.S | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/sys/arch/macppc/macppc/locore.S b/sys/arch/macppc/macppc/locore.S index 83e92875bae..50433e85933 100644 --- a/sys/arch/macppc/macppc/locore.S +++ b/sys/arch/macppc/macppc/locore.S @@ -1,4 +1,4 @@ -/* $OpenBSD: locore.S,v 1.3 2002/03/21 03:02:32 drahn Exp $ */ +/* $OpenBSD: locore.S,v 1.4 2002/07/24 02:19:28 drahn Exp $ */ /* $NetBSD: locore.S,v 1.2 1996/10/16 19:33:09 ws Exp $ */ /* @@ -981,6 +981,7 @@ s_dsitrap: mfdar 3 mfsrr1 4 mfdsisr 5 + li 6, 0 s_pte_spill: bl _C_LABEL(pte_spill_r) /* try a spill */ cmpwi 0,3,0 @@ -1035,6 +1036,7 @@ s_isitrap: mfsrr0 3 mfsrr1 4 li 5, 0 + li 6, 1 b s_pte_spill /* above */ /* |