1 :Info: test_cpu: 2022-09-03 test_cpu
2
3 Syntax as a command: test_cpu -control_args
4
5
6 Function: checks the CPU hardware for problems that have existed on
7 the processors. By running various tests invoked by this command, you
8 can determine whether the given CPU has had specific problems fixed.
9 This command is usually used with the set_proc_required command if the
10 system being tested has multiple CPUs configured. If one of the test
11 scripts fails and the successful execution of that test is dependent
12 upon installation of a particular FCO, the FCO number is displayed in
13 the error message.
14
15
16 Control arguments:
17 -brief, -bf
18 inhibits the printing of the test number and name, prior to the
19 execution of a test.
20 -cycle COUNT
21 repeats each test for COUNT times, then proceeds on to the next
22 test.
23 -exclude TEST ... TEST, -excl TEST ... TEST
24 excludes the specified tests from being run. TEST may be: the
25 name of one of the tests in "List of requests for diagnostic tests"
26 section below; or the number of the test to be excluded where
27 test numbers are displayed by the command: test_cpu -test_names.
28
29
30 -from TEST NUMBER/NAME, -fm TEST NUMBER/NAME
31 starts testing from the test identified by TEST NUMBER or NAME. The
32 default is to start testing from test 1.
33 -help
34 displays a brief usage statement. This control argument should not
35 be used with any other control argument.
36 -history_regs, -hregs
37 displays history registers when a test fails. The default is not to
38 display them.
39 -long, -lg
40 displays machine conditions and history registers after a fault has
41 occured. The default is not to display them.
42 -machine_conditions, -mc
43 displays machine conditions when a test fails. The default is not
44 to display them.
45
46
47 -repeat COUNT, -rpt COUNT
48 repeats an entire sequence of tests for COUNT times. The default is
49 to run the test set one time.
50 -select TEST_LIST, -sel TEST_LIST
51 executes only those tests specified by TEST_LIST, where TEST_LIST is
52 either a set of test names or numbers from the tests that are run.
53
54 The tests are described briefly below. To find out the exact
55 details of each test, see the test_cpu program. The default is to
56 run all tests. The command line:
57
58 test_cpu -select cmpc tmir -repeat 5 -count 2
59
60 executes the "cmpc" test twice, then the "tmlr" test twice. The
61 sequence is repeated five times.
62
63
64 -stop_on_failure, -sof
65 stops testing when a test failure occurs and returns to a new
66 Multics command level. The default is to continue testing with the
67 next test.
68 -test_names
69 lists valid test names and the associated test numbers known to
70 test_cpu. This control argument should not be used with any other
71 control argument.
72 -to TEST NUMBER/NAME
73 stops testing after the test identified by TEST NUMBER or NAME. The
74 default is to run all tests.
75
76
77 List of requests for diagnostic tests:
78 mlrstern
79 checks a failure in which the fill character is placed as the first
80 character on a page. This test causes a MME1 fault if the hardware
81 fails.
82 tmlr
83 tries several MLR instructions, in several working combinations,
84 across a page boundary. Messages are printed for any failures.
85 csl_oob
86 checks a particular use of a CSL instruction where the first
87 descriptor is 0. This test causes an out_of_bounds fault if the
88 hardware fails, and a MME1 fault if it succeeds.
89
90
91 mvn
92 checks the use of an MVN instruction that moves a number to a
93 shorter number. The first two characters are dropped when the
94 hardware fails.
95 mvn_of1
96 checks the use of MVN to move the number 0. An overflow indicates
97 that the hardware failed.
98 tct
99 checks a particular TCT use. The test causes an op_not_complete if
100 the hardware fails, and a MME1 fault if it succeeds.
101 sreg
102 checks the use of an SREG instruction that occurs as the last
103 instruction in a page. The test causes an op_not_complete if the
104 hardware fails, and a MME1 fault if it succeeds.
105
106
107 csl_onc
108 checks a particular CSL use. The test causes an op_not_complete if
109 the hardware fails, and a MME1 fault if it succeeds.
110 test_sc2
111 checks the use of the SC modifier interacting with page faults. A
112 MME1 fault occurs if the hardware fails.
113 test_ci
114 checks the use of the CI modifier interacting with page faults. A
115 MME1 fault occurs if the hardware fails.
116 rpd_test
117 checks a particular use of the RPD instruction as it interacts with
118 the hardware. A MME1 fault occurs if the hardware fails.
119
120
121 mlr_test
122 checks the use of the MLR instruction across a bounds fault
123 boundary. The bounds fault is followed by a segment fault and a
124 page fault. A MME1 fault occurs if the hardware fails.
125 cls_test
126 checks the CSL instruction across a bound fault boundary. A MME1
127 fault occurs if the hardware fails.
128 cmpc
129 checks the CMPC instruction in a way that fails if a timer runout or
130 connect fault occurs in midexecution when the hardware is failing.
131 A MME1 fault occurs if the hardware fails.
132 bad_fill
133 checks the success of moving or comparing fill characters in the
134 first two words of a page. Failure is indicated by a miscompare and
135 a message to the user.
136
137
138 mpy_ofl
139 multiplies -2**35 by itself and checks for an overflow fault which
140 indicates failure.
141 test_xed
142 checks a particular indexed XED usage that fails if the first
143 executed instruction is an APU-type instruction. Failure is
144 indicated by a miscompare and a message to the user.
145 cmpc7
146 checks a CMPC failure when both strings begin seven words from a
147 page boundary and run into the next page. A MME1 fault occurs if
148 the hardware fails.
149 extra_fill
150 checks the MLR instruction to see if extra fill characters are
151 placed after a string when the string crosses a page boundary. A
152 MME1 fault occurs if the hardware fails.
153
154
155 test_cmpc_fill
156 checks the fill mechanism of the CMPC instruction near a page
157 boundary. A MME1 fault occurs if the hardware fails.
158 acv_restart
159 checks that machine conditions can successfully be restarted after
160 an access violation fault that is caused by a reference to data via
161 an EIS MLR instruction. Failure is indicated by successive
162 no_write_permission conditions.
163 scm_tally
164 checks to see if the SCM instruction works with the tally runout
165 indicator set correctly. The test calls a small alm program that
166 uses an SCM instruction. Because the hardware fails erratically,
167 the test is run 10 times to get a limited statistical sampling.
168 Failure is indicated by a message to the user indicating the number
169 of times the SCM instruction failed.
170
171
172 mvt_ascii_to_bcd
173 checks nine to six ASCII to BCD conversion using the MVT
174 instruction. A large ASCII data segment is generated. Then a BCD
175 segment is generated using non-EIS conversion. Three segments are
176 then converted from ASCII to BCD using the MVT instruction, and
177 these segments are compared to the known good BCD segment. If any
178 compare errors are detected, the contents of both segments are
179 dumped in octal at the failing location.
180 mvt_bcd_to_ascii
181 checks six to nine BCD to ASCII conversion using the method
182 described for the mvt_nine_to_six test above. If any compare errors
183 are detected, the contents of both segments are dumped in octal at
184 the failing location.
185
186
187 mvt_nine_to_four
188 checks 9-bit to 4-bit decimal to packed decimal conversion using
189 the MVT instruction. A large segment of data, containing 9-bit
190 characters of values 0 to 15 in a rotating pattern, is generated.
191 Then a second segment is generated, converting the 9-bit characters
192 into 4-bit characters using non-EIS conversion techniques. The
193 9-bit data segment is then converted to three 4-bit data segments
194 using the MVT instruction and compared to the known good 4-bit data.
195 If any discrepancies are found, the contents of both segments are
196 dumped in octal at the failing location.
197 mvt_four_to_nine
198 checks 4-bit to 9-bit packed decimal to decimal conversion using
199 the method described for the mvt_nine_to_four test above. If any
200 compare errors are found, the contents of both segments are dumped
201 in octal at the failing location.
202
203
204 mvt_ascii_to_ebcdic
205 checks nine to nine ASCII to EBCDIC character conversion using the
206 method described for the mvt_nine_to_four test above. If any
207 discrepancies are found, the contents of both segments are dumped at
208 the failing location.
209 mvt_ebcdic_to_ascii
210 checks nine to nine EBCDIC to ASCII character conversion using the
211 method described for the mvt_nine_to_four test above. If any
212 discrepancies are found, the contents of both segments are dumped in
213 octal at the failing location.
214
215
216 ci_mod_case_2
217 checks character indirect modification with two tally words and two
218 data character strings, each located at a page boundary. An LDA
219 instruction is executed on one tally word, CI mod, and a CMPA is
220 executed with a second tally word, CI mod. Both tally words point
221 to a character string that should be equal. If the zero indicator
222 does not come on as a result of the CMPA, a MME1 fault is taken,
223 indicating that the hardware failed.
224 acv_restart_csl
225 validates that machine conditions can be successfully restarted
226 after an access violation fault that is caused by a reference to
227 data via an EIS CSL instruction. Failure is indicated by
228 successive no_write_permission conditions.
229
230
231 cmpn_tst
232 checks that numeric data moved with an MVN instruction can be
233 successfully compared with a CMPN instruction. Failure is indicated
234 by a MME1 fault.
235 itp_mod
236 checks that an EPP2,* to a word pair that contains an ITP modifier
237 with a bit offset actually loads PR2 with the correct information.
238 A MME1 fault indicates failure.
239 mvnoosb
240 checks the prepage logic of the CPU for EIS numeric instructions.
241 Failure is indicated by a MME1 fault.
242 cmpb_with_sixbit_offset
243 checks the CMPB instruction with a six bit offset. A MME1 fault
244 indicates that the hardware failed.
245
246
247 cmpb_with_rotate
248 checks the CMPB instruction with a rotating pattern. A MME1 fault
249 indicates that the hardware failed.
250 cmpc_pgbnd
251 compares a 38-character data string against a zero-length string,
252 for a CMPC instruction that is located at seg|1767. Either an
253 out_of_bounds condition or a MME1 fault indicates that the hardware
254 failed.
255 csl_pgflt
256 checks that a CSL instruction does not get a no_write_perm condition
257 if it causes a page fault on the target string and the source string
258 is read-only.
259
260
261 scm_pgflt
262 tests a problem with the SCM instruction whereby the target operand
263 takes a page fault and the resulting comparison is not made.
264 Failure is indicated by a message to the user indicating the number
265 of miscompares.
266 scd_con_flt
267 tests a failure with the SCD instruction that fails when interrupted
268 by a connect fault. Failure is indicated by displaying the number
269 of times the SCD failed.
270 xed_dirflt_even
271 tests the ability of the CPU to perform an XED, located on an even
272 word location, of a pair of instructions located on a page boundary.
273 Failure is indicated by an IPR fault.
274
275
276 xed_dirflt_odd
277 tests the ability of the CPU to perform an XED, located on an odd
278 word location, of a pair of instructions located on a page boundary.
279 Failure is indicated by an IPR fault.
280 cmpc_adj_len
281 tests the ability of the processor to perform a CMPC instruction
282 which takes a fault on D2 and D2 has residue, indicated by the MIF
283 flag. The test fails when the level count on D2 is not adjusted
284 correctly on the SPL. Failure is indicated by an IPR fault.
285 cmpc_zero_ind
286 tests the ability of the processor to correctly restore the zero
287 indicator after returning from a page fault on D2 after a match has
288 occurred utilizing the CMPC instruction. Failure is indicated by an
289 IPR fault.
290
291
292 scm_tro
293 tests the ability of the processor to find the correct character
294 using a SCM instruction. The tally runout indicator should not be
295 set. Failure is indicated by an IPR fault.
296 rpt_test_odd
297 checks that a RPT instruction in an odd location does not fail after
298 a page fault on a STZ instruction, after crossing a page boundary.
299 Failure is indicated by an IPR fault.
300 rpt_test_even
301 checks that a RPT instruction in an even location does not fail
302 after a page fault on a STZ instruction, after crossing a page
303 boundary. Failure is indicated by an IPR fault.
304
305
306 scd_oob_tst
307 tests the conditions when D3 resides in a different segment than D1
308 or D2. Also tests the conditions if there is no match or if the
309 scan ends a few words from the end of a 64K seg. A seg fault is
310 taken on the seg described by D3.
311 cmpb_onc
312 checks the CPU for cmpb to complete correctly. An op_not_complete
313 fault will occur on a failure.
314 cmpc_a
315 checks the CPU to insure that the indicators are set correctly. An
316 illegal_opcode indicates an error.
317 cmpc_b
318 same as cmpc_a except the data and addresses are changed.
319
320
321 sreg_no_write
322 checks that the TRS is used not the PSR if a sreq instruction is
323 executed two locations from a page boundary.
324 tnz
325 checks for the conditonal transfer at a page boundary. An
326 illegal_opcode indicates an error.
327
328
329 Notes: All the tests run by test_cpu are contained in the segment
330 >system_library_tools>bound_cpu_tests_. This segment has an added name
331 of cpu_tests_. To display the machine condition trace of a test, use
332 the mc_trace command with the test_cpu command
333
334
335 :hcom:
336 /****^ HISTORY COMMENTS:
337 1) change2022-09-03Swenson, approve2022-09-03MCR10124,
338 audit2022-09-03Repair, install2022-09-03MR12.8-1035:
339 Fix documentation on -exclude control argument. See ticket 135 for
340 details.
341 END HISTORY COMMENTS */
342