summaryrefslogtreecommitdiffstats
path: root/sys/ia64
diff options
context:
space:
mode:
authorjhb <jhb@FreeBSD.org>2001-06-29 11:10:41 +0000
committerjhb <jhb@FreeBSD.org>2001-06-29 11:10:41 +0000
commitd82893e6762433665a192f6ffe2dad2a1a6c0678 (patch)
treecb74fd6ffd13686b7602fd19e3756d344a7b64e2 /sys/ia64
parent11807e464b0264daf76c2429a84420f80a6605d1 (diff)
downloadFreeBSD-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.c24
-rw-r--r--sys/ia64/ia64/trap.c8
-rw-r--r--sys/ia64/ia64/vm_machdep.c14
-rw-r--r--sys/ia64/include/cpu.h2
-rw-r--r--sys/ia64/include/proc.h1
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 */
OpenPOWER on IntegriCloud