|
|
Power 6/32 Unix version 1.2b
/* JMP,BRB,BRW instruction test */ /* Privilege registers */ .set IPL,8 .set MAPEN,9 .set KSP,19 /* PSL fields */ .set IV,32 .set T,16 .set N,8 .set Z,4 .set V,2 .set C,1 /* constants */ .set DISABLE,0 .set ENABLE,1 .set HIGH,31 /* highest interrupt priority */ .globl _jumpbr _jumpbr: callf $4,_setjmp /* save context for error return */ movab _jumpbr,_stpc /* save address of subtest start */ movl $1,_subtst /* subtest number */ movl $1,_no_opr /* number of operands in use */ movl $1,_opr /* first operand */ 0: bicpsw $(IV|T) /* disable exceptions */ /* */ jump: movl $1,r1 /* error code in reg one */ bispsw $(N|V) /* set n,v flags */ bicpsw $(Z|C) /* clear z,c flags */ jmp bb movpsl _actual /* actual data = psl MAYBE it is wrong */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn /* error : did not jmp */ .space 32000 /* reserve 32000 bytes */ bb: /* BRANCH WITH BYTE DISPLACEMENT */ jgeq error0 /* error if n,v flags not set */ jvc error0 jeql error0 /* error if z,c flags not clear */ jcs error0 jmp loc0 error0: movpsl _actual /* actual data = psl MAYBE it is wrong */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn loc0: brb loc1 movpsl _actual /* actual data = psl MAYBE it is wrong */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn .space 90 /* reserve 90 bytes */ loc1: jgeq error1 /* error if n,v flags not set */ jvc error1 jeql error1 /* error if z,c flags not clear */ jcs error1 jmp loc3 error1: movpsl _actual /* actual data = psl MAYBE it is wrong */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn loc2: /* branch back here from loc3 */ jlss error1 /* error if n,v flags set */ jvs error1 jneq error1 /* error if z,c flags clear */ jcc error1 jmp bw .space 80 /* reserve 80 bytes */ loc3: movl $2,r1 /* error code in reg one */ bispsw $(Z|C) /* set z,c flags */ bicpsw $(N|V) /* clear n,v flags */ brb loc2 /* branch backward */ movpsl _actual /* actual data = psl MAYBE it is wrong */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn ; ; ; bw: /* BRANCH WITH WORD DISPLACEMENT */ movl $3,r1 /* error code in reg one */ bispsw $(N|V) /* set n,v flags */ bicpsw $(Z|C) /* clear z,c flags */ loc4: brw loc5 movpsl _actual /* actual data = psl MAYBE it is wrong */ bbs $0,_scoplp,0b /* if set scope loop on error */ movl $2,_ercode /* error code flag failure */ jmp *badrtn .space 12000 /* reserve 12000 bytes */ loc5: jgeq error2 /* error if n,v flags not set */ jvc error2 jeql error2 /* error if z,c flags not clear */ jcs error2 jmp loc7 error2: movpsl _actual /* actual data = psl MAYBE it is wrong */ cmpl $1,_scoplp /* if set scope loop on error */ jneq 1f jmp 0b 1: movl $2,_ercode /* error code flag failure */ jmp *badrtn loc6: /* branch back here from loc3 */ jlss error2 /* error if n,v flags set */ jvs error2 jneq error2 /* error if z,c flags clear */ jcc error2 jmp done .space 12000 /* reserve 12000 bytes */ loc7: movl $4,r1 /* error code in reg one */ bispsw $(Z|C) /* set z,c flags */ bicpsw $(N|V) /* clear n,v flags */ brw loc6 /* branch backward */ movpsl _actual /* actual data = psl MAYBE it is wrong */ cmpl $1,_scoplp /* if set scope loop on error */ jneq 1f jmp 0b 1: movl $2,_ercode /* error code flag failure */ jmp *badrtn done: cmpl $1,_force_lp /* if set loop on last subtest */ jneq 1f jmp 0b 1: jmp *return /* good, return to monitor */
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.