. 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
* 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. */
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}