Lines Matching refs:rp

70 int vis1_partial_support(struct regs *rp, k_siginfo_t *siginfo, uint_t *fault);
90 die(unsigned type, struct regs *rp, caddr_t addr, uint_t mmu_fsr)
98 ti.trap_regs = rp;
106 panic("BAD TRAP: type=%x rp=%p addr=%p mmu_fsr=%x "
108 type, (void *)rp, (void *)addr, mmu_fsr,
109 mod_containing_pc((caddr_t)rp->r_pc),
114 panic("BAD TRAP: type=%x rp=%p addr=%p mmu_fsr=%x",
115 type, (void *)rp, (void *)addr, mmu_fsr);
143 trap(struct regs *rp, caddr_t addr, uint32_t type, uint32_t mmu_fsr)
178 if (USERMODE(rp->r_tstate) || (type & T_USER)) {
205 lwp->lwp_regs == rp);
228 ((oldpc = rp->r_pc), prundostep()) &&
231 oldpc = rp->r_pc;
280 (ulong_t)type, (ulong_t)rp, (ulong_t)addr);
292 showregs(type, rp, (caddr_t)0, 0);
297 siginfo.si_addr = (caddr_t)rp->r_pc;
303 addr = (caddr_t)rp->r_pc;
304 (void) die(type, rp, addr, 0);
308 if (nfload(rp, NULL))
313 showregs(type, rp, addr, 0);
314 traceback((caddr_t)rp->r_sp);
316 rp->r_g1 = EFAULT;
317 rp->r_pc = curthread->t_lofault;
318 rp->r_npc = rp->r_pc + 4;
321 (void) die(type, rp, addr, 0);
325 addr = (caddr_t)rp->r_pc;
326 (void) die(type, rp, addr, mmu_fsr);
330 addr = (caddr_t)rp->r_pc;
331 (void) die(type, rp, addr, 0);
352 showregs(type, rp, addr, 0);
353 traceback((caddr_t)rp->r_sp);
355 rp->r_g1 = EFAULT;
356 rp->r_pc = curthread->t_lofault;
357 rp->r_npc = rp->r_pc + 4;
360 (void) die(type, rp, addr, mmu_fsr);
370 if (nfload(rp, NULL))
375 showregs(type, rp, addr, 0);
376 traceback((caddr_t)rp->r_sp);
378 rp->r_g1 = EFAULT;
379 rp->r_pc = curthread->t_lofault;
380 rp->r_npc = rp->r_pc + 4;
383 (void) die(type, rp, addr, mmu_fsr);
387 if (nfload(rp, NULL))
390 (void) die(type, rp, addr, mmu_fsr);
400 if (nfload(rp, &instr))
416 rp->r_pc = otp->ot_trampoline;
417 rp->r_npc = rp->r_pc + 4;
445 rw = get_accesstype(rp);
478 rp->r_pc = rp->r_npc;
479 rp->r_npc += 4;
484 (calc_memaddr(rp, &badaddr) == SIMU_SUCCESS))
487 (void) die(type, rp, addr, 0);
492 showregs(type, rp, addr, 0);
493 traceback((caddr_t)rp->r_sp);
499 rp->r_g1 = res;
500 rp->r_pc = curthread->t_lofault;
501 rp->r_npc = curthread->t_lofault + 4;
506 siginfo.si_addr = (caddr_t)rp->r_pc;
521 addr = (caddr_t)rp->r_pc;
535 rw = get_accesstype(rp);
580 (sz = instr_size(rp, &vaddr, rw)) <= 0)
586 watchcode, rp->r_pc);
594 siginfo.si_pc = (caddr_t)rp->r_pc;
600 pr_watch_emul(rp, vaddr, rw))
640 (void) instr_size(rp, &addr, rw);
659 if (nfload(rp, &instr))
664 rp->r_pc = rp->r_npc;
665 rp->r_npc += 4;
684 rp->r_pc = rp->r_npc;
685 rp->r_npc += 4;
694 showregs(type, rp, addr, 0);
701 (void) instr_size(rp, &addr, rw);
730 oldpc = rp->r_pc - 4;
742 siginfo.si_addr = (caddr_t)rp->r_pc;
753 if (vis1_partial_support(rp,
758 if (nfload(rp, &instr))
762 rp->r_pc = rp->r_npc;
763 rp->r_npc += 4;
771 if ((IS_SWAP(instr) && swap_nc(rp, instr)) ||
772 (IS_LDSTUB(instr) && ldstub_nc(rp, instr))) {
774 rp->r_pc = rp->r_npc;
775 rp->r_npc += 4;
801 showregs(type, rp, addr, 0);
809 if (vis1_partial_support(rp,
816 if (nfload(rp, NULL))
832 if (do_unaligned(rp, &badaddr) == SIMU_SUCCESS) {
833 rp->r_pc = rp->r_npc;
834 rp->r_npc += 4;
837 if (nfload(rp, NULL))
844 if (nfload(rp, NULL))
848 if (rp->r_pc & 3) { /* offending address, if pc */
849 siginfo.si_addr = (caddr_t)rp->r_pc;
851 if (calc_memaddr(rp, &badaddr) == SIMU_UNALIGN)
854 siginfo.si_addr = (caddr_t)rp->r_pc;
862 showregs(type, rp, (caddr_t)0, 0);
877 simulate_rdtick(rp) == SIMU_SUCCESS) {
879 rp->r_pc = rp->r_npc;
880 rp->r_npc += 4;
886 siginfo.si_addr = (caddr_t)rp->r_pc;
903 if (fpras_chktrap(rp))
908 instr = *(int *)rp->r_pc;
912 rp->r_o7 = (long long)rp->r_pc;
913 pc = rp->r_pc + ((instr & 0x3fffffff) << 2);
914 rp->r_pc = rp->r_npc;
915 rp->r_npc = pc;
923 addr = (caddr_t)rp->r_pc;
924 (void) die(type, rp, addr, 0);
929 instr = fetch_user_instr((caddr_t)rp->r_pc);
933 rp->r_o7 = (long long)rp->r_pc;
934 pc = rp->r_pc + ((instr & 0x3fffffff) << 2);
935 rp->r_pc = rp->r_npc;
936 rp->r_npc = pc;
942 showregs(type, rp, (caddr_t)0, 0);
947 switch (simulate_unimp(rp, &badaddr)) {
954 rp->r_pc = rp->r_npc;
955 rp->r_npc += 4;
969 siginfo.si_addr = (caddr_t)rp->r_pc;
989 siginfo.si_addr = (caddr_t)rp->r_pc;
998 showregs(type, rp, (caddr_t)0, 0);
999 switch (simulate_lddstd(rp, &badaddr)) {
1002 rp->r_pc = rp->r_npc;
1003 rp->r_npc += 4;
1008 if (nfload(rp, NULL))
1017 if (nfload(rp, NULL))
1029 siginfo.si_addr = (caddr_t)rp->r_pc;
1037 if (simulate_lddstd(rp, &badaddr) == SIMU_SUCCESS) {
1039 rp->r_pc = rp->r_npc;
1040 rp->r_npc += 4;
1048 if (nfload(rp, NULL))
1053 showregs(type, rp, addr, 0);
1054 traceback((caddr_t)rp->r_sp);
1056 rp->r_g1 = EFAULT;
1057 rp->r_pc = curthread->t_lofault;
1058 rp->r_npc = rp->r_pc + 4;
1061 (void) die(type, rp, addr, 0);
1067 showregs(type, rp, (caddr_t)0, 0);
1071 siginfo.si_addr = (caddr_t)rp->r_pc;
1077 showregs(type, rp, (caddr_t)0, 0);
1081 siginfo.si_addr = (caddr_t)rp->r_pc;
1087 showregs(type, rp, (caddr_t)0, 0);
1091 siginfo.si_addr = (caddr_t)rp->r_pc;
1097 showregs(type, rp, (caddr_t)0, 0);
1101 siginfo.si_addr = (caddr_t)rp->r_pc;
1149 siginfo.si_addr = (caddr_t)rp->r_pc;
1169 rp->r_pc = rp->r_npc;
1170 rp->r_npc += 4;
1182 showregs(type, rp, (caddr_t)0, 0);
1186 siginfo.si_addr = (caddr_t)rp->r_pc;
1188 oldpc = rp->r_pc - 4;
1207 trap_async_berr_bto(ASYNC_BERR, rp);
1212 trap_async_berr_bto(ASYNC_BTO, rp);
1222 trap_cleanup(rp, fault, &siginfo, oldpc == rp->r_pc);
1243 struct regs *rp,
1277 profil_tick(rp->r_pc);
1360 fpu_trap(struct regs *rp, caddr_t addr, uint32_t type, uint32_t code)
1377 if (USERMODE(rp->r_tstate)) {
1401 ASSERT(lwp->lwp_regs == rp);
1411 showregs(type, rp, addr, 0);
1428 inst = fetch_user_instr((caddr_t)rp->r_pc);
1431 pfpq->fpq_addr = (uint32_t *)rp->r_pc;
1465 rp->r_pc = rp->r_npc;
1466 rp->r_npc += 4;
1472 rp->r_pc = (long)utrapp[UT_FP_EXCEPTION_IEEE_754];
1473 rp->r_npc = rp->r_pc + 4;
1491 if (vis1_partial_support(rp,
1495 if (do_unaligned(rp, &badaddr) == SIMU_SUCCESS) {
1496 rp->r_pc = rp->r_npc;
1497 rp->r_npc += 4;
1516 if (do_unaligned(rp, &badaddr) == SIMU_SUCCESS) {
1517 rp->r_pc = rp->r_npc;
1518 rp->r_npc += 4;
1528 if (rp->r_pc & 3) { /* offending address, if pc */
1529 siginfo.si_addr = (caddr_t)rp->r_pc;
1531 if (calc_memaddr(rp, &badaddr) == SIMU_UNALIGN)
1534 siginfo.si_addr = (caddr_t)rp->r_pc;
1542 inst = fetch_user_instr((caddr_t)rp->r_pc);
1552 (void) die(type, rp, addr, 0);
1562 trap_cleanup(rp, fault, &siginfo, 0);
1613 nfload(struct regs *rp, int *instrp)
1622 if (USERMODE(rp->r_tstate))
1623 instr = fetch_user_instr((caddr_t)rp->r_pc);
1625 instr = *(int *)rp->r_pc;
1636 asi = (uint_t)((rp->r_tstate >> TSTATE_ASI_SHIFT) &
1640 if (calc_memaddr(rp, &addr) == SIMU_SUCCESS) {
1642 as = USERMODE(rp->r_tstate) ? ttoproc(curthread)->p_as : &kas;
1678 (void) putreg(&zero, rp, rd, &addr);
1680 (void) putreg(&zero, rp, rd + 1, &addr);
1682 rp->r_pc = rp->r_npc;
1683 rp->r_npc += 4;
1696 swap_nc(struct regs *rp, int instr)
1704 if (calc_memaddr(rp, &addr) != SIMU_SUCCESS)
1706 if (getreg(rp, rd, &rdata, &badaddr))
1718 (void) putreg(&mdata, rp, rd, &badaddr);
1724 ldstub_nc(struct regs *rp, int instr)
1733 if (calc_memaddr(rp, &addr) != SIMU_SUCCESS)
1745 (void) putreg(&mdata, rp, rd, &badaddr);
1903 get_accesstype(struct regs *rp)
1907 if (USERMODE(rp->r_tstate))
1908 instr = fetch_user_instr((caddr_t)rp->r_pc);
1910 instr = *(uint32_t *)rp->r_pc;
1952 trap_async_berr_bto(int type, struct regs *rp)
1961 si.si_addr = (caddr_t)rp->r_pc; /* AFAR unavailable - future RFE */