|
|
1.1 root 1: /* JMP,BRB,BRW instruction test */
2: /* Privilege registers */
3:
4: .set IPL,8
5: .set MAPEN,9
6: .set KSP,19
7:
8: /* PSL fields */
9: .set IV,32
10: .set T,16
11: .set N,8
12: .set Z,4
13: .set V,2
14: .set C,1
15:
16: /* constants */
17: .set DISABLE,0
18: .set ENABLE,1
19: .set HIGH,31 /* highest interrupt priority */
20: .globl _jumpbr
21: _jumpbr:
22: callf $4,_setjmp /* save context for error return */
23: movab _jumpbr,_stpc /* save address of subtest start */
24: movl $1,_subtst /* subtest number */
25: movl $1,_no_opr /* number of operands in use */
26: movl $1,_opr /* first operand */
27: 0: bicpsw $(IV|T) /* disable exceptions */
28: /* */
29: jump:
30: movl $1,r1 /* error code in reg one */
31: bispsw $(N|V) /* set n,v flags */
32: bicpsw $(Z|C) /* clear z,c flags */
33: jmp bb
34: movpsl _actual /* actual data = psl MAYBE it is wrong */
35: bbs $0,_scoplp,0b /* if set scope loop on error */
36: movl $2,_ercode /* error code flag failure */
37: jmp *badrtn /* error : did not jmp */
38: .space 32000 /* reserve 32000 bytes */
39: bb: /* BRANCH WITH BYTE DISPLACEMENT */
40: jgeq error0 /* error if n,v flags not set */
41: jvc error0
42: jeql error0 /* error if z,c flags not clear */
43: jcs error0
44: jmp loc0
45: error0: movpsl _actual /* actual data = psl MAYBE it is wrong */
46: bbs $0,_scoplp,0b /* if set scope loop on error */
47: movl $2,_ercode /* error code flag failure */
48: jmp *badrtn
49: loc0:
50: brb loc1
51: movpsl _actual /* actual data = psl MAYBE it is wrong */
52: bbs $0,_scoplp,0b /* if set scope loop on error */
53: movl $2,_ercode /* error code flag failure */
54: jmp *badrtn
55: .space 90 /* reserve 90 bytes */
56: loc1:
57: jgeq error1 /* error if n,v flags not set */
58: jvc error1
59: jeql error1 /* error if z,c flags not clear */
60: jcs error1
61: jmp loc3
62: error1: movpsl _actual /* actual data = psl MAYBE it is wrong */
63: bbs $0,_scoplp,0b /* if set scope loop on error */
64: movl $2,_ercode /* error code flag failure */
65: jmp *badrtn
66: loc2: /* branch back here from loc3 */
67: jlss error1 /* error if n,v flags set */
68: jvs error1
69: jneq error1 /* error if z,c flags clear */
70: jcc error1
71: jmp bw
72: .space 80 /* reserve 80 bytes */
73: loc3:
74: movl $2,r1 /* error code in reg one */
75: bispsw $(Z|C) /* set z,c flags */
76: bicpsw $(N|V) /* clear n,v flags */
77: brb loc2 /* branch backward */
78: movpsl _actual /* actual data = psl MAYBE it is wrong */
79: bbs $0,_scoplp,0b /* if set scope loop on error */
80: movl $2,_ercode /* error code flag failure */
81: jmp *badrtn
82: ;
83: ;
84: ;
85: bw: /* BRANCH WITH WORD DISPLACEMENT */
86: movl $3,r1 /* error code in reg one */
87: bispsw $(N|V) /* set n,v flags */
88: bicpsw $(Z|C) /* clear z,c flags */
89: loc4:
90: brw loc5
91: movpsl _actual /* actual data = psl MAYBE it is wrong */
92: bbs $0,_scoplp,0b /* if set scope loop on error */
93: movl $2,_ercode /* error code flag failure */
94: jmp *badrtn
95: .space 12000 /* reserve 12000 bytes */
96: loc5:
97: jgeq error2 /* error if n,v flags not set */
98: jvc error2
99: jeql error2 /* error if z,c flags not clear */
100: jcs error2
101: jmp loc7
102: error2: movpsl _actual /* actual data = psl MAYBE it is wrong */
103: cmpl $1,_scoplp /* if set scope loop on error */
104: jneq 1f
105: jmp 0b
106: 1: movl $2,_ercode /* error code flag failure */
107: jmp *badrtn
108: loc6: /* branch back here from loc3 */
109: jlss error2 /* error if n,v flags set */
110: jvs error2
111: jneq error2 /* error if z,c flags clear */
112: jcc error2
113: jmp done
114: .space 12000 /* reserve 12000 bytes */
115: loc7:
116: movl $4,r1 /* error code in reg one */
117: bispsw $(Z|C) /* set z,c flags */
118: bicpsw $(N|V) /* clear n,v flags */
119: brw loc6 /* branch backward */
120: movpsl _actual /* actual data = psl MAYBE it is wrong */
121: cmpl $1,_scoplp /* if set scope loop on error */
122: jneq 1f
123: jmp 0b
124: 1: movl $2,_ercode /* error code flag failure */
125: jmp *badrtn
126: done:
127: cmpl $1,_force_lp /* if set loop on last subtest */
128: jneq 1f
129: jmp 0b
130: 1: jmp *return /* good, return to monitor */
131:
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.