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