Annotation of cci/d/dmp4/init.x, revision 1.1

1.1     ! root        1: /************************************************************************/
        !             2: /*                          Revision History                           */
        !             3: /*                             ----------                              */
        !             4: /*     Rev 1.0                                          1 Aug 85       */
        !             5: /*                                                                     */
        !             6: /*     Initial release of the diagnostic                               */
        !             7: /*                                                                     */
        !             8: /************************************************************************/
        !             9: 
        !            10: #      INIT.X for the Demand Pageing Tests                             
        !            11: #
        !            12: #      This file is a diagnostic version of locore.s.                  
        !            13: #      It contains the following:                                      
        !            14: #      *system data area = scb, dump buffer, interrupt stack,          
        !            15: #      *system page table,user page tables,pcbs,iomap, & io buffers.   
        !            16: #                                                                      
        !            17: #      *system code = interrupt vectors, initialization of system data,
        !            18: #      *memory size calculation,initialization of SPT, zeroing of      
        !            19: #      *unused memory, & loading of SBR & SLR.                         
        !            20: #      *                                                               
        !            21: #      *at the end of this code, you are ready to go to virtual mode.  
        !            22: #      * --- GOOD LUCK!                                                
        !            23: #
        !            24: ##########################################################################
        !            25: #
        !            26: #   6-Mar-85 :  changed to user mode execution
        !            27: #  11-Mar-85 :  moved mode changeing from here to RUN_CODE
        !            28: #  17-Jul-85 :  added "mtpr" test for fpp/no-fpp wcs
        !            29: ##########################################################################
        !            30: 
        !            31: 
        !            32: /*     privileged registers addresses  */
        !            33: #include       "prvreg.h"
        !            34:        
        !            35: /*     program status long word definition     */
        !            36: #include       "psl.h" 
        !            37: 
        !            38: /*     page table entry definition             */
        !            39: #include       "pte.h"
        !            40:        
        !            41: /*     process control block offsets   */
        !            42: #include       "pcboffset.h"   
        !            43: 
        !            44: /*     fundamental constants for globl use     */
        !            45: #include       "const.h"       
        !            46: 
        !            47: /*     system control block offsets*/
        !            48: #include       "scboffset.h"
        !            49: /*     SPT offsets                             */
        !            50: #include       "sptoffset.h"
        !            51: 
        !            52: /*     trap numbers*/
        !            53: #include       "trap.h"        
        !            54: 
        !            55: 
        !            56: #define V_TRAP         0
        !            57: #define V_SYSCALL      4
        !            58: 
        !            59:        .set    HIGH,0x1f       /*mask for disabling all interrupts     */
        !            60:        .set    MCKVEC,4        /*scb offset for machinecheck vector    */
        !            61:        .set    NISP,2          /*no. of interrupt stack pages          */
        !            62:        .set    DONE,255        /*user process done code                */
        !            63:        .set    TTRAP,0x32
        !            64:        .set    PRIVS,0x2c
        !            65: 
        !            66:        .text
        !            67: 
        !            68:                /* PROCESSOR STORAGE AREA               */
        !            69: #include "pstorage.s"
        !            70: 
        !            71:        .globl  _Entry
        !            72: _Entry:
        !            73:        jmp     start
        !            74:        .space  (1024-6)
        !            75: 
        !            76: /*             globl dump buffer to be used for communication          */
        !            77: /*             between tests & interrupt handlers, & other misc.       */
        !            78: /*             purposes.                                               */
        !            79:                                
        !            80: /*     Physical page 3 : Used for global variables             */
        !            81: 
        !            82:        .set    NLWU,35         /*no. of longwords already used         */
        !            83:                                /*this must be changed when you define  */
        !            84:                                /*additional variables below before     */
        !            85:                                /*_dbuf                                 */
        !            86:        .globl  _Codek
        !            87: _Codek:        .long   0               /* Code cache key */
        !            88: 
        !            89:        .globl  _restart
        !            90: _restart:
        !            91:        .space  4               /*contains restart address for restarting*/
        !            92:                                /*after power is restored (loaded by    */
        !            93:                                /*power fail interrupt handler & used by*/
        !            94:                                /*CPU 2                                 */      
        !            95:        .globl  _maxmem
        !            96: _maxmem:
        !            97:        .space  4               /*memory size in no of bytes            */
        !            98: 
        !            99:        .globl  _maxpages
        !           100: _maxpages:
        !           101:        .space  4               /*memory size in no. of physical pages  */
        !           102: 
        !           103:        .globl  _lastadd
        !           104: _lastadd:
        !           105:        .space  4               /*address of the last long word         */
        !           106: 
        !           107:        .globl  _unused
        !           108: _unused:
        !           109:        .space  4               /*first unused page in system space     */
        !           110: 
        !           111:        .globl  _ctlblk
        !           112: _ctlblk:
        !           113:        .long   0               /* pointer to SCB */
        !           114: 
        !           115:        .globl  _savvec0        /*save vectors area                     */
        !           116: _savvec0:
        !           117:        .space  4
        !           118: 
        !           119:        .globl  _savvec1        /*save vectors area                     */
        !           120: _savvec1:
        !           121:        .space  4
        !           122: 
        !           123:        .globl  _savvec2        /*save vectors area                     */
        !           124: _savvec2:
        !           125:        .space  4
        !           126: 
        !           127:        .globl  _savvec3        /*save vectors area                     */
        !           128: _savvec3:
        !           129:        .space  4
        !           130: 
        !           131:        .globl  _savvec4        /*save vectors area                     */
        !           132: _savvec4:
        !           133:        .space  4
        !           134: 
        !           135:        .globl  _savvec5        /*save vectors area                     */
        !           136: _savvec5:
        !           137:        .space  4
        !           138:        .globl  _savvec6        /*save vectors area                     */
        !           139: _savvec6:
        !           140:        .space  4
        !           141:        .globl  _savvec7        /*save vectors area                     */
        !           142: _savvec7:
        !           143:        .space  4
        !           144: 
        !           145:        .globl  _savvec8        /*save vectors area                     */
        !           146: _savvec8:
        !           147:        .space  4
        !           148: 
        !           149:        .globl  _r_no
        !           150: _r_no:
        !           151:        .long   0
        !           152:        .globl  _pt_base
        !           153: _pt_base:
        !           154:        .long   0
        !           155:        .globl  _saved_psl
        !           156: _saved_psl:
        !           157:        .long   0
        !           158:        .globl  _saved_sp
        !           159: _saved_sp:
        !           160:        .long   0
        !           161:        .globl  _saved_fp
        !           162: _saved_fp:
        !           163:        .long   0
        !           164:        .globl  _ret_adr
        !           165: _ret_adr:
        !           166:        .long   0
        !           167:        .globl  _exp_par0
        !           168: _exp_par0:
        !           169:        .long   0
        !           170:        .globl  _exp_par1
        !           171: _exp_par1:
        !           172:        .long   0
        !           173:        .globl  _f_vaddr
        !           174: _f_vaddr:
        !           175:        .long   0                       /* VA that caused fault */
        !           176: 
        !           177:        .globl  _f_ptr
        !           178: _f_ptr:
        !           179:        .long   0                       /* Pointer to fault parameters */
        !           180:        .globl  _df_cnt
        !           181: _df_cnt:
        !           182:        .long   0                       /* Count of data fault */
        !           183: 
        !           184:        .globl  _if_cnt
        !           185: _if_cnt:
        !           186:        .long   0                       /* Count of Instruction fault */
        !           187: 
        !           188:        .globl  _newepc
        !           189: _newepc:
        !           190:        .long   0
        !           191: 
        !           192:        .globl  _errcnt
        !           193: _errcnt:
        !           194:        .long   0
        !           195: 
        !           196:        .globl  _clk_cnt
        !           197: _clk_cnt:
        !           198:        .long   0
        !           199: 
        !           200:        .globl  _ttcnt
        !           201: _ttcnt:
        !           202:        .long   0                       /* Count of Trap exception */
        !           203:        .globl  _trcnt
        !           204: _trcnt:
        !           205:        .long   0                       /* Count of Translation fault */
        !           206: 
        !           207:        .globl  _Ufpte
        !           208: _Ufpte: .long  0
        !           209:        .globl  _Ulpte
        !           210: _Ulpte: .long  0
        !           211: 
        !           212:        .globl  _dbuf           /*dump buffer left out of 1K            */
        !           213: _dbuf:
        !           214:        .space  NBPG - (NLWU *4)
        !           215: edbuf:
        !           216: 
        !           217: 
        !           218:        .globl  _intstack       /* Interrupt stack                      */
        !           219: _intstack:                     /* Physical pages 4 & 5                 */
        !           220:        .space  NISP*NBPG
        !           221: eintstack:
        !           222: 
        !           223: 
        !           224:        .set    SYSPTSIZE,512   /* No. of entries in SPT                */
        !           225:  
        !           226: /*
        !           227:        System Page Table -- physical page 6 & 7
        !           228: */ 
        !           229:        .align  2
        !           230:        .globl  _Sysmap
        !           231: _Sysmap:
        !           232:        .space  SYSPTSIZE*4     /* 512 max pages allowed for system     */
        !           233: eSysmap:
        !           234:        .globl  _Syssize
        !           235:        .set    _Syssize,(eSysmap-_Sysmap)/4    /* should be SYSPTSIZE  */
        !           236:        
        !           237:        .globl  _iomap          /* Physical page 8      */
        !           238: _iomap:        .space  1024            /* IOMAP - unused       */
        !           239:        .globl  _eiomap
        !           240: _eiomap:
        !           241: 
        !           242:        .globl  _pcb0           /* Physical page 9      */
        !           243: _pcb0: .space  128             /*process control block 0               */
        !           244:        .globl  _pcb1
        !           245: _pcb1: .space 128              /*process control block 1               */
        !           246:        .globl  _pcb2
        !           247: _pcb2: .space 128              /*process control block 2               */
        !           248:        .globl  _pcb3
        !           249: _pcb3: .space 128              /*process control block 3               */
        !           250:        .globl  _pcb4
        !           251: _pcb4: .space 128              /*process control block 4               */
        !           252:        .globl  _pcb5
        !           253: _pcb5: .space 128              /*process control block 5               */
        !           254:        .globl  _pcb6
        !           255: _pcb6: .space 128              /*process control block 6               */
        !           256:        .globl  _pcb7
        !           257: _pcb7: .space 128              /*process control block 7               */
        !           258: 
        !           259: /*
        !           260:        *user #0 page tables -- P0PT, P1PT, P2PT                        
        !           261:        *physical memory     --  page10, 11, & 12  respectively
        !           262: */
        !           263:        .align  2
        !           264:        .globl  _u0p0pt
        !           265: _u0p0pt:
        !           266:        .space  1024            /*255 max pages for user #0 text        */
        !           267:        .globl  _u0p1pt
        !           268: _u0p1pt:       
        !           269:        .space  1024            /*255 max pages for user #0 data        */
        !           270:        .globl  _u0p2pt
        !           271: _u0p2pt:       
        !           272:        .space  1020            /*255 max pages for user #0 stack       */
        !           273: eu0p2pt:
        !           274:        .space  4
        !           275: 
        !           276: /*
        !           277:        *user #1 page tables -- P0PT, P1PT, P2PT                        
        !           278:        *physical memory     --  page13 ,14, & 15  respectively
        !           279: */
        !           280:        .align  2
        !           281:        .globl  _u1p0pt
        !           282: _u1p0pt:
        !           283:        .space  1024            /*255 max pages for user #1 text        */
        !           284:        .globl  _u1p1pt
        !           285: _u1p1pt:       
        !           286:        .space  1024            /*255 max pages for user #1 data        */
        !           287:        .globl  _u1p2pt
        !           288: _u1p2pt:       
        !           289:        .space  1020            /*255 max pages for user #1 stack       */
        !           290: eu1p2pt:
        !           291:        .space  4
        !           292: 
        !           293: 
        !           294: /*
        !           295:        *user #2 page tables -- P0PT, P1PT, P2PT                        
        !           296:        *physical memory     --  page 16, 17 , & 18  respectively
        !           297: */
        !           298:        .align  2
        !           299:        .globl  _u2p0pt
        !           300: _u2p0pt:
        !           301:        .space  1024            /*255 max pages for user #2 text        */
        !           302:        .globl  _u2p1pt
        !           303: _u2p1pt:       
        !           304:        .space  1024            /*255 max pages for user #2 data        */
        !           305:        .globl  _u2p2pt
        !           306: _u2p2pt:       
        !           307:        .space  1020            /*255 max pages for user #2 stack       */
        !           308: eu2p2pt:
        !           309:        .space  4
        !           310: 
        !           311: 
        !           312: /*
        !           313:        *user #3 page tables -- P0PT, P1PT, P2PT                        
        !           314:        *physical memory     --  page 19, 20 , & 21  respectively
        !           315: */
        !           316:        .align  2
        !           317:        .globl  _u3p0pt
        !           318: _u3p0pt:
        !           319:        .space  1024            /*255 max pages for user #3 text        */
        !           320:        .globl  _u3p1pt
        !           321: _u3p1pt:       
        !           322:        .space  1024            /*255 max pages for user #3 data        */
        !           323:        .globl  _u3p2pt
        !           324: _u3p2pt:       
        !           325:        .space  1020            /*255 max pages for user #3 stack       */
        !           326: eu3p2pt:
        !           327:        .space  4
        !           328: 
        !           329: /*
        !           330:        *user #4 thru 6 page tables
        !           331:        *physical memory -- pages 22 thru 30
        !           332: */
        !           333:        .globl  _u4p0pt
        !           334: _u4p0pt:
        !           335:        .space  (9*NBPG) - 4
        !           336: eu6p2pt:
        !           337:        .space  4
        !           338: 
        !           339: /*
        !           340:        Area used for Kernel stack                      
        !           341:        physical memory --  page 31, 32 , 33
        !           342: */
        !           343: 
        !           344:        .align  2
        !           345:        .globl  _Kstack         /* Kernel stack */
        !           346: _Kstack:                       /* Physical pages 31,32,33 */
        !           347:        .space  3*NBPG
        !           348:        .globl  ekstack 
        !           349: ekstack:
        !           350: 
        !           351: 
        !           352:        .globl  _iob0           /*io buffer 0 */
        !           353: _iob0: .space  1024
        !           354:        .globl  _iob1           /*io buffer 1 */
        !           355: _iob1: .space  1024
        !           356:        .globl  _iob2           /*io buffer 2 */
        !           357: _iob2: .space  1024
        !           358:        .globl  _iob3           /*io buffer 3 */
        !           359: _iob3: .space  1024
        !           360:        .globl  _iob4           /*io buffer 4 */
        !           361: _iob4: .space  1024
        !           362:        .globl  _iob5           /*io buffer 5 */
        !           363: _iob5: .space  1024
        !           364:        .globl  _iob6           /*io buffer 6 */
        !           365: _iob6: .space  1024
        !           366: esysdata:
        !           367: 
        !           368: /*     SYSTEM CONTROL BLOCK            */
        !           369: #include "scblock.s"
        !           370: 
        !           371: 
        !           372: 
        !           373: #include       "evthandlers.s"
        !           374: 
        !           375: #define        ACBL(_n1,_n2,_n3,_n4)   addl2 _n2,_n3;  cmpl _n3,_n1;  bleq _n4;
        !           376: 
        !           377: 
        !           378: 
        !           379: #      *INITIALIZATION CODE
        !           380: #      *
        !           381: #      * MME off; mode = k; IPL = 31; IS = 1
        !           382: #      *
        !           383: 
        !           384:        
        !           385:        .globl  start
        !           386: start:
        !           387:        mtpr    $0,$MME         /* Disable MME */
        !           388:        movl    r0,_run_list
        !           389:        movl    r1,_OPTIONS
        !           390:        clrl    _nonstop        /* clear the continuous run flag */
        !           391:        movl    r2,_count       /* save the test count           */
        !           392:        bneq    1f              /* is count = 0 ?                */
        !           393:        movl    $1,_count       /*   yes -set cycle count = 1    */
        !           394: 1:     bgeq    1f              /* is count < 0 ?                */
        !           395:        movl    $1,_nonstop     /*   yes -set NONSTOP flag       */
        !           396: 1:
        !           397:        clrl    _no_fpp_wcs     /* clear the NO-FPP WCS flag     */
        !           398:        mtpr    $0x400,$DCR     /* check for FPP WCS loaded      */
        !           399:        tstl    r1              /* r1 = 0 if NO-FPP WCS loaded   */
        !           400:        bneq    1f
        !           401:        movl    $1,_no_fpp_wcs  /* set the NO-FPP WCS flag       */
        !           402: 1:
        !           403:        movab   _scb,r0
        !           404:        andl2   $0x3ffffc00,r0
        !           405:        mtpr    r0,$SCBB        /* Set SCBB  */
        !           406:        mtpr    $0x1f,$IPL      /* Set IPL to HIGH */
        !           407: 
        !           408:        andl3   $4,r11,_ss1     /* messages sense switch         */
        !           409: 
        !           410: #
        !           411: # clear the option flags
        !           412: #
        !           413:        clrl    _halt_flg       /* clear the halt on error flag             */
        !           414:        clrl    _loop_on_err    /* clear the loop on error flag             */
        !           415:        movl    $1,_prt_error   /* set the print error messages flag        */
        !           416:        movl    $1,_prt_hdrs    /* set the print header messages flag       */
        !           417:        movl    $1,_en_data_cache  /* set the enable data cache flag        */
        !           418:        movl    $1,_user_mode   /* set the Run In User Mode flag            */
        !           419:        clrl    _exp_event      /* clear the fpp event expected flag        */
        !           420:        clrl    _event_return   /* clear the fpp event return flag          */
        !           421:        clrl    _unexp_event_ret /*clear the unexpected event return addr   */
        !           422: 
        !           423: #
        !           424: # set the option flags as needed
        !           425: #
        !           426:        bitl    $1,_OPTIONS     /* bit(0) = HALT ON ERROR */
        !           427:        beql    1f
        !           428:        movl    $1,_halt_flg    /* set the HALT ON ERROR flag */
        !           429: 1:
        !           430:        bitl    $2,_OPTIONS     /* bit(1) = LOOP ON ERROR */
        !           431:        beql    1f
        !           432:        movl    $1,_loop_on_err /* set the LOOP ON ERROR flag */
        !           433: 1:
        !           434:        bitl    $4,_OPTIONS     /* bit(2) = PRINT ERROR MESSAGES */
        !           435:        beql    1f
        !           436:        clrl    _prt_error      /* clear the PRINT ERROR MESSAGES flag */
        !           437: 1:
        !           438:        bitl    $8,_OPTIONS     /* bit(3) = PRINT HEADER MESSAGES */
        !           439:        beql    1f
        !           440:        clrl    _prt_hdrs       /* clear the PRINT HEADER MESSAGES flag */
        !           441: 1:
        !           442:        bitl    $16,_OPTIONS    /* bit(4) = ENABLE DATA CACHE flag */
        !           443:        beql    1f
        !           444:        clrl    _en_data_cache  /* clear the ENABLE DATA CACHE flag */
        !           445: 1:
        !           446:        bitl    $32,_OPTIONS    /* bit(5) = DON'T RUN IN USER MODE flag */
        !           447:        beql    1f
        !           448:        clrl    _user_mode      /* reset the RUN IN USER MODE flag */
        !           449: 1:
        !           450:        movpsl  r1
        !           451:        andl2   $0xffffff00,r1          /* Mask out flags               */
        !           452:        cmpl    r1,$0x041f0000          /*IS on,modes =k & IPL = 31?    */
        !           453:        beql    1f
        !           454: 2:     movl    $1,r0
        !           455:        movl    $0x041f0000,r2
        !           456:        halt                    /* PSL not initialized as expected      */
        !           457: 1:
        !           458:        movl    $_intstack+NISP*NBPG,r0
        !           459:        andl2   $0x3fffffff,r0          /* Mask out bit 30,31 */
        !           460:        mtpr    r0,$ISP                 /* init. ISP            */
        !           461:        movl    r0,sp                   /* in case we get exception     */
        !           462:        movab   (sp),fp                 /* Initialize FP                */
        !           463: #
        !           464: #      Clear system data area all the way upto system code
        !           465: #      this includes dump buffer,interrupt stack,spt,iomap,pcbs,user 
        !           466: #      page tables, & io buffer area.
        !           467: #
        !           468: 3:     
        !           469:        movab   esysdata,r7
        !           470:        movab   _restart,r6
        !           471: 1:     clrl    (r6)
        !           472:        ACBL(r7,$4,r6,1b)
        !           473: #
        !           474: #      Initialize System Page Table
        !           475: #
        !           476: 5:
        !           477:        clrl    r2
        !           478:        movab   esysdata,r1     /* R1 = Last address in system data area */
        !           479:        andl2   $0x3fffffff,r1  /* Mask out bit 30,31   */
        !           480:        shar    $PGSHIFT,r1,r1  /* Get page no. of last system data addr  */
        !           481:                                /* Map systm data area 1 to 1,kernel writable */
        !           482: 1:
        !           483:        orl3    $PG_V|PG_KW,r2,_Sysmap[r2]
        !           484:        aoblss  r1,r2,1b
        !           485: 
        !           486: #
        !           487: #      Map system text area 1 to 1, Kernel read/write.
        !           488: #      For this to work, the label _etext must exist at the end 
        !           489: #      of system code; Add in 4 more pages for data area used in C
        !           490: #
        !           491:        movab   _Esys,r1        /* Map System text 1 to 1; Kernel R/W */
        !           492:        andl2   $0x3fffffff,r1
        !           493:        shar    $PGSHIFT,r1,r1
        !           494: 1:
        !           495:        orl3    $PG_V|PG_KW,r2,_Sysmap[r2]
        !           496:        aobleq  r1,r2,1b
        !           497: #
        !           498: #      Map from here to last page used by user :
        !           499: #      invalid, User access, & virtual = physical
        !           500: #
        !           501:        movl    r2,_unused      /* Save first unused physical page no   */
        !           502:        movl    r2,_Ufpte               /* First PTE of User */
        !           503:        movl    $0x80000,r1             /* Allow this much memory for User */
        !           504:        shar    $PGSHIFT,r1,r1
        !           505:        movl    r1,_Ulpte               /* Last PTE of User */
        !           506: 
        !           507: 1:
        !           508:        orl3    $PG_V|PG_UW,r2,_Sysmap[r2]      /* Valid / User Read/Write */
        !           509:        aoblss  r1,r2,1b
        !           510: 
        !           511: #
        !           512: #      Initialize SBR, SLR
        !           513: #
        !           514: sysrdy:
        !           515:        mtpr    $_Sysmap,$SBR                   /* Set SYSTEM BASE REG */
        !           516:        mtpr    $_Syssize,$SLR
        !           517:        mtpr    $64,$DCR                        /* Enable fault */
        !           518: 
        !           519: #              GO TO VIRTUAL MODE
        !           520: #      Double map the kernel into user addresses : 
        !           521: #      This will enable system to go to virtual mode the 1st time !!
        !           522: #
        !           523: 
        !           524:        orl3    $0xc0000000,$_Sysmap,r0 
        !           525:        mtpr    r0,$P0BR                /* Double map P0BR to SBR */
        !           526:        mtpr    $_Syssize,$P0LR
        !           527:        mtpr    $1,$PADC                /* Purge all data cache */
        !           528:        mtpr    $1,$TBIA                /* Purge all Trans. buffer */
        !           529:        
        !           530:        mfpr    $SCBB,r0
        !           531:        movab   _Trans,TRANSVEC(r0)     /* Set new trans. fault handler */
        !           532:        movab   _Prvis,PRIVSVEC(r0)     /* Set new priv. ins. fault handler */
        !           533:        moval   _FPM_handler,FPMVEC(r0) /* Set now fpm trap handler */
        !           534:        mtpr    $_pcb0,$0xe             /* Init. PCBB to PCB_0 */
        !           535:        
        !           536:        movab   _pcb0,r0
        !           537:        movab   ekstack,PCB_KSP(r0)     /* Init. PCB_KSP             */
        !           538:        movab   eustack,PCB_USP(r0)     /* Init. PCB_USP             */
        !           539:        mfpr    $P0BR,PCB_P0BR(r0)      /*  "    PCB_P0BR            */
        !           540:        mfpr    $P0LR,PCB_P0LR(r0)      /*  "    PCB_P0LR            */
        !           541:        movl    $0x001f000,PCB_PSL(r0)  /* Set PCB_PSL : Kernel Mode */
        !           542:        ldpctx                          /* load the process context  */
        !           543: 
        !           544:        mtpr    $1,$PACC                /* purge the code cache      */
        !           545:        movl    $1,_Codek
        !           546:        mtpr    _Codek,$CCK             /* Set code cache key        */
        !           547: 
        !           548:        callf   $4,_monitor             /* go execute the test       */
        !           549: 
        !           550: 
        !           551: #include       "fault_handlers.s"      /* put spectial handlers here */
        !           552: 
        !           553: 
        !           554: # /****************************************************************************
        !           555: # *                    STACK AREA
        !           556: # ****************************************************************************/
        !           557: 
        !           558:        .globl  _Esys                   /* end of systems only code */
        !           559: _Esys:
        !           560:        .space  NBPG
        !           561:        
        !           562:        .globl  _Ustack                 /* basic stack space */
        !           563: _Ustack:
        !           564:        .space  (2*NBPG)-4              /* 2 pages */
        !           565:        .globl  eustack
        !           566: eustack:
        !           567:        .long   0                       /* initial user stack ptr */
        !           568: 
        !           569:        .globl  U_area
        !           570: U_area:
        !           571: 

unix.superglobalmegacorp.com

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