Changeset 13002


Ignore:
Timestamp:
Oct 13, 2009, 12:02:23 AM (10 years ago)
Author:
rme
Message:

In handle_fault(), pass the watched object on the lisp stack
underneath the xcf rather than as an (integer) callback parameter.
Compute and pass an offset to the written address (reckoned from the
tagged object pointer).

File:
1 edited

Legend:

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

    r12888 r13002  
    842842          LispObj save_vsp = xpGPR(xp, Isp);
    843843          LispObj save_fp = xpGPR(xp, Ifp);
    844           LispObj xcf = create_exception_callback_frame(xp, tcr);
     844          LispObj xcf;
     845          natural offset = (LispObj)addr - obj;
    845846          int skip;
    846847
     848          push_on_lisp_stack(xp, obj);
     849          xcf = create_exception_callback_frame(xp, tcr);
     850
    847851          /* The magic 2 means this was a write to a watchd object */
    848           skip = callback_to_lisp(tcr, cmain, xp, xcf, SIGSEGV, 2, (natural) addr, obj);
     852          skip = callback_to_lisp(tcr, cmain, xp, xcf, SIGSEGV, 2,
     853                                  (natural)addr, offset);
    849854          xpPC(xp) += skip;
    850855          xpGPR(xp, Ifp) = save_fp;
Note: See TracChangeset for help on using the changeset viewer.