|
|
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.