projects
/
sbcl.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
1.0.3.21: suseconds_t -> long on win32
[sbcl.git]
/
src
/
runtime
/
ppc-arch.c
diff --git
a/src/runtime/ppc-arch.c
b/src/runtime/ppc-arch.c
index
6554971
..
ac6b3d9
100644
(file)
--- a/
src/runtime/ppc-arch.c
+++ b/
src/runtime/ppc-arch.c
@@
-27,6
+27,7
@@
Caveat callers. */
Caveat callers. */
+#if defined (LISP_FEATURE_DARWIN) || defined(LISP_FEATURE_LINUX)
#ifndef PT_DAR
#define PT_DAR 41
#endif
#ifndef PT_DAR
#define PT_DAR 41
#endif
@@
-34,6
+35,7
@@
#ifndef PT_DSISR
#define PT_DSISR 42
#endif
#ifndef PT_DSISR
#define PT_DSISR 42
#endif
+#endif
void arch_init() {
}
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;
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));
addr = (os_vm_address_t) (*os_context_register_addr(context,PT_DAR));
+#endif
return addr;
}
return addr;
}
@@
-432,6
+438,16
@@
sigtrap_handler(int signal, siginfo_t *siginfo, os_context_t *context)
sizeof(unsigned int));
break;
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;
default:
interrupt_handle_now(signal, code, context);
break;