• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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@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
33vkPhysDevExtTramp\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
41vkPhysDevExtTermin\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
47terminError\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
62vkdev_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
71vkPhysDevExtTramp\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
81vkPhysDevExtTermin\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
89terminError\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
104vkdev_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
117termin_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