Ignore:
Timestamp:
Aug 11, 2010, 11:40:32 AM (9 years ago)
Author:
gb
Message:

Lots more changes, most of which have to do with Mach exception handling
on ARM.

File:
1 edited

Legend:

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

    r14119 r14169  
    20182018  pseudosigcontext = (ExceptionInformation *) ptr_from_lispobj(stackp);
    20192019
     2020  stackp -= sizeof(*mc);
    20202021  mc = (_STRUCT_MCONTEXT *) ptr_from_lispobj(stackp);
    20212022  memmove(&(mc->__ss),&ts,sizeof(ts));
     
    20942095  ts.__r[3] = (natural)old_valence;
    20952096  ts.__lr = (natural)pseudo_sigreturn;
     2097  ts.__cpsr = xpPSR(pseudosigcontext);
    20962098
    20972099
     
    21472149                      mach_msg_type_number_t code_count)
    21482150{
    2149   int signum = 0, code = *code_vector, code1;
     2151  int signum = 0, code = *code_vector;
    21502152  TCR *tcr = TCR_FROM_EXCEPTION_PORT(exception_port);
    21512153  kern_return_t kret;
     
    21582160    CLR_TCR_FLAG(tcr,TCR_FLAG_BIT_PENDING_EXCEPTION);
    21592161  }
     2162  /* On the ARM, code_vector[1] contains the undefined instruction
     2163     in this case, not its address.  */
    21602164  if ((exception == EXC_BAD_INSTRUCTION) &&
    21612165      (code_vector[0] == EXC_ARM_UNDEFINED) &&
    2162       (((code1 = code_vector[1]) == (int)pseudo_sigreturn))) {
     2166      (code_vector[1] == PSEUDO_SIGRETURN_UUO)) {
    21632167    kret = do_pseudo_sigreturn(thread, tcr);
    21642168  } else if (tcr->flags & (1<<TCR_FLAG_BIT_PROPAGATE_EXCEPTION)) {
Note: See TracChangeset for help on using the changeset viewer.