|
|
1.1 ! root 1: ! 2: #include "dmp_defs.h" ! 3: ! 4: /************************************************************************* ! 5: * ! 6: * This routine is called when the stack is corrupted during a page ! 7: * fault. We assume that it's corrupted - the instruction PC that caused ! 8: * the page fault isn't the instruction under test. If someone else is ! 9: * causing page faults then we're all screwed up anyway. ! 10: * This routine will print an error message if they are enabled. ! 11: * ! 12: * stack: fault type = xxxxxxxx, error after fault #xx ! 13: * fault address = xxxxxxxx, total faults expected = xx ! 14: * instruction PC = xxxxxxxx, expected PC = xxxxxxxx ! 15: * PSL on stack = xxxxxxxx ! 16: * ! 17: *************************************************************************/ ! 18: bad_trans_stack() ! 19: { ! 20: if( prt_error ) { ! 21: prt_dmp_er_msg(" - STACK CORRUPTED AFTER A PAGE FAULT"); ! 22: writes("stack: fault type = "); ! 23: write32h( pop_val_1 ); ! 24: writes(", error after fault #"); ! 25: writed( no_page_faults ); ! 26: writes("\n fault address = "); ! 27: write32h( pop_val_2 ); ! 28: writes(", total faults expected = "); ! 29: writed( exp_page_faults ); ! 30: writes("\n instruction PC = "); ! 31: write32h( pop_val_3 ); ! 32: writes(", expected PC = "); ! 33: write32h( code_addr ); ! 34: writes("\n PSL on stack = "); ! 35: write32h( pop_val_4 ); ! 36: writec('\n'); ! 37: } ! 38: if( halt_flg ) { ! 39: asm("movl _test_no,r0"); /* r0 = test number */ ! 40: asm("movl _addr_code,r1"); /* r1 = addr mode code */ ! 41: asm("movl $8,r2"); /* r2 = error code ( 8 ) */ ! 42: asm("movl _cycle,r3"); /* r3 = cycle count */ ! 43: asm("movl _pop_val_1,r4"); /* r4 = fault type */ ! 44: asm("movl _pop_val_2,r5"); /* r5 = fault address */ ! 45: asm("movl _pop_val_3,r6"); /* r6 = PC on stack */ ! 46: asm("movl _pop_val_4,r7"); /* r7 = psl on stack */ ! 47: asm("movl _code_addr,r8"); /* r8 = PC expected */ ! 48: asm("movl _no_page_faults,r9"); /* r9 = last page fault */ ! 49: asm("movl _exp_page_faults,r10"); /* r10 = # faults expected */ ! 50: asm("movl _index,r11"); /* r11 = data index */ ! 51: asm("halt"); ! 52: } ! 53: if( loop_on_err ) ! 54: force_loop = TRUE; /* set loop flag */ ! 55: asm("jmp _ex_code_return"); /* return to "run_code" */ ! 56: } ! 57: ! 58:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.