|
|
Power 6/32 Unix version 1.2b
# 1 "temp$.s" # 1 "./conf.h" # 19 "temp$.s" # 1 "./prvreg.h" .globl SBR .set SBR,0 .globl SLR .set SLR,1 .set P0BR,2 .set P0LR,3 .set P1BR,4 .set P1LR,5 .set P2BR,6 .set P2LR,7 .set IPL,8 .set MME,9 .globl TBIA .set TBIA,10 .set TBIS,11 .set DCK,12 .set CCK,13 .set PCBB,14 .set ISP,15 .set SIRR,16 .set SISR,17 .set SCBB,18 .set KSP,19 .set USP,20 .set P1CC,21 .globl DCB .set DCB,22 .set PACC,23 .set P1DC,24 .globl PADC .set PADC,25 .set HISR,26 .globl DCR .set DCR,27 # 21 "temp$.s" # 1 "./psl.h" # 24 "temp$.s" # 1 "./pte.h" # 27 "temp$.s" # 1 "./pcboffset.h" .set PCB_KSP, 0 .set PCB_USP, 4 .set PCB_R0, 8 .set PCB_R1, 12 .set PCB_R2, 16 .set PCB_R3, 20 .set PCB_R4, 24 .set PCB_R5, 28 .set PCB_R6, 32 .set PCB_R7, 36 .set PCB_R8, 40 .set PCB_R9, 44 .set PCB_R10, 48 .set PCB_R11, 52 .set PCB_R12, 56 .set PCB_R13, 60 .set PCB_PC, 64 .set PCB_PSL, 68 .set PCB_P0BR, 72 .set PCB_P0LR, 76 .set PCB_P1BR, 80 .set PCB_P1LR, 84 .set PCB_P2BR, 88 .set PCB_P2LR, 92 .set PCB_STAT, 96 # 30 "temp$.s" # 1 "./const.h" # 33 "temp$.s" # 1 "./scboffset.h" .set PFVEC,4 .set CLOCK,7 .set CLOCKVEC,28 .set CRVEC,40 .set CXVEC,44 .set SIVEC1,120 .set BUSER,32 .set BEVEC,128 .set SYSVEC,172 .set PINSTVEC,176 .set ROVEC,180 .set RAVEC,184 .set PROTVEC,188 .set TRANSVEC,192 .set KSPVEC,196 .set TRACEVEC,200 .set BPTVEC,204 .set ARITHVEC,208 .set ALIGNVEC,212 .set IO14VEC,256 .set IO15VEC,320 .set IO16VEC,384 .set IO17VEC,448 # 36 "temp$.s" # 1 "./sptoffset.h" .set SCBPTE,8 .set BUFPTE,12 .set ISPTE,16 .set IS1PTE,20 .set SPTPTE,20 .set SPT1PTE,20 .set IOMAPPTE,24 .set PCBPTE,28 .set U0P0PTE,32 .set U0P1PTE,36 .set U0P2PTE,40 .set U1P0PTE,44 .set U1P1PTE,48 .set U1P2PTE,52 .set U2P0PTE,56 .set U2P1PTE,60 .set U2P2PTE,64 .set U3P0PTE,68 .set U3P1PTE,72 .set U3P2PTE,76 .set U4P0PTE,80 .set U4P1PTE,84 .set U4P2PTE,88 .set U5P0PTE,92 .set U5P1PTE,96 .set U5P2PTE,100 .set U6P0PTE,104 .set U6P1PTE,108 .set U6P2PTE,112 .set U7P0PTE,116 .set U7P1PTE,120 .set U7P2PTE,124 .set IOB0PTE,128 .set IOB1PTE,132 .set IOB2PTE,136 .set IOB3PTE,140 .set IOB4PTE,144 .set IOB5PTE,148 .set IOB6PTE,152 .set IOB7PTE,156 # 38 "temp$.s" # 1 "./trap.h" # 41 "temp$.s" .set HIGH,0x1f .set MCKVEC,4 .set NISP,2 .set DONE,255 .text # 1 "./pstorage.s" _pstore: .globl _pstore .space 1024 _pstore1: .globl _pstore1 _pcbb: .space 4 _isp: .space 4 _sirr: .space 4 _sisr: .space 4 .space 4 .space 4 .space 4 _cpmdcb: .space 4 _cpfdcb: .space 4 _cpcdcb: .space 4 _cpidcb: .space 4 _cpstat: .space 4 _cpctl: .space 4 _hisr: .space 4 _dcr: .space 4 .space 4*48 _pstemp: .globl _pstemp _tr0: .space 16 _tpc: .space 4 _tpsl: .space 4 _tsp: .space 4 _tksp: .space 4 _tusp: .space 4 _tcck: .space 4 _tdck: .space 4 _ttbk: .space 4 _tsbr: .space 4 _tslr: .space 4 _tp0br: .space 4 _tp0lr: .space 4 _tp1br: .space 4 _tp1lr: .space 4 _tp2br: .space 4 _tp2lr: .space 4 _tipl: .space 4 _tmme: .space 4 _ttbia: .space 4 _ttbis: .space 4 _tpcbb: .space 4 _tisp: .space 4 _tsirr: .space 4 _tsisr: .space 4 _tscbb: .space 4 _tp1cc: .space 4 _tpacc: .space 4 _tp1dc: .space 4 _tpadc: .space 4 _tcpmdcb: .space 4 _tcpfdcb: .space 4 _tcpcdcb: .space 4 _tcpidcb: .space 4 _tcpstat: .space 4 _tcpctl: .space 4 _probflag: .space 4 _inexcflg: .space 4 .space 4*10 _psend: .globl _psend .set MM,(_psend - _pstore1) .space 1024 - MM # 54 "temp$.s" .globl _Entry _Entry: jmp start .space (1024-6) .set NLWU,32 .globl _restart _restart: .space 4 .globl _cyconf _cyconf: .space 4 .space 4 .globl _lastadd _lastadd: .space 4 .globl _unused _unused: .space 4 .globl _ctlblk _ctlblk: .long 0 .globl _savvec0 _savvec0: .space 4 .globl _savvec1 _savvec1: .space 4 .globl _savvec2 _savvec2: .space 4 .globl _savvec3 _savvec3: .space 4 .globl _savvec4 _savvec4: .space 4 .globl _savvec5 _savvec5: .space 4 .globl _savvec6 _savvec6: .space 4 .globl _savvec7 _savvec7: .space 4 .globl _savvec8 _savvec8: .space 4 testno: .long 0 .globl _dbuf .globl _r_no _r_no: .long 0 .globl _pt_base _pt_base: .long 0 .globl _saved_psl _saved_psl: .long 0 .globl _saved_sp _saved_sp: .long 0 .globl _saved_fp _saved_fp: .long 0 .globl _p_ptr _p_ptr: .long 0 .globl _ret_adr _ret_adr: .long 0 .globl _exp_par0 _exp_par0: .long 0 .globl _exp_par1 _exp_par1: .long 0 .globl _exp_par2 _exp_par2: .long 0 .globl _exp_par3 _exp_par3: .long 0 .globl _act_par0 _act_par0: .long 0 .globl _act_par1 _act_par1: .long 0 .globl _IOpage _IOpage: .long 0 .globl _proc_no _proc_no: .long 0 .globl _clk_cnt _clk_cnt: .long 0 _dbuf: .space 1024 - (NLWU *4) edbuf: .globl _intstack _intstack: .space NISP* 1024 eintstack: .set SYSPTSIZE,512 .align 2 .globl _Sysmap _Sysmap: .space SYSPTSIZE*4 eSysmap: .globl _Syssize .set _Syssize,(eSysmap-_Sysmap)/4 .globl _iomap _iomap: .space 1024 .globl _eiomap _eiomap: .globl _pcb0 _pcb0: .space 128 .globl _pcb1 _pcb1: .space 128 .globl _pcb2 _pcb2: .space 128 .globl _pcb3 _pcb3: .space 128 .globl _pcb4 _pcb4: .space 128 .globl _pcb5 _pcb5: .space 128 .globl _pcb6 _pcb6: .space 128 .globl _pcb7 _pcb7: .space 128 .align 2 .globl _u0p0pt _u0p0pt: .space 1024 .globl _u0p1pt _u0p1pt: .space 1024 .globl _u0p2pt _u0p2pt: .space 1020 eu0p2pt: .space 4 .align 2 .globl _u1p0pt _u1p0pt: .space 1024 .globl _u1p1pt _u1p1pt: .space 1024 .globl _u1p2pt _u1p2pt: .space 1020 eu1p2pt: .space 4 .align 2 .globl _u2p0pt _u2p0pt: .space 1024 .globl _u2p1pt _u2p1pt: .space 1024 .globl _u2p2pt _u2p2pt: .space 1020 eu2p2pt: .space 4 .align 2 .globl _u3p0pt _u3p0pt: .space 1024 .globl _u3p1pt _u3p1pt: .space 1024 .globl _u3p2pt _u3p2pt: .space 1020 eu3p2pt: .space 4 .globl _u4p0pt _u4p0pt: .space (9* 1024) - 4 eu6p2pt: .space 4 .align 2 .globl _u7p0pt _u7p0pt: .space 1024 .globl _u7p1pt _u7p1pt: .space 1024 .globl _u7p2pt _u7p2pt: .space 1020 eu7p2pt: .space 4 .globl _Ksp0 _Ksp0: .space 1020 _Eksp0: .long 0 .globl _Ksp1 _Ksp1: .space 1020 _Eksp1: .long 0 .globl _Ksp2 _Ksp2: .space 1020 _Eksp2: .long 0 .globl _Ksp3 _Ksp3: .space 1020 _Eksp3: .long 0 .globl _Ksp4 _Ksp4: .space 1020 _Eksp4: .long 0 .globl _Ksp5 _Ksp5: .space 1020 _Eksp5: .long 0 .globl _Ksp6 _Ksp6: .space 1020 _Eksp6: .long 0 # I/O buffers .globl _iob0 _iob0: .space 1024 .globl _iob1 _iob1: .space 1024 .globl _iob2 _iob2: .space 1024 .globl _iob3 _iob3: .space 1024 .globl _iob4 _iob4: .space 1024 .globl _iob5 _iob5: .space 1024 esysdata: # 1 "./scblock.s" .align 2 _scb: .globl _scb .long _Xunknown; .long _Xpowerfail; .long _Xunknown; .long _Xunknown; .long _Xunknown; .long _Xunknown; .long _Xunknown; .long _Xhardclock; .long _Xunknown; .long _Xunknown; .long _Xcnrint; .long _Xcnxint; .long _Xunknown; .long _Xunknown; .long _Xunknown; .long _Xunknown; .long _Xs15; .long _Xs14; .long _Xs13; .long _Xs12; .long _Xs11; .long _Xs10; .long _Xs9; .long _Xs8; .long _Xs7; .long _Xs6; .long _Xs5; .long _Xs4; .long _Xs3; .long _Xs2; .long _Xs1; .long _Xunknown; .long _Xbuserror; .long _Xunknown; .long _Xunknown; .long _Xunknown; .long _Xunknown; .long _Xunknown; .long _Xunknown; .long _Xunknown; .long _Xunknown; .long _Xunknown; .long _Xunknown; .long _Xkcall; .long _Xprvinflt; .long _Xresopflt; .long _Xresadflt; .long _Xprotflt; .long _Xtransflt; .long _Xkspnotval; .long _Xtracep; .long _Xbptflt; .long _Xarithtrap; .long _Xalignflt; .long _Xunknown; .long _Xunknown; .long _Xunknown; .long _Xunknown; .long _Xunknown; .long _Xunknown; .long _Xunknown; .long _Xunknown; .long _Xunknown; .long _Xunknown; .long _Xiovec14; .long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown; .long _Xiovec15; .long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown; .long _Xiovec16; .long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown; .long _Xiovec17; .long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown;.long _Xunknown; .space 512 # 376 "temp$.s" # 1 "./evthandlers.s" .align 2 .globl _Xunknown _Xunknown: halt .align 2 .globl _Xpowerfail _Xpowerfail: halt .align 2 .globl _Xhardclock _Xhardclock: halt .align 2 .globl _Xcnrint _Xcnrint: rei .align 2 .globl _Xcnxint _Xcnxint: rei halt .align 2 .globl _Xs15 _Xs15: halt .align 2 .globl _Xs14 _Xs14: halt .align 2 .globl _Xs13 _Xs13: halt .align 2 .globl _Xs12 _Xs12: halt .align 2 .globl _Xs11 _Xs11: halt .align 2 .globl _Xs10 _Xs10: halt .align 2 .globl _Xs9 _Xs9: halt .align 2 .globl _Xs8 _Xs8: halt .align 2 .globl _Xs7 _Xs7: halt .align 2 .globl _Xs6 _Xs6: halt .align 2 .globl _Xs5 _Xs5: halt .align 2 .globl _Xs4 _Xs4: halt .align 2 .globl _Xs3 _Xs3: halt .align 2 .globl _Xs2 _Xs2: halt .align 2 .globl _Xs1 _Xs1: halt .align 2 .globl _Xiovec14 _Xiovec14: halt .align 2 .globl _Xiovec15 _Xiovec15: halt .align 2 .globl _Xiovec16 _Xiovec16: halt .align 2 .globl _Xiovec17 _Xiovec17: halt .align 2 .globl _Xbuserror _Xbuserror: halt .align 2 .globl _Xkspnotval _Xkspnotval: halt .align 2 .globl _Xprvinflt _Xprvinflt: halt .align 2 .globl _Xresopflt _Xresopflt: halt .align 2 .globl _Xresadflt _Xresadflt: halt .align 2 .globl _Xbptflt _Xbptflt: halt .align 2 .globl _Xtracep _Xtracep: halt .align 2 .globl _Xarithtrap _Xarithtrap: halt .align 2 .globl _Xprotflt _Xprotflt: halt .align 2 .globl _Xtransflt _Xtransflt: halt .align 2 .globl _Xalignflt _Xalignflt: halt alltraps: halt .align 2 .globl _Xkcall _Xkcall: halt # 383 "temp$.s" .globl start start: mtpr $0,$MME movl r0,tst_mask movab _scb,r0 andl2 $0x3ffffc00,r0 mtpr r0,$SCBB mtpr $0x1f,$IPL movpsl r1 andl2 $0x001f0000,r1 cmpl r1,$0x001f0000 beql 1f 2: movl $1,r0 movl $0x041f0000,r2 halt 1: movl $_intstack+NISP* 1024,r0 andl2 $0x3fffffff,r0 mtpr r0,$ISP movl r0,sp movab (sp),fp # Clear system data area all the way upto system code # this includes dump buffer,interrupt stack,spt,iomap,pcbs,user # page tables, & io buffer area. 3: movab esysdata,r7 movab _restart,r6 1: clrl (r6) addl2 $4,r6;cmpl r6,r7;bleq 1b; # Initialize System Page Table 5: clrl r2 movab _Ksp6,r1 andl2 $0x3fffffff,r1 shar $ 10 ,r1,r1 1: movl r2,r11 orl2 $ 0x80000000| 0x60000000,r11 orl2 r11,_Sysmap[r2] aobleq r1,r2,1b movab esysdata,r1 andl2 $0x3fffffff,r1 shar $ 10 ,r1,r1 1: movl r2,r11 orl2 $ 0x80000000| 0x60000000| 0x01000000,r11 orl2 r11,_Sysmap[r2] aoblss r1,r2,1b # Map system text area 1 to 1, Kernel read/write. # For this to work, the label _etext must exist at the end # of system code; Add in 4 more pages for data area used in C movab _end + ( 1024-1),r1 andl3 $0x3ffffc00,r1,_IOpage addl2 $64*(1024),r1 andl2 $0x3fffffff,r1 shar $ 10 ,r1,r1 1: movl r2,r11 orl2 $ 0x80000000| 0x60000000| 0x01000000,r11 orl2 r11,_Sysmap[r2] aoblss r1,r2,1b # Map from here (1st unused page) to page 512 : # * invalid,no access, & virtual = physical movl r2,_unused movl $511 +1,r1 1: movl r2,_Sysmap[r2] aoblss r1,r2,1b sysrdy: movab _Sysmap,r0 mtpr r0,$ 0 mtpr $_Syssize,$SLR orl2 $0xc0000000,r0 mtpr r0,$P0BR mtpr $_Syssize,$P0LR movl $CLOCK,r0 movab _Xclock,_scb[r0] movl $BUSER,r0 movab _Buser,_scb[r0] clrl _bturn clrl _bell clrl _btime mtpr $1,$IPL _bmore: cmpl _btime,$0x5 jeql 1f jmp _bmore 1: incl _bell .globl _ready _ready: clrl _proc_no mtpr $1,$PACC mtpr $1,$PADC mtpr $1,$TBIA mtpr $1,$CCK mtpr $1,$DCK mtpr $1,$MME jmp *$1f 1: movab _pcb0,r0 movab _Eksp0,(r0) mfpr $P0BR,PCB_P0BR(r0) mfpr $P0LR,PCB_P0LR(r0) mtpr r0,$PCBB ldpctx mtpr $1,$IPL movl (sp)+,r12 movl (sp)+,r11 # The following tests are included : Tape, Vioc, Vddc. # Bit 0-2 correspond to Tape, Vioc, Vddc test. To disable # a particular test just set the corresponding bit to 1 before # start. For example, if only Vddc test to be run, set R0=3. # To run all, set R0 = 0. 1: clrl _Multi # Tape Master Test andl3 $0x1,tst_mask,r0 jneq 1f incl _IOinit clrl _Berr callf $4,_tape cmpl $0,_Berr jneq 2f cmpl $1,r0 jeql Ttst 2: pushab tmsg callf $8,_writes clrl _tape_ON brw 1f Ttst: clrl _IOinit callf $4,_tm_ex # VIOC Controller Test 1: andl3 $0x2,tst_mask,r0 jneq 1f incl _IOinit clrl _Berr callf $4,_vioc cmpl $0,_Berr jneq 2f cmpl $1,r0 jeql Vtst 2: pushab vmsg callf $8,_writes clrl _vioc_ON brw 1f Vtst: clrl _IOinit callf $4,_v_ex # VDDC Controller Test 1: andl3 $0x4,tst_mask,r0 jneq 1f incl _IOinit clrl _Berr callf $4,_vddc cmpl $0,_Berr jneq 2f cmpl $1,r0 jeql VDtst 2: pushab vdmsg callf $8,_writes clrl _vddc_ON brw 1f VDtst: clrl _IOinit callf $4,_vddc_ex 1: pushab emsg callf $4,_writes movl $0xcafebabe,r0 halt # Real time clock Handler .align 2 .globl _Xclock _Xclock: tstl _bell jneq 2f incl _bturn cmpl _bturn,$0x20 jneq 2f pushl $7 callf $8,_writec incl _btime clrl _bturn 2: rei # Bus error handler .align 2 .globl _Buser _Buser: movab (sp),-(sp) callf $8,_buserror incl _Berr movl (sp)+,r0 movl (sp)+,r0 rei .align 2 tst_mask: .long 0 _bell: .long 0 _bturn: .long 0 _btime: .long 0 .globl _Multi _Multi: .long 0 .globl _Berr _Berr: .long 0 .globl _IOinit _IOinit: .long 0 .globl _tape_ON _tape_ON: .long 1 .globl _vioc_ON _vioc_ON: .long 1 .globl _vddc_ON _vddc_ON: .long 1 .globl _xy_ON _xy_ON: .long 1 .align 1 tmsg: .ascii "\nTape controller not found !\12\0" vmsg: .ascii "\nVIOC controller not found !\12\0" vdmsg: .ascii "\nVDDC controller not found !\12\0" emsg: .ascii "\nDone ...\12\0"
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.