Changeset 16341


Ignore:
Timestamp:
Jan 10, 2015, 11:35:24 PM (5 years ago)
Author:
gb
Message:

pc_luser_xp(): if we interrupt a conditional store, detect its success/failure correctly.

_SPeabi_ff_call_simple: store the vsp in tcr.save_vsp when exiting lisp. This seems to fix ticket:1257 in the trunk.

Location:
trunk/source/lisp-kernel
Files:
2 edited

Legend:

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

    r16066 r16341  
    744744                signed_natural param)
    745745{
     746
    746747  TCR *tcr = get_tcr(true), *other_tcr;
    747748  int result;
     
    16351636      if ((program_counter < &egc_set_hash_key_conditional_test) ||
    16361637          ((program_counter == &egc_set_hash_key_conditional_test) &&
    1637            (! (xpPSR(xp) & PSR_Z_MASK)))) {
     1638           (xpGPR(xp,imm0) != 0))) {
    16381639        return;
    16391640      }
     
    16441645      if ((program_counter < &egc_store_node_conditional_test) ||
    16451646          ((program_counter == &egc_store_node_conditional_test) &&
    1646            (! (xpPSR(xp) & PSR_Z_MASK)))) {
     1647           (xpGPR(xp,imm0) != 0))) {
    16471648        /* The conditional store either hasn't been attempted yet, or
    16481649           has failed.  No need to adjust the PC, or do memoization. */
     
    17931794           VOID_ALLOCPTR */
    17941795        xpGPR(xp,allocptr) = VOID_ALLOCPTR;
    1795         tcr->save_allocptr = tcr->save_allocbase = VOID_ALLOCPTR;
     1796        tcr->save_allocptr = tcr->save_allocbase = (LispObj *)VOID_ALLOCPTR;
    17961797      }
    17971798      return;
  • trunk/source/lisp-kernel/arm-spentry.s

    r16314 r16341  
    31683168        __(ldr arg_y,[rcontext,#tcr.last_lisp_frame])
    31693169        __(str sp,[rcontext,#tcr.last_lisp_frame])
     3170        __(str vsp,[rcontext,#tcr.save_vsp])
    31703171        __(mov arg_x,rcontext)  /* preserved by C */
    31713172        __(test_fixnum(arg_z))
Note: See TracChangeset for help on using the changeset viewer.