<machine/signal.h>

. use netbsd sigframe, sigcontext struct
	. netbsd sigframe *contains* sigcontext; use that directly
	  in kernel sigsend
	. drop two fields from minix x86 stackframe.h (process context)
	  that were unused, retadr and st

use in-sigframe sigcontext

Change-Id: Ib59d699596dc3a78163dee59f19730482fdddf11
This commit is contained in:
Ben Gras
2013-12-11 00:47:22 +01:00
committed by Lionel Sambuc
parent 66a4f9a240
commit 7597f4a8fc
22 changed files with 411 additions and 145 deletions

View File

@@ -9,6 +9,7 @@
#include <assert.h>
#include <signal.h>
#include <machine/vm.h>
#include <machine/signal.h>
#include <arm/armreg.h>
#include <minix/u64.h>
@@ -55,7 +56,9 @@ void arch_proc_setcontext(struct proc *p, struct stackframe_s *state,
int isuser, int trapstyle)
{
assert(sizeof(p->p_reg) == sizeof(*state));
memcpy(&p->p_reg, state, sizeof(*state));
if(state != &p->p_reg) {
memcpy(&p->p_reg, state, sizeof(*state));
}
/* further code is instructed to not touch the context
* any more
@@ -167,7 +170,7 @@ struct proc * arch_finish_switch_to_user(void)
return p;
}
void fpu_sigcontext(struct proc *pr, struct sigframe *fr, struct sigcontext *sc)
void fpu_sigcontext(struct proc *pr, struct sigframe_sigcontext *fr, struct sigcontext *sc)
{
}

View File

@@ -538,7 +538,9 @@ void arch_proc_setcontext(struct proc *p, struct stackframe_s *state,
/* someone wants to totally re-initialize process state */
assert(sizeof(p->p_reg) == sizeof(*state));
memcpy(&p->p_reg, state, sizeof(*state));
if(state != &p->p_reg) {
memcpy(&p->p_reg, state, sizeof(*state));
}
/* further code is instructed to not touch the context
* any more
@@ -614,7 +616,7 @@ void restore_user_context(struct proc *p)
NOT_REACHABLE;
}
void fpu_sigcontext(struct proc *pr, struct sigframe *fr, struct sigcontext *sc)
void fpu_sigcontext(struct proc *pr, struct sigframe_sigcontext *fr, struct sigcontext *sc)
{
int fp_error;

View File

@@ -5,12 +5,10 @@ struct proc
member DIREG p_reg.di
member SIREG p_reg.si
member BPREG p_reg.fp
member STREG p_reg.st
member BXREG p_reg.bx
member DXREG p_reg.dx
member CXREG p_reg.cx
member AXREG p_reg.retreg
member RETADR p_reg.retadr
member PCREG p_reg.pc
member CSREG p_reg.cs
member PSWREG p_reg.psw

View File

@@ -35,8 +35,7 @@
movl (8 + displ)(%esp), tmp ;\
movl tmp, PSWREG(pptr) ;\
movl (12 + displ)(%esp), tmp ;\
movl tmp, SPREG(pptr) ;\
movl tmp, STREG(pptr)
movl tmp, SPREG(pptr)
/*
* restore kernel segments. %cs is already set and %fs, %gs are not used */