-}
-
-void sigtrap_wrapper(void)
-{
- /*
- * This is the wrapper around the sigtrap handler called from
- * the trampoline returned to from the function above.
- *
- * There actually is a point to some of the commented-out code
- * in this function, although it really belongs to the callback
- * wrappers. Once it is installed there, it can probably be
- * removed from here.
- */
-
- extern void sigtrap_handler(int signal, siginfo_t *info, void *context);
-
-/* volatile struct { */
-/* void *handler[2]; */
- CONTEXT context;
-/* } handler; */
-
- struct lisp_exception_frame *frame = find_our_seh_frame();
-
-/* wos_install_interrupt_handlers(handler); */
-/* handler.handler[0] = get_seh_frame(); */
-/* handler.handler[1] = &handle_exception; */
-/* set_seh_frame(&handler); */
-
- memcpy(&context, &frame->context, sizeof(CONTEXT));
- sigtrap_handler(0, NULL, &context);
- memcpy(&frame->context, &context, sizeof(CONTEXT));
-
-/* set_seh_frame(handler.handler[0]); */
-}
-
-EXCEPTION_DISPOSITION handle_exception(EXCEPTION_RECORD *exception_record,
- struct lisp_exception_frame *exception_frame,
- CONTEXT *context,
- void *dc) /* FIXME: What's dc again? */
-{
-
- /* For EXCEPTION_ACCESS_VIOLATION only. */
- void *fault_address = (void *)exception_record->ExceptionInformation[1];
-
- if (exception_record->ExceptionCode == EXCEPTION_BREAKPOINT) {
- /* Pick off sigtrap case first. */
- return sigtrap_emulator(context, exception_frame);
-
- } else if (exception_record->ExceptionCode == EXCEPTION_ACCESS_VIOLATION &&
- (is_valid_lisp_addr(fault_address) ||
- /* the linkage table does not contain valid lisp
- * objects, but is also committed on-demand here
- */
- in_range_p(fault_address, LINKAGE_TABLE_SPACE_START,
- LINKAGE_TABLE_SPACE_END))) {