<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:
@@ -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)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user