kernel, libc: signals fixes
. kernel: signal handler args for ARM . kernel: sanity check return address (LSB indicates thumb mode) . libc: properly retrieve signal mask for ARM together fix test37 on ARM. Change-Id: I4e00f754c50104ed85c7fdf8ec5ad54568f20a81
This commit is contained in:
parent
ccdc3ff73f
commit
57bab02d57
@ -86,6 +86,12 @@ int do_sigsend(struct proc * caller, message * m_ptr)
|
||||
* handler
|
||||
*/
|
||||
rp->p_reg.lr = (reg_t) fr.sf_retadr;
|
||||
if(rp->p_reg.lr & 1) { printf("sigsend: LSB LR makes no sense.\n"); }
|
||||
|
||||
/* pass signal handler parameters in registers */
|
||||
rp->p_reg.retreg = (reg_t) fr.sf_signo;
|
||||
rp->p_reg.r1 = (reg_t) fr.sf_code;
|
||||
rp->p_reg.r2 = (reg_t) fr.sf_scp;
|
||||
#endif
|
||||
|
||||
/* Copy the sigframe structure to the user's stack. */
|
||||
|
@ -87,7 +87,11 @@ ENTRY(__longjmp14)
|
||||
stmfd sp!, {r0-r2, r14}
|
||||
mov r2, #0x00000000
|
||||
add r1, r0, #(_JB_SIGMASK * 4)
|
||||
#ifdef __minix
|
||||
mov r0, #2 /* SIG_SETMASK */
|
||||
#else
|
||||
mov r0, #3 /* SIG_SETMASK */
|
||||
#endif
|
||||
bl PIC_SYM(_C_LABEL(__sigprocmask14), PLT)
|
||||
ldmfd sp!, {r0-r2, r14}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user