|
|
Power 6/32 Unix version 1.2b
XTrap(code)
long code;
{ register long r12, r11, r10, r9;
long tpc, tpsl;
writes("\n** Unexpected exception type : ");
writeh(code); writec('\n');
asm("movl 8(fp),r12"); /* par 0 */
asm("movl 12(fp),r11"); /* par 1 */
asm("movl 16(fp),r10"); /* par 2 */
asm("movl 20(fp),r9"); /* par 3 */
if ((code==0x20) || (code==0x2f) || (code==0x30)) {
writes("** Par0 : "); writeh(r12); writec('\n');
writes("** Par1 : "); writeh(r11); writec('\n');
if (code==0x20) Buser(r12,r11);
tpc = r10;
tpsl = r9;
}
else {
if ((code==0x34) || (code==0x2b)) {
writes("** Par. : "); writeh(r12); writec('\n');
tpc = r11;
tpsl = r10;
}
else {
tpc = r12;
tpsl = r11; }
}
writes("** PC : "); writeh(tpc); writec('\n');
writes("** PSL : "); writeh(tpsl); writec('\n');
asm("halt");
}
Buser(p0,p1)
long p0,p1;
{
register long ix;
register long *iy = (long *)0xffffb000;
register long addr = 0;
long board, bank, intl;
ix = (p0 >> 23) & 0x7f;
writes("Syndrome "); pt_hex(ix,2);
p1 = ~((p1 >> 16) & 0xffff);
addr |= ((p1 >> 12) & 0xc) ;
addr |= ((p1 << 18) & 0x3ffc0000) ;
locboard(addr,&board,&bank,&intl);
writes("\nBoard # "); writed(board);
writes("\nBank # "); writed(bank);
writes("\nMCR : "); pt_hex((*iy)&0xffff,4);
writes("\n");
}
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.