1.0.3.21: suseconds_t -> long on win32
[sbcl.git] / src / runtime / ppc-arch.c
index 6554971..ac6b3d9 100644 (file)
@@ -27,6 +27,7 @@
 
      Caveat callers.  */
 
+#if defined (LISP_FEATURE_DARWIN) || defined(LISP_FEATURE_LINUX)
 #ifndef PT_DAR
 #define PT_DAR          41
 #endif
@@ -34,6 +35,7 @@
 #ifndef PT_DSISR
 #define PT_DSISR        42
 #endif
+#endif
 
 void arch_init() {
 }
@@ -44,7 +46,11 @@ arch_get_bad_addr(int sig, siginfo_t *code, os_context_t *context)
     unsigned long pc =  (unsigned long)(*os_context_pc_addr(context));
     os_vm_address_t addr;
 
+#if defined(LISP_FEATURE_NETBSD)
+    addr = (os_vm_address_t) (code->si_addr);
+#else
     addr = (os_vm_address_t) (*os_context_register_addr(context,PT_DAR));
+#endif
     return addr;
 }
 
@@ -432,6 +438,16 @@ sigtrap_handler(int signal, siginfo_t *siginfo, os_context_t *context)
                             sizeof(unsigned int));
             break;
 
+        case trap_SingleStepAround:
+        case trap_SingleStepBefore:
+            {
+                int register_offset = code >> 5 & 0x1f;
+
+                handle_single_step_trap(context, trap, register_offset);
+
+                arch_skip_instruction(context);
+                break;
+            }
         default:
             interrupt_handle_now(signal, code, context);
             break;