Changeset 11793


Ignore:
Timestamp:
Feb 26, 2009, 2:22:13 AM (10 years ago)
Author:
gb
Message:

In pc_luser_xp(): if we're interrupted in set_hash_key_conditional:

  • if we aren't at set_hash_key_conditional_retry yet, do nothing (x8632 modifying arg in temp0).
  • if we're past set_hash_key_conditional and not at set_hash_key_conditional success test (or at the success test with the Z flag clear), resume at set_hash_key_conditiona_retry (don't repeat the modification of temp0 on x8632.)
File:
1 edited

Legend:

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

    r11754 r11793  
    22612261extern opcode egc_write_barrier_start, egc_write_barrier_end,
    22622262  egc_set_hash_key_conditional, egc_set_hash_key_conditional_success_test,
     2263  egc_set_hash_key_conditional_retry,
    22632264  egc_store_node_conditional_success_end,
    22642265  egc_store_node_conditional_success_test,egc_store_node_conditional,
     
    25462547
    25472548    if (program_counter >= &egc_set_hash_key_conditional) {
     2549      if (program_counter <= &egc_set_hash_key_conditional_retry) {
     2550        return;
     2551      }
    25482552      if ((program_counter < &egc_set_hash_key_conditional_success_test) ||
    25492553          ((program_counter == &egc_set_hash_key_conditional_success_test) &&
    25502554           !(eflags_register(xp) & (1 << X86_ZERO_FLAG_BIT)))) {
    25512555        /* Back up the PC, try again */
    2552         xpPC(xp) = (LispObj) &egc_set_hash_key_conditional;
     2556        xpPC(xp) = (LispObj) &egc_set_hash_key_conditional_retry;
    25532557        return;
    25542558      }
Note: See TracChangeset for help on using the changeset viewer.