Changeset View
Changeset View
Standalone View
Standalone View
sys/amd64/amd64/sigtramp.S
Show All 32 Lines | |||||
#include "assym.inc" | #include "assym.inc" | ||||
.text | .text | ||||
/********************************************************************** | /********************************************************************** | ||||
* | * | ||||
* Signal trampoline, copied to top of user stack | * Signal trampoline, copied to top of user stack | ||||
* | * | ||||
*/ | */ | ||||
NON_GPROF_ENTRY(sigcode) | ENTRY(sigcode) | ||||
call *SIGF_HANDLER(%rsp) /* call signal handler */ | call *SIGF_HANDLER(%rsp) /* call signal handler */ | ||||
lea SIGF_UC(%rsp),%rdi /* get ucontext_t */ | lea SIGF_UC(%rsp),%rdi /* get ucontext_t */ | ||||
pushq $0 /* junk to fake return addr. */ | pushq $0 /* junk to fake return addr. */ | ||||
movq $SYS_sigreturn,%rax | movq $SYS_sigreturn,%rax | ||||
syscall /* enter kernel with args */ | syscall /* enter kernel with args */ | ||||
0: hlt /* trap priviliged instruction */ | 0: hlt /* trap priviliged instruction */ | ||||
jmp 0b | jmp 0b | ||||
ALIGN_TEXT | ALIGN_TEXT | ||||
esigcode: | esigcode: | ||||
.data | .data | ||||
.globl szsigcode | .globl szsigcode | ||||
szsigcode: | szsigcode: | ||||
.long esigcode-sigcode | .long esigcode-sigcode |