summaryrefslogtreecommitdiffstats
path: root/sys/alpha
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/alpha
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/alpha')
-rw-r--r--sys/alpha/alpha/fp_emulate.c2
-rw-r--r--sys/alpha/alpha/machdep.c40
-rw-r--r--sys/alpha/alpha/mp_machdep.c2
-rw-r--r--sys/alpha/alpha/trap.c22
-rw-r--r--sys/alpha/alpha/vm_machdep.c7
-rw-r--r--sys/alpha/include/proc.h1
-rw-r--r--sys/alpha/osf1/osf1_signal.c8
7 files changed, 40 insertions, 42 deletions
diff --git a/sys/alpha/alpha/fp_emulate.c b/sys/alpha/alpha/fp_emulate.c
index cc49bc2..20f64d6 100644
--- a/sys/alpha/alpha/fp_emulate.c
+++ b/sys/alpha/alpha/fp_emulate.c
@@ -325,7 +325,7 @@ static int fp_emulate(union alpha_instruction ins, struct proc *p)
*/
int fp_software_completion(u_int64_t regmask, struct proc *p)
{
- struct trapframe *frame = p->p_md.md_tf;
+ struct trapframe *frame = p->p_frame;
u_int64_t pc = frame->tf_regs[FRAME_PC];
int error;
diff --git a/sys/alpha/alpha/machdep.c b/sys/alpha/alpha/machdep.c
index 85271cd..16e31cc 100644
--- a/sys/alpha/alpha/machdep.c
+++ b/sys/alpha/alpha/machdep.c
@@ -982,7 +982,7 @@ alpha_init(pfn, ptb, bim, bip, biv)
*/
proc0paddr->u_pcb.pcb_hw.apcb_ksp =
(u_int64_t)proc0paddr + USPACE - sizeof(struct trapframe);
- proc0.p_md.md_tf =
+ proc0.p_frame =
(struct trapframe *)proc0paddr->u_pcb.pcb_hw.apcb_ksp;
/*
@@ -1232,7 +1232,7 @@ osendsig(sig_t catcher, int sig, sigset_t *mask, u_long code)
struct sigacts *psp;
int oonstack, fsize, rndfsize;
- frame = p->p_md.md_tf;
+ frame = p->p_frame;
oonstack = sigonstack(alpha_pal_rdusp());
fsize = sizeof ksi;
rndfsize = ((fsize + 15) / 16) * 16;
@@ -1344,7 +1344,7 @@ sendsig(sig_t catcher, int sig, sigset_t *mask, u_long code)
return;
}
- frame = p->p_md.md_tf;
+ frame = p->p_frame;
oonstack = sigonstack(alpha_pal_rdusp());
rndfsize = ((sizeof(sf) + 15) / 16) * 16;
@@ -1522,10 +1522,10 @@ osigreturn(struct proc *p,
PROC_UNLOCK(p);
set_regs(p, (struct reg *)ksc.sc_regs);
- p->p_md.md_tf->tf_regs[FRAME_PC] = ksc.sc_pc;
- p->p_md.md_tf->tf_regs[FRAME_PS] =
+ p->p_frame->tf_regs[FRAME_PC] = ksc.sc_pc;
+ p->p_frame->tf_regs[FRAME_PS] =
(ksc.sc_ps | ALPHA_PSL_USERSET) & ~ALPHA_PSL_USERCLR;
- p->p_md.md_tf->tf_regs[FRAME_FLAGS] = 0; /* full restore */
+ p->p_frame->tf_regs[FRAME_FLAGS] = 0; /* full restore */
alpha_pal_wrusp(ksc.sc_regs[R_SP]);
@@ -1570,9 +1570,9 @@ sigreturn(struct proc *p,
set_regs(p, (struct reg *)uc.uc_mcontext.mc_regs);
val = (uc.uc_mcontext.mc_regs[R_PS] | ALPHA_PSL_USERSET) &
~ALPHA_PSL_USERCLR;
- p->p_md.md_tf->tf_regs[FRAME_PS] = val;
- p->p_md.md_tf->tf_regs[FRAME_PC] = uc.uc_mcontext.mc_regs[R_PC];
- p->p_md.md_tf->tf_regs[FRAME_FLAGS] = 0; /* full restore */
+ p->p_frame->tf_regs[FRAME_PS] = val;
+ p->p_frame->tf_regs[FRAME_PC] = uc.uc_mcontext.mc_regs[R_PC];
+ p->p_frame->tf_regs[FRAME_FLAGS] = 0; /* full restore */
alpha_pal_wrusp(uc.uc_mcontext.mc_regs[R_SP]);
PROC_LOCK(p);
@@ -1627,7 +1627,7 @@ cpu_halt(void)
void
setregs(struct proc *p, u_long entry, u_long stack, u_long ps_strings)
{
- struct trapframe *tfp = p->p_md.md_tf;
+ struct trapframe *tfp = p->p_frame;
bzero(tfp->tf_regs, FRAME_SIZE * sizeof tfp->tf_regs[0]);
bzero(&p->p_addr->u_pcb.pcb_fp, sizeof p->p_addr->u_pcb.pcb_fp);
@@ -1655,7 +1655,7 @@ setregs(struct proc *p, u_long entry, u_long stack, u_long ps_strings)
int
ptrace_set_pc(struct proc *p, unsigned long addr)
{
- struct trapframe *tp = p->p_md.md_tf;
+ struct trapframe *tp = p->p_frame;
tp->tf_regs[FRAME_PC] = addr;
return 0;
}
@@ -1738,7 +1738,7 @@ ptrace_read_register(struct proc *p, int regno)
if (regno == R_ZERO)
return 0;
- return p->p_md.md_tf->tf_regs[reg_to_frame[regno]];
+ return p->p_frame->tf_regs[reg_to_frame[regno]];
}
@@ -1777,7 +1777,7 @@ int
ptrace_single_step(struct proc *p)
{
int error;
- vm_offset_t pc = p->p_md.md_tf->tf_regs[FRAME_PC];
+ vm_offset_t pc = p->p_frame->tf_regs[FRAME_PC];
alpha_instruction ins;
vm_offset_t addr[2]; /* places to set breakpoints */
int count = 0; /* count of breakpoints */
@@ -1854,7 +1854,7 @@ int ptrace_read_u_check(p, addr, 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;
@@ -1877,10 +1877,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) ||
@@ -1922,9 +1922,9 @@ fill_regs(p, regs)
struct reg *regs;
{
struct pcb *pcb = &p->p_addr->u_pcb;
- struct trapframe *tp = p->p_md.md_tf;
+ struct trapframe *tp = p->p_frame;
- tp = p->p_md.md_tf;
+ tp = p->p_frame;
#define C(r) regs->r_regs[R_ ## r] = tp->tf_regs[FRAME_ ## r]
@@ -1949,9 +1949,9 @@ set_regs(p, regs)
struct reg *regs;
{
struct pcb *pcb = &p->p_addr->u_pcb;
- struct trapframe *tp = p->p_md.md_tf;
+ struct trapframe *tp = p->p_frame;
- tp = p->p_md.md_tf;
+ tp = p->p_frame;
#define C(r) tp->tf_regs[FRAME_ ## r] = regs->r_regs[R_ ## r]
diff --git a/sys/alpha/alpha/mp_machdep.c b/sys/alpha/alpha/mp_machdep.c
index a89a2cf..414a1bc 100644
--- a/sys/alpha/alpha/mp_machdep.c
+++ b/sys/alpha/alpha/mp_machdep.c
@@ -173,7 +173,7 @@ smp_init_secondary(void)
* and make idleproc's trapframe pointer point to its
* stack pointer for sanity.
*/
- curproc->p_md.md_tf =
+ curproc->p_frame =
(struct trapframe *)globalp->gd_idlepcb.apcb_ksp;
mtx_lock_spin(&ap_boot_mtx);
diff --git a/sys/alpha/alpha/trap.c b/sys/alpha/alpha/trap.c
index 3e958ef..90fdce9 100644
--- a/sys/alpha/alpha/trap.c
+++ b/sys/alpha/alpha/trap.c
@@ -340,7 +340,7 @@ trap(a0, a1, a2, entry, 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 */
}
@@ -445,7 +445,7 @@ trap(a0, a1, a2, entry, framep)
if (p->p_md.md_flags & (MDP_STEP1|MDP_STEP2)) {
mtx_lock(&Giant);
ptrace_clear_single_step(p);
- p->p_md.md_tf->tf_regs[FRAME_PC] -= 4;
+ p->p_frame->tf_regs[FRAME_PC] -= 4;
mtx_unlock(&Giant);
}
ucode = a0; /* trap type */
@@ -743,7 +743,7 @@ syscall(code, framep)
#endif
cnt.v_syscall++;
- p->p_md.md_tf = framep;
+ p->p_frame = framep;
opc = framep->tf_regs[FRAME_PC] - 4;
mtx_lock_spin(&sched_lock);
sticks = p->p_sticks;
@@ -904,7 +904,7 @@ ast(framep)
}
sticks = p->p_sticks;
- p->p_md.md_tf = framep;
+ p->p_frame = framep;
astoff(p);
cnt.v_soft++;
@@ -957,7 +957,7 @@ const static int reg_to_framereg[32] = {
#define irp(p, reg) \
((reg_to_framereg[(reg)] == -1) ? NULL : \
- &(p)->p_md.md_tf->tf_regs[reg_to_framereg[(reg)]])
+ &(p)->p_frame->tf_regs[reg_to_framereg[(reg)]])
#define frp(p, reg) \
(&(p)->p_addr->u_pcb.pcb_fp.fpr_regs[(reg)])
@@ -1187,8 +1187,8 @@ unaligned_fixup(va, opcode, reg, p)
if (doprint) {
uprintf(
"pid %d (%s): unaligned access: va=0x%lx pc=0x%lx ra=0x%lx op=",
- p->p_pid, p->p_comm, va, p->p_md.md_tf->tf_regs[FRAME_PC],
- p->p_md.md_tf->tf_regs[FRAME_RA]);
+ p->p_pid, p->p_comm, va, p->p_frame->tf_regs[FRAME_PC],
+ p->p_frame->tf_regs[FRAME_RA]);
uprintf(type,opcode);
uprintf("\n");
}
@@ -1305,9 +1305,9 @@ handle_opdec(p, ucodep)
* This keeps us from having to check for it in lots of places
* later.
*/
- p->p_md.md_tf->tf_regs[FRAME_SP] = alpha_pal_rdusp();
+ p->p_frame->tf_regs[FRAME_SP] = alpha_pal_rdusp();
- inst_pc = memaddr = p->p_md.md_tf->tf_regs[FRAME_PC] - 4;
+ inst_pc = memaddr = p->p_frame->tf_regs[FRAME_PC] - 4;
if (copyin((caddr_t)inst_pc, &inst, sizeof (inst)) != 0) {
/*
* really, this should never happen, but in case it
@@ -1424,7 +1424,7 @@ handle_opdec(p, ucodep)
* nothing will have been successfully modified so we don't
* have to write it out.
*/
- alpha_pal_wrusp(p->p_md.md_tf->tf_regs[FRAME_SP]);
+ alpha_pal_wrusp(p->p_frame->tf_regs[FRAME_SP]);
return (0);
@@ -1434,7 +1434,7 @@ sigill:
sigsegv:
sig = SIGSEGV;
- p->p_md.md_tf->tf_regs[FRAME_PC] = inst_pc; /* re-run instr. */
+ p->p_frame->tf_regs[FRAME_PC] = inst_pc; /* re-run instr. */
unaligned_fixup_sig:
*ucodep = memaddr; /* faulting address */
return (sig);
diff --git a/sys/alpha/alpha/vm_machdep.c b/sys/alpha/alpha/vm_machdep.c
index 79209e5..862e25b 100644
--- a/sys/alpha/alpha/vm_machdep.c
+++ b/sys/alpha/alpha/vm_machdep.c
@@ -125,7 +125,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);
/*
@@ -181,10 +181,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.
diff --git a/sys/alpha/include/proc.h b/sys/alpha/include/proc.h
index 3a83c39..b3f98f6 100644
--- a/sys/alpha/include/proc.h
+++ b/sys/alpha/include/proc.h
@@ -45,7 +45,6 @@ struct mdbpt {
struct mdproc {
u_long md_flags;
- struct trapframe *md_tf; /* trap/syscall registers */
struct pcb *md_pcbpaddr; /* phys addr of the pcb */
struct mdbpt md_sstep[2]; /* two single step breakpoints */
u_int64_t md_hae; /* user HAE register value */
diff --git a/sys/alpha/osf1/osf1_signal.c b/sys/alpha/osf1/osf1_signal.c
index 4152521..66aa3a9 100644
--- a/sys/alpha/osf1/osf1_signal.c
+++ b/sys/alpha/osf1/osf1_signal.c
@@ -588,7 +588,7 @@ osf1_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(alpha_pal_rdusp());
fsize = sizeof ksi;
rndfsize = ((fsize + 15) / 16) * 16;
@@ -724,10 +724,10 @@ osf1_sigreturn(struct proc *p,
PROC_UNLOCK(p);
set_regs(p, (struct reg *)ksc.sc_regs);
- p->p_md.md_tf->tf_regs[FRAME_PC] = ksc.sc_pc;
- p->p_md.md_tf->tf_regs[FRAME_PS] =
+ p->p_frame->tf_regs[FRAME_PC] = ksc.sc_pc;
+ p->p_frame->tf_regs[FRAME_PS] =
(ksc.sc_ps | ALPHA_PSL_USERSET) & ~ALPHA_PSL_USERCLR;
- p->p_md.md_tf->tf_regs[FRAME_FLAGS] = 0; /* full restore */
+ p->p_frame->tf_regs[FRAME_FLAGS] = 0; /* full restore */
alpha_pal_wrusp(ksc.sc_regs[R_SP]);
OpenPOWER on IntegriCloud