- } else {
- vp = btop((int)rcr2());
- if (vp >= dptov(u.u_procp, u.u_procp->p_dsize)
- && vp < sptov(u.u_procp, u.u_procp->p_ssize-1)){
- if (grow((unsigned)locr0[tESP])
- || grow(rcr2()))
- goto out;
- else if (nofault) {
- locr0[tEIP] = nofault;
- return;
- }
-#ifdef DEBUG
-pg("didnt ");
-printf("\npc:%x cs:%x ds:%x eflags:%x isp %x\n",
- frame.tf_eip, frame.tf_cs, frame.tf_ds, frame.tf_eflags,
- frame.tf_isp);
-printf("edi %x esi %x ebp %x ebx %x esp %x\n",
- frame.tf_edi, frame.tf_esi, frame.tf_ebp,
- frame.tf_ebx, frame.tf_esp);
-printf("edx %x ecx %x eax %x\n",
- frame.tf_edx, frame.tf_ecx, frame.tf_eax);
-printf("ec %x type %x cr0 %x cr2 %x cpl %x \n",
- frame.tf_err, frame.tf_trapno, rcr0(), rcr2(), cpl);
-#endif
- i = SIGSEGV;
- break;
- }
- i = u.u_error;
- pagein(rcr2(), 0);
- u.u_error = i;
- if (type == T_PAGEFLT) return;