From d82893e6762433665a192f6ffe2dad2a1a6c0678 Mon Sep 17 00:00:00 2001 From: jhb Date: Fri, 29 Jun 2001 11:10:41 +0000 Subject: 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) --- sys/alpha/alpha/fp_emulate.c | 2 +- sys/alpha/alpha/machdep.c | 40 ++++++++++++++++++++-------------------- sys/alpha/alpha/mp_machdep.c | 2 +- sys/alpha/alpha/trap.c | 22 +++++++++++----------- sys/alpha/alpha/vm_machdep.c | 7 +++---- sys/alpha/include/proc.h | 1 - sys/alpha/osf1/osf1_signal.c | 8 ++++---- 7 files changed, 40 insertions(+), 42 deletions(-) (limited to 'sys/alpha') 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]); -- cgit v1.1