Changeset 9555


Ignore:
Timestamp:
May 20, 2008, 9:03:07 AM (11 years ago)
Author:
gb
Message:

Share most of the interrupt_handler() code between Win64 and other
platforms. (Need to test the case where we return from the interrupt.)

File:
1 edited

Legend:

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

    r9327 r9555  
    13071307
    13081308#ifdef WINDOWS
    1309 void
    1310 interrupt_handler (int signum, siginfo_t *info, ExceptionInformation *context)
    1311 {
    1312 }
    1313 #else
     1309extern LONG restore_win64_context(ExceptionInformation *, TCR *, int;);
     1310#endif
     1311
    13141312void
    13151313interrupt_handler (int signum, siginfo_t *info, ExceptionInformation *context)
     
    13191317#endif
    13201318  TCR *tcr = get_interrupt_tcr(false);
     1319  int old_valence = tcr->valence;
     1320
    13211321  if (tcr) {
    13221322    if ((TCR_INTERRUPT_LEVEL(tcr) < 0) ||
     
    13361336
    13371337        xframe_list xframe_link;
    1338         int old_valence;
    13391338        signed_natural alloc_displacement = 0;
    13401339        LispObj
     
    13711370        tcr->flags |= old_foreign_exception;
    13721371        unlock_exception_lock_in_handler(tcr);
     1372#ifndef WINDOWS
    13731373        exit_signal_handler(tcr, old_valence);
     1374#endif
    13741375      }
    13751376    }
     
    13801381  }
    13811382#endif
     1383#ifdef WINDOWS
     1384  restore_win64_context(context,tcr,old_valence);
     1385#else
    13821386  SIGRETURN(context);
    1383 }
    1384 #endif
     1387#endif
     1388}
     1389
    13851390
    13861391#ifndef WINDOWS
     
    15061511}
    15071512
    1508 extern LONG restore_win64_context(ExceptionInformation *, TCR *, int;);
    15091513
    15101514LONG
Note: See TracChangeset for help on using the changeset viewer.