Lines Matching refs:rp

68 int vis1_partial_support(struct regs *rp, k_siginfo_t *siginfo, uint_t *fault);
88 die(unsigned type, struct regs *rp, caddr_t addr, uint_t mmu_fsr) in die() argument
96 ti.trap_regs = rp; in die()
106 type, (void *)rp, (void *)addr, mmu_fsr, in die()
107 mod_containing_pc((caddr_t)rp->r_pc), in die()
113 type, (void *)rp, (void *)addr, mmu_fsr); in die()
139 trap(struct regs *rp, caddr_t addr, uint32_t type, uint32_t mmu_fsr) in trap() argument
174 if (USERMODE(rp->r_tstate) || (type & T_USER)) { in trap()
201 lwp->lwp_regs == rp); in trap()
221 ((oldpc = rp->r_pc), prundostep()) && in trap()
224 oldpc = rp->r_pc; in trap()
273 (ulong_t)type, (ulong_t)rp, (ulong_t)addr); in trap()
285 showregs(type, rp, (caddr_t)0, 0); in trap()
290 siginfo.si_addr = (caddr_t)rp->r_pc; in trap()
296 addr = (caddr_t)rp->r_pc; in trap()
297 (void) die(type, rp, addr, 0); in trap()
301 if (nfload(rp, NULL)) in trap()
306 showregs(type, rp, addr, 0); in trap()
307 traceback((caddr_t)rp->r_sp); in trap()
309 rp->r_g1 = EFAULT; in trap()
310 rp->r_pc = curthread->t_lofault; in trap()
311 rp->r_npc = rp->r_pc + 4; in trap()
314 (void) die(type, rp, addr, 0); in trap()
318 addr = (caddr_t)rp->r_pc; in trap()
319 (void) die(type, rp, addr, mmu_fsr); in trap()
323 addr = (caddr_t)rp->r_pc; in trap()
324 (void) die(type, rp, addr, 0); in trap()
345 showregs(type, rp, addr, 0); in trap()
346 traceback((caddr_t)rp->r_sp); in trap()
348 rp->r_g1 = EFAULT; in trap()
349 rp->r_pc = curthread->t_lofault; in trap()
350 rp->r_npc = rp->r_pc + 4; in trap()
353 (void) die(type, rp, addr, mmu_fsr); in trap()
363 if (nfload(rp, NULL)) in trap()
368 showregs(type, rp, addr, 0); in trap()
369 traceback((caddr_t)rp->r_sp); in trap()
371 rp->r_g1 = EFAULT; in trap()
372 rp->r_pc = curthread->t_lofault; in trap()
373 rp->r_npc = rp->r_pc + 4; in trap()
376 (void) die(type, rp, addr, mmu_fsr); in trap()
380 if (nfload(rp, NULL)) in trap()
383 (void) die(type, rp, addr, mmu_fsr); in trap()
393 if (nfload(rp, &instr)) in trap()
409 rp->r_pc = otp->ot_trampoline; in trap()
410 rp->r_npc = rp->r_pc + 4; in trap()
438 rw = get_accesstype(rp); in trap()
471 rp->r_pc = rp->r_npc; in trap()
472 rp->r_npc += 4; in trap()
477 (calc_memaddr(rp, &badaddr) == SIMU_SUCCESS)) in trap()
480 (void) die(type, rp, addr, 0); in trap()
485 showregs(type, rp, addr, 0); in trap()
486 traceback((caddr_t)rp->r_sp); in trap()
492 rp->r_g1 = res; in trap()
493 rp->r_pc = curthread->t_lofault; in trap()
494 rp->r_npc = curthread->t_lofault + 4; in trap()
499 siginfo.si_addr = (caddr_t)rp->r_pc; in trap()
514 addr = (caddr_t)rp->r_pc; in trap()
528 rw = get_accesstype(rp); in trap()
573 (sz = instr_size(rp, &vaddr, rw)) <= 0) in trap()
579 watchcode, rp->r_pc); in trap()
587 siginfo.si_pc = (caddr_t)rp->r_pc; in trap()
593 pr_watch_emul(rp, vaddr, rw)) in trap()
633 (void) instr_size(rp, &addr, rw); in trap()
652 if (nfload(rp, &instr)) in trap()
657 rp->r_pc = rp->r_npc; in trap()
658 rp->r_npc += 4; in trap()
677 rp->r_pc = rp->r_npc; in trap()
678 rp->r_npc += 4; in trap()
687 showregs(type, rp, addr, 0); in trap()
694 (void) instr_size(rp, &addr, rw); in trap()
723 oldpc = rp->r_pc - 4; in trap()
735 siginfo.si_addr = (caddr_t)rp->r_pc; in trap()
746 if (vis1_partial_support(rp, in trap()
751 if (nfload(rp, &instr)) in trap()
755 rp->r_pc = rp->r_npc; in trap()
756 rp->r_npc += 4; in trap()
764 if ((IS_SWAP(instr) && swap_nc(rp, instr)) || in trap()
765 (IS_LDSTUB(instr) && ldstub_nc(rp, instr))) { in trap()
767 rp->r_pc = rp->r_npc; in trap()
768 rp->r_npc += 4; in trap()
794 showregs(type, rp, addr, 0); in trap()
802 if (vis1_partial_support(rp, in trap()
809 if (nfload(rp, NULL)) in trap()
825 if (do_unaligned(rp, &badaddr) == SIMU_SUCCESS) { in trap()
826 rp->r_pc = rp->r_npc; in trap()
827 rp->r_npc += 4; in trap()
830 if (nfload(rp, NULL)) in trap()
837 if (nfload(rp, NULL)) in trap()
841 if (rp->r_pc & 3) { /* offending address, if pc */ in trap()
842 siginfo.si_addr = (caddr_t)rp->r_pc; in trap()
844 if (calc_memaddr(rp, &badaddr) == SIMU_UNALIGN) in trap()
847 siginfo.si_addr = (caddr_t)rp->r_pc; in trap()
855 showregs(type, rp, (caddr_t)0, 0); in trap()
870 simulate_rdtick(rp) == SIMU_SUCCESS) { in trap()
872 rp->r_pc = rp->r_npc; in trap()
873 rp->r_npc += 4; in trap()
879 siginfo.si_addr = (caddr_t)rp->r_pc; in trap()
896 if (fpras_chktrap(rp)) in trap()
901 instr = *(int *)rp->r_pc; in trap()
905 rp->r_o7 = (long long)rp->r_pc; in trap()
906 pc = rp->r_pc + ((instr & 0x3fffffff) << 2); in trap()
907 rp->r_pc = rp->r_npc; in trap()
908 rp->r_npc = pc; in trap()
916 addr = (caddr_t)rp->r_pc; in trap()
917 (void) die(type, rp, addr, 0); in trap()
922 instr = fetch_user_instr((caddr_t)rp->r_pc); in trap()
926 rp->r_o7 = (long long)rp->r_pc; in trap()
927 pc = rp->r_pc + ((instr & 0x3fffffff) << 2); in trap()
928 rp->r_pc = rp->r_npc; in trap()
929 rp->r_npc = pc; in trap()
935 showregs(type, rp, (caddr_t)0, 0); in trap()
940 switch (simulate_unimp(rp, &badaddr)) { in trap()
947 rp->r_pc = rp->r_npc; in trap()
948 rp->r_npc += 4; in trap()
962 siginfo.si_addr = (caddr_t)rp->r_pc; in trap()
982 siginfo.si_addr = (caddr_t)rp->r_pc; in trap()
991 showregs(type, rp, (caddr_t)0, 0); in trap()
992 switch (simulate_lddstd(rp, &badaddr)) { in trap()
995 rp->r_pc = rp->r_npc; in trap()
996 rp->r_npc += 4; in trap()
1001 if (nfload(rp, NULL)) in trap()
1010 if (nfload(rp, NULL)) in trap()
1022 siginfo.si_addr = (caddr_t)rp->r_pc; in trap()
1030 if (simulate_lddstd(rp, &badaddr) == SIMU_SUCCESS) { in trap()
1032 rp->r_pc = rp->r_npc; in trap()
1033 rp->r_npc += 4; in trap()
1041 if (nfload(rp, NULL)) in trap()
1046 showregs(type, rp, addr, 0); in trap()
1047 traceback((caddr_t)rp->r_sp); in trap()
1049 rp->r_g1 = EFAULT; in trap()
1050 rp->r_pc = curthread->t_lofault; in trap()
1051 rp->r_npc = rp->r_pc + 4; in trap()
1054 (void) die(type, rp, addr, 0); in trap()
1060 showregs(type, rp, (caddr_t)0, 0); in trap()
1064 siginfo.si_addr = (caddr_t)rp->r_pc; in trap()
1070 showregs(type, rp, (caddr_t)0, 0); in trap()
1074 siginfo.si_addr = (caddr_t)rp->r_pc; in trap()
1080 showregs(type, rp, (caddr_t)0, 0); in trap()
1084 siginfo.si_addr = (caddr_t)rp->r_pc; in trap()
1090 showregs(type, rp, (caddr_t)0, 0); in trap()
1094 siginfo.si_addr = (caddr_t)rp->r_pc; in trap()
1142 siginfo.si_addr = (caddr_t)rp->r_pc; in trap()
1162 rp->r_pc = rp->r_npc; in trap()
1163 rp->r_npc += 4; in trap()
1175 showregs(type, rp, (caddr_t)0, 0); in trap()
1179 siginfo.si_addr = (caddr_t)rp->r_pc; in trap()
1181 oldpc = rp->r_pc - 4; in trap()
1200 trap_async_berr_bto(ASYNC_BERR, rp); in trap()
1205 trap_async_berr_bto(ASYNC_BTO, rp); in trap()
1215 trap_cleanup(rp, fault, &siginfo, oldpc == rp->r_pc); in trap()
1233 struct regs *rp, in trap_cleanup() argument
1267 profil_tick(rp->r_pc); in trap_cleanup()
1350 fpu_trap(struct regs *rp, caddr_t addr, uint32_t type, uint32_t code) in fpu_trap() argument
1367 if (USERMODE(rp->r_tstate)) { in fpu_trap()
1391 ASSERT(lwp->lwp_regs == rp); in fpu_trap()
1401 showregs(type, rp, addr, 0); in fpu_trap()
1418 inst = fetch_user_instr((caddr_t)rp->r_pc); in fpu_trap()
1421 pfpq->fpq_addr = (uint32_t *)rp->r_pc; in fpu_trap()
1455 rp->r_pc = rp->r_npc; in fpu_trap()
1456 rp->r_npc += 4; in fpu_trap()
1462 rp->r_pc = (long)utrapp[UT_FP_EXCEPTION_IEEE_754]; in fpu_trap()
1463 rp->r_npc = rp->r_pc + 4; in fpu_trap()
1481 if (vis1_partial_support(rp, in fpu_trap()
1485 if (do_unaligned(rp, &badaddr) == SIMU_SUCCESS) { in fpu_trap()
1486 rp->r_pc = rp->r_npc; in fpu_trap()
1487 rp->r_npc += 4; in fpu_trap()
1506 if (do_unaligned(rp, &badaddr) == SIMU_SUCCESS) { in fpu_trap()
1507 rp->r_pc = rp->r_npc; in fpu_trap()
1508 rp->r_npc += 4; in fpu_trap()
1518 if (rp->r_pc & 3) { /* offending address, if pc */ in fpu_trap()
1519 siginfo.si_addr = (caddr_t)rp->r_pc; in fpu_trap()
1521 if (calc_memaddr(rp, &badaddr) == SIMU_UNALIGN) in fpu_trap()
1524 siginfo.si_addr = (caddr_t)rp->r_pc; in fpu_trap()
1532 inst = fetch_user_instr((caddr_t)rp->r_pc); in fpu_trap()
1542 (void) die(type, rp, addr, 0); in fpu_trap()
1552 trap_cleanup(rp, fault, &siginfo, 0); in fpu_trap()
1603 nfload(struct regs *rp, int *instrp) in nfload() argument
1612 if (USERMODE(rp->r_tstate)) in nfload()
1613 instr = fetch_user_instr((caddr_t)rp->r_pc); in nfload()
1615 instr = *(int *)rp->r_pc; in nfload()
1626 asi = (uint_t)((rp->r_tstate >> TSTATE_ASI_SHIFT) & in nfload()
1630 if (calc_memaddr(rp, &addr) == SIMU_SUCCESS) { in nfload()
1632 as = USERMODE(rp->r_tstate) ? ttoproc(curthread)->p_as : &kas; in nfload()
1668 (void) putreg(&zero, rp, rd, &addr); in nfload()
1670 (void) putreg(&zero, rp, rd + 1, &addr); in nfload()
1672 rp->r_pc = rp->r_npc; in nfload()
1673 rp->r_npc += 4; in nfload()
1686 swap_nc(struct regs *rp, int instr) in swap_nc() argument
1694 if (calc_memaddr(rp, &addr) != SIMU_SUCCESS) in swap_nc()
1696 if (getreg(rp, rd, &rdata, &badaddr)) in swap_nc()
1708 (void) putreg(&mdata, rp, rd, &badaddr); in swap_nc()
1714 ldstub_nc(struct regs *rp, int instr) in ldstub_nc() argument
1723 if (calc_memaddr(rp, &addr) != SIMU_SUCCESS) in ldstub_nc()
1735 (void) putreg(&mdata, rp, rd, &badaddr); in ldstub_nc()
1893 get_accesstype(struct regs *rp) in get_accesstype() argument
1897 if (USERMODE(rp->r_tstate)) in get_accesstype()
1898 instr = fetch_user_instr((caddr_t)rp->r_pc); in get_accesstype()
1900 instr = *(uint32_t *)rp->r_pc; in get_accesstype()
1942 trap_async_berr_bto(int type, struct regs *rp) in trap_async_berr_bto() argument
1951 si.si_addr = (caddr_t)rp->r_pc; /* AFAR unavailable - future RFE */ in trap_async_berr_bto()