signal: fix handling of fpu and some more small things

This commit is contained in:
Matheus
2025-02-08 20:16:15 -03:00
parent c34021e4d6
commit d119d7123b
2 changed files with 8 additions and 10 deletions
+4 -2
View File
@@ -569,12 +569,14 @@ bool signal_check(struct thread_t *thread, context_t *context, bool syscall, uin
memcpy(&sigframe.context, context, sizeof(context_t));
memcpy(&sigframe.extracontext, &thread->extracontext, sizeof(extracontext_t));
arch_sigframe_prepare_mcontext(&sigframe);
arch_sigframe_prepare_mcontext(stack, &sigframe);
memset(&sigframe.siginfo, 0, sizeof(siginfo_t));
if (signal == SIGSEGV)
sigframe.siginfo.__si_fields.__sigfault.si_addr = CTX_TRAP_ADDR(context);
if (usercopy_touser(stack, &sigframe, sizeof(sigframe_t))) {
printf("signal: bad user stack %p\n", stack);
printf("signal: bad user stack %p (altstack %p) handling signal %d trapno %lu\n", stack, altstack, signal, sigframe.mcontext.gregs[MCONTEXT_REG_TRAPNO]);
THREAD_LEAVE(thread);
PROCESS_LEAVE(proc);
interrupt_set(true);