Annotation of cci/d/dmp4/bad_trans_stack.c, revision 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.