[Openmcl-cvs-notifications] r14863 - /trunk/source/lisp-kernel/x86-exceptions.c
gb at clozure.com
gb at clozure.com
Tue Jul 5 11:59:04 CDT 2011
Author: gb
Date: Tue Jul 5 11:59:04 2011
New Revision: 14863
Log:
In handle_fault: some OSes (you know who) don't bother to set =
information about the fault address on certain kinds of memory
faults, so we can't compare it to tcr.safe_ref_address. If
tcr.save_ref_address is non-zero when we get a fault, behave
as if we'd accessed that address (how would we know what address
was accessed ?) and return a null pointer to %SAFE-GET-PTR.
Modified:
trunk/source/lisp-kernel/x86-exceptions.c
Modified: trunk/source/lisp-kernel/x86-exceptions.c
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D
--- trunk/source/lisp-kernel/x86-exceptions.c (original)
+++ trunk/source/lisp-kernel/x86-exceptions.c Tue Jul 5 11:59:04 2011
@@ -865,13 +865,14 @@
#endif
Boolean valid =3D IS_PAGE_FAULT(info,xp);
=
+ if (tcr->safe_ref_address !=3D NULL) {
+ xpGPR(xp,Iimm0) =3D 0;
+ xpPC(xp) =3D xpGPR(xp,Ira0);
+ tcr->safe_ref_address =3D NULL;
+ return true;
+ }
+
if (valid) {
- if (addr && (addr =3D=3D tcr->safe_ref_address)) {
- xpGPR(xp,Iimm0) =3D 0;
- xpPC(xp) =3D xpGPR(xp,Ira0);
- return true;
- }
- =
{
protected_area *a =3D find_protected_area(addr);
protection_handler *handler;
More information about the Openmcl-cvs-notifications
mailing list