Annotation of cci/d/dmp4/bad_trans_stack.c, revision 1.1.1.1

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: 

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.