Annotation of cci/d/mem/test3.c, revision 1.1

1.1     ! root        1: /* 
        !             2: 
        !             3:        Adjacent Cell Disturb Test
        !             4:        
        !             5: */
        !             6: 
        !             7: #include "definitions"
        !             8: #define        size    (sizeof(testcase)/4)
        !             9: extern int     maxmem,endprog;
        !            10: extern struct OPTIONS OPTIONS;
        !            11: 
        !            12: stest3()
        !            13: {
        !            14:        register long *mcr = (long *)0xffffb000;
        !            15: 
        !            16:        if (OPTIONS.header)
        !            17:                writes("\n** Subtest3 : Adjacent cell disturbance test.");
        !            18:        writes("\nECC off");
        !            19:        *mcr = 0;
        !            20:        subtest3();
        !            21:        writes("\nECC on");
        !            22:        *mcr = 3;
        !            23:        subtest3();
        !            24:        *mcr = 0;
        !            25: }
        !            26: 
        !            27: subtest3()
        !            28: {
        !            29: 
        !            30:   register long pattern;
        !            31:   register long *curadd,*first,*last;
        !            32:   int  cnt,loop,patno;
        !            33: 
        !            34:   static unsigned testcase[] = { 0x00000000,
        !            35:                                0xffffffff};
        !            36: 
        !            37:        for(loop = size, patno = 0; (loop-- ); patno++ )        {
        !            38:                pattern = testcase[patno];      /* background filled  */
        !            39:                for(curadd = (long *)endprog;curadd <= (long *)maxmem;curadd++) 
        !            40:                        *curadd = pattern; 
        !            41:                for(curadd=(long *)endprog;curadd <= (long *)maxmem;curadd++) {
        !            42:                        /* 
        !            43:                           complement test cell and check
        !            44:                           adjacent cells (before) 
        !            45:                        */
        !            46: start:                 *curadd = ~pattern;
        !            47:                        last = curadd;
        !            48:                        for(last--,cnt = 2;(cnt--) && 
        !            49:                                (last >= (long *)endprog);last--) { 
        !            50: error1:                                if (*last != pattern)
        !            51:                                        if (error(last,pattern)) goto error1;
        !            52:                                }  
        !            53:                        /* 
        !            54:                           check adjacent cells (after) 
        !            55:                        */
        !            56:                        first = curadd;
        !            57:                        for(first++,cnt = 2;(cnt--) && 
        !            58:                                (first <= (long *)maxmem);first++ ) {
        !            59: error2:                                if (*first != pattern)
        !            60:                                        if (error(first,pattern)) goto error2;  
        !            61:                                }
        !            62:                        if (*curadd != ~pattern)
        !            63:                                if (error(curadd,~pattern)) goto start;
        !            64:                        *curadd = pattern;
        !            65:                }
        !            66:         }
        !            67: }

unix.superglobalmegacorp.com

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