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