/* This may be complete rubbish, as (at least for traps) pc points
* _after_ the instruction that caused us to be here anyway.
*/
- ((char*)*os_context_pc_addr(context)) +=4; }
+ char **pcptr;
+ pcptr = (char **) os_context_pc_addr(context);
+ *pcptr += 4;
+}
unsigned char *
arch_internal_error_arguments(os_context_t *context)
(int)handle_fun_end_breakpoint(context);
}
+void
+arch_handle_single_step_trap(os_context_t *context, int trap)
+{
+ unsigned int code = *((u32 *) (*os_context_pc_addr(context)));
+ int register_offset = code >> 5 & 0x1f;
+ handle_single_step_trap(context, trap, register_offset);
+ arch_skip_instruction(context);
+}
+
static void
sigtrap_handler(int signal, siginfo_t *siginfo, os_context_t *context)
{
unsigned int code;
-#ifdef LISP_FEATURE_LINUX
- os_restore_fp_control(context);
-#endif
/* this is different from how CMUCL does it. CMUCL used "call_pal
* PAL_gentrap", which doesn't do anything on Linux (unless NL0