1; 2; Copyright (c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved. 3; Copyright (c) 2024 Valve Corporation 4; Copyright (c) 2024 LunarG, Inc. 5; 6; Licensed under the Apache License, Version 2.0 (the "License"); 7; you may not use this file except in compliance with the License. 8; You may obtain a copy of the License at 9; 10; http://www.apache.org/licenses/LICENSE-2.0 11; 12; Unless required by applicable law or agreed to in writing, software 13; distributed under the License is distributed on an "AS IS" BASIS, 14; WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15; See the License for the specific language governing permissions and 16; limitations under the License. 17; 18; Author: Eric Sullivan <esullivan@nvidia.com> 19; Author: Charles Giessen <charles@lunarg.com> 20; 21 22; This code is used to pass on device (including physical device) extensions through the call chain. It must do this without 23; creating a stack frame, because the actual parameters of the call are not known. Since the first parameter is known to be a 24; VkPhysicalDevice or a dispatchable object it can unwrap the object, possibly overwriting the wrapped physical device, and then 25; jump to the next function in the call chain 26 27 28 GET gen_defines.asm 29 30 EXTERN loader_log_asm_function_not_supported 31 32 IF AARCH_64==1 33 34 MACRO 35 PhysDevExtTramp $num 36 ALIGN 37 EXPORT vkPhysDevExtTramp$num [FUNC] 38vkPhysDevExtTramp$num FUNCTION 39 ldr x9, [x0] ; Load the loader_instance_dispatch_table* into x9 40 ldr x0, [x0, PHYS_DEV_OFFSET_PHYS_DEV_TRAMP] ; Load the unwrapped VkPhysicalDevice into x0 41 mov x10, #(PHYS_DEV_OFFSET_INST_DISPATCH + (PTR_SIZE * $num)) ; Put the offset of the entry in the dispatch table for the function 42 ldr x11, [x9, x10] ; Load the address to branch to out of the dispatch table 43 br x11 ; Branch to the next member of the dispatch chain 44 ENDFUNC 45 MEND 46 47 MACRO 48$label PhysDevExtTermin $num 49 ALIGN 50 EXPORT vkPhysDevExtTermin$num [FUNC] 51vkPhysDevExtTermin$num FUNCTION 52 ldr x9, [x0, ICD_TERM_OFFSET_PHYS_DEV_TERM] ; Load the loader_icd_term* in x9 53 mov x11, (DISPATCH_OFFSET_ICD_TERM + (PTR_SIZE * $num)) ; Put the offset into the dispatch table in x11 54 ldr x10, [x9, x11] ; Load the address of the next function in the dispatch chain 55 cbz x10, terminError$num ; Go to the error section if the next function in the chain is NULL 56 ldr x0, [x0, PHYS_DEV_OFFSET_PHYS_DEV_TERM] ; Unwrap the VkPhysicalDevice in x0 57 br x10 ; Jump to the next function in the chain 58terminError$num 59 mov x10, (FUNCTION_OFFSET_INSTANCE + (CHAR_PTR_SIZE * $num)) ; Offset of the function name string in the instance 60 ldr x11, [x9, INSTANCE_OFFSET_ICD_TERM] ; Load the instance pointer 61 mov x0, x11 ; Vulkan instance pointer (first arg) 62 mov x1, VULKAN_LOADER_ERROR_BIT ; The error logging bit (second arg) 63 mov x2, #0 ; Zero (third arg) 64 ldr x3, [x11, x10] ; The function name (fourth arg) 65 bl loader_log_asm_function_not_supported ; Log the error message before we crash 66 mov x0, #0 67 br x0 ; Crash intentionally by jumping to address zero 68 ENDFUNC 69 MEND 70 71 MACRO 72 DevExtTramp $num 73 ALIGN 74 EXPORT vkdev_ext$num [FUNC] 75vkdev_ext$num FUNCTION 76 ldr x9, [x0] ; Load the loader_instance_dispatch_table* into x9 77 mov x10, (EXT_OFFSET_DEVICE_DISPATCH + (PTR_SIZE * $num)) ; Offset of the desired function in the dispatch table 78 ldr x11, [x9, x10] ; Load the function address 79 br x11 80 ENDFUNC 81 MEND 82 83; 32 bit (armhf) assembly 84 ELSE 85 86 MACRO 87 PhysDevExtTramp $num 88 ALIGN 89 EXPORT vkPhysDevExtTramp$num [FUNC] 90vkPhysDevExtTramp$num FUNCTION 91 ldr r4, [r0] ; Load the loader_instance_dispatch_table* into r4 92 ldr r0, [r0, #PHYS_DEV_OFFSET_PHYS_DEV_TRAMP] ; Load the unwrapped VkPhysicalDevice into r0 93 mov r5, #(PHYS_DEV_OFFSET_INST_DISPATCH + (PTR_SIZE * $num)) ; Put the offset of the entry in the dispatch table for the function 94 ldr r6, [r4, r5] ; Load the address to branch to out of the dispatch table 95 bx r6 ; Branch to the next member of the dispatch chain 96 ENDFUNC 97 MEND 98 99 MACRO 100$label PhysDevExtTermin $num 101 ALIGN 102 EXPORT vkPhysDevExtTermin$num [FUNC] 103vkPhysDevExtTermin$num FUNCTION 104 ldr r4, [r0, #ICD_TERM_OFFSET_PHYS_DEV_TERM] ; Load the loader_icd_term* in r4 105 mov r6, #(DISPATCH_OFFSET_ICD_TERM + (PTR_SIZE * $num)) ; Put the offset into the dispatch table in r6 106 ldr r5, [r4, r6] ; Load the address of the next function in the dispatch chain 107 cbz r5, terminError$num ; Go to the error section if the next function in the chain is NULL 108 ldr r0, [r0, #PHYS_DEV_OFFSET_PHYS_DEV_TERM] ; Unwrap the VkPhysicalDevice in r0 109 bx r5 ; Jump to the next function in the chain 110terminError$num 111 mov r5, #(FUNCTION_OFFSET_INSTANCE + (CHAR_PTR_SIZE * $num)) ; Offset of the function name string in the instance 112 ldr r6, [r4, #INSTANCE_OFFSET_ICD_TERM] ; Load the instance pointer 113 mov r0, r6 ; Vulkan instance pointer (first arg) 114 mov r1, #VULKAN_LOADER_ERROR_BIT ; The error logging bit (second arg) 115 mov r2, #0 ; Zero (third arg) 116 ldr r3, [r6, r5] ; The function name (fourth arg) 117 bl loader_log_asm_function_not_supported ; Log the error message before we crash 118 mov r0, #0 119 bx r0 ; Crash intentionally by jumping to address zero 120 ENDFUNC 121 MEND 122 123 MACRO 124 DevExtTramp $num 125 ALIGN 126 EXPORT vkdev_ext$num [FUNC] 127vkdev_ext$num FUNCTION 128 ldr r4, [r0] ; Load the loader_instance_dispatch_table* into r4 129 mov r5, #(EXT_OFFSET_DEVICE_DISPATCH + (PTR_SIZE * $num)) ; Offset of the desired function in the dispatch table 130 ldr r6, [r4, r5] ; Load the function address 131 bx r6 132 ENDFUNC 133 MEND 134 135 ENDIF 136 137 AREA terminator_string_data, DATA, READONLY 138 139termin_error_string DCB "Function %s not supported for this physical device", 0 140 141 AREA UnknownFunctionImpl, CODE, READONLY 142 143 PhysDevExtTramp 0 144 PhysDevExtTramp 1 145 PhysDevExtTramp 2 146 PhysDevExtTramp 3 147 PhysDevExtTramp 4 148 PhysDevExtTramp 5 149 PhysDevExtTramp 6 150 PhysDevExtTramp 7 151 PhysDevExtTramp 8 152 PhysDevExtTramp 9 153 PhysDevExtTramp 10 154 PhysDevExtTramp 11 155 PhysDevExtTramp 12 156 PhysDevExtTramp 13 157 PhysDevExtTramp 14 158 PhysDevExtTramp 15 159 PhysDevExtTramp 16 160 PhysDevExtTramp 17 161 PhysDevExtTramp 18 162 PhysDevExtTramp 19 163 PhysDevExtTramp 20 164 PhysDevExtTramp 21 165 PhysDevExtTramp 22 166 PhysDevExtTramp 23 167 PhysDevExtTramp 24 168 PhysDevExtTramp 25 169 PhysDevExtTramp 26 170 PhysDevExtTramp 27 171 PhysDevExtTramp 28 172 PhysDevExtTramp 29 173 PhysDevExtTramp 30 174 PhysDevExtTramp 31 175 PhysDevExtTramp 32 176 PhysDevExtTramp 33 177 PhysDevExtTramp 34 178 PhysDevExtTramp 35 179 PhysDevExtTramp 36 180 PhysDevExtTramp 37 181 PhysDevExtTramp 38 182 PhysDevExtTramp 39 183 PhysDevExtTramp 40 184 PhysDevExtTramp 41 185 PhysDevExtTramp 42 186 PhysDevExtTramp 43 187 PhysDevExtTramp 44 188 PhysDevExtTramp 45 189 PhysDevExtTramp 46 190 PhysDevExtTramp 47 191 PhysDevExtTramp 48 192 PhysDevExtTramp 49 193 PhysDevExtTramp 50 194 PhysDevExtTramp 51 195 PhysDevExtTramp 52 196 PhysDevExtTramp 53 197 PhysDevExtTramp 54 198 PhysDevExtTramp 55 199 PhysDevExtTramp 56 200 PhysDevExtTramp 57 201 PhysDevExtTramp 58 202 PhysDevExtTramp 59 203 PhysDevExtTramp 60 204 PhysDevExtTramp 61 205 PhysDevExtTramp 62 206 PhysDevExtTramp 63 207 PhysDevExtTramp 64 208 PhysDevExtTramp 65 209 PhysDevExtTramp 66 210 PhysDevExtTramp 67 211 PhysDevExtTramp 68 212 PhysDevExtTramp 69 213 PhysDevExtTramp 70 214 PhysDevExtTramp 71 215 PhysDevExtTramp 72 216 PhysDevExtTramp 73 217 PhysDevExtTramp 74 218 PhysDevExtTramp 75 219 PhysDevExtTramp 76 220 PhysDevExtTramp 77 221 PhysDevExtTramp 78 222 PhysDevExtTramp 79 223 PhysDevExtTramp 80 224 PhysDevExtTramp 81 225 PhysDevExtTramp 82 226 PhysDevExtTramp 83 227 PhysDevExtTramp 84 228 PhysDevExtTramp 85 229 PhysDevExtTramp 86 230 PhysDevExtTramp 87 231 PhysDevExtTramp 88 232 PhysDevExtTramp 89 233 PhysDevExtTramp 90 234 PhysDevExtTramp 91 235 PhysDevExtTramp 92 236 PhysDevExtTramp 93 237 PhysDevExtTramp 94 238 PhysDevExtTramp 95 239 PhysDevExtTramp 96 240 PhysDevExtTramp 97 241 PhysDevExtTramp 98 242 PhysDevExtTramp 99 243 PhysDevExtTramp 100 244 PhysDevExtTramp 101 245 PhysDevExtTramp 102 246 PhysDevExtTramp 103 247 PhysDevExtTramp 104 248 PhysDevExtTramp 105 249 PhysDevExtTramp 106 250 PhysDevExtTramp 107 251 PhysDevExtTramp 108 252 PhysDevExtTramp 109 253 PhysDevExtTramp 110 254 PhysDevExtTramp 111 255 PhysDevExtTramp 112 256 PhysDevExtTramp 113 257 PhysDevExtTramp 114 258 PhysDevExtTramp 115 259 PhysDevExtTramp 116 260 PhysDevExtTramp 117 261 PhysDevExtTramp 118 262 PhysDevExtTramp 119 263 PhysDevExtTramp 120 264 PhysDevExtTramp 121 265 PhysDevExtTramp 122 266 PhysDevExtTramp 123 267 PhysDevExtTramp 124 268 PhysDevExtTramp 125 269 PhysDevExtTramp 126 270 PhysDevExtTramp 127 271 PhysDevExtTramp 128 272 PhysDevExtTramp 129 273 PhysDevExtTramp 130 274 PhysDevExtTramp 131 275 PhysDevExtTramp 132 276 PhysDevExtTramp 133 277 PhysDevExtTramp 134 278 PhysDevExtTramp 135 279 PhysDevExtTramp 136 280 PhysDevExtTramp 137 281 PhysDevExtTramp 138 282 PhysDevExtTramp 139 283 PhysDevExtTramp 140 284 PhysDevExtTramp 141 285 PhysDevExtTramp 142 286 PhysDevExtTramp 143 287 PhysDevExtTramp 144 288 PhysDevExtTramp 145 289 PhysDevExtTramp 146 290 PhysDevExtTramp 147 291 PhysDevExtTramp 148 292 PhysDevExtTramp 149 293 PhysDevExtTramp 150 294 PhysDevExtTramp 151 295 PhysDevExtTramp 152 296 PhysDevExtTramp 153 297 PhysDevExtTramp 154 298 PhysDevExtTramp 155 299 PhysDevExtTramp 156 300 PhysDevExtTramp 157 301 PhysDevExtTramp 158 302 PhysDevExtTramp 159 303 PhysDevExtTramp 160 304 PhysDevExtTramp 161 305 PhysDevExtTramp 162 306 PhysDevExtTramp 163 307 PhysDevExtTramp 164 308 PhysDevExtTramp 165 309 PhysDevExtTramp 166 310 PhysDevExtTramp 167 311 PhysDevExtTramp 168 312 PhysDevExtTramp 169 313 PhysDevExtTramp 170 314 PhysDevExtTramp 171 315 PhysDevExtTramp 172 316 PhysDevExtTramp 173 317 PhysDevExtTramp 174 318 PhysDevExtTramp 175 319 PhysDevExtTramp 176 320 PhysDevExtTramp 177 321 PhysDevExtTramp 178 322 PhysDevExtTramp 179 323 PhysDevExtTramp 180 324 PhysDevExtTramp 181 325 PhysDevExtTramp 182 326 PhysDevExtTramp 183 327 PhysDevExtTramp 184 328 PhysDevExtTramp 185 329 PhysDevExtTramp 186 330 PhysDevExtTramp 187 331 PhysDevExtTramp 188 332 PhysDevExtTramp 189 333 PhysDevExtTramp 190 334 PhysDevExtTramp 191 335 PhysDevExtTramp 192 336 PhysDevExtTramp 193 337 PhysDevExtTramp 194 338 PhysDevExtTramp 195 339 PhysDevExtTramp 196 340 PhysDevExtTramp 197 341 PhysDevExtTramp 198 342 PhysDevExtTramp 199 343 PhysDevExtTramp 200 344 PhysDevExtTramp 201 345 PhysDevExtTramp 202 346 PhysDevExtTramp 203 347 PhysDevExtTramp 204 348 PhysDevExtTramp 205 349 PhysDevExtTramp 206 350 PhysDevExtTramp 207 351 PhysDevExtTramp 208 352 PhysDevExtTramp 209 353 PhysDevExtTramp 210 354 PhysDevExtTramp 211 355 PhysDevExtTramp 212 356 PhysDevExtTramp 213 357 PhysDevExtTramp 214 358 PhysDevExtTramp 215 359 PhysDevExtTramp 216 360 PhysDevExtTramp 217 361 PhysDevExtTramp 218 362 PhysDevExtTramp 219 363 PhysDevExtTramp 220 364 PhysDevExtTramp 221 365 PhysDevExtTramp 222 366 PhysDevExtTramp 223 367 PhysDevExtTramp 224 368 PhysDevExtTramp 225 369 PhysDevExtTramp 226 370 PhysDevExtTramp 227 371 PhysDevExtTramp 228 372 PhysDevExtTramp 229 373 PhysDevExtTramp 230 374 PhysDevExtTramp 231 375 PhysDevExtTramp 232 376 PhysDevExtTramp 233 377 PhysDevExtTramp 234 378 PhysDevExtTramp 235 379 PhysDevExtTramp 236 380 PhysDevExtTramp 237 381 PhysDevExtTramp 238 382 PhysDevExtTramp 239 383 PhysDevExtTramp 240 384 PhysDevExtTramp 241 385 PhysDevExtTramp 242 386 PhysDevExtTramp 243 387 PhysDevExtTramp 244 388 PhysDevExtTramp 245 389 PhysDevExtTramp 246 390 PhysDevExtTramp 247 391 PhysDevExtTramp 248 392 PhysDevExtTramp 249 393 394 PhysDevExtTermin 0 395 PhysDevExtTermin 1 396 PhysDevExtTermin 2 397 PhysDevExtTermin 3 398 PhysDevExtTermin 4 399 PhysDevExtTermin 5 400 PhysDevExtTermin 6 401 PhysDevExtTermin 7 402 PhysDevExtTermin 8 403 PhysDevExtTermin 9 404 PhysDevExtTermin 10 405 PhysDevExtTermin 11 406 PhysDevExtTermin 12 407 PhysDevExtTermin 13 408 PhysDevExtTermin 14 409 PhysDevExtTermin 15 410 PhysDevExtTermin 16 411 PhysDevExtTermin 17 412 PhysDevExtTermin 18 413 PhysDevExtTermin 19 414 PhysDevExtTermin 20 415 PhysDevExtTermin 21 416 PhysDevExtTermin 22 417 PhysDevExtTermin 23 418 PhysDevExtTermin 24 419 PhysDevExtTermin 25 420 PhysDevExtTermin 26 421 PhysDevExtTermin 27 422 PhysDevExtTermin 28 423 PhysDevExtTermin 29 424 PhysDevExtTermin 30 425 PhysDevExtTermin 31 426 PhysDevExtTermin 32 427 PhysDevExtTermin 33 428 PhysDevExtTermin 34 429 PhysDevExtTermin 35 430 PhysDevExtTermin 36 431 PhysDevExtTermin 37 432 PhysDevExtTermin 38 433 PhysDevExtTermin 39 434 PhysDevExtTermin 40 435 PhysDevExtTermin 41 436 PhysDevExtTermin 42 437 PhysDevExtTermin 43 438 PhysDevExtTermin 44 439 PhysDevExtTermin 45 440 PhysDevExtTermin 46 441 PhysDevExtTermin 47 442 PhysDevExtTermin 48 443 PhysDevExtTermin 49 444 PhysDevExtTermin 50 445 PhysDevExtTermin 51 446 PhysDevExtTermin 52 447 PhysDevExtTermin 53 448 PhysDevExtTermin 54 449 PhysDevExtTermin 55 450 PhysDevExtTermin 56 451 PhysDevExtTermin 57 452 PhysDevExtTermin 58 453 PhysDevExtTermin 59 454 PhysDevExtTermin 60 455 PhysDevExtTermin 61 456 PhysDevExtTermin 62 457 PhysDevExtTermin 63 458 PhysDevExtTermin 64 459 PhysDevExtTermin 65 460 PhysDevExtTermin 66 461 PhysDevExtTermin 67 462 PhysDevExtTermin 68 463 PhysDevExtTermin 69 464 PhysDevExtTermin 70 465 PhysDevExtTermin 71 466 PhysDevExtTermin 72 467 PhysDevExtTermin 73 468 PhysDevExtTermin 74 469 PhysDevExtTermin 75 470 PhysDevExtTermin 76 471 PhysDevExtTermin 77 472 PhysDevExtTermin 78 473 PhysDevExtTermin 79 474 PhysDevExtTermin 80 475 PhysDevExtTermin 81 476 PhysDevExtTermin 82 477 PhysDevExtTermin 83 478 PhysDevExtTermin 84 479 PhysDevExtTermin 85 480 PhysDevExtTermin 86 481 PhysDevExtTermin 87 482 PhysDevExtTermin 88 483 PhysDevExtTermin 89 484 PhysDevExtTermin 90 485 PhysDevExtTermin 91 486 PhysDevExtTermin 92 487 PhysDevExtTermin 93 488 PhysDevExtTermin 94 489 PhysDevExtTermin 95 490 PhysDevExtTermin 96 491 PhysDevExtTermin 97 492 PhysDevExtTermin 98 493 PhysDevExtTermin 99 494 PhysDevExtTermin 100 495 PhysDevExtTermin 101 496 PhysDevExtTermin 102 497 PhysDevExtTermin 103 498 PhysDevExtTermin 104 499 PhysDevExtTermin 105 500 PhysDevExtTermin 106 501 PhysDevExtTermin 107 502 PhysDevExtTermin 108 503 PhysDevExtTermin 109 504 PhysDevExtTermin 110 505 PhysDevExtTermin 111 506 PhysDevExtTermin 112 507 PhysDevExtTermin 113 508 PhysDevExtTermin 114 509 PhysDevExtTermin 115 510 PhysDevExtTermin 116 511 PhysDevExtTermin 117 512 PhysDevExtTermin 118 513 PhysDevExtTermin 119 514 PhysDevExtTermin 120 515 PhysDevExtTermin 121 516 PhysDevExtTermin 122 517 PhysDevExtTermin 123 518 PhysDevExtTermin 124 519 PhysDevExtTermin 125 520 PhysDevExtTermin 126 521 PhysDevExtTermin 127 522 PhysDevExtTermin 128 523 PhysDevExtTermin 129 524 PhysDevExtTermin 130 525 PhysDevExtTermin 131 526 PhysDevExtTermin 132 527 PhysDevExtTermin 133 528 PhysDevExtTermin 134 529 PhysDevExtTermin 135 530 PhysDevExtTermin 136 531 PhysDevExtTermin 137 532 PhysDevExtTermin 138 533 PhysDevExtTermin 139 534 PhysDevExtTermin 140 535 PhysDevExtTermin 141 536 PhysDevExtTermin 142 537 PhysDevExtTermin 143 538 PhysDevExtTermin 144 539 PhysDevExtTermin 145 540 PhysDevExtTermin 146 541 PhysDevExtTermin 147 542 PhysDevExtTermin 148 543 PhysDevExtTermin 149 544 PhysDevExtTermin 150 545 PhysDevExtTermin 151 546 PhysDevExtTermin 152 547 PhysDevExtTermin 153 548 PhysDevExtTermin 154 549 PhysDevExtTermin 155 550 PhysDevExtTermin 156 551 PhysDevExtTermin 157 552 PhysDevExtTermin 158 553 PhysDevExtTermin 159 554 PhysDevExtTermin 160 555 PhysDevExtTermin 161 556 PhysDevExtTermin 162 557 PhysDevExtTermin 163 558 PhysDevExtTermin 164 559 PhysDevExtTermin 165 560 PhysDevExtTermin 166 561 PhysDevExtTermin 167 562 PhysDevExtTermin 168 563 PhysDevExtTermin 169 564 PhysDevExtTermin 170 565 PhysDevExtTermin 171 566 PhysDevExtTermin 172 567 PhysDevExtTermin 173 568 PhysDevExtTermin 174 569 PhysDevExtTermin 175 570 PhysDevExtTermin 176 571 PhysDevExtTermin 177 572 PhysDevExtTermin 178 573 PhysDevExtTermin 179 574 PhysDevExtTermin 180 575 PhysDevExtTermin 181 576 PhysDevExtTermin 182 577 PhysDevExtTermin 183 578 PhysDevExtTermin 184 579 PhysDevExtTermin 185 580 PhysDevExtTermin 186 581 PhysDevExtTermin 187 582 PhysDevExtTermin 188 583 PhysDevExtTermin 189 584 PhysDevExtTermin 190 585 PhysDevExtTermin 191 586 PhysDevExtTermin 192 587 PhysDevExtTermin 193 588 PhysDevExtTermin 194 589 PhysDevExtTermin 195 590 PhysDevExtTermin 196 591 PhysDevExtTermin 197 592 PhysDevExtTermin 198 593 PhysDevExtTermin 199 594 PhysDevExtTermin 200 595 PhysDevExtTermin 201 596 PhysDevExtTermin 202 597 PhysDevExtTermin 203 598 PhysDevExtTermin 204 599 PhysDevExtTermin 205 600 PhysDevExtTermin 206 601 PhysDevExtTermin 207 602 PhysDevExtTermin 208 603 PhysDevExtTermin 209 604 PhysDevExtTermin 210 605 PhysDevExtTermin 211 606 PhysDevExtTermin 212 607 PhysDevExtTermin 213 608 PhysDevExtTermin 214 609 PhysDevExtTermin 215 610 PhysDevExtTermin 216 611 PhysDevExtTermin 217 612 PhysDevExtTermin 218 613 PhysDevExtTermin 219 614 PhysDevExtTermin 220 615 PhysDevExtTermin 221 616 PhysDevExtTermin 222 617 PhysDevExtTermin 223 618 PhysDevExtTermin 224 619 PhysDevExtTermin 225 620 PhysDevExtTermin 226 621 PhysDevExtTermin 227 622 PhysDevExtTermin 228 623 PhysDevExtTermin 229 624 PhysDevExtTermin 230 625 PhysDevExtTermin 231 626 PhysDevExtTermin 232 627 PhysDevExtTermin 233 628 PhysDevExtTermin 234 629 PhysDevExtTermin 235 630 PhysDevExtTermin 236 631 PhysDevExtTermin 237 632 PhysDevExtTermin 238 633 PhysDevExtTermin 239 634 PhysDevExtTermin 240 635 PhysDevExtTermin 241 636 PhysDevExtTermin 242 637 PhysDevExtTermin 243 638 PhysDevExtTermin 244 639 PhysDevExtTermin 245 640 PhysDevExtTermin 246 641 PhysDevExtTermin 247 642 PhysDevExtTermin 248 643 PhysDevExtTermin 249 644 645 DevExtTramp 0 646 DevExtTramp 1 647 DevExtTramp 2 648 DevExtTramp 3 649 DevExtTramp 4 650 DevExtTramp 5 651 DevExtTramp 6 652 DevExtTramp 7 653 DevExtTramp 8 654 DevExtTramp 9 655 DevExtTramp 10 656 DevExtTramp 11 657 DevExtTramp 12 658 DevExtTramp 13 659 DevExtTramp 14 660 DevExtTramp 15 661 DevExtTramp 16 662 DevExtTramp 17 663 DevExtTramp 18 664 DevExtTramp 19 665 DevExtTramp 20 666 DevExtTramp 21 667 DevExtTramp 22 668 DevExtTramp 23 669 DevExtTramp 24 670 DevExtTramp 25 671 DevExtTramp 26 672 DevExtTramp 27 673 DevExtTramp 28 674 DevExtTramp 29 675 DevExtTramp 30 676 DevExtTramp 31 677 DevExtTramp 32 678 DevExtTramp 33 679 DevExtTramp 34 680 DevExtTramp 35 681 DevExtTramp 36 682 DevExtTramp 37 683 DevExtTramp 38 684 DevExtTramp 39 685 DevExtTramp 40 686 DevExtTramp 41 687 DevExtTramp 42 688 DevExtTramp 43 689 DevExtTramp 44 690 DevExtTramp 45 691 DevExtTramp 46 692 DevExtTramp 47 693 DevExtTramp 48 694 DevExtTramp 49 695 DevExtTramp 50 696 DevExtTramp 51 697 DevExtTramp 52 698 DevExtTramp 53 699 DevExtTramp 54 700 DevExtTramp 55 701 DevExtTramp 56 702 DevExtTramp 57 703 DevExtTramp 58 704 DevExtTramp 59 705 DevExtTramp 60 706 DevExtTramp 61 707 DevExtTramp 62 708 DevExtTramp 63 709 DevExtTramp 64 710 DevExtTramp 65 711 DevExtTramp 66 712 DevExtTramp 67 713 DevExtTramp 68 714 DevExtTramp 69 715 DevExtTramp 70 716 DevExtTramp 71 717 DevExtTramp 72 718 DevExtTramp 73 719 DevExtTramp 74 720 DevExtTramp 75 721 DevExtTramp 76 722 DevExtTramp 77 723 DevExtTramp 78 724 DevExtTramp 79 725 DevExtTramp 80 726 DevExtTramp 81 727 DevExtTramp 82 728 DevExtTramp 83 729 DevExtTramp 84 730 DevExtTramp 85 731 DevExtTramp 86 732 DevExtTramp 87 733 DevExtTramp 88 734 DevExtTramp 89 735 DevExtTramp 90 736 DevExtTramp 91 737 DevExtTramp 92 738 DevExtTramp 93 739 DevExtTramp 94 740 DevExtTramp 95 741 DevExtTramp 96 742 DevExtTramp 97 743 DevExtTramp 98 744 DevExtTramp 99 745 DevExtTramp 100 746 DevExtTramp 101 747 DevExtTramp 102 748 DevExtTramp 103 749 DevExtTramp 104 750 DevExtTramp 105 751 DevExtTramp 106 752 DevExtTramp 107 753 DevExtTramp 108 754 DevExtTramp 109 755 DevExtTramp 110 756 DevExtTramp 111 757 DevExtTramp 112 758 DevExtTramp 113 759 DevExtTramp 114 760 DevExtTramp 115 761 DevExtTramp 116 762 DevExtTramp 117 763 DevExtTramp 118 764 DevExtTramp 119 765 DevExtTramp 120 766 DevExtTramp 121 767 DevExtTramp 122 768 DevExtTramp 123 769 DevExtTramp 124 770 DevExtTramp 125 771 DevExtTramp 126 772 DevExtTramp 127 773 DevExtTramp 128 774 DevExtTramp 129 775 DevExtTramp 130 776 DevExtTramp 131 777 DevExtTramp 132 778 DevExtTramp 133 779 DevExtTramp 134 780 DevExtTramp 135 781 DevExtTramp 136 782 DevExtTramp 137 783 DevExtTramp 138 784 DevExtTramp 139 785 DevExtTramp 140 786 DevExtTramp 141 787 DevExtTramp 142 788 DevExtTramp 143 789 DevExtTramp 144 790 DevExtTramp 145 791 DevExtTramp 146 792 DevExtTramp 147 793 DevExtTramp 148 794 DevExtTramp 149 795 DevExtTramp 150 796 DevExtTramp 151 797 DevExtTramp 152 798 DevExtTramp 153 799 DevExtTramp 154 800 DevExtTramp 155 801 DevExtTramp 156 802 DevExtTramp 157 803 DevExtTramp 158 804 DevExtTramp 159 805 DevExtTramp 160 806 DevExtTramp 161 807 DevExtTramp 162 808 DevExtTramp 163 809 DevExtTramp 164 810 DevExtTramp 165 811 DevExtTramp 166 812 DevExtTramp 167 813 DevExtTramp 168 814 DevExtTramp 169 815 DevExtTramp 170 816 DevExtTramp 171 817 DevExtTramp 172 818 DevExtTramp 173 819 DevExtTramp 174 820 DevExtTramp 175 821 DevExtTramp 176 822 DevExtTramp 177 823 DevExtTramp 178 824 DevExtTramp 179 825 DevExtTramp 180 826 DevExtTramp 181 827 DevExtTramp 182 828 DevExtTramp 183 829 DevExtTramp 184 830 DevExtTramp 185 831 DevExtTramp 186 832 DevExtTramp 187 833 DevExtTramp 188 834 DevExtTramp 189 835 DevExtTramp 190 836 DevExtTramp 191 837 DevExtTramp 192 838 DevExtTramp 193 839 DevExtTramp 194 840 DevExtTramp 195 841 DevExtTramp 196 842 DevExtTramp 197 843 DevExtTramp 198 844 DevExtTramp 199 845 DevExtTramp 200 846 DevExtTramp 201 847 DevExtTramp 202 848 DevExtTramp 203 849 DevExtTramp 204 850 DevExtTramp 205 851 DevExtTramp 206 852 DevExtTramp 207 853 DevExtTramp 208 854 DevExtTramp 209 855 DevExtTramp 210 856 DevExtTramp 211 857 DevExtTramp 212 858 DevExtTramp 213 859 DevExtTramp 214 860 DevExtTramp 215 861 DevExtTramp 216 862 DevExtTramp 217 863 DevExtTramp 218 864 DevExtTramp 219 865 DevExtTramp 220 866 DevExtTramp 221 867 DevExtTramp 222 868 DevExtTramp 223 869 DevExtTramp 224 870 DevExtTramp 225 871 DevExtTramp 226 872 DevExtTramp 227 873 DevExtTramp 228 874 DevExtTramp 229 875 DevExtTramp 230 876 DevExtTramp 231 877 DevExtTramp 232 878 DevExtTramp 233 879 DevExtTramp 234 880 DevExtTramp 235 881 DevExtTramp 236 882 DevExtTramp 237 883 DevExtTramp 238 884 DevExtTramp 239 885 DevExtTramp 240 886 DevExtTramp 241 887 DevExtTramp 242 888 DevExtTramp 243 889 DevExtTramp 244 890 DevExtTramp 245 891 DevExtTramp 246 892 DevExtTramp 247 893 DevExtTramp 248 894 DevExtTramp 249 895 896 END 897