Lines Matching refs:vaddr

257 send_sigsegv(intptr_t vaddr, uint32_t exccode, struct trapframe *tf,  in send_sigsegv()  argument
263 tf->tf_regs[_R_BADVADDR] = vaddr; in send_sigsegv()
268 ksi.ksi_addr = (void *)vaddr; in send_sigsegv()
290 intptr_t vaddr; in mips_emul_lwc0() local
295 vaddr = tf->tf_regs[(inst>>21)&0x1F] + offset; in mips_emul_lwc0()
298 if (vaddr < 0 || (vaddr & 3)) { in mips_emul_lwc0()
299 send_sigsegv(vaddr, T_ADDR_ERR_LD, tf, cause); in mips_emul_lwc0()
305 if (copyin((void *)vaddr, t, 4) != 0) { in mips_emul_lwc0()
306 send_sigsegv(vaddr, T_TLB_LD_MISS, tf, cause); in mips_emul_lwc0()
311 llstate.addr = vaddr; in mips_emul_lwc0()
323 intptr_t vaddr; in mips_emul_swc0() local
329 vaddr = tf->tf_regs[(inst>>21)&0x1F] + offset; in mips_emul_swc0()
332 if (vaddr < 0 || (vaddr & 3)) { in mips_emul_swc0()
333 send_sigsegv(vaddr, T_ADDR_ERR_LD, tf, cause); in mips_emul_swc0()
343 if (curlwp == llstate.lwp && vaddr == llstate.addr) { in mips_emul_swc0()
349 if (copyin((void *)vaddr, &value, 4) != 0) { in mips_emul_swc0()
350 send_sigsegv(vaddr, T_TLB_LD_MISS, tf, cause); in mips_emul_swc0()
355 if (copyout(t, (void *)vaddr, 4) != 0) { in mips_emul_swc0()
356 send_sigsegv(vaddr, T_TLB_ST_MISS, in mips_emul_swc0()
403 const intptr_t vaddr = tf->tf_regs[instfmt.RType.rs] in mips_emul_special3() local
407 if (vaddr < 0) { in mips_emul_special3()
409 send_sigsegv(vaddr, T_ADDR_ERR_LD, tf, cause); in mips_emul_special3()
416 if (vaddr & 7) in mips_emul_special3()
418 error = copyin((void *)vaddr, &tmp64, sizeof(tmp64)); in mips_emul_special3()
425 if (vaddr & 3) in mips_emul_special3()
427 error = copyin((void *)vaddr, &tmp32, sizeof(tmp32)); in mips_emul_special3()
433 if (vaddr & 1) in mips_emul_special3()
435 error = copyin((void *)vaddr, &tmp16, sizeof(tmp16)); in mips_emul_special3()
441 error = copyin((void *)vaddr, &tmp8, sizeof(tmp8)); in mips_emul_special3()
449 send_sigsegv(vaddr, T_TLB_LD_MISS, tf, cause); in mips_emul_special3()
486 intptr_t vaddr; in mips_emul_lwc1() local
493 vaddr = tf->tf_regs[(inst>>21)&0x1F] + offset; in mips_emul_lwc1()
496 if (vaddr < 0 || (vaddr & 3)) { in mips_emul_lwc1()
497 send_sigsegv(vaddr, T_ADDR_ERR_LD, tf, cause); in mips_emul_lwc1()
504 if (copyin((void *)vaddr, t, 4) != 0) { in mips_emul_lwc1()
505 send_sigsegv(vaddr, T_TLB_LD_MISS, tf, cause); in mips_emul_lwc1()
519 vaddr = tf->tf_regs[_R_PC]; /* XXX truncates to 32 bits */ in mips_emul_lwc1()
520 inst = ufetch_uint32((uint32_t *)vaddr); in mips_emul_lwc1()
525 vaddr = tf->tf_regs[(inst>>21)&0x1F] + offset; in mips_emul_lwc1()
528 if (vaddr < 0 || (vaddr & 3)) { in mips_emul_lwc1()
529 send_sigsegv(vaddr, T_ADDR_ERR_LD, tf, cause); in mips_emul_lwc1()
536 if (copyin((void *)vaddr, t, 4) != 0) { in mips_emul_lwc1()
537 send_sigsegv(vaddr, T_TLB_LD_MISS, tf, cause); in mips_emul_lwc1()
549 intptr_t vaddr; in mips_emul_ldc1() local
554 vaddr = tf->tf_regs[(inst>>21)&0x1F] + offset; in mips_emul_ldc1()
557 if (vaddr < 0 || (vaddr & 7)) { in mips_emul_ldc1()
558 send_sigsegv(vaddr, T_ADDR_ERR_LD, tf, cause); in mips_emul_ldc1()
565 if (copyin((void *)vaddr, t, 8) != 0) { in mips_emul_ldc1()
566 send_sigsegv(vaddr, T_TLB_LD_MISS, tf, cause); in mips_emul_ldc1()
576 intptr_t vaddr; in mips_emul_swc1() local
583 vaddr = tf->tf_regs[(inst>>21)&0x1F] + offset; in mips_emul_swc1()
586 if (vaddr < 0 || (vaddr & 3)) { in mips_emul_swc1()
587 send_sigsegv(vaddr, T_ADDR_ERR_ST, tf, cause); in mips_emul_swc1()
594 if (copyout(t, (void *)vaddr, 4) != 0) { in mips_emul_swc1()
595 send_sigsegv(vaddr, T_TLB_ST_MISS, tf, cause); in mips_emul_swc1()
609 vaddr = tf->tf_regs[_R_PC]; /* XXX truncates to 32 bits */ in mips_emul_swc1()
610 inst = ufetch_uint32((uint32_t *)vaddr); in mips_emul_swc1()
615 vaddr = tf->tf_regs[(inst>>21)&0x1F] + offset; in mips_emul_swc1()
618 if (vaddr < 0 || (vaddr & 3)) { in mips_emul_swc1()
619 send_sigsegv(vaddr, T_ADDR_ERR_ST, tf, cause); in mips_emul_swc1()
626 if (copyout(t, (void *)vaddr, 4) != 0) { in mips_emul_swc1()
627 send_sigsegv(vaddr, T_TLB_ST_MISS, tf, cause); in mips_emul_swc1()
639 intptr_t vaddr; in mips_emul_sdc1() local
644 vaddr = tf->tf_regs[(inst>>21)&0x1F] + offset; in mips_emul_sdc1()
647 if (vaddr < 0 || (vaddr & 7)) { in mips_emul_sdc1()
648 send_sigsegv(vaddr, T_ADDR_ERR_ST, tf, cause); in mips_emul_sdc1()
655 if (copyout(t, (void *)vaddr, 8) != 0) { in mips_emul_sdc1()
656 send_sigsegv(vaddr, T_TLB_ST_MISS, tf, cause); in mips_emul_sdc1()
666 intptr_t vaddr; in mips_emul_lb() local
671 vaddr = tf->tf_regs[(inst>>21)&0x1F] + offset; in mips_emul_lb()
674 if (vaddr < 0) { in mips_emul_lb()
675 send_sigsegv(vaddr, T_ADDR_ERR_LD, tf, cause); in mips_emul_lb()
679 if (copyin((void *)vaddr, &x, 1) != 0) { in mips_emul_lb()
680 send_sigsegv(vaddr, T_TLB_LD_MISS, tf, cause); in mips_emul_lb()
692 intptr_t vaddr; in mips_emul_lbu() local
697 vaddr = tf->tf_regs[(inst>>21)&0x1F] + offset; in mips_emul_lbu()
700 if (vaddr < 0) { in mips_emul_lbu()
701 send_sigsegv(vaddr, T_ADDR_ERR_LD, tf, cause); in mips_emul_lbu()
705 if (copyin((void *)vaddr, &x, 1) != 0) { in mips_emul_lbu()
706 send_sigsegv(vaddr, T_TLB_LD_MISS, tf, cause); in mips_emul_lbu()
718 intptr_t vaddr; in mips_emul_lh() local
723 vaddr = tf->tf_regs[(inst>>21)&0x1F] + offset; in mips_emul_lh()
726 if (vaddr < 0 || (vaddr & 1)) { in mips_emul_lh()
727 send_sigsegv(vaddr, T_ADDR_ERR_LD, tf, cause); in mips_emul_lh()
731 if (copyin((void *)vaddr, &x, 2) != 0) { in mips_emul_lh()
732 send_sigsegv(vaddr, T_TLB_LD_MISS, tf, cause); in mips_emul_lh()
744 intptr_t vaddr; in mips_emul_lhu() local
749 vaddr = tf->tf_regs[(inst>>21)&0x1F] + offset; in mips_emul_lhu()
752 if (vaddr < 0 || (vaddr & 1)) { in mips_emul_lhu()
753 send_sigsegv(vaddr, T_ADDR_ERR_LD, tf, cause); in mips_emul_lhu()
757 if (copyin((void *)vaddr, &x, 2) != 0) { in mips_emul_lhu()
758 send_sigsegv(vaddr, T_TLB_LD_MISS, tf, cause); in mips_emul_lhu()
770 intptr_t vaddr; in mips_emul_lw() local
775 vaddr = tf->tf_regs[(inst>>21)&0x1F] + offset; in mips_emul_lw()
778 if (vaddr < 0 || (vaddr & 3)) { in mips_emul_lw()
779 send_sigsegv(vaddr, T_ADDR_ERR_LD, tf, cause); in mips_emul_lw()
783 if (copyin((void *)vaddr, &x, 4) != 0) { in mips_emul_lw()
784 send_sigsegv(vaddr, T_TLB_LD_MISS, tf, cause); in mips_emul_lw()
796 intptr_t vaddr; in mips_emul_lwl() local
801 vaddr = tf->tf_regs[(inst>>21)&0x1F] + offset; in mips_emul_lwl()
804 if (vaddr < 0) { in mips_emul_lwl()
805 send_sigsegv(vaddr, T_ADDR_ERR_LD, tf, cause); in mips_emul_lwl()
809 if (copyin((void *)(vaddr & ~3), &a, 4) != 0) { in mips_emul_lwl()
810 send_sigsegv(vaddr, T_TLB_LD_MISS, tf, cause); in mips_emul_lwl()
816 shift = (3 - (vaddr & 0x00000003)) * 8; in mips_emul_lwl()
829 intptr_t vaddr; in mips_emul_lwr() local
834 vaddr = tf->tf_regs[(inst>>21)&0x1F] + offset; in mips_emul_lwr()
837 if (vaddr & 0x80000000) { in mips_emul_lwr()
838 send_sigsegv(vaddr, T_ADDR_ERR_LD, tf, cause); in mips_emul_lwr()
842 if (copyin((void *)(vaddr & ~3), &a, 4) != 0) { in mips_emul_lwr()
843 send_sigsegv(vaddr, T_TLB_LD_MISS, tf, cause); in mips_emul_lwr()
849 shift = (vaddr & 0x00000003) * 8; in mips_emul_lwr()
863 intptr_t vaddr; in mips_emul_lwu() local
868 vaddr = tf->tf_regs[(inst>>21)&0x1F] + offset; in mips_emul_lwu()
871 if (vaddr > VM_MAX_ADDRESS || vaddr & 0x3) { in mips_emul_lwu()
872 send_sigsegv(vaddr, T_ADDR_ERR_LD, tf, cause); in mips_emul_lwu()
876 if (copyin((void *)vaddr, &x, 4) != 0) { in mips_emul_lwu()
877 send_sigsegv(vaddr, T_TLB_LD_MISS, tf, cause); in mips_emul_lwu()
889 intptr_t vaddr; in mips_emul_ld() local
893 vaddr = tf->tf_regs[(inst>>21)&0x1F] + offset; in mips_emul_ld()
896 if (vaddr > VM_MAX_ADDRESS || vaddr & 0x7) { in mips_emul_ld()
897 send_sigsegv(vaddr, T_ADDR_ERR_LD, tf, cause); in mips_emul_ld()
901 if (copyin((void *)vaddr, &(tf->tf_regs[(inst>>16)&0x1F]), 8) != 0) { in mips_emul_ld()
902 send_sigsegv(vaddr, T_TLB_LD_MISS, tf, cause); in mips_emul_ld()
912 intptr_t vaddr; in mips_emul_ldl() local
918 vaddr = tf->tf_regs[(inst>>21)&0x1F] + offset; in mips_emul_ldl()
921 if (vaddr & 0x80000000) { in mips_emul_ldl()
922 send_sigsegv(vaddr, T_ADDR_ERR_LD, tf, cause); in mips_emul_ldl()
926 if (copyin((void *)(vaddr & ~0x7), &a, 8) != 0) { in mips_emul_ldl()
927 send_sigsegv(vaddr, T_TLB_LD_MISS, tf, cause); in mips_emul_ldl()
933 shift = (7 - (vaddr & 0x7)) * 8; in mips_emul_ldl()
946 intptr_t vaddr; in mips_emul_ldr() local
952 vaddr = tf->tf_regs[(inst>>21)&0x1F] + offset; in mips_emul_ldr()
955 if (vaddr < 0) { in mips_emul_ldr()
956 send_sigsegv(vaddr, T_ADDR_ERR_LD, tf, cause); in mips_emul_ldr()
960 if (copyin((void *)(vaddr & ~0x7), &a, 8) != 0) { in mips_emul_ldr()
961 send_sigsegv(vaddr, T_TLB_LD_MISS, tf, cause); in mips_emul_ldr()
967 shift = (vaddr & 0x7) * 8; in mips_emul_ldr()
981 intptr_t vaddr; in mips_emul_sb() local
985 vaddr = tf->tf_regs[(inst>>21)&0x1F] + offset; in mips_emul_sb()
988 if (vaddr < 0) { in mips_emul_sb()
989 send_sigsegv(vaddr, T_ADDR_ERR_ST, tf, cause); in mips_emul_sb()
993 if (ustore_uint8((void *)vaddr, tf->tf_regs[(inst>>16)&0x1F]) < 0) { in mips_emul_sb()
994 send_sigsegv(vaddr, T_TLB_ST_MISS, tf, cause); in mips_emul_sb()
1004 intptr_t vaddr; in mips_emul_sh() local
1008 vaddr = tf->tf_regs[(inst>>21)&0x1F] + offset; in mips_emul_sh()
1011 if (vaddr < 0 || vaddr & 1) { in mips_emul_sh()
1012 send_sigsegv(vaddr, T_ADDR_ERR_ST, tf, cause); in mips_emul_sh()
1016 if (ustore_uint16((void *)vaddr, tf->tf_regs[(inst>>16)&0x1F]) < 0) { in mips_emul_sh()
1017 send_sigsegv(vaddr, T_TLB_ST_MISS, tf, cause); in mips_emul_sh()
1027 intptr_t vaddr; in mips_emul_sw() local
1031 vaddr = tf->tf_regs[(inst>>21)&0x1F] + offset; in mips_emul_sw()
1034 if (vaddr < 0 || (vaddr & 3)) { in mips_emul_sw()
1035 send_sigsegv(vaddr, T_ADDR_ERR_ST, tf, cause); in mips_emul_sw()
1039 if (ustore_uint32((void *)vaddr, tf->tf_regs[(inst>>16)&0x1F]) < 0) { in mips_emul_sw()
1040 send_sigsegv(vaddr, T_TLB_ST_MISS, tf, cause); in mips_emul_sw()
1050 intptr_t vaddr; in mips_emul_swl() local
1055 vaddr = tf->tf_regs[(inst>>21)&0x1F] + offset; in mips_emul_swl()
1058 if (vaddr < 0) { in mips_emul_swl()
1059 send_sigsegv(vaddr, T_ADDR_ERR_ST, tf, cause); in mips_emul_swl()
1063 if (copyin((void *)(vaddr & ~3), &a, 4) != 0) { in mips_emul_swl()
1064 send_sigsegv(vaddr, T_TLB_ST_MISS, tf, cause); in mips_emul_swl()
1070 shift = (3 - (vaddr & 3)) * 8; in mips_emul_swl()
1075 if (ustore_uint32((void *)vaddr, a) < 0) { in mips_emul_swl()
1076 send_sigsegv(vaddr, T_TLB_ST_MISS, tf, cause); in mips_emul_swl()
1086 intptr_t vaddr; in mips_emul_swr() local
1091 vaddr = tf->tf_regs[(inst>>21)&0x1F] + offset; in mips_emul_swr()
1094 if (vaddr < 0) { in mips_emul_swr()
1095 send_sigsegv(vaddr, T_ADDR_ERR_ST, tf, cause); in mips_emul_swr()
1099 if (copyin((void *)(vaddr & ~3), &a, 4) != 0) { in mips_emul_swr()
1100 send_sigsegv(vaddr, T_TLB_ST_MISS, tf, cause); in mips_emul_swr()
1106 shift = (vaddr & 3) * 8; in mips_emul_swr()
1111 if (ustore_uint32((void *)vaddr, a) < 0) { in mips_emul_swr()
1112 send_sigsegv(vaddr, T_TLB_ST_MISS, tf, cause); in mips_emul_swr()
1123 intptr_t vaddr; in mips_emul_sd() local
1127 vaddr = tf->tf_regs[(inst>>21)&0x1F] + offset; in mips_emul_sd()
1130 if (vaddr < 0 || vaddr & 0x7) { in mips_emul_sd()
1131 send_sigsegv(vaddr, T_ADDR_ERR_ST, tf, cause); in mips_emul_sd()
1135 if (copyout((void *)vaddr, &tf->tf_regs[(inst>>16)&0x1F], 8) < 0) { in mips_emul_sd()
1136 send_sigsegv(vaddr, T_TLB_ST_MISS, tf, cause); in mips_emul_sd()
1146 intptr_t vaddr; in mips_emul_sdl() local
1152 vaddr = tf->tf_regs[(inst>>21)&0x1F] + offset; in mips_emul_sdl()
1155 if (vaddr < 0) { in mips_emul_sdl()
1156 send_sigsegv(vaddr, T_ADDR_ERR_ST, tf, cause); in mips_emul_sdl()
1160 if (copyin((void *)(vaddr & ~0x7), &a, 8) != 0) { in mips_emul_sdl()
1161 send_sigsegv(vaddr, T_TLB_ST_MISS, tf, cause); in mips_emul_sdl()
1167 shift = (7 - (vaddr & 7)) * 8; in mips_emul_sdl()
1172 if (copyout((void *)(vaddr & ~0x7), &a, 8) != 0) { in mips_emul_sdl()
1173 send_sigsegv(vaddr, T_TLB_ST_MISS, tf, cause); in mips_emul_sdl()
1183 intptr_t vaddr; in mips_emul_sdr() local
1189 vaddr = tf->tf_regs[(inst>>21)&0x1F] + offset; in mips_emul_sdr()
1192 if (vaddr < 0) { in mips_emul_sdr()
1193 send_sigsegv(vaddr, T_ADDR_ERR_ST, tf, cause); in mips_emul_sdr()
1197 if (copyin((void *)(vaddr & ~0x7), &a, 8) != 0) { in mips_emul_sdr()
1198 send_sigsegv(vaddr, T_TLB_ST_MISS, tf, cause); in mips_emul_sdr()
1204 shift = (vaddr & 7) * 8; in mips_emul_sdr()
1209 if (copyout((void *)(vaddr & ~0x7), &a, 8) != 0) { in mips_emul_sdr()
1210 send_sigsegv(vaddr, T_TLB_ST_MISS, tf, cause); in mips_emul_sdr()