1 # Copyright (C) 2012-2016 Free Software Foundation, Inc. 2 3 # This program is free software; you can redistribute it and/or modify 4 # it under the terms of the GNU General Public License as published by 5 # the Free Software Foundation; either version 3 of the License, or 6 # (at your option) any later version. 7 # 8 # This program is distributed in the hope that it will be useful, 9 # but WITHOUT ANY WARRANTY; without even the implied warranty of 10 # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 11 # GNU General Public License for more details. 12 # 13 # You should have received a copy of the GNU General Public License 14 # along with this program; if not, write to the Free Software 15 # Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. 16 17 # 18 # Some h8300sx tests -- t13_otr 19 # 20 21 proc do_t13_otr_test {} { 22 set testname "t13_otr.s -- h8sx misc tests" 23 24 gas_start "t13_otr.s" "-al" 25 26 # Check each instruction bit pattern to verify it got assembled correctly. 27 28 set x 0 29 expect { 30 -re ".* 11 1234 4000" { set x [expr $x+1]; exp_continue; } 31 -re ".* 12 1236 4100" { set x [expr $x+1]; exp_continue; } 32 -re ".* 13 1238 4200" { set x [expr $x+1]; exp_continue; } 33 -re ".* 14 123a 4300" { set x [expr $x+1]; exp_continue; } 34 -re ".* 15 123c 4400" { set x [expr $x+1]; exp_continue; } 35 -re ".* 16 123e 4500" { set x [expr $x+1]; exp_continue; } 36 -re ".* 17 1240 4600" { set x [expr $x+1]; exp_continue; } 37 -re ".* 18 1242 4700" { set x [expr $x+1]; exp_continue; } 38 -re ".* 19 1244 4800" { set x [expr $x+1]; exp_continue; } 39 -re ".* 20 1246 4900" { set x [expr $x+1]; exp_continue; } 40 -re ".* 21 1248 4A00" { set x [expr $x+1]; exp_continue; } 41 -re ".* 22 124a 4B00" { set x [expr $x+1]; exp_continue; } 42 -re ".* 23 124c 4C00" { set x [expr $x+1]; exp_continue; } 43 -re ".* 24 124e 4D00" { set x [expr $x+1]; exp_continue; } 44 -re ".* 25 1250 4E00" { set x [expr $x+1]; exp_continue; } 45 -re ".* 26 1252 4F00" { set x [expr $x+1]; exp_continue; } 46 -re ".* 27 " { 47 if [expr $x == 16] then { 48 pass "$testname: b\[cc\] 0x12+.+2" 49 } else { 50 fail "$testname: b\[cc\] 0x12+.+2 ($x)" 51 } 52 } 53 default { fail "$testname: b\[cc\] 0x12+.+2 ($x)" } 54 } 55 56 set x 0 57 expect { 58 -re ".* 28 1254 58000000" { set x [expr $x+1]; exp_continue; } 59 -re ".* 29 1258 58100000" { set x [expr $x+1]; exp_continue; } 60 -re ".* 30 125c 58200000" { set x [expr $x+1]; exp_continue; } 61 -re ".* 31 1260 58300000" { set x [expr $x+1]; exp_continue; } 62 -re ".* 32 1264 58400000" { set x [expr $x+1]; exp_continue; } 63 -re ".* 33 1268 58500000" { set x [expr $x+1]; exp_continue; } 64 -re ".* 34 126c 58600000" { set x [expr $x+1]; exp_continue; } 65 -re ".* 35 1270 58700000" { set x [expr $x+1]; exp_continue; } 66 -re ".* 36 1274 58800000" { set x [expr $x+1]; exp_continue; } 67 -re ".* 37 1278 58900000" { set x [expr $x+1]; exp_continue; } 68 -re ".* 38 127c 58A00000" { set x [expr $x+1]; exp_continue; } 69 -re ".* 39 1280 58B00000" { set x [expr $x+1]; exp_continue; } 70 -re ".* 40 1284 58C00000" { set x [expr $x+1]; exp_continue; } 71 -re ".* 41 1288 58D00000" { set x [expr $x+1]; exp_continue; } 72 -re ".* 42 128c 58E00000" { set x [expr $x+1]; exp_continue; } 73 -re ".* 43 1290 58F00000" { set x [expr $x+1]; exp_continue; } 74 -re ".* 44 " { 75 if [expr $x == 16] then { 76 pass "$testname: b\[cc\] 0x1234+.+4" 77 } else { 78 fail "$testname: b\[cc\] 0x1234+.+4 ($x)" 79 } 80 } 81 default { fail "$testname: b\[cc\] 0x1234+.+4 ($x)" } 82 } 83 84 set x 0 85 expect { 86 -re ".* 45 1294 4001" { set x [expr $x+1]; exp_continue; } 87 -re ".* 46 1296 0000" { set x [expr $x+1]; exp_continue; } 88 -re ".* 47 " { 89 if [expr $x == 2] then { 90 pass "$testname: bra/s" 91 } else { 92 fail "$testname: bra/s ($x)" 93 } 94 } 95 default { fail "$testname: bra/s ($x)" } 96 } 97 98 set x 0 99 expect { 100 -re ".* 48 1298 7C204700" { set x [expr $x+1]; exp_continue; } 101 -re ".* 49 129c 7E9A4700" { set x [expr $x+1]; exp_continue; } 102 -re ".* 50 12a0 6A101234" { set x [expr $x+1]; exp_continue; } 103 -re ".* 50 4700" { set x [expr $x+1]; exp_continue; } 104 -re ".* 51 12a6 6A301234" { set x [expr $x+1]; exp_continue; } 105 -re ".* 51 56784700" { set x [expr $x+1]; exp_continue; } 106 -re ".* 52 12ae 7C205870" { set x [expr $x+1]; exp_continue; } 107 -re ".* 52 0000" { set x [expr $x+1]; exp_continue; } 108 -re ".* 53 12b4 7E125870" { set x [expr $x+1]; exp_continue; } 109 -re ".* 53 0000" { set x [expr $x+1]; exp_continue; } 110 -re ".* 54 12ba 6A109ABC" { set x [expr $x+1]; exp_continue; } 111 -re ".* 54 58700000" { set x [expr $x+1]; exp_continue; } 112 -re ".* 55 12c2 6A301234" { set x [expr $x+1]; exp_continue; } 113 -re ".* 55 56785870" { set x [expr $x+1]; exp_continue; } 114 -re ".* 55 0000" { set x [expr $x+1]; exp_continue; } 115 -re ".* 56 " { 116 if [expr $x == 15] then { 117 pass "$testname: bra/bc #0x7, ..." 118 } else { 119 fail "$testname: bra/bc #0x7, ... ($x)" 120 } 121 } 122 default { fail "$testname: bra/bc #0x7, ... ($x)" } 123 } 124 125 set x 0 126 expect { 127 -re ".* 57 12cc 7C204F00" { set x [expr $x+1]; exp_continue; } 128 -re ".* 58 12d0 7E9A4F00" { set x [expr $x+1]; exp_continue; } 129 -re ".* 59 12d4 6A101234" { set x [expr $x+1]; exp_continue; } 130 -re ".* 59 4F00" { set x [expr $x+1]; exp_continue; } 131 -re ".* 60 12da 6A301234" { set x [expr $x+1]; exp_continue; } 132 -re ".* 60 56784F00" { set x [expr $x+1]; exp_continue; } 133 -re ".* 61 12e2 7C2058F0" { set x [expr $x+1]; exp_continue; } 134 -re ".* 61 0000" { set x [expr $x+1]; exp_continue; } 135 -re ".* 62 12e8 7E1258F0" { set x [expr $x+1]; exp_continue; } 136 -re ".* 62 0000" { set x [expr $x+1]; exp_continue; } 137 -re ".* 63 12ee 6A109ABC" { set x [expr $x+1]; exp_continue; } 138 -re ".* 63 58F00000" { set x [expr $x+1]; exp_continue; } 139 -re ".* 64 12f6 6A301234" { set x [expr $x+1]; exp_continue; } 140 -re ".* 64 567858F0" { set x [expr $x+1]; exp_continue; } 141 -re ".* 64 0000" { set x [expr $x+1]; exp_continue; } 142 -re ".* 65 " { 143 if [expr $x == 15] then { 144 pass "$testname: bra/bs #0x7, ..." 145 } else { 146 fail "$testname: bra/bs #0x7, ... ($x)" 147 } 148 } 149 default { fail "$testname: bra/bs #0x7, ... ($x)" } 150 } 151 152 set x 0 153 expect { 154 -re ".* 66 1300 7C205C70" { set x [expr $x+1]; exp_continue; } 155 -re ".* 66 0000" { set x [expr $x+1]; exp_continue; } 156 -re ".* 67 1306 7E125C70" { set x [expr $x+1]; exp_continue; } 157 -re ".* 67 0000" { set x [expr $x+1]; exp_continue; } 158 -re ".* 68 130c 6A109ABC" { set x [expr $x+1]; exp_continue; } 159 -re ".* 68 5C700000" { set x [expr $x+1]; exp_continue; } 160 -re ".* 69 1314 6A301234" { set x [expr $x+1]; exp_continue; } 161 -re ".* 69 56785C70" { set x [expr $x+1]; exp_continue; } 162 -re ".* 69 0000" { set x [expr $x+1]; exp_continue; } 163 -re ".* 70 " { 164 if [expr $x == 9] then { 165 pass "$testname: bsr/bc #0x7, ..." 166 } else { 167 fail "$testname: bsr/bc #0x7, ... ($x)" 168 } 169 } 170 default { fail "$testname: bsr/bc #0x7, ... ($x)" } 171 } 172 173 set x 0 174 expect { 175 -re ".* 71 131e 7C205CF0" { set x [expr $x+1]; exp_continue; } 176 -re ".* 71 0000" { set x [expr $x+1]; exp_continue; } 177 -re ".* 72 1324 7E125CF0" { set x [expr $x+1]; exp_continue; } 178 -re ".* 72 0000" { set x [expr $x+1]; exp_continue; } 179 -re ".* 73 132a 6A109ABC" { set x [expr $x+1]; exp_continue; } 180 -re ".* 73 5CF00000" { set x [expr $x+1]; exp_continue; } 181 -re ".* 74 1332 6A301234" { set x [expr $x+1]; exp_continue; } 182 -re ".* 74 56785CF0" { set x [expr $x+1]; exp_continue; } 183 -re ".* 74 0000" { set x [expr $x+1]; exp_continue; } 184 -re ".* 75 " { 185 if [expr $x == 9] then { 186 pass "$testname: bsr/bs #0x7, ..." 187 } else { 188 fail "$testname: bsr/bs #0x7, ... ($x)" 189 } 190 } 191 default { fail "$testname: bsr/bs #0x7, ... ($x)" } 192 } 193 194 set x 0 195 expect { 196 -re ".* 76 133c 5925" { set x [expr $x+1]; exp_continue; } 197 -re ".* 77 133e 5926" { set x [expr $x+1]; exp_continue; } 198 -re ".* 78 1340 5927" { set x [expr $x+1]; exp_continue; } 199 -re ".* 79 " { 200 if [expr $x == 3] then { 201 pass "$testname: bra ..." 202 } else { 203 fail "$testname: bra ... ($x)" 204 } 205 } 206 default { fail "$testname: bra ... ($x)" } 207 } 208 209 set x 0 210 expect { 211 -re ".* 80 1342 5500" { set x [expr $x+1]; exp_continue; } 212 -re ".* 81 1344 5C000000" { set x [expr $x+1]; exp_continue; } 213 -re ".* 82 1348 5D25" { set x [expr $x+1]; exp_continue; } 214 -re ".* 83 134a 5D26" { set x [expr $x+1]; exp_continue; } 215 -re ".* 84 134c 5D27" { set x [expr $x+1]; exp_continue; } 216 -re ".* 85 " { 217 if [expr $x == 5] then { 218 pass "$testname: bsr ..." 219 } else { 220 fail "$testname: bsr ... ($x)" 221 } 222 } 223 default { fail "$testname: bsr ... ($x)" } 224 } 225 226 set x 0 227 expect { 228 -re ".* 86 134e 5920" { set x [expr $x+1]; exp_continue; } 229 -re ".* 87 1350 5A000000" { set x [expr $x+1]; exp_continue; } 230 -re ".* 88 1354 59080000" { set x [expr $x+1]; exp_continue; } 231 -re ".* 88 0000" { set x [expr $x+1]; exp_continue; } 232 -re ".* 89 135a 5B00" { set x [expr $x+1]; exp_continue; } 233 -re ".* 90 135c 5980" { set x [expr $x+1]; exp_continue; } 234 -re ".* 91 " { 235 if [expr $x == 6] then { 236 pass "$testname: jmp ..." 237 } else { 238 fail "$testname: jmp ... ($x)" 239 } 240 } 241 default { fail "$testname: jmp ... ($x)" } 242 } 243 244 set x 0 245 expect { 246 -re ".* 92 135e 5D20" { set x [expr $x+1]; exp_continue; } 247 -re ".* 93 1360 5E000000" { set x [expr $x+1]; exp_continue; } 248 -re ".* 94 1364 5D080000" { set x [expr $x+1]; exp_continue; } 249 -re ".* 94 0000" { set x [expr $x+1]; exp_continue; } 250 -re ".* 95 136a 5F00" { set x [expr $x+1]; exp_continue; } 251 -re ".* 96 136c 5D00" { set x [expr $x+1]; exp_continue; } 252 -re ".* 97 " { 253 if [expr $x == 6] then { 254 pass "$testname: jsr ..." 255 } else { 256 fail "$testname: jsr ... ($x)" 257 } 258 } 259 default { fail "$testname: jsr ... ($x)" } 260 } 261 262 set x 0 263 expect { 264 -re ".* 98 136e 5470" { set x [expr $x+1]; exp_continue; } 265 -re ".* 99 1370 5403" { set x [expr $x+1]; exp_continue; } 266 -re ".* 100 1372 5412" { set x [expr $x+1]; exp_continue; } 267 -re ".* 101 1374 5424" { set x [expr $x+1]; exp_continue; } 268 -re ".* 102 1376 5436" { set x [expr $x+1]; exp_continue; } 269 -re ".* 103 " { 270 if [expr $x == 5] then { 271 pass "$testname: rts\[/l\]" 272 } else { 273 fail "$testname: rts\[/l\] ($x)" 274 } 275 } 276 default { fail "$testname: rts\[/l\] ($x)" } 277 } 278 279 set x 0 280 expect { 281 -re ".* 104 1378 5730" { set x [expr $x+1]; exp_continue; } 282 -re ".* 105 " { 283 if [expr $x == 1] then { 284 pass "$testname: trapa #0x3" 285 } else { 286 fail "$testname: trapa #0x3 ($x)" 287 } 288 } 289 default { fail "$testname: trapa #0x3 ($x)" } 290 } 291 292 set x 0 293 expect { 294 -re ".* 106 137a 5670" { set x [expr $x+1]; exp_continue; } 295 -re ".* 107 137c 5603" { set x [expr $x+1]; exp_continue; } 296 -re ".* 108 137e 5612" { set x [expr $x+1]; exp_continue; } 297 -re ".* 109 1380 5624" { set x [expr $x+1]; exp_continue; } 298 -re ".* 110 1382 5636" { set x [expr $x+1]; exp_continue; } 299 -re ".* 111 " { 300 if [expr $x == 5] then { 301 pass "$testname: rte\[/l\]" 302 } else { 303 fail "$testname: rte\[/l\] ($x)" 304 } 305 } 306 default { fail "$testname: rte\[/l\] ($x)" } 307 } 308 309 set x 0 310 expect { 311 -re ".* 112 1384 0712" { set x [expr $x+1]; exp_continue; } 312 -re ".* 113 1386 0303" { set x [expr $x+1]; exp_continue; } 313 -re ".* 114 1388 01406930" { set x [expr $x+1]; exp_continue; } 314 -re ".* 115 138c 01406D30" { set x [expr $x+1]; exp_continue; } 315 -re ".* 116 1390 01406F30" { set x [expr $x+1]; exp_continue; } 316 -re ".* 116 1234" { set x [expr $x+1]; exp_continue; } 317 -re ".* 117 1396 01407830" { set x [expr $x+1]; exp_continue; } 318 -re ".* 117 6B201234" { set x [expr $x+1]; exp_continue; } 319 -re ".* 117 5678" { set x [expr $x+1]; exp_continue; } 320 -re ".* 118 13a0 01406B00" { set x [expr $x+1]; exp_continue; } 321 -re ".* 118 1234" { set x [expr $x+1]; exp_continue; } 322 -re ".* 119 13a6 01406B20" { set x [expr $x+1]; exp_continue; } 323 -re ".* 119 12345678" { set x [expr $x+1]; exp_continue; } 324 -re ".* 120 " { 325 if [expr $x == 13] then { 326 pass "$testname: ldc.w ..., ccr" 327 } else { 328 fail "$testname: ldc.w ..., ccr ($x)" 329 } 330 } 331 default { fail "$testname: ldc.w ..., ccr ($x)" } 332 } 333 334 set x 0 335 expect { 336 -re ".* 121 13ae 01410712" { set x [expr $x+1]; exp_continue; } 337 -re ".* 122 13b2 0313" { set x [expr $x+1]; exp_continue; } 338 -re ".* 123 13b4 01416930" { set x [expr $x+1]; exp_continue; } 339 -re ".* 124 13b8 01416D30" { set x [expr $x+1]; exp_continue; } 340 -re ".* 125 13bc 01416F30" { set x [expr $x+1]; exp_continue; } 341 -re ".* 125 1234" { set x [expr $x+1]; exp_continue; } 342 -re ".* 126 13c2 01417830" { set x [expr $x+1]; exp_continue; } 343 -re ".* 126 6B201234" { set x [expr $x+1]; exp_continue; } 344 -re ".* 126 5678" { set x [expr $x+1]; exp_continue; } 345 -re ".* 127 13cc 01416B00" { set x [expr $x+1]; exp_continue; } 346 -re ".* 127 1234" { set x [expr $x+1]; exp_continue; } 347 -re ".* 128 13d2 01416B20" { set x [expr $x+1]; exp_continue; } 348 -re ".* 128 12345678" { set x [expr $x+1]; exp_continue; } 349 -re ".* 129 " { 350 if [expr $x == 13] then { 351 pass "$testname: ldc.w ..., exr" 352 } else { 353 fail "$testname: ldc.w ..., exr ($x)" 354 } 355 } 356 default { fail "$testname: ldc.w ..., exr ($x)" } 357 } 358 359 set x 0 360 expect { 361 -re ".* 130 13da 0201" { set x [expr $x+1]; exp_continue; } 362 -re ".* 131 13dc 01406990" { set x [expr $x+1]; exp_continue; } 363 -re ".* 132 13e0 01406D90" { set x [expr $x+1]; exp_continue; } 364 -re ".* 133 13e4 01406F90" { set x [expr $x+1]; exp_continue; } 365 -re ".* 133 1234" { set x [expr $x+1]; exp_continue; } 366 -re ".* 134 13ea 01407810" { set x [expr $x+1]; exp_continue; } 367 -re ".* 134 6BA01234" { set x [expr $x+1]; exp_continue; } 368 -re ".* 134 5678" { set x [expr $x+1]; exp_continue; } 369 -re ".* 135 13f4 01406B80" { set x [expr $x+1]; exp_continue; } 370 -re ".* 135 1234" { set x [expr $x+1]; exp_continue; } 371 -re ".* 136 13fa 01406BA0" { set x [expr $x+1]; exp_continue; } 372 -re ".* 136 12345678" { set x [expr $x+1]; exp_continue; } 373 -re ".* 137 " { 374 if [expr $x == 12] then { 375 pass "$testname: stc.w ccr, ..." 376 } else { 377 fail "$testname: stc.w ccr, ... ($x)" 378 } 379 } 380 default { fail "$testname: stc.w ccr, ... ($x)" } 381 } 382 383 set x 0 384 expect { 385 -re ".* 138 1402 0211" { set x [expr $x+1]; exp_continue; } 386 -re ".* 139 1404 01416990" { set x [expr $x+1]; exp_continue; } 387 -re ".* 140 1408 01416D90" { set x [expr $x+1]; exp_continue; } 388 -re ".* 141 140c 01416F90" { set x [expr $x+1]; exp_continue; } 389 -re ".* 141 1234" { set x [expr $x+1]; exp_continue; } 390 -re ".* 142 1412 01417810" { set x [expr $x+1]; exp_continue; } 391 -re ".* 142 6BA01234" { set x [expr $x+1]; exp_continue; } 392 -re ".* 142 5678" { set x [expr $x+1]; exp_continue; } 393 -re ".* 143 141c 01416B80" { set x [expr $x+1]; exp_continue; } 394 -re ".* 143 1234" { set x [expr $x+1]; exp_continue; } 395 -re ".* 144 1422 01416BA0" { set x [expr $x+1]; exp_continue; } 396 -re ".* 144 12345678" { set x [expr $x+1]; exp_continue; } 397 -re ".* 145 " { 398 if [expr $x == 12] then { 399 pass "$testname: stc.w exr, ..." 400 } else { 401 fail "$testname: stc.w exr, ... ($x)" 402 } 403 } 404 default { fail "$testname: stc.w exr, ... ($x)" } 405 } 406 407 set x 0 408 expect { 409 -re ".* 146 142a 0412" { set x [expr $x+1]; exp_continue; } 410 -re ".* 147 142c 01410412" { set x [expr $x+1]; exp_continue; } 411 -re ".* 148 " { 412 if [expr $x == 2] then { 413 pass "$testname: orc.b #0x12:8, ..." 414 } else { 415 fail "$testname: orc.b #0x12:8, ... ($x)" 416 } 417 } 418 default { fail "$testname: orc.b #0x12:8, ... ($x)" } 419 } 420 421 set x 0 422 expect { 423 -re ".* 149 1430 0512" { set x [expr $x+1]; exp_continue; } 424 -re ".* 150 1432 01410512" { set x [expr $x+1]; exp_continue; } 425 -re ".* 151 " { 426 if [expr $x == 2] then { 427 pass "$testname: xorc.b #0x12:8, ..." 428 } else { 429 fail "$testname: xorc.b #0x12:8, ... ($x)" 430 } 431 } 432 default { fail "$testname: xorc.b #0x12:8, ... ($x)" } 433 } 434 435 set x 0 436 expect { 437 -re ".* 152 1436 0612" { set x [expr $x+1]; exp_continue; } 438 -re ".* 153 1438 01410612" { set x [expr $x+1]; exp_continue; } 439 -re ".* 154 " { 440 if [expr $x == 2] then { 441 pass "$testname: andc.b #0x12:8, ..." 442 } else { 443 fail "$testname: andc.b #0x12:8, ... ($x)" 444 } 445 } 446 default { fail "$testname: andc.b #0x12:8, ... ($x)" } 447 } 448 449 set x 0 450 expect { 451 -re ".* 155 143c 0180" { set x [expr $x+1]; exp_continue; } 452 -re ".* 156 " { 453 if [expr $x == 1] then { 454 pass "$testname: sleep" 455 } else { 456 fail "$testname: sleep ($x)" 457 } 458 } 459 default { fail "$testname: sleep ($x)" } 460 } 461 462 set x 0 463 expect { 464 -re ".* 157 143e 0000" { set x [expr $x+1]; exp_continue; } 465 -re ".* 158 " { 466 if [expr $x == 1] then { 467 pass "$testname: nop" 468 } else { 469 fail "$testname: nop ($x)" 470 } 471 } 472 default { fail "$testname: nop ($x)" } 473 } 474 475 # This was intended to do any cleanup necessary. 476 # It kinda looks like it isn't needed, but just 477 # in case, please keep it in for now. 478 479 gas_finish 480 481 } 482 483 if [istarget h8300*-*-elf] then { 484 # Test advanced h8300sx instructions. 485 do_t13_otr_test 486 } 487 488