Raymond Toy pushed to branch issue-97-define-ud2-inst at cmucl / cmucl
Commits: 5ceb821e by Raymond Toy at 2021-05-21T20:14:22-07:00 Update comments.
Move the function comment for arch_skip_instruction to arch.h, and correct an old comment.
- - - - -
2 changed files:
- src/lisp/arch.h - src/lisp/x86-arch.c
Changes:
===================================== src/lisp/arch.h ===================================== @@ -13,7 +13,14 @@
extern char *arch_init(fpu_mode_t);
+/* + * Skip over the trap instructions for an error trap and also skip + * over anly following bytes used to encode information for an + * error-trap or cerror-trap. The PC in the context is set to address + * just past the trap instruction and data bytes (if any). + */ extern void arch_skip_instruction(os_context_t * scp); + 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);
===================================== src/lisp/x86-arch.c ===================================== @@ -141,12 +141,9 @@ arch_init(fpu_mode_t mode)
/* - * Assuming we get here via an INT3 xxx instruction, the PC now - * points to the interrupt code (lisp value) so we just move past - * it. Skip the code, then if the code is an error-trap or - * Cerror-trap then skip the data bytes that follow. + * Skip the UD1 instruction, and any data bytes associated with the + * trap. */ - void arch_skip_instruction(os_context_t * context) { @@ -155,7 +152,7 @@ arch_skip_instruction(os_context_t * context) DPRINTF(debug_handlers, (stderr, "[arch_skip_inst at %lx>]\n", SC_PC(context)));
- /* Get and skip the lisp error code. */ + /* Get the address of the beginning of the UD1 instruction */ char* pc = (char *) SC_PC(context);
/*
View it on GitLab: https://gitlab.common-lisp.net/cmucl/cmucl/-/commit/5ceb821e0427a3703f45b990...