diff options
author | jhb <jhb@FreeBSD.org> | 2001-06-29 11:10:41 +0000 |
---|---|---|
committer | jhb <jhb@FreeBSD.org> | 2001-06-29 11:10:41 +0000 |
commit | d82893e6762433665a192f6ffe2dad2a1a6c0678 (patch) | |
tree | cb74fd6ffd13686b7602fd19e3756d344a7b64e2 /sys/ia64 | |
parent | 11807e464b0264daf76c2429a84420f80a6605d1 (diff) | |
download | FreeBSD-src-d82893e6762433665a192f6ffe2dad2a1a6c0678.zip FreeBSD-src-d82893e6762433665a192f6ffe2dad2a1a6c0678.tar.gz |
Add a new MI pointer to the process' trapframe p_frame instead of using
various differently named pointers buried under p_md.
Reviewed by: jake (in principle)
Diffstat (limited to 'sys/ia64')
-rw-r--r-- | sys/ia64/ia64/machdep.c | 24 | ||||
-rw-r--r-- | sys/ia64/ia64/trap.c | 8 | ||||
-rw-r--r-- | sys/ia64/ia64/vm_machdep.c | 14 | ||||
-rw-r--r-- | sys/ia64/include/cpu.h | 2 | ||||
-rw-r--r-- | sys/ia64/include/proc.h | 1 |
5 files changed, 23 insertions, 26 deletions
diff --git a/sys/ia64/ia64/machdep.c b/sys/ia64/ia64/machdep.c index 22a23ea..c44e7cd 100644 --- a/sys/ia64/ia64/machdep.c +++ b/sys/ia64/ia64/machdep.c @@ -562,7 +562,7 @@ ia64_init() proc0.p_addr->u_pcb.pcb_sp = (u_int64_t)proc0.p_addr + USPACE - sizeof(struct trapframe) - 16; proc0.p_addr->u_pcb.pcb_bspstore = (u_int64_t) (proc0.p_addr + 1); - proc0.p_md.md_tf = + proc0.p_frame = (struct trapframe *)(proc0.p_addr->u_pcb.pcb_sp + 16); /* Setup curproc so that mutexes work */ @@ -738,7 +738,7 @@ sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code) PROC_LOCK(p); psp = p->p_sigacts; - frame = p->p_md.md_tf; + frame = p->p_frame; oonstack = sigonstack(frame->tf_r[FRAME_SP]); rndfsize = ((sizeof(sf) + 15) / 16) * 16; @@ -924,7 +924,7 @@ sigreturn(struct proc *p, { ucontext_t uc, *ucp; struct pcb *pcb; - struct trapframe *frame = p->p_md.md_tf; + struct trapframe *frame = p->p_frame; struct __mcontext *mcp; ucp = uap->sigcntxp; @@ -1033,7 +1033,7 @@ setregs(struct proc *p, u_long entry, u_long stack, u_long ps_strings) { struct trapframe *frame; - frame = p->p_md.md_tf; + frame = p->p_frame; /* * Make sure that we restore the entire trapframe after an @@ -1092,7 +1092,7 @@ int ptrace_read_u_check(struct proc *p, vm_offset_t addr, size_t len) if ((vm_offset_t) (addr + len) <= sizeof(struct user)) return 0; - gap = (char *) p->p_md.md_tf - (char *) p->p_addr; + gap = (char *) p->p_frame - (char *) p->p_addr; if ((vm_offset_t) addr < gap) return EPERM; @@ -1115,10 +1115,10 @@ ptrace_write_u(struct proc *p, vm_offset_t off, long data) * Privileged kernel state is scattered all over the user area. * Only allow write access to parts of regs and to fpregs. */ - min = (char *)p->p_md.md_tf - (char *)p->p_addr; + min = (char *)p->p_frame - (char *)p->p_addr; if (off >= min && off <= min + sizeof(struct trapframe) - sizeof(int)) { #if 0 - tp = p->p_md.md_tf; + tp = p->p_frame; frame_copy = *tp; *(int *)((char *)&frame_copy + (off - min)) = data; if (!EFLAGS_SECURE(frame_copy.tf_eflags, tp->tf_eflags) || @@ -1281,7 +1281,7 @@ SYSCTL_INT(_machdep, CPU_WALLCLOCK, wall_cmos_clock, void ia64_fpstate_check(struct proc *p) { - if ((p->p_md.md_tf->tf_cr_ipsr & IA64_PSR_DFH) == 0) + if ((p->p_frame->tf_cr_ipsr & IA64_PSR_DFH) == 0) if (p != PCPU_GET(fpcurproc)) panic("ia64_check_fpcurproc: bogus"); } @@ -1303,7 +1303,7 @@ ia64_fpstate_save(struct proc *p, int write) savehighfp(p->p_addr->u_pcb.pcb_highfp); if (write) { - p->p_md.md_tf->tf_cr_ipsr |= IA64_PSR_DFH; + p->p_frame->tf_cr_ipsr |= IA64_PSR_DFH; PCPU_SET(fpcurproc, NULL); } } @@ -1318,7 +1318,7 @@ void ia64_fpstate_drop(struct proc *p) { if (p == PCPU_GET(fpcurproc)) { - p->p_md.md_tf->tf_cr_ipsr |= IA64_PSR_DFH; + p->p_frame->tf_cr_ipsr |= IA64_PSR_DFH; PCPU_SET(fpcurproc, NULL); } } @@ -1335,7 +1335,7 @@ ia64_fpstate_switch(struct proc *p) * Dump the old fp state if its valid. */ savehighfp(PCPU_GET(fpcurproc)->p_addr->u_pcb.pcb_highfp); - PCPU_GET(fpcurproc)->p_md.md_tf->tf_cr_ipsr |= IA64_PSR_DFH; + PCPU_GET(fpcurproc)->p_frame->tf_cr_ipsr |= IA64_PSR_DFH; } /* @@ -1343,7 +1343,7 @@ ia64_fpstate_switch(struct proc *p) */ PCPU_SET(fpcurproc, p); restorehighfp(p->p_addr->u_pcb.pcb_highfp); - p->p_md.md_tf->tf_cr_ipsr &= ~IA64_PSR_DFH; + p->p_frame->tf_cr_ipsr &= ~IA64_PSR_DFH; p->p_md.md_flags |= MDP_FPUSED; } diff --git a/sys/ia64/ia64/trap.c b/sys/ia64/ia64/trap.c index b49c0b6..416b3cd 100644 --- a/sys/ia64/ia64/trap.c +++ b/sys/ia64/ia64/trap.c @@ -242,7 +242,7 @@ trap(int vector, int imm, struct trapframe *framep) mtx_lock_spin(&sched_lock); sticks = p->p_sticks; mtx_unlock_spin(&sched_lock); - p->p_md.md_tf = framep; + p->p_frame = framep; } else { sticks = 0; /* XXX bogus -Wuninitialized warning */ } @@ -498,7 +498,7 @@ syscall(int code, u_int64_t *args, struct trapframe *framep) cnt.v_syscall++; p = curproc; - p->p_md.md_tf = framep; + p->p_frame = framep; mtx_lock_spin(&sched_lock); sticks = p->p_sticks; mtx_unlock_spin(&sched_lock); @@ -634,7 +634,7 @@ ast(framep) } sticks = p->p_sticks; - p->p_md.md_tf = framep; + p->p_frame = framep; astoff(p); cnt.v_soft++; @@ -709,7 +709,7 @@ unaligned_fixup(struct trapframe *framep, struct proc *p) */ if (doprint) { uprintf("pid %d (%s): unaligned access: va=0x%lx pc=0x%lx\n", - p->p_pid, p->p_comm, va, p->p_md.md_tf->tf_cr_iip); + p->p_pid, p->p_comm, va, p->p_frame->tf_cr_iip); } /* diff --git a/sys/ia64/ia64/vm_machdep.c b/sys/ia64/ia64/vm_machdep.c index f4bd000..2ca0292 100644 --- a/sys/ia64/ia64/vm_machdep.c +++ b/sys/ia64/ia64/vm_machdep.c @@ -131,7 +131,7 @@ cpu_fork(p1, p2, flags) if ((flags & RFPROC) == 0) return; - p2->p_md.md_tf = p1->p_md.md_tf; + p2->p_frame = p1->p_frame; p2->p_md.md_flags = p1->p_md.md_flags & (MDP_FPUSED | MDP_UAC_MASK); /* @@ -184,10 +184,9 @@ cpu_fork(p1, p2, flags) * copy trapframe from parent so return to user mode * will be to right address, with correct registers. */ - p2tf = p2->p_md.md_tf = (struct trapframe *) + p2tf = p2->p_frame = (struct trapframe *) ((char *)p2->p_addr + USPACE - sizeof(struct trapframe)); - bcopy(p1->p_md.md_tf, p2->p_md.md_tf, - sizeof(struct trapframe)); + bcopy(p1->p_frame, p2->p_frame, sizeof(struct trapframe)); /* * Set up return-value registers as fork() libc stub expects. @@ -217,8 +216,7 @@ cpu_fork(p1, p2, flags) * Copy enough of p1's backing store to include all * the user's stacked regs. */ - bcopy(p1bs, p2bs, p1->p_md.md_tf->tf_ndirty); - + bcopy(p1bs, p2bs, p1->p_frame->tf_ndirty); /* * To calculate the ar.rnat for p2, we need to decide * if p1's ar.bspstore has advanced past the place @@ -227,7 +225,7 @@ cpu_fork(p1, p2, flags) * that one from memory, otherwise we take p1's * current ar.rnat. */ - rnatloc = (u_int64_t)p1bs + p1->p_md.md_tf->tf_ndirty; + rnatloc = (u_int64_t)p1bs + p1->p_frame->tf_ndirty; rnatloc |= 0x1f8; if (bspstore > rnatloc) rnat = *(u_int64_t *) rnatloc; @@ -246,7 +244,7 @@ cpu_fork(p1, p2, flags) * straight into exception_restore. */ up->u_pcb.pcb_bspstore = - (u_int64_t)p2bs + p1->p_md.md_tf->tf_ndirty; + (u_int64_t)p2bs + p1->p_frame->tf_ndirty; up->u_pcb.pcb_rnat = rnat; up->u_pcb.pcb_pfs = 0; diff --git a/sys/ia64/include/cpu.h b/sys/ia64/include/cpu.h index 61766d2..39872e5 100644 --- a/sys/ia64/include/cpu.h +++ b/sys/ia64/include/cpu.h @@ -52,7 +52,7 @@ #include <machine/frame.h> -#define cpu_getstack(p) ((p)->p_md.md_tf->tf_r[FRAME_SP]) +#define cpu_getstack(p) ((p)->p_frame->tf_r[FRAME_SP]) /* * Arguments to hardclock and gatherstats encapsulate the previous diff --git a/sys/ia64/include/proc.h b/sys/ia64/include/proc.h index eff85c2..9d900f0 100644 --- a/sys/ia64/include/proc.h +++ b/sys/ia64/include/proc.h @@ -39,7 +39,6 @@ struct mdproc { u_long md_flags; struct user *md_uservirt; /* virtual address of p_addr */ vm_offset_t md_bspstore; /* initial ar.bspstore */ - struct trapframe *md_tf; /* trap/syscall registers */ }; #define MDP_FPUSED 0x0001 /* Process used the FPU */ |