Changeset 12985


Ignore:
Timestamp:
Oct 10, 2009, 4:56:12 AM (10 years ago)
Author:
rme
Message:

Push the watched object onto the lisp stack before creating the xcf. The
error callback will look for it there.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/watchpoints/lisp-kernel/x86-exceptions.c

    r12908 r12985  
    301301}
    302302
    303  
    304 
    305 
    306 
    307303void
    308304push_on_lisp_stack(ExceptionInformation *xp, LispObj value)
     
    312308  xpGPR(xp,Isp) = (LispObj)vsp;
    313309}
    314 
    315310
    316311/* Hard to know if or whether this is necessary in general.  For now,
     
    842837          LispObj save_vsp = xpGPR(xp, Isp);
    843838          LispObj save_fp = xpGPR(xp, Ifp);
    844           LispObj xcf = create_exception_callback_frame(xp, tcr);
     839          LispObj xcf;
     840          natural offset = (LispObj)addr - obj;
    845841          int skip;
    846842
    847           /* 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);
     843          push_on_lisp_stack(xp, obj);
     844          xcf = create_exception_callback_frame(xp, tcr);
     845
     846          /* The magic 2 means this was a write to a watched object */
     847          skip = callback_to_lisp(tcr, cmain, xp, xcf, SIGSEGV, 2, (natural) addr, offset);
    849848          xpPC(xp) += skip;
    850849          xpGPR(xp, Ifp) = save_fp;
Note: See TracChangeset for help on using the changeset viewer.