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#include "gen_defines.asm" 28 29/* 30 * References: 31 * - https://developer.arm.com/documentation/101028/0012/5--Feature-test-macros 32 * - https://github.com/ARM-software/abi-aa/blob/main/aaelf64/aaelf64.rst 33 */ 34#if defined(__ARM_FEATURE_BTI_DEFAULT) && __ARM_FEATURE_BTI_DEFAULT == 1 35 #define BTI_J hint 36 /* bti j: for jumps, IE br instructions */ 36 #define BTI_C hint 34 /* bti c: for calls, IE bl instructions */ 37 #define GNU_PROPERTY_AARCH64_BTI 1 /* bit 0 GNU Notes is for BTI support */ 38#else 39 #define BTI_J 40 #define BTI_C 41 #define GNU_PROPERTY_AARCH64_BTI 0 42#endif 43 44/* 45 * We just need PAC added to GNU Notes for auditing features, the assembly itself does 46 * not need pac augmentation at this time because it doesn't make use of the SP aka x30. 47 */ 48#if defined(__ARM_FEATURE_PAC_DEFAULT) 49 #define GNU_PROPERTY_AARCH64_POINTER_AUTH 2 /* bit 1 GNU Notes is for PAC support */ 50#else 51 #define GNU_PROPERTY_AARCH64_POINTER_AUTH 0 52#endif 53 54.if AARCH_64 55 56.macro PhysDevExtTramp num 57.global vkPhysDevExtTramp\num 58#if defined(__ELF__) 59 .type vkPhysDevExtTramp\num, @function 60 .hidden vkPhysDevExtTramp\num 61#endif 62.balign 4 63 64/* 65 * NOTE: x16 is used for the br register so the pstate.btype is 01 and can 66 * land on 'bti c' that would be inserted by the compiler in C/C++ functions. 67 * See: https://developer.arm.com/documentation/102433/0200/Jump-oriented-programming 68 */ 69vkPhysDevExtTramp\num: 70 BTI_C 71 ldr x9, [x0] // Load the loader_instance_dispatch_table* into x9 72 ldr x0, [x0, PHYS_DEV_OFFSET_PHYS_DEV_TRAMP] // Load the unwrapped VkPhysicalDevice into x0 73 mov x10, (PHYS_DEV_OFFSET_INST_DISPATCH + (PTR_SIZE * \num)) // Put the offset of the entry in the dispatch table for the function 74 ldr x16, [x9, x10] // Load the address to branch to out of the dispatch table 75 br x16 // Branch to the next member of the dispatch chain 76.endm 77 78.macro PhysDevExtTermin num 79.global vkPhysDevExtTermin\num 80#if defined(__ELF__) 81 .type vkPhysDevExtTermin\num, @function 82 .hidden vkPhysDevExtTermin\num 83#endif 84.balign 4 85vkPhysDevExtTermin\num: 86 BTI_C 87 ldr x9, [x0, ICD_TERM_OFFSET_PHYS_DEV_TERM] // Load the loader_icd_term* in x9 88 mov x11, (DISPATCH_OFFSET_ICD_TERM + (PTR_SIZE * \num)) // Put the offset into the dispatch table in x11 89 ldr x16, [x9, x11] // Load the address of the next function in the dispatch chain 90 cbz x16, terminError\num // Go to the error section if the next function in the chain is NULL 91 ldr x0, [x0, PHYS_DEV_OFFSET_PHYS_DEV_TERM] // Unwrap the VkPhysicalDevice in x0 92 br x16 // Jump to the next function in the chain 93terminError\num: 94 BTI_J 95 mov x10, (FUNCTION_OFFSET_INSTANCE + (CHAR_PTR_SIZE * \num)) // Offset of the function name string in the instance 96 ldr x11, [x9, INSTANCE_OFFSET_ICD_TERM] // Load the instance pointer 97 mov x0, x11 // Vulkan instance pointer (first arg) 98 mov x1, VULKAN_LOADER_ERROR_BIT // The error logging bit (second arg) 99 mov x2, #0 // Zero (third arg) 100 ldr x3, [x11, x10] // The function name (fourth arg) 101 bl loader_log_asm_function_not_supported // Log the error message before we crash 102 mov x0, #0 103 br x0 // Crash intentionally by jumping to address zero 104.endm 105 106.macro DevExtTramp num 107.global vkdev_ext\num 108#if defined(__ELF__) 109 .hidden vkdev_ext\num 110#endif 111.balign 4 112vkdev_ext\num: 113 BTI_C 114 ldr x9, [x0] // Load the loader_instance_dispatch_table* into x9 115 mov x10, (EXT_OFFSET_DEVICE_DISPATCH + (PTR_SIZE * \num)) // Offset of the desired function in the dispatch table 116 ldr x16, [x9, x10] // Load the function address 117 br x16 118.endm 119 120.else // AARCH_32 121 122.macro PhysDevExtTramp num 123.global vkPhysDevExtTramp\num 124#if defined(__ELF__) 125 .hidden vkPhysDevExtTramp\num 126#endif 127.balign 4 128 129vkPhysDevExtTrampDispatchEntry\num: .word PHYS_DEV_OFFSET_INST_DISPATCH + (PTR_SIZE * \num) 130vkPhysDevExtTramp\num: 131 ldr r4, [r0] // Load the loader_instance_dispatch_table* into r4 132 ldr r0, [r0, #PHYS_DEV_OFFSET_PHYS_DEV_TRAMP] // Load the unwrapped VkPhysicalDevice into r0 133 ldr r5, vkPhysDevExtTrampDispatchEntry\num // Put the offset of the entry in the dispatch table for the function 134 ldr r6, [r4, r5] // Load the address to branch to out of the dispatch table 135 bx r6 // Branch to the next member of the dispatch chain 136 137.endm 138 139.macro PhysDevExtTermin num 140.global vkPhysDevExtTermin\num 141#if defined(__ELF__) 142 .hidden vkPhysDevExtTermin\num 143#endif 144.balign 4 145vkPhysDevExtTerminDispatchEntry\num: .word DISPATCH_OFFSET_ICD_TERM + (PTR_SIZE * \num) 146vkPhysDevExtTerminFunctionNameEntry\num: .word FUNCTION_OFFSET_INSTANCE + (CHAR_PTR_SIZE * \num) 147vkPhysDevExtTermin\num: 148 ldr r4, [r0, #ICD_TERM_OFFSET_PHYS_DEV_TERM] // Load the loader_icd_term* in r4 149 ldr r6, vkPhysDevExtTerminDispatchEntry\num // Put the offset into the dispatch table in r6 150 ldr r5, [r4, r6] // Load the address of the next function in the dispatch chain 151 cmp r5, #0 152 beq terminError\num // Go to the error section if the next function in the chain is NULL 153 ldr r0, [r0, #PHYS_DEV_OFFSET_PHYS_DEV_TERM] // Unwrap the VkPhysicalDevice in r0 154 bx r5 // Jump to the next function in the chain 155terminError\num: 156 ldr r5, vkPhysDevExtTerminFunctionNameEntry\num // Offset of the function name string in the instance 157 ldr r6, [r4, #INSTANCE_OFFSET_ICD_TERM] // Load the instance pointer 158 mov r0, r6 // Vulkan instance pointer (first arg) 159 mov r1, #VULKAN_LOADER_ERROR_BIT // The error logging bit (second arg) 160 mov r2, #0 // Zero (third arg) 161 ldr r3, [r6, r5] // The function name (fourth arg) 162 bl loader_log_asm_function_not_supported // Log the error message before we crash 163 mov r0, #0 164 bx r0 // Crash intentionally by jumping to address zero 165.endm 166 167.macro DevExtTramp num 168.global vkdev_ext\num 169#if defined(__ELF__) 170 .hidden vkdev_ext\num 171#endif 172.balign 4 173vkdev_ext_dispatch_entry\num: .word EXT_OFFSET_DEVICE_DISPATCH + (PTR_SIZE * \num) 174vkdev_ext\num: 175 ldr r4, [r0] // Load the loader_instance_dispatch_table* into r4 176 ldr r5, vkdev_ext_dispatch_entry\num // Offset of the desired function in the dispatch table 177 ldr r6, [r4, r5] // Load the function address 178 bx r6 179.endm 180 181.endif 182 183#if defined(__ELF__) 184.section .note.GNU-stack,"",%progbits 185/* Add the PAC and BTI support to GNU Notes section for ELF object files */ 186#if GNU_PROPERTY_AARCH64_BTI != 0 || GNU_PROPERTY_AARCH64_POINTER_AUTH != 0 187 .pushsection .note.gnu.property, "a"; /* Start a new allocatable section */ 188 .balign 8; /* align it on a byte boundry */ 189 .long 4; /* size of "GNU\0" */ 190 .long 0x10; /* size of descriptor */ 191 .long 0x5; /* NT_GNU_PROPERTY_TYPE_0 */ 192 .asciz "GNU"; 193 .long 0xc0000000; /* GNU_PROPERTY_AARCH64_FEATURE_1_AND */ 194 .long 4; /* Four bytes of data */ 195 .long (GNU_PROPERTY_AARCH64_BTI|GNU_PROPERTY_AARCH64_POINTER_AUTH); /* BTI or PAC is enabled */ 196 .long 0; /* padding for 8 byte alignment */ 197 .popsection; /* end the section */ 198#endif 199#endif 200 201.data 202 203termin_error_string: 204.string "Function %s not supported for this physical device" 205 206.text 207 208 PhysDevExtTramp 0 209 PhysDevExtTramp 1 210 PhysDevExtTramp 2 211 PhysDevExtTramp 3 212 PhysDevExtTramp 4 213 PhysDevExtTramp 5 214 PhysDevExtTramp 6 215 PhysDevExtTramp 7 216 PhysDevExtTramp 8 217 PhysDevExtTramp 9 218 PhysDevExtTramp 10 219 PhysDevExtTramp 11 220 PhysDevExtTramp 12 221 PhysDevExtTramp 13 222 PhysDevExtTramp 14 223 PhysDevExtTramp 15 224 PhysDevExtTramp 16 225 PhysDevExtTramp 17 226 PhysDevExtTramp 18 227 PhysDevExtTramp 19 228 PhysDevExtTramp 20 229 PhysDevExtTramp 21 230 PhysDevExtTramp 22 231 PhysDevExtTramp 23 232 PhysDevExtTramp 24 233 PhysDevExtTramp 25 234 PhysDevExtTramp 26 235 PhysDevExtTramp 27 236 PhysDevExtTramp 28 237 PhysDevExtTramp 29 238 PhysDevExtTramp 30 239 PhysDevExtTramp 31 240 PhysDevExtTramp 32 241 PhysDevExtTramp 33 242 PhysDevExtTramp 34 243 PhysDevExtTramp 35 244 PhysDevExtTramp 36 245 PhysDevExtTramp 37 246 PhysDevExtTramp 38 247 PhysDevExtTramp 39 248 PhysDevExtTramp 40 249 PhysDevExtTramp 41 250 PhysDevExtTramp 42 251 PhysDevExtTramp 43 252 PhysDevExtTramp 44 253 PhysDevExtTramp 45 254 PhysDevExtTramp 46 255 PhysDevExtTramp 47 256 PhysDevExtTramp 48 257 PhysDevExtTramp 49 258 PhysDevExtTramp 50 259 PhysDevExtTramp 51 260 PhysDevExtTramp 52 261 PhysDevExtTramp 53 262 PhysDevExtTramp 54 263 PhysDevExtTramp 55 264 PhysDevExtTramp 56 265 PhysDevExtTramp 57 266 PhysDevExtTramp 58 267 PhysDevExtTramp 59 268 PhysDevExtTramp 60 269 PhysDevExtTramp 61 270 PhysDevExtTramp 62 271 PhysDevExtTramp 63 272 PhysDevExtTramp 64 273 PhysDevExtTramp 65 274 PhysDevExtTramp 66 275 PhysDevExtTramp 67 276 PhysDevExtTramp 68 277 PhysDevExtTramp 69 278 PhysDevExtTramp 70 279 PhysDevExtTramp 71 280 PhysDevExtTramp 72 281 PhysDevExtTramp 73 282 PhysDevExtTramp 74 283 PhysDevExtTramp 75 284 PhysDevExtTramp 76 285 PhysDevExtTramp 77 286 PhysDevExtTramp 78 287 PhysDevExtTramp 79 288 PhysDevExtTramp 80 289 PhysDevExtTramp 81 290 PhysDevExtTramp 82 291 PhysDevExtTramp 83 292 PhysDevExtTramp 84 293 PhysDevExtTramp 85 294 PhysDevExtTramp 86 295 PhysDevExtTramp 87 296 PhysDevExtTramp 88 297 PhysDevExtTramp 89 298 PhysDevExtTramp 90 299 PhysDevExtTramp 91 300 PhysDevExtTramp 92 301 PhysDevExtTramp 93 302 PhysDevExtTramp 94 303 PhysDevExtTramp 95 304 PhysDevExtTramp 96 305 PhysDevExtTramp 97 306 PhysDevExtTramp 98 307 PhysDevExtTramp 99 308 PhysDevExtTramp 100 309 PhysDevExtTramp 101 310 PhysDevExtTramp 102 311 PhysDevExtTramp 103 312 PhysDevExtTramp 104 313 PhysDevExtTramp 105 314 PhysDevExtTramp 106 315 PhysDevExtTramp 107 316 PhysDevExtTramp 108 317 PhysDevExtTramp 109 318 PhysDevExtTramp 110 319 PhysDevExtTramp 111 320 PhysDevExtTramp 112 321 PhysDevExtTramp 113 322 PhysDevExtTramp 114 323 PhysDevExtTramp 115 324 PhysDevExtTramp 116 325 PhysDevExtTramp 117 326 PhysDevExtTramp 118 327 PhysDevExtTramp 119 328 PhysDevExtTramp 120 329 PhysDevExtTramp 121 330 PhysDevExtTramp 122 331 PhysDevExtTramp 123 332 PhysDevExtTramp 124 333 PhysDevExtTramp 125 334 PhysDevExtTramp 126 335 PhysDevExtTramp 127 336 PhysDevExtTramp 128 337 PhysDevExtTramp 129 338 PhysDevExtTramp 130 339 PhysDevExtTramp 131 340 PhysDevExtTramp 132 341 PhysDevExtTramp 133 342 PhysDevExtTramp 134 343 PhysDevExtTramp 135 344 PhysDevExtTramp 136 345 PhysDevExtTramp 137 346 PhysDevExtTramp 138 347 PhysDevExtTramp 139 348 PhysDevExtTramp 140 349 PhysDevExtTramp 141 350 PhysDevExtTramp 142 351 PhysDevExtTramp 143 352 PhysDevExtTramp 144 353 PhysDevExtTramp 145 354 PhysDevExtTramp 146 355 PhysDevExtTramp 147 356 PhysDevExtTramp 148 357 PhysDevExtTramp 149 358 PhysDevExtTramp 150 359 PhysDevExtTramp 151 360 PhysDevExtTramp 152 361 PhysDevExtTramp 153 362 PhysDevExtTramp 154 363 PhysDevExtTramp 155 364 PhysDevExtTramp 156 365 PhysDevExtTramp 157 366 PhysDevExtTramp 158 367 PhysDevExtTramp 159 368 PhysDevExtTramp 160 369 PhysDevExtTramp 161 370 PhysDevExtTramp 162 371 PhysDevExtTramp 163 372 PhysDevExtTramp 164 373 PhysDevExtTramp 165 374 PhysDevExtTramp 166 375 PhysDevExtTramp 167 376 PhysDevExtTramp 168 377 PhysDevExtTramp 169 378 PhysDevExtTramp 170 379 PhysDevExtTramp 171 380 PhysDevExtTramp 172 381 PhysDevExtTramp 173 382 PhysDevExtTramp 174 383 PhysDevExtTramp 175 384 PhysDevExtTramp 176 385 PhysDevExtTramp 177 386 PhysDevExtTramp 178 387 PhysDevExtTramp 179 388 PhysDevExtTramp 180 389 PhysDevExtTramp 181 390 PhysDevExtTramp 182 391 PhysDevExtTramp 183 392 PhysDevExtTramp 184 393 PhysDevExtTramp 185 394 PhysDevExtTramp 186 395 PhysDevExtTramp 187 396 PhysDevExtTramp 188 397 PhysDevExtTramp 189 398 PhysDevExtTramp 190 399 PhysDevExtTramp 191 400 PhysDevExtTramp 192 401 PhysDevExtTramp 193 402 PhysDevExtTramp 194 403 PhysDevExtTramp 195 404 PhysDevExtTramp 196 405 PhysDevExtTramp 197 406 PhysDevExtTramp 198 407 PhysDevExtTramp 199 408 PhysDevExtTramp 200 409 PhysDevExtTramp 201 410 PhysDevExtTramp 202 411 PhysDevExtTramp 203 412 PhysDevExtTramp 204 413 PhysDevExtTramp 205 414 PhysDevExtTramp 206 415 PhysDevExtTramp 207 416 PhysDevExtTramp 208 417 PhysDevExtTramp 209 418 PhysDevExtTramp 210 419 PhysDevExtTramp 211 420 PhysDevExtTramp 212 421 PhysDevExtTramp 213 422 PhysDevExtTramp 214 423 PhysDevExtTramp 215 424 PhysDevExtTramp 216 425 PhysDevExtTramp 217 426 PhysDevExtTramp 218 427 PhysDevExtTramp 219 428 PhysDevExtTramp 220 429 PhysDevExtTramp 221 430 PhysDevExtTramp 222 431 PhysDevExtTramp 223 432 PhysDevExtTramp 224 433 PhysDevExtTramp 225 434 PhysDevExtTramp 226 435 PhysDevExtTramp 227 436 PhysDevExtTramp 228 437 PhysDevExtTramp 229 438 PhysDevExtTramp 230 439 PhysDevExtTramp 231 440 PhysDevExtTramp 232 441 PhysDevExtTramp 233 442 PhysDevExtTramp 234 443 PhysDevExtTramp 235 444 PhysDevExtTramp 236 445 PhysDevExtTramp 237 446 PhysDevExtTramp 238 447 PhysDevExtTramp 239 448 PhysDevExtTramp 240 449 PhysDevExtTramp 241 450 PhysDevExtTramp 242 451 PhysDevExtTramp 243 452 PhysDevExtTramp 244 453 PhysDevExtTramp 245 454 PhysDevExtTramp 246 455 PhysDevExtTramp 247 456 PhysDevExtTramp 248 457 PhysDevExtTramp 249 458 459 PhysDevExtTermin 0 460 PhysDevExtTermin 1 461 PhysDevExtTermin 2 462 PhysDevExtTermin 3 463 PhysDevExtTermin 4 464 PhysDevExtTermin 5 465 PhysDevExtTermin 6 466 PhysDevExtTermin 7 467 PhysDevExtTermin 8 468 PhysDevExtTermin 9 469 PhysDevExtTermin 10 470 PhysDevExtTermin 11 471 PhysDevExtTermin 12 472 PhysDevExtTermin 13 473 PhysDevExtTermin 14 474 PhysDevExtTermin 15 475 PhysDevExtTermin 16 476 PhysDevExtTermin 17 477 PhysDevExtTermin 18 478 PhysDevExtTermin 19 479 PhysDevExtTermin 20 480 PhysDevExtTermin 21 481 PhysDevExtTermin 22 482 PhysDevExtTermin 23 483 PhysDevExtTermin 24 484 PhysDevExtTermin 25 485 PhysDevExtTermin 26 486 PhysDevExtTermin 27 487 PhysDevExtTermin 28 488 PhysDevExtTermin 29 489 PhysDevExtTermin 30 490 PhysDevExtTermin 31 491 PhysDevExtTermin 32 492 PhysDevExtTermin 33 493 PhysDevExtTermin 34 494 PhysDevExtTermin 35 495 PhysDevExtTermin 36 496 PhysDevExtTermin 37 497 PhysDevExtTermin 38 498 PhysDevExtTermin 39 499 PhysDevExtTermin 40 500 PhysDevExtTermin 41 501 PhysDevExtTermin 42 502 PhysDevExtTermin 43 503 PhysDevExtTermin 44 504 PhysDevExtTermin 45 505 PhysDevExtTermin 46 506 PhysDevExtTermin 47 507 PhysDevExtTermin 48 508 PhysDevExtTermin 49 509 PhysDevExtTermin 50 510 PhysDevExtTermin 51 511 PhysDevExtTermin 52 512 PhysDevExtTermin 53 513 PhysDevExtTermin 54 514 PhysDevExtTermin 55 515 PhysDevExtTermin 56 516 PhysDevExtTermin 57 517 PhysDevExtTermin 58 518 PhysDevExtTermin 59 519 PhysDevExtTermin 60 520 PhysDevExtTermin 61 521 PhysDevExtTermin 62 522 PhysDevExtTermin 63 523 PhysDevExtTermin 64 524 PhysDevExtTermin 65 525 PhysDevExtTermin 66 526 PhysDevExtTermin 67 527 PhysDevExtTermin 68 528 PhysDevExtTermin 69 529 PhysDevExtTermin 70 530 PhysDevExtTermin 71 531 PhysDevExtTermin 72 532 PhysDevExtTermin 73 533 PhysDevExtTermin 74 534 PhysDevExtTermin 75 535 PhysDevExtTermin 76 536 PhysDevExtTermin 77 537 PhysDevExtTermin 78 538 PhysDevExtTermin 79 539 PhysDevExtTermin 80 540 PhysDevExtTermin 81 541 PhysDevExtTermin 82 542 PhysDevExtTermin 83 543 PhysDevExtTermin 84 544 PhysDevExtTermin 85 545 PhysDevExtTermin 86 546 PhysDevExtTermin 87 547 PhysDevExtTermin 88 548 PhysDevExtTermin 89 549 PhysDevExtTermin 90 550 PhysDevExtTermin 91 551 PhysDevExtTermin 92 552 PhysDevExtTermin 93 553 PhysDevExtTermin 94 554 PhysDevExtTermin 95 555 PhysDevExtTermin 96 556 PhysDevExtTermin 97 557 PhysDevExtTermin 98 558 PhysDevExtTermin 99 559 PhysDevExtTermin 100 560 PhysDevExtTermin 101 561 PhysDevExtTermin 102 562 PhysDevExtTermin 103 563 PhysDevExtTermin 104 564 PhysDevExtTermin 105 565 PhysDevExtTermin 106 566 PhysDevExtTermin 107 567 PhysDevExtTermin 108 568 PhysDevExtTermin 109 569 PhysDevExtTermin 110 570 PhysDevExtTermin 111 571 PhysDevExtTermin 112 572 PhysDevExtTermin 113 573 PhysDevExtTermin 114 574 PhysDevExtTermin 115 575 PhysDevExtTermin 116 576 PhysDevExtTermin 117 577 PhysDevExtTermin 118 578 PhysDevExtTermin 119 579 PhysDevExtTermin 120 580 PhysDevExtTermin 121 581 PhysDevExtTermin 122 582 PhysDevExtTermin 123 583 PhysDevExtTermin 124 584 PhysDevExtTermin 125 585 PhysDevExtTermin 126 586 PhysDevExtTermin 127 587 PhysDevExtTermin 128 588 PhysDevExtTermin 129 589 PhysDevExtTermin 130 590 PhysDevExtTermin 131 591 PhysDevExtTermin 132 592 PhysDevExtTermin 133 593 PhysDevExtTermin 134 594 PhysDevExtTermin 135 595 PhysDevExtTermin 136 596 PhysDevExtTermin 137 597 PhysDevExtTermin 138 598 PhysDevExtTermin 139 599 PhysDevExtTermin 140 600 PhysDevExtTermin 141 601 PhysDevExtTermin 142 602 PhysDevExtTermin 143 603 PhysDevExtTermin 144 604 PhysDevExtTermin 145 605 PhysDevExtTermin 146 606 PhysDevExtTermin 147 607 PhysDevExtTermin 148 608 PhysDevExtTermin 149 609 PhysDevExtTermin 150 610 PhysDevExtTermin 151 611 PhysDevExtTermin 152 612 PhysDevExtTermin 153 613 PhysDevExtTermin 154 614 PhysDevExtTermin 155 615 PhysDevExtTermin 156 616 PhysDevExtTermin 157 617 PhysDevExtTermin 158 618 PhysDevExtTermin 159 619 PhysDevExtTermin 160 620 PhysDevExtTermin 161 621 PhysDevExtTermin 162 622 PhysDevExtTermin 163 623 PhysDevExtTermin 164 624 PhysDevExtTermin 165 625 PhysDevExtTermin 166 626 PhysDevExtTermin 167 627 PhysDevExtTermin 168 628 PhysDevExtTermin 169 629 PhysDevExtTermin 170 630 PhysDevExtTermin 171 631 PhysDevExtTermin 172 632 PhysDevExtTermin 173 633 PhysDevExtTermin 174 634 PhysDevExtTermin 175 635 PhysDevExtTermin 176 636 PhysDevExtTermin 177 637 PhysDevExtTermin 178 638 PhysDevExtTermin 179 639 PhysDevExtTermin 180 640 PhysDevExtTermin 181 641 PhysDevExtTermin 182 642 PhysDevExtTermin 183 643 PhysDevExtTermin 184 644 PhysDevExtTermin 185 645 PhysDevExtTermin 186 646 PhysDevExtTermin 187 647 PhysDevExtTermin 188 648 PhysDevExtTermin 189 649 PhysDevExtTermin 190 650 PhysDevExtTermin 191 651 PhysDevExtTermin 192 652 PhysDevExtTermin 193 653 PhysDevExtTermin 194 654 PhysDevExtTermin 195 655 PhysDevExtTermin 196 656 PhysDevExtTermin 197 657 PhysDevExtTermin 198 658 PhysDevExtTermin 199 659 PhysDevExtTermin 200 660 PhysDevExtTermin 201 661 PhysDevExtTermin 202 662 PhysDevExtTermin 203 663 PhysDevExtTermin 204 664 PhysDevExtTermin 205 665 PhysDevExtTermin 206 666 PhysDevExtTermin 207 667 PhysDevExtTermin 208 668 PhysDevExtTermin 209 669 PhysDevExtTermin 210 670 PhysDevExtTermin 211 671 PhysDevExtTermin 212 672 PhysDevExtTermin 213 673 PhysDevExtTermin 214 674 PhysDevExtTermin 215 675 PhysDevExtTermin 216 676 PhysDevExtTermin 217 677 PhysDevExtTermin 218 678 PhysDevExtTermin 219 679 PhysDevExtTermin 220 680 PhysDevExtTermin 221 681 PhysDevExtTermin 222 682 PhysDevExtTermin 223 683 PhysDevExtTermin 224 684 PhysDevExtTermin 225 685 PhysDevExtTermin 226 686 PhysDevExtTermin 227 687 PhysDevExtTermin 228 688 PhysDevExtTermin 229 689 PhysDevExtTermin 230 690 PhysDevExtTermin 231 691 PhysDevExtTermin 232 692 PhysDevExtTermin 233 693 PhysDevExtTermin 234 694 PhysDevExtTermin 235 695 PhysDevExtTermin 236 696 PhysDevExtTermin 237 697 PhysDevExtTermin 238 698 PhysDevExtTermin 239 699 PhysDevExtTermin 240 700 PhysDevExtTermin 241 701 PhysDevExtTermin 242 702 PhysDevExtTermin 243 703 PhysDevExtTermin 244 704 PhysDevExtTermin 245 705 PhysDevExtTermin 246 706 PhysDevExtTermin 247 707 PhysDevExtTermin 248 708 PhysDevExtTermin 249 709 710 DevExtTramp 0 711 DevExtTramp 1 712 DevExtTramp 2 713 DevExtTramp 3 714 DevExtTramp 4 715 DevExtTramp 5 716 DevExtTramp 6 717 DevExtTramp 7 718 DevExtTramp 8 719 DevExtTramp 9 720 DevExtTramp 10 721 DevExtTramp 11 722 DevExtTramp 12 723 DevExtTramp 13 724 DevExtTramp 14 725 DevExtTramp 15 726 DevExtTramp 16 727 DevExtTramp 17 728 DevExtTramp 18 729 DevExtTramp 19 730 DevExtTramp 20 731 DevExtTramp 21 732 DevExtTramp 22 733 DevExtTramp 23 734 DevExtTramp 24 735 DevExtTramp 25 736 DevExtTramp 26 737 DevExtTramp 27 738 DevExtTramp 28 739 DevExtTramp 29 740 DevExtTramp 30 741 DevExtTramp 31 742 DevExtTramp 32 743 DevExtTramp 33 744 DevExtTramp 34 745 DevExtTramp 35 746 DevExtTramp 36 747 DevExtTramp 37 748 DevExtTramp 38 749 DevExtTramp 39 750 DevExtTramp 40 751 DevExtTramp 41 752 DevExtTramp 42 753 DevExtTramp 43 754 DevExtTramp 44 755 DevExtTramp 45 756 DevExtTramp 46 757 DevExtTramp 47 758 DevExtTramp 48 759 DevExtTramp 49 760 DevExtTramp 50 761 DevExtTramp 51 762 DevExtTramp 52 763 DevExtTramp 53 764 DevExtTramp 54 765 DevExtTramp 55 766 DevExtTramp 56 767 DevExtTramp 57 768 DevExtTramp 58 769 DevExtTramp 59 770 DevExtTramp 60 771 DevExtTramp 61 772 DevExtTramp 62 773 DevExtTramp 63 774 DevExtTramp 64 775 DevExtTramp 65 776 DevExtTramp 66 777 DevExtTramp 67 778 DevExtTramp 68 779 DevExtTramp 69 780 DevExtTramp 70 781 DevExtTramp 71 782 DevExtTramp 72 783 DevExtTramp 73 784 DevExtTramp 74 785 DevExtTramp 75 786 DevExtTramp 76 787 DevExtTramp 77 788 DevExtTramp 78 789 DevExtTramp 79 790 DevExtTramp 80 791 DevExtTramp 81 792 DevExtTramp 82 793 DevExtTramp 83 794 DevExtTramp 84 795 DevExtTramp 85 796 DevExtTramp 86 797 DevExtTramp 87 798 DevExtTramp 88 799 DevExtTramp 89 800 DevExtTramp 90 801 DevExtTramp 91 802 DevExtTramp 92 803 DevExtTramp 93 804 DevExtTramp 94 805 DevExtTramp 95 806 DevExtTramp 96 807 DevExtTramp 97 808 DevExtTramp 98 809 DevExtTramp 99 810 DevExtTramp 100 811 DevExtTramp 101 812 DevExtTramp 102 813 DevExtTramp 103 814 DevExtTramp 104 815 DevExtTramp 105 816 DevExtTramp 106 817 DevExtTramp 107 818 DevExtTramp 108 819 DevExtTramp 109 820 DevExtTramp 110 821 DevExtTramp 111 822 DevExtTramp 112 823 DevExtTramp 113 824 DevExtTramp 114 825 DevExtTramp 115 826 DevExtTramp 116 827 DevExtTramp 117 828 DevExtTramp 118 829 DevExtTramp 119 830 DevExtTramp 120 831 DevExtTramp 121 832 DevExtTramp 122 833 DevExtTramp 123 834 DevExtTramp 124 835 DevExtTramp 125 836 DevExtTramp 126 837 DevExtTramp 127 838 DevExtTramp 128 839 DevExtTramp 129 840 DevExtTramp 130 841 DevExtTramp 131 842 DevExtTramp 132 843 DevExtTramp 133 844 DevExtTramp 134 845 DevExtTramp 135 846 DevExtTramp 136 847 DevExtTramp 137 848 DevExtTramp 138 849 DevExtTramp 139 850 DevExtTramp 140 851 DevExtTramp 141 852 DevExtTramp 142 853 DevExtTramp 143 854 DevExtTramp 144 855 DevExtTramp 145 856 DevExtTramp 146 857 DevExtTramp 147 858 DevExtTramp 148 859 DevExtTramp 149 860 DevExtTramp 150 861 DevExtTramp 151 862 DevExtTramp 152 863 DevExtTramp 153 864 DevExtTramp 154 865 DevExtTramp 155 866 DevExtTramp 156 867 DevExtTramp 157 868 DevExtTramp 158 869 DevExtTramp 159 870 DevExtTramp 160 871 DevExtTramp 161 872 DevExtTramp 162 873 DevExtTramp 163 874 DevExtTramp 164 875 DevExtTramp 165 876 DevExtTramp 166 877 DevExtTramp 167 878 DevExtTramp 168 879 DevExtTramp 169 880 DevExtTramp 170 881 DevExtTramp 171 882 DevExtTramp 172 883 DevExtTramp 173 884 DevExtTramp 174 885 DevExtTramp 175 886 DevExtTramp 176 887 DevExtTramp 177 888 DevExtTramp 178 889 DevExtTramp 179 890 DevExtTramp 180 891 DevExtTramp 181 892 DevExtTramp 182 893 DevExtTramp 183 894 DevExtTramp 184 895 DevExtTramp 185 896 DevExtTramp 186 897 DevExtTramp 187 898 DevExtTramp 188 899 DevExtTramp 189 900 DevExtTramp 190 901 DevExtTramp 191 902 DevExtTramp 192 903 DevExtTramp 193 904 DevExtTramp 194 905 DevExtTramp 195 906 DevExtTramp 196 907 DevExtTramp 197 908 DevExtTramp 198 909 DevExtTramp 199 910 DevExtTramp 200 911 DevExtTramp 201 912 DevExtTramp 202 913 DevExtTramp 203 914 DevExtTramp 204 915 DevExtTramp 205 916 DevExtTramp 206 917 DevExtTramp 207 918 DevExtTramp 208 919 DevExtTramp 209 920 DevExtTramp 210 921 DevExtTramp 211 922 DevExtTramp 212 923 DevExtTramp 213 924 DevExtTramp 214 925 DevExtTramp 215 926 DevExtTramp 216 927 DevExtTramp 217 928 DevExtTramp 218 929 DevExtTramp 219 930 DevExtTramp 220 931 DevExtTramp 221 932 DevExtTramp 222 933 DevExtTramp 223 934 DevExtTramp 224 935 DevExtTramp 225 936 DevExtTramp 226 937 DevExtTramp 227 938 DevExtTramp 228 939 DevExtTramp 229 940 DevExtTramp 230 941 DevExtTramp 231 942 DevExtTramp 232 943 DevExtTramp 233 944 DevExtTramp 234 945 DevExtTramp 235 946 DevExtTramp 236 947 DevExtTramp 237 948 DevExtTramp 238 949 DevExtTramp 239 950 DevExtTramp 240 951 DevExtTramp 241 952 DevExtTramp 242 953 DevExtTramp 243 954 DevExtTramp 244 955 DevExtTramp 245 956 DevExtTramp 246 957 DevExtTramp 247 958 DevExtTramp 248 959 DevExtTramp 249 960