Page MenuHomeFreeBSD

D33690.id100966.diff
No OneTemporary

D33690.id100966.diff

Index: sys/arm64/arm64/exec_machdep.c
===================================================================
--- sys/arm64/arm64/exec_machdep.c
+++ sys/arm64/arm64/exec_machdep.c
@@ -596,10 +596,9 @@
tf->tf_x[0] = sig;
tf->tf_x[1] = (register_t)&fp->sf_si;
tf->tf_x[2] = (register_t)&fp->sf_uc;
-
- tf->tf_elr = (register_t)catcher;
+ tf->tf_x[8] = (register_t)catcher;
tf->tf_sp = (register_t)fp;
- tf->tf_lr = (register_t)p->p_sysent->sv_sigcode_base;
+ tf->tf_elr = (register_t)p->p_sysent->sv_sigcode_base;
CTR3(KTR_SIG, "sendsig: return td=%p pc=%#x sp=%#x", td, tf->tf_elr,
tf->tf_sp);
Index: sys/arm64/arm64/sigtramp.S
===================================================================
--- sys/arm64/arm64/sigtramp.S
+++ sys/arm64/arm64/sigtramp.S
@@ -31,6 +31,7 @@
#include <machine/asm.h>
ENTRY(sigcode)
+ blr x8
mov x0, sp
add x0, x0, #SF_UC

File Metadata

Mime Type
text/plain
Expires
Mon, Sep 7, 3:36 PM (9 h, 12 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
38474125
Default Alt Text
D33690.id100966.diff (878 B)

Event Timeline