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