Raymond Toy pushed to branch issue-97-define-ud2-inst at cmucl / cmucl
Commits: 064c1aa6 by Raymond Toy at 2021-05-21T16:26:46-07:00 Add comments to interface functions.
- - - - -
1 changed file:
- src/lisp/arch.h
Changes:
===================================== src/lisp/arch.h ===================================== @@ -18,10 +18,27 @@ extern boolean arch_pseudo_atomic_atomic(os_context_t * scp); extern void arch_set_pseudo_atomic_interrupted(os_context_t * scp); extern os_vm_address_t arch_get_bad_addr(HANDLER_ARGS); extern unsigned char *arch_internal_error_arguments(os_context_t * scp); + +/* + * Install an architecture-dependent breakpoint instruction at the + * given PC address. This also returns the bytes that were + * overwritten by the breakpoint instruction so that the original + * instruction can be restored once the breakpoint has been handled. + */ extern unsigned long arch_install_breakpoint(void *pc); + extern void arch_remove_breakpoint(void *pc, unsigned long orig_inst); extern void arch_install_interrupt_handlers(void); + +/* + * This is called when we need to continue after a breakpoint. The + * original instruction in |orig_inst| is put back. Then things are + * set up so that we can run again and after this instruction is run, + * we trap again so that the original breakpoint can be replaced. How + * this is done is architecture-dependent. + */ extern void arch_do_displaced_inst(os_context_t * scp, unsigned long orig_inst); + extern lispobj funcall0(lispobj function); extern lispobj funcall1(lispobj function, lispobj arg0); extern lispobj funcall2(lispobj function, lispobj arg0, lispobj arg1);
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/064c1aa6113867bc574440da...