Annotation of cci/d/ioex/sys.c, revision 1.1.1.1

1.1       root        1: 
                      2: asm(".set NBPG,1024");
                      3: asm(".set TBIA,10");
                      4: asm(".set PCBB,14");
                      5: asm(".set SCBB,18");
                      6: asm(".set PACC,23");
                      7: asm(".set PADC,25");
                      8: 
                      9: long clock_cnt = 0;
                     10: 
                     11: clock()
                     12: {
                     13:        clock_cnt++;
                     14: }
                     15: 
                     16: 
                     17: /*     **********************************************************
                     18:        This routine saved a vector in SCB and set it to a new one
                     19:        input parameters :
                     20:        which1 : Vector no; 0,1,2,..X
                     21:        saved_vec : pointer to a location to saved original vector
                     22:        new_vec   : address of new handler
                     23:        **********************************************************
                     24: */
                     25: set_handler(which1,saved_vec,new_vec)
                     26: long which1, *saved_vec, new_vec; 
                     27: {      register long *st_base;
                     28: 
                     29:        asm("mfpr $SCBB,r12");          /* st_base = &_scb */
                     30:        st_base += which1;
                     31:        *saved_vec = *st_base;          /* Save original vector */
                     32:        *st_base = new_vec;
                     33: }
                     34: 
                     35: 
                     36: /*     ******************************************************************
                     37:        This routine set new PTE for any Page Table. If input var 'pte'==0
                     38:        then this routine will only READ the PTE specify.
                     39:        Input parameter :
                     40:        reg_no     : contain a number specify one of the following :
                     41:                     SBR,SLR,P0BR,P0LR,P1BR,P1LR,P2BR,P2LR
                     42:        old_pte    : pointer to location to save original PTE
                     43:                     (Used to READ pte when var 'pte'==0)
                     44:        which1     : PTE no; 0,1,2...X
                     45:        pte        : New pte
                     46:        ******************************************************************
                     47: */
                     48: fix_pte(reg_no,which1,old_pte,pte)
                     49: long reg_no, *old_pte, which1, pte;
                     50: {      
                     51:        register long *st_base;
                     52: 
                     53:        asm("mfpr 4(fp),r12");          /* st_base = base address  */
                     54:        st_base += which1;
                     55:        *old_pte = *st_base;            /* Save original PTE */
                     56:        if (pte) {
                     57:                *st_base = pte;                 /* Set new PTE */
                     58:                asm("mtpr $0,$TBIA");   /* Invalidate translation buffers */
                     59:                asm("mtpr $0,$PADC");           /* Purge all data cache */
                     60:                }
                     61: }
                     62: 
                     63: uncache(va)
                     64: long *va;
                     65: {
                     66:        asm("mtpr 4(fp),$0x1c");
                     67: }

unix.superglobalmegacorp.com

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