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