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