cpu% ktrace /amd64/9pc64 0xffffffff8011757e 0xffffffff800495a0 <606 callwithureg(_dumpstack); 607 } 608 609 static void 610 debugexc(Ureg *ureg, void *) 611 { acid: acid: /sys/src/9/port/devcons.c:239 234 splx(s); 235 prflush(); 236 dumpstack(); 237 238 /* reboot cpu servers and headless machines when not debugging */ >239 if(getconf("*debug") == nil) 240 if(cpuserver || !conf.monitor) 241 exit(1); 242 243 /* otherwise, just hang */ 244 while(islo()) idlehands(); acid: acid: /sys/src/9/pc64/trap.c:717 712 if(n < 0){ 713 if(!user){ 714 dumpregs(ureg); 715 panic("fault: %#p", addr); 716 } >717 checkpages(); 718 sprint(buf, "sys: trap: fault %s addr=%#p", 719 read ? "read" : "write", addr); 720 postnote(up, 1, buf, NDebug); 721 } 722 if(!user) poperror(); acid: acid: /sys/src/9/pc64/trap.c:358 353 } 354 if(ctl->isr) 355 ctl->isr(vno); 356 for(v = ctl; v != nil; v = v->next){ 357 if(v->f) >358 v->f(ureg, v->a); 359 } 360 if(ctl->eoi) 361 ctl->eoi(vno); 362 363 if(ctl->isintr){ acid: acid: /sys/src/9/pc64/l.s:964 959 PUSHQ SP 960 CALL trap(SB) 961 962 TEXT _intrr(SB), 1, -4 963 _intrestore: >964 POPQ AX 965 966 POPQ AX 967 POPQ BX 968 POPQ CX 969 POPQ DX acid: acid: acid: /sys/src/9/port/devtls.c:326 321 break; 322 } 323 perm = 0444; 324 if(TYPE(q) == Qclonus) 325 perm = 0555; >326 devdir(c, q, tlsnames[TYPE(q)], 0, eve, perm, dp); 327 return 1; 328 } 329 s -= 3; 330 if(s >= tdhiwat) 331 return -1; acid: acid: /sys/src/9/port/page.c:372 367 ptealloc(void) 368 { 369 Pte *new; 370 371 new = smalloc(sizeof(Pte)); >372 new->first = &new->pages[PTEPERTAB]; 373 new->last = new->pages; 374 return new; 375 } 376 377 void acid: acid: /sys/src/9/port/fault.c:168 163 panic("fault"); 164 return -1; 165 166 case SG_TEXT: /* Demand load */ 167 if(pagedout(*pg)) >168 pio(s, addr, soff, pg); 169 170 mmuphys = PPN((*pg)->pa) | PTERONLY | PTECACHED | PTEVALID; 171 (*pg)->modref = PG_REF; 172 break; 173 acid: acid: /sys/src/9/port/fault.c:320 315 if((attr & SG_TYPE) == SG_PHYSICAL){ 316 mapphys(s, addr, attr); 317 break; 318 } 319 >320 if(fixfault(s, addr, read) == 0) 321 break; 322 323 splhi(); 324 switch(up->procctl){ 325 case Proc_exitme: acid: acid: /sys/src/9/pc64/trap.c:712 707 up->insyscall = insyscall; 708 splx(s); 709 nexterror(); 710 } 711 n = fault(addr, ureg->pc, read); >712 if(n < 0){ 713 if(!user){ 714 dumpregs(ureg); 715 panic("fault: %#p", addr); 716 } 717 checkpages(); acid: acid: /sys/src/9/pc64/trap.c:358 353 } 354 if(ctl->isr) 355 ctl->isr(vno); 356 for(v = ctl; v != nil; v = v->next){ 357 if(v->f) >358 v->f(ureg, v->a); 359 } 360 if(ctl->eoi) 361 ctl->eoi(vno); 362 363 if(ctl->isintr){ acid: acid: /sys/src/9/pc64/l.s:964 959 PUSHQ SP 960 CALL trap(SB) 961 962 TEXT _intrr(SB), 1, -4 963 _intrestore: >964 POPQ AX 965 966 POPQ AX 967 POPQ BX 968 POPQ CX 969 POPQ DX acid: acid: acid: acid: acid: