Changeset 14863


Ignore:
Timestamp:
Jul 5, 2011, 4:59:04 PM (8 years ago)
Author:
gb
Message:

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.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/source/lisp-kernel/x86-exceptions.c

    r14825 r14863  
    866866  Boolean valid = IS_PAGE_FAULT(info,xp);
    867867
     868  if (tcr->safe_ref_address != NULL) {
     869    xpGPR(xp,Iimm0) = 0;
     870    xpPC(xp) = xpGPR(xp,Ira0);
     871    tcr->safe_ref_address = NULL;
     872    return true;
     873  }
     874
    868875  if (valid) {
    869     if (addr && (addr == tcr->safe_ref_address)) {
    870       xpGPR(xp,Iimm0) = 0;
    871       xpPC(xp) = xpGPR(xp,Ira0);
    872       return true;
    873     }
    874    
    875876    {
    876877      protected_area *a = find_protected_area(addr);
Note: See TracChangeset for help on using the changeset viewer.