- [Repository Dependencies](#repository-dependencies)
- [Vulkan-Headers](#vulkan-headers)
- [Test Dependencies](#test-dependencies)
+ - [Warnings as errors off by default!](#warnings-as-errors-off-by-default)
- [Build and Install Directory Locations](#build-and-install-directory-locations)
- [Building Dependent Repositories with Known-Good Revisions](#building-dependent-repositories-with-known-good-revisions)
- [Automatically](#automatically)
- [Cross Compilation](#cross-compilation)
- [Unknown function handling which requires explicit assembly implementations](#unknown-function-handling-which-requires-explicit-assembly-implementations)
- [Platforms which fully support unknown function handling](#platforms-which-fully-support-unknown-function-handling)
- - [Link Time Optimization](#link-time-optimization)
- [Tests](#tests)
* 64 bit Linux (x64)
* 32 bit Linux (x86)
* 64 bit Arm (aarch64)
+* 32 bit Arm (aarch32)
+
Platforms not listed will use a fallback C Code path that relies on tail-call optimization to work.
No guarantees are made about the use of the fallback code paths.
endif()
if(ASSEMBLER_WORKS)
- set(OPT_LOADER_SRCS ${OPT_LOADER_SRCS} unknown_ext_chain_gas_aarch64.S)
+ set(OPT_LOADER_SRCS ${OPT_LOADER_SRCS} unknown_ext_chain_gas_aarch.S)
endif()
elseif (${SYSTEM_PROCESSOR} MATCHES "aarch64|arm64")
try_compile(ASSEMBLER_WORKS ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/asm_test_aarch64.S OUTPUT_VARIABLE TRY_COMPILE_OUTPUT)
if(ASSEMBLER_WORKS)
- set(OPT_LOADER_SRCS ${OPT_LOADER_SRCS} unknown_ext_chain_gas_aarch64.S)
+ set(OPT_LOADER_SRCS ${OPT_LOADER_SRCS} unknown_ext_chain_gas_aarch.S)
+ endif()
+ elseif (${SYSTEM_PROCESSOR} MATCHES "aarch32|armhf")
+ try_compile(ASSEMBLER_WORKS ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CURRENT_SOURCE_DIR}/asm_test_aarch32.S OUTPUT_VARIABLE TRY_COMPILE_OUTPUT)
+ if(ASSEMBLER_WORKS)
+ set(OPT_LOADER_SRCS ${OPT_LOADER_SRCS} unknown_ext_chain_gas_aarch.S)
endif()
# Covers x86_64, amd64, x86, i386, i686, I386, I686
elseif(${SYSTEM_PROCESSOR} MATCHES "amd64|86")
endif()
# When compiling for x86 on x64, we can't use CMAKE_SYSTEM_PROCESSOR to determine which architecture to use,
- # Instead, check the size of void* and if its 4, set ASM_OFFSET_SYSTEM_PROCESSOR to x86
- # Note - there is no 32 bit arm assembly code, so this only applies to x86 currently.
+ # Instead, check the size of void* and if its 4, set ASM_OFFSET_SYSTEM_PROCESSOR to x86 if we aren't on arm
if("${CMAKE_SIZEOF_VOID_P}" EQUAL "8")
set(ASM_OFFSET_SYSTEM_PROCESSOR ${SYSTEM_PROCESSOR}) # x86_64 or aarch64/arm64
string(REPLACE amd64 x86_64 ASM_OFFSET_SYSTEM_PROCESSOR "${ASM_OFFSET_SYSTEM_PROCESSOR}")
else()
- set(ASM_OFFSET_SYSTEM_PROCESSOR "x86")
+ if(${SYSTEM_PROCESSOR} MATCHES "86")
+ set(ASM_OFFSET_SYSTEM_PROCESSOR "x86")
+ else()
+ set(ASM_OFFSET_SYSTEM_PROCESSOR ${SYSTEM_PROCESSOR})
+ endif()
endif()
if(ASSEMBLER_WORKS)
else()
message(FATAL_ERROR "C_COMPILER_ID not supported!")
endif()
+ message(STATUS "CMAKE_CROSSCOMPILING FALSE")
find_package(Python3 REQUIRED QUIET)
# Run parse_asm_values.py on asm_offset's assembly file to generate the gen_defines.asm, which the asm code depends on
#if defined(__x86_64__)
fprintf(file, ".set X86_64, 1\n");
#endif // defined(__x86_64__)
-#elif defined(__aarch64__)
+#elif defined(__aarch64__) || defined(__arm__)
const char *comment_delimiter = "//";
+#if defined(__aarch64__)
fprintf(file, ".set AARCH_64, 1\n");
+#else
+ fprintf(file, ".set AARCH_64, 0\n");
+#endif
#else
// Default comment delimiter
const char *comment_delimiter = "#";
--- /dev/null
+//
+// Copyright (c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+// Copyright (c) 2024 Valve Corporation
+// Copyright (c) 2024 LunarG, Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+
+.text
+.global sample
+.set PHYS_DEV_OFFSET_INST_DISPATCH, 10
+.set PTR_SIZE, 4
+sample:
+ mov r1, #(PHYS_DEV_OFFSET_INST_DISPATCH + (PTR_SIZE * 4))
+ ldr r0, [r0, r1]
"#LLP_LAYER_21)");
} else if (LOADER_MAGIC_NUMBER != ptr_instance->magic) {
loader_log(ptr_instance, VULKAN_LOADER_WARN_BIT, 0,
- "terminator_CreateInstance: Instance pointer (%p) has invalid MAGIC value 0x%08lx. Instance value possibly "
+ "terminator_CreateInstance: Instance pointer (%p) has invalid MAGIC value 0x%08" PRIx64
+ ". Instance value possibly "
"corrupted by active layer (Policy #LLP_LAYER_21). ",
ptr_instance, ptr_instance->magic);
}
"#LLP_LAYER_22)");
} else if (DEVICE_DISP_TABLE_MAGIC_NUMBER != dev->loader_dispatch.core_dispatch.magic) {
loader_log(icd_term->this_instance, VULKAN_LOADER_WARN_BIT, 0,
- "terminator_CreateDevice: Device pointer (%p) has invalid MAGIC value 0x%08lx. The expected value is "
+ "terminator_CreateDevice: Device pointer (%p) has invalid MAGIC value 0x%08" PRIx64
+ ". The expected value is "
"0x10ADED040410ADED. Device value possibly "
"corrupted by active layer (Policy #LLP_LAYER_22). ",
dev, dev->loader_dispatch.core_dispatch.magic);
--- /dev/null
+//
+// Copyright (c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+// Copyright (c) 2024 Valve Corporation
+// Copyright (c) 2024 LunarG, Inc.
+//
+// Licensed under the Apache License, Version 2.0 (the "License");
+// you may not use this file except in compliance with the License.
+// You may obtain a copy of the License at
+//
+// http://www.apache.org/licenses/LICENSE-2.0
+//
+// Unless required by applicable law or agreed to in writing, software
+// distributed under the License is distributed on an "AS IS" BASIS,
+// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+// See the License for the specific language governing permissions and
+// limitations under the License.
+//
+// Author: Eric Sullivan <esullivan@nvidia.com>
+// Author: Charles Giessen <charles@lunarg.com>
+//
+
+// This code is used to pass on device (including physical device) extensions through the call chain. It must do this without
+// creating a stack frame, because the actual parameters of the call are not known. Since the first parameter is known to be a
+// VkPhysicalDevice or a dispatchable object it can unwrap the object, possibly overwriting the wrapped physical device, and then
+// jump to the next function in the call chain
+
+.include "gen_defines.asm"
+
+.if AARCH_64
+
+.macro PhysDevExtTramp num
+.global vkPhysDevExtTramp\num
+#if defined(__ELF__)
+ .hidden vkPhysDevExtTramp\num
+#endif
+.balign 4
+
+vkPhysDevExtTramp\num:
+ ldr x9, [x0] // Load the loader_instance_dispatch_table* into x9
+ ldr x0, [x0, PHYS_DEV_OFFSET_PHYS_DEV_TRAMP] // Load the unwrapped VkPhysicalDevice into x0
+ mov x10, (PHYS_DEV_OFFSET_INST_DISPATCH + (PTR_SIZE * \num)) // Put the offset of the entry in the dispatch table for the function
+ ldr x11, [x9, x10] // Load the address to branch to out of the dispatch table
+ br x11 // Branch to the next member of the dispatch chain
+.endm
+
+.macro PhysDevExtTermin num
+.global vkPhysDevExtTermin\num
+#if defined(__ELF__)
+ .hidden vkPhysDevExtTermin\num
+#endif
+.balign 4
+vkPhysDevExtTermin\num:
+ ldr x9, [x0, ICD_TERM_OFFSET_PHYS_DEV_TERM] // Load the loader_icd_term* in x9
+ mov x11, (DISPATCH_OFFSET_ICD_TERM + (PTR_SIZE * \num)) // Put the offset into the dispatch table in x11
+ ldr x10, [x9, x11] // Load the address of the next function in the dispatch chain
+ cbz x10, terminError\num // Go to the error section if the next function in the chain is NULL
+ ldr x0, [x0, PHYS_DEV_OFFSET_PHYS_DEV_TERM] // Unwrap the VkPhysicalDevice in x0
+ br x10 // Jump to the next function in the chain
+terminError\num:
+ mov x10, (FUNCTION_OFFSET_INSTANCE + (CHAR_PTR_SIZE * \num)) // Offset of the function name string in the instance
+ ldr x11, [x9, INSTANCE_OFFSET_ICD_TERM] // Load the instance pointer
+ mov x0, x11 // Vulkan instance pointer (first arg)
+ mov x1, VULKAN_LOADER_ERROR_BIT // The error logging bit (second arg)
+ mov x2, #0 // Zero (third arg)
+ ldr x3, [x11, x10] // The function name (fourth arg)
+ bl loader_log_asm_function_not_supported // Log the error message before we crash
+ mov x0, #0
+ br x0 // Crash intentionally by jumping to address zero
+.endm
+
+.macro DevExtTramp num
+.global vkdev_ext\num
+#if defined(__ELF__)
+ .hidden vkdev_ext\num
+#endif
+.balign 4
+vkdev_ext\num:
+ ldr x9, [x0] // Load the loader_instance_dispatch_table* into x9
+ mov x10, (EXT_OFFSET_DEVICE_DISPATCH + (PTR_SIZE * \num)) // Offset of the desired function in the dispatch table
+ ldr x11, [x9, x10] // Load the function address
+ br x11
+.endm
+
+.else // AARCH_32
+
+.macro PhysDevExtTramp num
+.global vkPhysDevExtTramp\num
+#if defined(__ELF__)
+ .hidden vkPhysDevExtTramp\num
+#endif
+.balign 4
+
+vkPhysDevExtTrampDispatchEntry\num: .word PHYS_DEV_OFFSET_INST_DISPATCH + (PTR_SIZE * \num)
+vkPhysDevExtTramp\num:
+ ldr r4, [r0] // Load the loader_instance_dispatch_table* into r4
+ ldr r0, [r0, #PHYS_DEV_OFFSET_PHYS_DEV_TRAMP] // Load the unwrapped VkPhysicalDevice into r0
+ ldr r5, vkPhysDevExtTrampDispatchEntry\num // Put the offset of the entry in the dispatch table for the function
+ ldr r6, [r4, r5] // Load the address to branch to out of the dispatch table
+ bx r6 // Branch to the next member of the dispatch chain
+
+.endm
+
+.macro PhysDevExtTermin num
+.global vkPhysDevExtTermin\num
+#if defined(__ELF__)
+ .hidden vkPhysDevExtTermin\num
+#endif
+.balign 4
+vkPhysDevExtTerminDispatchEntry\num: .word DISPATCH_OFFSET_ICD_TERM + (PTR_SIZE * \num)
+vkPhysDevExtTerminFunctionNameEntry\num: .word FUNCTION_OFFSET_INSTANCE + (CHAR_PTR_SIZE * \num)
+vkPhysDevExtTermin\num:
+ ldr r4, [r0, #ICD_TERM_OFFSET_PHYS_DEV_TERM] // Load the loader_icd_term* in r4
+ ldr r6, vkPhysDevExtTerminDispatchEntry\num // Put the offset into the dispatch table in r6
+ ldr r5, [r4, r6] // Load the address of the next function in the dispatch chain
+ cmp r5, #0
+ beq terminError\num // Go to the error section if the next function in the chain is NULL
+ ldr r0, [r0, #PHYS_DEV_OFFSET_PHYS_DEV_TERM] // Unwrap the VkPhysicalDevice in r0
+ bx r5 // Jump to the next function in the chain
+terminError\num:
+ ldr r5, vkPhysDevExtTerminFunctionNameEntry\num // Offset of the function name string in the instance
+ ldr r6, [r4, #INSTANCE_OFFSET_ICD_TERM] // Load the instance pointer
+ mov r0, r6 // Vulkan instance pointer (first arg)
+ mov r1, #VULKAN_LOADER_ERROR_BIT // The error logging bit (second arg)
+ mov r2, #0 // Zero (third arg)
+ ldr r3, [r6, r5] // The function name (fourth arg)
+ bl loader_log_asm_function_not_supported // Log the error message before we crash
+ mov r0, #0
+ bx r0 // Crash intentionally by jumping to address zero
+.endm
+
+.macro DevExtTramp num
+.global vkdev_ext\num
+#if defined(__ELF__)
+ .hidden vkdev_ext\num
+#endif
+.balign 4
+vkdev_ext_dispatch_entry\num: .word EXT_OFFSET_DEVICE_DISPATCH + (PTR_SIZE * \num)
+vkdev_ext\num:
+ ldr r4, [r0] // Load the loader_instance_dispatch_table* into r4
+ ldr r5, vkdev_ext_dispatch_entry\num // Offset of the desired function in the dispatch table
+ ldr r6, [r4, r5] // Load the function address
+ bx r6
+.endm
+
+.endif
+
+#if defined(__ELF__)
+.section .note.GNU-stack,"",%progbits
+#endif
+
+.data
+
+termin_error_string:
+.string "Function %s not supported for this physical device"
+
+.text
+
+ PhysDevExtTramp 0
+ PhysDevExtTramp 1
+ PhysDevExtTramp 2
+ PhysDevExtTramp 3
+ PhysDevExtTramp 4
+ PhysDevExtTramp 5
+ PhysDevExtTramp 6
+ PhysDevExtTramp 7
+ PhysDevExtTramp 8
+ PhysDevExtTramp 9
+ PhysDevExtTramp 10
+ PhysDevExtTramp 11
+ PhysDevExtTramp 12
+ PhysDevExtTramp 13
+ PhysDevExtTramp 14
+ PhysDevExtTramp 15
+ PhysDevExtTramp 16
+ PhysDevExtTramp 17
+ PhysDevExtTramp 18
+ PhysDevExtTramp 19
+ PhysDevExtTramp 20
+ PhysDevExtTramp 21
+ PhysDevExtTramp 22
+ PhysDevExtTramp 23
+ PhysDevExtTramp 24
+ PhysDevExtTramp 25
+ PhysDevExtTramp 26
+ PhysDevExtTramp 27
+ PhysDevExtTramp 28
+ PhysDevExtTramp 29
+ PhysDevExtTramp 30
+ PhysDevExtTramp 31
+ PhysDevExtTramp 32
+ PhysDevExtTramp 33
+ PhysDevExtTramp 34
+ PhysDevExtTramp 35
+ PhysDevExtTramp 36
+ PhysDevExtTramp 37
+ PhysDevExtTramp 38
+ PhysDevExtTramp 39
+ PhysDevExtTramp 40
+ PhysDevExtTramp 41
+ PhysDevExtTramp 42
+ PhysDevExtTramp 43
+ PhysDevExtTramp 44
+ PhysDevExtTramp 45
+ PhysDevExtTramp 46
+ PhysDevExtTramp 47
+ PhysDevExtTramp 48
+ PhysDevExtTramp 49
+ PhysDevExtTramp 50
+ PhysDevExtTramp 51
+ PhysDevExtTramp 52
+ PhysDevExtTramp 53
+ PhysDevExtTramp 54
+ PhysDevExtTramp 55
+ PhysDevExtTramp 56
+ PhysDevExtTramp 57
+ PhysDevExtTramp 58
+ PhysDevExtTramp 59
+ PhysDevExtTramp 60
+ PhysDevExtTramp 61
+ PhysDevExtTramp 62
+ PhysDevExtTramp 63
+ PhysDevExtTramp 64
+ PhysDevExtTramp 65
+ PhysDevExtTramp 66
+ PhysDevExtTramp 67
+ PhysDevExtTramp 68
+ PhysDevExtTramp 69
+ PhysDevExtTramp 70
+ PhysDevExtTramp 71
+ PhysDevExtTramp 72
+ PhysDevExtTramp 73
+ PhysDevExtTramp 74
+ PhysDevExtTramp 75
+ PhysDevExtTramp 76
+ PhysDevExtTramp 77
+ PhysDevExtTramp 78
+ PhysDevExtTramp 79
+ PhysDevExtTramp 80
+ PhysDevExtTramp 81
+ PhysDevExtTramp 82
+ PhysDevExtTramp 83
+ PhysDevExtTramp 84
+ PhysDevExtTramp 85
+ PhysDevExtTramp 86
+ PhysDevExtTramp 87
+ PhysDevExtTramp 88
+ PhysDevExtTramp 89
+ PhysDevExtTramp 90
+ PhysDevExtTramp 91
+ PhysDevExtTramp 92
+ PhysDevExtTramp 93
+ PhysDevExtTramp 94
+ PhysDevExtTramp 95
+ PhysDevExtTramp 96
+ PhysDevExtTramp 97
+ PhysDevExtTramp 98
+ PhysDevExtTramp 99
+ PhysDevExtTramp 100
+ PhysDevExtTramp 101
+ PhysDevExtTramp 102
+ PhysDevExtTramp 103
+ PhysDevExtTramp 104
+ PhysDevExtTramp 105
+ PhysDevExtTramp 106
+ PhysDevExtTramp 107
+ PhysDevExtTramp 108
+ PhysDevExtTramp 109
+ PhysDevExtTramp 110
+ PhysDevExtTramp 111
+ PhysDevExtTramp 112
+ PhysDevExtTramp 113
+ PhysDevExtTramp 114
+ PhysDevExtTramp 115
+ PhysDevExtTramp 116
+ PhysDevExtTramp 117
+ PhysDevExtTramp 118
+ PhysDevExtTramp 119
+ PhysDevExtTramp 120
+ PhysDevExtTramp 121
+ PhysDevExtTramp 122
+ PhysDevExtTramp 123
+ PhysDevExtTramp 124
+ PhysDevExtTramp 125
+ PhysDevExtTramp 126
+ PhysDevExtTramp 127
+ PhysDevExtTramp 128
+ PhysDevExtTramp 129
+ PhysDevExtTramp 130
+ PhysDevExtTramp 131
+ PhysDevExtTramp 132
+ PhysDevExtTramp 133
+ PhysDevExtTramp 134
+ PhysDevExtTramp 135
+ PhysDevExtTramp 136
+ PhysDevExtTramp 137
+ PhysDevExtTramp 138
+ PhysDevExtTramp 139
+ PhysDevExtTramp 140
+ PhysDevExtTramp 141
+ PhysDevExtTramp 142
+ PhysDevExtTramp 143
+ PhysDevExtTramp 144
+ PhysDevExtTramp 145
+ PhysDevExtTramp 146
+ PhysDevExtTramp 147
+ PhysDevExtTramp 148
+ PhysDevExtTramp 149
+ PhysDevExtTramp 150
+ PhysDevExtTramp 151
+ PhysDevExtTramp 152
+ PhysDevExtTramp 153
+ PhysDevExtTramp 154
+ PhysDevExtTramp 155
+ PhysDevExtTramp 156
+ PhysDevExtTramp 157
+ PhysDevExtTramp 158
+ PhysDevExtTramp 159
+ PhysDevExtTramp 160
+ PhysDevExtTramp 161
+ PhysDevExtTramp 162
+ PhysDevExtTramp 163
+ PhysDevExtTramp 164
+ PhysDevExtTramp 165
+ PhysDevExtTramp 166
+ PhysDevExtTramp 167
+ PhysDevExtTramp 168
+ PhysDevExtTramp 169
+ PhysDevExtTramp 170
+ PhysDevExtTramp 171
+ PhysDevExtTramp 172
+ PhysDevExtTramp 173
+ PhysDevExtTramp 174
+ PhysDevExtTramp 175
+ PhysDevExtTramp 176
+ PhysDevExtTramp 177
+ PhysDevExtTramp 178
+ PhysDevExtTramp 179
+ PhysDevExtTramp 180
+ PhysDevExtTramp 181
+ PhysDevExtTramp 182
+ PhysDevExtTramp 183
+ PhysDevExtTramp 184
+ PhysDevExtTramp 185
+ PhysDevExtTramp 186
+ PhysDevExtTramp 187
+ PhysDevExtTramp 188
+ PhysDevExtTramp 189
+ PhysDevExtTramp 190
+ PhysDevExtTramp 191
+ PhysDevExtTramp 192
+ PhysDevExtTramp 193
+ PhysDevExtTramp 194
+ PhysDevExtTramp 195
+ PhysDevExtTramp 196
+ PhysDevExtTramp 197
+ PhysDevExtTramp 198
+ PhysDevExtTramp 199
+ PhysDevExtTramp 200
+ PhysDevExtTramp 201
+ PhysDevExtTramp 202
+ PhysDevExtTramp 203
+ PhysDevExtTramp 204
+ PhysDevExtTramp 205
+ PhysDevExtTramp 206
+ PhysDevExtTramp 207
+ PhysDevExtTramp 208
+ PhysDevExtTramp 209
+ PhysDevExtTramp 210
+ PhysDevExtTramp 211
+ PhysDevExtTramp 212
+ PhysDevExtTramp 213
+ PhysDevExtTramp 214
+ PhysDevExtTramp 215
+ PhysDevExtTramp 216
+ PhysDevExtTramp 217
+ PhysDevExtTramp 218
+ PhysDevExtTramp 219
+ PhysDevExtTramp 220
+ PhysDevExtTramp 221
+ PhysDevExtTramp 222
+ PhysDevExtTramp 223
+ PhysDevExtTramp 224
+ PhysDevExtTramp 225
+ PhysDevExtTramp 226
+ PhysDevExtTramp 227
+ PhysDevExtTramp 228
+ PhysDevExtTramp 229
+ PhysDevExtTramp 230
+ PhysDevExtTramp 231
+ PhysDevExtTramp 232
+ PhysDevExtTramp 233
+ PhysDevExtTramp 234
+ PhysDevExtTramp 235
+ PhysDevExtTramp 236
+ PhysDevExtTramp 237
+ PhysDevExtTramp 238
+ PhysDevExtTramp 239
+ PhysDevExtTramp 240
+ PhysDevExtTramp 241
+ PhysDevExtTramp 242
+ PhysDevExtTramp 243
+ PhysDevExtTramp 244
+ PhysDevExtTramp 245
+ PhysDevExtTramp 246
+ PhysDevExtTramp 247
+ PhysDevExtTramp 248
+ PhysDevExtTramp 249
+
+ PhysDevExtTermin 0
+ PhysDevExtTermin 1
+ PhysDevExtTermin 2
+ PhysDevExtTermin 3
+ PhysDevExtTermin 4
+ PhysDevExtTermin 5
+ PhysDevExtTermin 6
+ PhysDevExtTermin 7
+ PhysDevExtTermin 8
+ PhysDevExtTermin 9
+ PhysDevExtTermin 10
+ PhysDevExtTermin 11
+ PhysDevExtTermin 12
+ PhysDevExtTermin 13
+ PhysDevExtTermin 14
+ PhysDevExtTermin 15
+ PhysDevExtTermin 16
+ PhysDevExtTermin 17
+ PhysDevExtTermin 18
+ PhysDevExtTermin 19
+ PhysDevExtTermin 20
+ PhysDevExtTermin 21
+ PhysDevExtTermin 22
+ PhysDevExtTermin 23
+ PhysDevExtTermin 24
+ PhysDevExtTermin 25
+ PhysDevExtTermin 26
+ PhysDevExtTermin 27
+ PhysDevExtTermin 28
+ PhysDevExtTermin 29
+ PhysDevExtTermin 30
+ PhysDevExtTermin 31
+ PhysDevExtTermin 32
+ PhysDevExtTermin 33
+ PhysDevExtTermin 34
+ PhysDevExtTermin 35
+ PhysDevExtTermin 36
+ PhysDevExtTermin 37
+ PhysDevExtTermin 38
+ PhysDevExtTermin 39
+ PhysDevExtTermin 40
+ PhysDevExtTermin 41
+ PhysDevExtTermin 42
+ PhysDevExtTermin 43
+ PhysDevExtTermin 44
+ PhysDevExtTermin 45
+ PhysDevExtTermin 46
+ PhysDevExtTermin 47
+ PhysDevExtTermin 48
+ PhysDevExtTermin 49
+ PhysDevExtTermin 50
+ PhysDevExtTermin 51
+ PhysDevExtTermin 52
+ PhysDevExtTermin 53
+ PhysDevExtTermin 54
+ PhysDevExtTermin 55
+ PhysDevExtTermin 56
+ PhysDevExtTermin 57
+ PhysDevExtTermin 58
+ PhysDevExtTermin 59
+ PhysDevExtTermin 60
+ PhysDevExtTermin 61
+ PhysDevExtTermin 62
+ PhysDevExtTermin 63
+ PhysDevExtTermin 64
+ PhysDevExtTermin 65
+ PhysDevExtTermin 66
+ PhysDevExtTermin 67
+ PhysDevExtTermin 68
+ PhysDevExtTermin 69
+ PhysDevExtTermin 70
+ PhysDevExtTermin 71
+ PhysDevExtTermin 72
+ PhysDevExtTermin 73
+ PhysDevExtTermin 74
+ PhysDevExtTermin 75
+ PhysDevExtTermin 76
+ PhysDevExtTermin 77
+ PhysDevExtTermin 78
+ PhysDevExtTermin 79
+ PhysDevExtTermin 80
+ PhysDevExtTermin 81
+ PhysDevExtTermin 82
+ PhysDevExtTermin 83
+ PhysDevExtTermin 84
+ PhysDevExtTermin 85
+ PhysDevExtTermin 86
+ PhysDevExtTermin 87
+ PhysDevExtTermin 88
+ PhysDevExtTermin 89
+ PhysDevExtTermin 90
+ PhysDevExtTermin 91
+ PhysDevExtTermin 92
+ PhysDevExtTermin 93
+ PhysDevExtTermin 94
+ PhysDevExtTermin 95
+ PhysDevExtTermin 96
+ PhysDevExtTermin 97
+ PhysDevExtTermin 98
+ PhysDevExtTermin 99
+ PhysDevExtTermin 100
+ PhysDevExtTermin 101
+ PhysDevExtTermin 102
+ PhysDevExtTermin 103
+ PhysDevExtTermin 104
+ PhysDevExtTermin 105
+ PhysDevExtTermin 106
+ PhysDevExtTermin 107
+ PhysDevExtTermin 108
+ PhysDevExtTermin 109
+ PhysDevExtTermin 110
+ PhysDevExtTermin 111
+ PhysDevExtTermin 112
+ PhysDevExtTermin 113
+ PhysDevExtTermin 114
+ PhysDevExtTermin 115
+ PhysDevExtTermin 116
+ PhysDevExtTermin 117
+ PhysDevExtTermin 118
+ PhysDevExtTermin 119
+ PhysDevExtTermin 120
+ PhysDevExtTermin 121
+ PhysDevExtTermin 122
+ PhysDevExtTermin 123
+ PhysDevExtTermin 124
+ PhysDevExtTermin 125
+ PhysDevExtTermin 126
+ PhysDevExtTermin 127
+ PhysDevExtTermin 128
+ PhysDevExtTermin 129
+ PhysDevExtTermin 130
+ PhysDevExtTermin 131
+ PhysDevExtTermin 132
+ PhysDevExtTermin 133
+ PhysDevExtTermin 134
+ PhysDevExtTermin 135
+ PhysDevExtTermin 136
+ PhysDevExtTermin 137
+ PhysDevExtTermin 138
+ PhysDevExtTermin 139
+ PhysDevExtTermin 140
+ PhysDevExtTermin 141
+ PhysDevExtTermin 142
+ PhysDevExtTermin 143
+ PhysDevExtTermin 144
+ PhysDevExtTermin 145
+ PhysDevExtTermin 146
+ PhysDevExtTermin 147
+ PhysDevExtTermin 148
+ PhysDevExtTermin 149
+ PhysDevExtTermin 150
+ PhysDevExtTermin 151
+ PhysDevExtTermin 152
+ PhysDevExtTermin 153
+ PhysDevExtTermin 154
+ PhysDevExtTermin 155
+ PhysDevExtTermin 156
+ PhysDevExtTermin 157
+ PhysDevExtTermin 158
+ PhysDevExtTermin 159
+ PhysDevExtTermin 160
+ PhysDevExtTermin 161
+ PhysDevExtTermin 162
+ PhysDevExtTermin 163
+ PhysDevExtTermin 164
+ PhysDevExtTermin 165
+ PhysDevExtTermin 166
+ PhysDevExtTermin 167
+ PhysDevExtTermin 168
+ PhysDevExtTermin 169
+ PhysDevExtTermin 170
+ PhysDevExtTermin 171
+ PhysDevExtTermin 172
+ PhysDevExtTermin 173
+ PhysDevExtTermin 174
+ PhysDevExtTermin 175
+ PhysDevExtTermin 176
+ PhysDevExtTermin 177
+ PhysDevExtTermin 178
+ PhysDevExtTermin 179
+ PhysDevExtTermin 180
+ PhysDevExtTermin 181
+ PhysDevExtTermin 182
+ PhysDevExtTermin 183
+ PhysDevExtTermin 184
+ PhysDevExtTermin 185
+ PhysDevExtTermin 186
+ PhysDevExtTermin 187
+ PhysDevExtTermin 188
+ PhysDevExtTermin 189
+ PhysDevExtTermin 190
+ PhysDevExtTermin 191
+ PhysDevExtTermin 192
+ PhysDevExtTermin 193
+ PhysDevExtTermin 194
+ PhysDevExtTermin 195
+ PhysDevExtTermin 196
+ PhysDevExtTermin 197
+ PhysDevExtTermin 198
+ PhysDevExtTermin 199
+ PhysDevExtTermin 200
+ PhysDevExtTermin 201
+ PhysDevExtTermin 202
+ PhysDevExtTermin 203
+ PhysDevExtTermin 204
+ PhysDevExtTermin 205
+ PhysDevExtTermin 206
+ PhysDevExtTermin 207
+ PhysDevExtTermin 208
+ PhysDevExtTermin 209
+ PhysDevExtTermin 210
+ PhysDevExtTermin 211
+ PhysDevExtTermin 212
+ PhysDevExtTermin 213
+ PhysDevExtTermin 214
+ PhysDevExtTermin 215
+ PhysDevExtTermin 216
+ PhysDevExtTermin 217
+ PhysDevExtTermin 218
+ PhysDevExtTermin 219
+ PhysDevExtTermin 220
+ PhysDevExtTermin 221
+ PhysDevExtTermin 222
+ PhysDevExtTermin 223
+ PhysDevExtTermin 224
+ PhysDevExtTermin 225
+ PhysDevExtTermin 226
+ PhysDevExtTermin 227
+ PhysDevExtTermin 228
+ PhysDevExtTermin 229
+ PhysDevExtTermin 230
+ PhysDevExtTermin 231
+ PhysDevExtTermin 232
+ PhysDevExtTermin 233
+ PhysDevExtTermin 234
+ PhysDevExtTermin 235
+ PhysDevExtTermin 236
+ PhysDevExtTermin 237
+ PhysDevExtTermin 238
+ PhysDevExtTermin 239
+ PhysDevExtTermin 240
+ PhysDevExtTermin 241
+ PhysDevExtTermin 242
+ PhysDevExtTermin 243
+ PhysDevExtTermin 244
+ PhysDevExtTermin 245
+ PhysDevExtTermin 246
+ PhysDevExtTermin 247
+ PhysDevExtTermin 248
+ PhysDevExtTermin 249
+
+ DevExtTramp 0
+ DevExtTramp 1
+ DevExtTramp 2
+ DevExtTramp 3
+ DevExtTramp 4
+ DevExtTramp 5
+ DevExtTramp 6
+ DevExtTramp 7
+ DevExtTramp 8
+ DevExtTramp 9
+ DevExtTramp 10
+ DevExtTramp 11
+ DevExtTramp 12
+ DevExtTramp 13
+ DevExtTramp 14
+ DevExtTramp 15
+ DevExtTramp 16
+ DevExtTramp 17
+ DevExtTramp 18
+ DevExtTramp 19
+ DevExtTramp 20
+ DevExtTramp 21
+ DevExtTramp 22
+ DevExtTramp 23
+ DevExtTramp 24
+ DevExtTramp 25
+ DevExtTramp 26
+ DevExtTramp 27
+ DevExtTramp 28
+ DevExtTramp 29
+ DevExtTramp 30
+ DevExtTramp 31
+ DevExtTramp 32
+ DevExtTramp 33
+ DevExtTramp 34
+ DevExtTramp 35
+ DevExtTramp 36
+ DevExtTramp 37
+ DevExtTramp 38
+ DevExtTramp 39
+ DevExtTramp 40
+ DevExtTramp 41
+ DevExtTramp 42
+ DevExtTramp 43
+ DevExtTramp 44
+ DevExtTramp 45
+ DevExtTramp 46
+ DevExtTramp 47
+ DevExtTramp 48
+ DevExtTramp 49
+ DevExtTramp 50
+ DevExtTramp 51
+ DevExtTramp 52
+ DevExtTramp 53
+ DevExtTramp 54
+ DevExtTramp 55
+ DevExtTramp 56
+ DevExtTramp 57
+ DevExtTramp 58
+ DevExtTramp 59
+ DevExtTramp 60
+ DevExtTramp 61
+ DevExtTramp 62
+ DevExtTramp 63
+ DevExtTramp 64
+ DevExtTramp 65
+ DevExtTramp 66
+ DevExtTramp 67
+ DevExtTramp 68
+ DevExtTramp 69
+ DevExtTramp 70
+ DevExtTramp 71
+ DevExtTramp 72
+ DevExtTramp 73
+ DevExtTramp 74
+ DevExtTramp 75
+ DevExtTramp 76
+ DevExtTramp 77
+ DevExtTramp 78
+ DevExtTramp 79
+ DevExtTramp 80
+ DevExtTramp 81
+ DevExtTramp 82
+ DevExtTramp 83
+ DevExtTramp 84
+ DevExtTramp 85
+ DevExtTramp 86
+ DevExtTramp 87
+ DevExtTramp 88
+ DevExtTramp 89
+ DevExtTramp 90
+ DevExtTramp 91
+ DevExtTramp 92
+ DevExtTramp 93
+ DevExtTramp 94
+ DevExtTramp 95
+ DevExtTramp 96
+ DevExtTramp 97
+ DevExtTramp 98
+ DevExtTramp 99
+ DevExtTramp 100
+ DevExtTramp 101
+ DevExtTramp 102
+ DevExtTramp 103
+ DevExtTramp 104
+ DevExtTramp 105
+ DevExtTramp 106
+ DevExtTramp 107
+ DevExtTramp 108
+ DevExtTramp 109
+ DevExtTramp 110
+ DevExtTramp 111
+ DevExtTramp 112
+ DevExtTramp 113
+ DevExtTramp 114
+ DevExtTramp 115
+ DevExtTramp 116
+ DevExtTramp 117
+ DevExtTramp 118
+ DevExtTramp 119
+ DevExtTramp 120
+ DevExtTramp 121
+ DevExtTramp 122
+ DevExtTramp 123
+ DevExtTramp 124
+ DevExtTramp 125
+ DevExtTramp 126
+ DevExtTramp 127
+ DevExtTramp 128
+ DevExtTramp 129
+ DevExtTramp 130
+ DevExtTramp 131
+ DevExtTramp 132
+ DevExtTramp 133
+ DevExtTramp 134
+ DevExtTramp 135
+ DevExtTramp 136
+ DevExtTramp 137
+ DevExtTramp 138
+ DevExtTramp 139
+ DevExtTramp 140
+ DevExtTramp 141
+ DevExtTramp 142
+ DevExtTramp 143
+ DevExtTramp 144
+ DevExtTramp 145
+ DevExtTramp 146
+ DevExtTramp 147
+ DevExtTramp 148
+ DevExtTramp 149
+ DevExtTramp 150
+ DevExtTramp 151
+ DevExtTramp 152
+ DevExtTramp 153
+ DevExtTramp 154
+ DevExtTramp 155
+ DevExtTramp 156
+ DevExtTramp 157
+ DevExtTramp 158
+ DevExtTramp 159
+ DevExtTramp 160
+ DevExtTramp 161
+ DevExtTramp 162
+ DevExtTramp 163
+ DevExtTramp 164
+ DevExtTramp 165
+ DevExtTramp 166
+ DevExtTramp 167
+ DevExtTramp 168
+ DevExtTramp 169
+ DevExtTramp 170
+ DevExtTramp 171
+ DevExtTramp 172
+ DevExtTramp 173
+ DevExtTramp 174
+ DevExtTramp 175
+ DevExtTramp 176
+ DevExtTramp 177
+ DevExtTramp 178
+ DevExtTramp 179
+ DevExtTramp 180
+ DevExtTramp 181
+ DevExtTramp 182
+ DevExtTramp 183
+ DevExtTramp 184
+ DevExtTramp 185
+ DevExtTramp 186
+ DevExtTramp 187
+ DevExtTramp 188
+ DevExtTramp 189
+ DevExtTramp 190
+ DevExtTramp 191
+ DevExtTramp 192
+ DevExtTramp 193
+ DevExtTramp 194
+ DevExtTramp 195
+ DevExtTramp 196
+ DevExtTramp 197
+ DevExtTramp 198
+ DevExtTramp 199
+ DevExtTramp 200
+ DevExtTramp 201
+ DevExtTramp 202
+ DevExtTramp 203
+ DevExtTramp 204
+ DevExtTramp 205
+ DevExtTramp 206
+ DevExtTramp 207
+ DevExtTramp 208
+ DevExtTramp 209
+ DevExtTramp 210
+ DevExtTramp 211
+ DevExtTramp 212
+ DevExtTramp 213
+ DevExtTramp 214
+ DevExtTramp 215
+ DevExtTramp 216
+ DevExtTramp 217
+ DevExtTramp 218
+ DevExtTramp 219
+ DevExtTramp 220
+ DevExtTramp 221
+ DevExtTramp 222
+ DevExtTramp 223
+ DevExtTramp 224
+ DevExtTramp 225
+ DevExtTramp 226
+ DevExtTramp 227
+ DevExtTramp 228
+ DevExtTramp 229
+ DevExtTramp 230
+ DevExtTramp 231
+ DevExtTramp 232
+ DevExtTramp 233
+ DevExtTramp 234
+ DevExtTramp 235
+ DevExtTramp 236
+ DevExtTramp 237
+ DevExtTramp 238
+ DevExtTramp 239
+ DevExtTramp 240
+ DevExtTramp 241
+ DevExtTramp 242
+ DevExtTramp 243
+ DevExtTramp 244
+ DevExtTramp 245
+ DevExtTramp 246
+ DevExtTramp 247
+ DevExtTramp 248
+ DevExtTramp 249
+++ /dev/null
-//
-// Copyright (c) 2021 NVIDIA CORPORATION & AFFILIATES. All rights reserved.
-//
-// Licensed under the Apache License, Version 2.0 (the "License");
-// you may not use this file except in compliance with the License.
-// You may obtain a copy of the License at
-//
-// http://www.apache.org/licenses/LICENSE-2.0
-//
-// Unless required by applicable law or agreed to in writing, software
-// distributed under the License is distributed on an "AS IS" BASIS,
-// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-// See the License for the specific language governing permissions and
-// limitations under the License.
-//
-// Author: Eric Sullivan <esullivan@nvidia.com>
-//
-
-// This code is used to pass on device (including physical device) extensions through the call chain. It must do this without
-// creating a stack frame, because the actual parameters of the call are not known. Since the first parameter is known to be a
-// VkPhysicalDevice or a dispatchable object it can unwrap the object, possibly overwriting the wrapped physical device, and then
-// jump to the next function in the call chain
-
-.include "gen_defines.asm"
-
-.if AARCH_64
-
-.macro PhysDevExtTramp num
-.global vkPhysDevExtTramp\num
-#if defined(__ELF__)
- .hidden vkPhysDevExtTramp\num
-#endif
-.balign 4
-
-vkPhysDevExtTramp\num:
- ldr x9, [x0] // Load the loader_instance_dispatch_table* into x9
- ldr x0, [x0, PHYS_DEV_OFFSET_PHYS_DEV_TRAMP] // Load the unwrapped VkPhysicalDevice into x0
- mov x10, (PHYS_DEV_OFFSET_INST_DISPATCH + (PTR_SIZE * \num)) // Put the offset of the entry in the dispatch table for the function
- ldr x11, [x9, x10] // Load the address to branch to out of the dispatch table
- br x11 // Branch to the next member of the dispatch chain
-.endm
-
-.macro PhysDevExtTermin num
-.global vkPhysDevExtTermin\num
-#if defined(__ELF__)
- .hidden vkPhysDevExtTermin\num
-#endif
-.balign 4
-vkPhysDevExtTermin\num:
- ldr x9, [x0, ICD_TERM_OFFSET_PHYS_DEV_TERM] // Load the loader_icd_term* in x9
- mov x11, (DISPATCH_OFFSET_ICD_TERM + (PTR_SIZE * \num)) // Put the offset into the dispatch table in x11
- ldr x10, [x9, x11] // Load the address of the next function in the dispatch chain
- cbz x10, terminError\num // Go to the error section if the next function in the chain is NULL
- ldr x0, [x0, PHYS_DEV_OFFSET_PHYS_DEV_TERM] // Unwrap the VkPhysicalDevice in x0
- br x10 // Jump to the next function in the chain
-terminError\num:
- mov x10, (FUNCTION_OFFSET_INSTANCE + (CHAR_PTR_SIZE * \num)) // Offset of the function name string in the instance
- ldr x11, [x9, INSTANCE_OFFSET_ICD_TERM] // Load the instance pointer
- mov x0, x11 // Vulkan instance pointer (first arg)
- mov x1, VULKAN_LOADER_ERROR_BIT // The error logging bit (second arg)
- mov x2, #0 // Zero (third arg)
- ldr x3, [x11, x10] // The function name (fourth arg)
- bl loader_log_asm_function_not_supported // Log the error message before we crash
- mov x0, #0
- br x0 // Crash intentionally by jumping to address zero
-.endm
-
-.macro DevExtTramp num
-.global vkdev_ext\num
-#if defined(__ELF__)
- .hidden vkdev_ext\num
-#endif
-.balign 4
-vkdev_ext\num:
- ldr x9, [x0] // Load the loader_instance_dispatch_table* into x9
- mov x10, (EXT_OFFSET_DEVICE_DISPATCH + (PTR_SIZE * \num)) // Offset of the desired function in the dispatch table
- ldr x11, [x9, x10] // Load the function address
- br x11
-.endm
-
-.endif
-
-#if defined(__ELF__)
-.section .note.GNU-stack,"",%progbits
-#endif
-
-.data
-
-termin_error_string:
-.string "Function %s not supported for this physical device"
-
-.text
-
- PhysDevExtTramp 0
- PhysDevExtTramp 1
- PhysDevExtTramp 2
- PhysDevExtTramp 3
- PhysDevExtTramp 4
- PhysDevExtTramp 5
- PhysDevExtTramp 6
- PhysDevExtTramp 7
- PhysDevExtTramp 8
- PhysDevExtTramp 9
- PhysDevExtTramp 10
- PhysDevExtTramp 11
- PhysDevExtTramp 12
- PhysDevExtTramp 13
- PhysDevExtTramp 14
- PhysDevExtTramp 15
- PhysDevExtTramp 16
- PhysDevExtTramp 17
- PhysDevExtTramp 18
- PhysDevExtTramp 19
- PhysDevExtTramp 20
- PhysDevExtTramp 21
- PhysDevExtTramp 22
- PhysDevExtTramp 23
- PhysDevExtTramp 24
- PhysDevExtTramp 25
- PhysDevExtTramp 26
- PhysDevExtTramp 27
- PhysDevExtTramp 28
- PhysDevExtTramp 29
- PhysDevExtTramp 30
- PhysDevExtTramp 31
- PhysDevExtTramp 32
- PhysDevExtTramp 33
- PhysDevExtTramp 34
- PhysDevExtTramp 35
- PhysDevExtTramp 36
- PhysDevExtTramp 37
- PhysDevExtTramp 38
- PhysDevExtTramp 39
- PhysDevExtTramp 40
- PhysDevExtTramp 41
- PhysDevExtTramp 42
- PhysDevExtTramp 43
- PhysDevExtTramp 44
- PhysDevExtTramp 45
- PhysDevExtTramp 46
- PhysDevExtTramp 47
- PhysDevExtTramp 48
- PhysDevExtTramp 49
- PhysDevExtTramp 50
- PhysDevExtTramp 51
- PhysDevExtTramp 52
- PhysDevExtTramp 53
- PhysDevExtTramp 54
- PhysDevExtTramp 55
- PhysDevExtTramp 56
- PhysDevExtTramp 57
- PhysDevExtTramp 58
- PhysDevExtTramp 59
- PhysDevExtTramp 60
- PhysDevExtTramp 61
- PhysDevExtTramp 62
- PhysDevExtTramp 63
- PhysDevExtTramp 64
- PhysDevExtTramp 65
- PhysDevExtTramp 66
- PhysDevExtTramp 67
- PhysDevExtTramp 68
- PhysDevExtTramp 69
- PhysDevExtTramp 70
- PhysDevExtTramp 71
- PhysDevExtTramp 72
- PhysDevExtTramp 73
- PhysDevExtTramp 74
- PhysDevExtTramp 75
- PhysDevExtTramp 76
- PhysDevExtTramp 77
- PhysDevExtTramp 78
- PhysDevExtTramp 79
- PhysDevExtTramp 80
- PhysDevExtTramp 81
- PhysDevExtTramp 82
- PhysDevExtTramp 83
- PhysDevExtTramp 84
- PhysDevExtTramp 85
- PhysDevExtTramp 86
- PhysDevExtTramp 87
- PhysDevExtTramp 88
- PhysDevExtTramp 89
- PhysDevExtTramp 90
- PhysDevExtTramp 91
- PhysDevExtTramp 92
- PhysDevExtTramp 93
- PhysDevExtTramp 94
- PhysDevExtTramp 95
- PhysDevExtTramp 96
- PhysDevExtTramp 97
- PhysDevExtTramp 98
- PhysDevExtTramp 99
- PhysDevExtTramp 100
- PhysDevExtTramp 101
- PhysDevExtTramp 102
- PhysDevExtTramp 103
- PhysDevExtTramp 104
- PhysDevExtTramp 105
- PhysDevExtTramp 106
- PhysDevExtTramp 107
- PhysDevExtTramp 108
- PhysDevExtTramp 109
- PhysDevExtTramp 110
- PhysDevExtTramp 111
- PhysDevExtTramp 112
- PhysDevExtTramp 113
- PhysDevExtTramp 114
- PhysDevExtTramp 115
- PhysDevExtTramp 116
- PhysDevExtTramp 117
- PhysDevExtTramp 118
- PhysDevExtTramp 119
- PhysDevExtTramp 120
- PhysDevExtTramp 121
- PhysDevExtTramp 122
- PhysDevExtTramp 123
- PhysDevExtTramp 124
- PhysDevExtTramp 125
- PhysDevExtTramp 126
- PhysDevExtTramp 127
- PhysDevExtTramp 128
- PhysDevExtTramp 129
- PhysDevExtTramp 130
- PhysDevExtTramp 131
- PhysDevExtTramp 132
- PhysDevExtTramp 133
- PhysDevExtTramp 134
- PhysDevExtTramp 135
- PhysDevExtTramp 136
- PhysDevExtTramp 137
- PhysDevExtTramp 138
- PhysDevExtTramp 139
- PhysDevExtTramp 140
- PhysDevExtTramp 141
- PhysDevExtTramp 142
- PhysDevExtTramp 143
- PhysDevExtTramp 144
- PhysDevExtTramp 145
- PhysDevExtTramp 146
- PhysDevExtTramp 147
- PhysDevExtTramp 148
- PhysDevExtTramp 149
- PhysDevExtTramp 150
- PhysDevExtTramp 151
- PhysDevExtTramp 152
- PhysDevExtTramp 153
- PhysDevExtTramp 154
- PhysDevExtTramp 155
- PhysDevExtTramp 156
- PhysDevExtTramp 157
- PhysDevExtTramp 158
- PhysDevExtTramp 159
- PhysDevExtTramp 160
- PhysDevExtTramp 161
- PhysDevExtTramp 162
- PhysDevExtTramp 163
- PhysDevExtTramp 164
- PhysDevExtTramp 165
- PhysDevExtTramp 166
- PhysDevExtTramp 167
- PhysDevExtTramp 168
- PhysDevExtTramp 169
- PhysDevExtTramp 170
- PhysDevExtTramp 171
- PhysDevExtTramp 172
- PhysDevExtTramp 173
- PhysDevExtTramp 174
- PhysDevExtTramp 175
- PhysDevExtTramp 176
- PhysDevExtTramp 177
- PhysDevExtTramp 178
- PhysDevExtTramp 179
- PhysDevExtTramp 180
- PhysDevExtTramp 181
- PhysDevExtTramp 182
- PhysDevExtTramp 183
- PhysDevExtTramp 184
- PhysDevExtTramp 185
- PhysDevExtTramp 186
- PhysDevExtTramp 187
- PhysDevExtTramp 188
- PhysDevExtTramp 189
- PhysDevExtTramp 190
- PhysDevExtTramp 191
- PhysDevExtTramp 192
- PhysDevExtTramp 193
- PhysDevExtTramp 194
- PhysDevExtTramp 195
- PhysDevExtTramp 196
- PhysDevExtTramp 197
- PhysDevExtTramp 198
- PhysDevExtTramp 199
- PhysDevExtTramp 200
- PhysDevExtTramp 201
- PhysDevExtTramp 202
- PhysDevExtTramp 203
- PhysDevExtTramp 204
- PhysDevExtTramp 205
- PhysDevExtTramp 206
- PhysDevExtTramp 207
- PhysDevExtTramp 208
- PhysDevExtTramp 209
- PhysDevExtTramp 210
- PhysDevExtTramp 211
- PhysDevExtTramp 212
- PhysDevExtTramp 213
- PhysDevExtTramp 214
- PhysDevExtTramp 215
- PhysDevExtTramp 216
- PhysDevExtTramp 217
- PhysDevExtTramp 218
- PhysDevExtTramp 219
- PhysDevExtTramp 220
- PhysDevExtTramp 221
- PhysDevExtTramp 222
- PhysDevExtTramp 223
- PhysDevExtTramp 224
- PhysDevExtTramp 225
- PhysDevExtTramp 226
- PhysDevExtTramp 227
- PhysDevExtTramp 228
- PhysDevExtTramp 229
- PhysDevExtTramp 230
- PhysDevExtTramp 231
- PhysDevExtTramp 232
- PhysDevExtTramp 233
- PhysDevExtTramp 234
- PhysDevExtTramp 235
- PhysDevExtTramp 236
- PhysDevExtTramp 237
- PhysDevExtTramp 238
- PhysDevExtTramp 239
- PhysDevExtTramp 240
- PhysDevExtTramp 241
- PhysDevExtTramp 242
- PhysDevExtTramp 243
- PhysDevExtTramp 244
- PhysDevExtTramp 245
- PhysDevExtTramp 246
- PhysDevExtTramp 247
- PhysDevExtTramp 248
- PhysDevExtTramp 249
-
- PhysDevExtTermin 0
- PhysDevExtTermin 1
- PhysDevExtTermin 2
- PhysDevExtTermin 3
- PhysDevExtTermin 4
- PhysDevExtTermin 5
- PhysDevExtTermin 6
- PhysDevExtTermin 7
- PhysDevExtTermin 8
- PhysDevExtTermin 9
- PhysDevExtTermin 10
- PhysDevExtTermin 11
- PhysDevExtTermin 12
- PhysDevExtTermin 13
- PhysDevExtTermin 14
- PhysDevExtTermin 15
- PhysDevExtTermin 16
- PhysDevExtTermin 17
- PhysDevExtTermin 18
- PhysDevExtTermin 19
- PhysDevExtTermin 20
- PhysDevExtTermin 21
- PhysDevExtTermin 22
- PhysDevExtTermin 23
- PhysDevExtTermin 24
- PhysDevExtTermin 25
- PhysDevExtTermin 26
- PhysDevExtTermin 27
- PhysDevExtTermin 28
- PhysDevExtTermin 29
- PhysDevExtTermin 30
- PhysDevExtTermin 31
- PhysDevExtTermin 32
- PhysDevExtTermin 33
- PhysDevExtTermin 34
- PhysDevExtTermin 35
- PhysDevExtTermin 36
- PhysDevExtTermin 37
- PhysDevExtTermin 38
- PhysDevExtTermin 39
- PhysDevExtTermin 40
- PhysDevExtTermin 41
- PhysDevExtTermin 42
- PhysDevExtTermin 43
- PhysDevExtTermin 44
- PhysDevExtTermin 45
- PhysDevExtTermin 46
- PhysDevExtTermin 47
- PhysDevExtTermin 48
- PhysDevExtTermin 49
- PhysDevExtTermin 50
- PhysDevExtTermin 51
- PhysDevExtTermin 52
- PhysDevExtTermin 53
- PhysDevExtTermin 54
- PhysDevExtTermin 55
- PhysDevExtTermin 56
- PhysDevExtTermin 57
- PhysDevExtTermin 58
- PhysDevExtTermin 59
- PhysDevExtTermin 60
- PhysDevExtTermin 61
- PhysDevExtTermin 62
- PhysDevExtTermin 63
- PhysDevExtTermin 64
- PhysDevExtTermin 65
- PhysDevExtTermin 66
- PhysDevExtTermin 67
- PhysDevExtTermin 68
- PhysDevExtTermin 69
- PhysDevExtTermin 70
- PhysDevExtTermin 71
- PhysDevExtTermin 72
- PhysDevExtTermin 73
- PhysDevExtTermin 74
- PhysDevExtTermin 75
- PhysDevExtTermin 76
- PhysDevExtTermin 77
- PhysDevExtTermin 78
- PhysDevExtTermin 79
- PhysDevExtTermin 80
- PhysDevExtTermin 81
- PhysDevExtTermin 82
- PhysDevExtTermin 83
- PhysDevExtTermin 84
- PhysDevExtTermin 85
- PhysDevExtTermin 86
- PhysDevExtTermin 87
- PhysDevExtTermin 88
- PhysDevExtTermin 89
- PhysDevExtTermin 90
- PhysDevExtTermin 91
- PhysDevExtTermin 92
- PhysDevExtTermin 93
- PhysDevExtTermin 94
- PhysDevExtTermin 95
- PhysDevExtTermin 96
- PhysDevExtTermin 97
- PhysDevExtTermin 98
- PhysDevExtTermin 99
- PhysDevExtTermin 100
- PhysDevExtTermin 101
- PhysDevExtTermin 102
- PhysDevExtTermin 103
- PhysDevExtTermin 104
- PhysDevExtTermin 105
- PhysDevExtTermin 106
- PhysDevExtTermin 107
- PhysDevExtTermin 108
- PhysDevExtTermin 109
- PhysDevExtTermin 110
- PhysDevExtTermin 111
- PhysDevExtTermin 112
- PhysDevExtTermin 113
- PhysDevExtTermin 114
- PhysDevExtTermin 115
- PhysDevExtTermin 116
- PhysDevExtTermin 117
- PhysDevExtTermin 118
- PhysDevExtTermin 119
- PhysDevExtTermin 120
- PhysDevExtTermin 121
- PhysDevExtTermin 122
- PhysDevExtTermin 123
- PhysDevExtTermin 124
- PhysDevExtTermin 125
- PhysDevExtTermin 126
- PhysDevExtTermin 127
- PhysDevExtTermin 128
- PhysDevExtTermin 129
- PhysDevExtTermin 130
- PhysDevExtTermin 131
- PhysDevExtTermin 132
- PhysDevExtTermin 133
- PhysDevExtTermin 134
- PhysDevExtTermin 135
- PhysDevExtTermin 136
- PhysDevExtTermin 137
- PhysDevExtTermin 138
- PhysDevExtTermin 139
- PhysDevExtTermin 140
- PhysDevExtTermin 141
- PhysDevExtTermin 142
- PhysDevExtTermin 143
- PhysDevExtTermin 144
- PhysDevExtTermin 145
- PhysDevExtTermin 146
- PhysDevExtTermin 147
- PhysDevExtTermin 148
- PhysDevExtTermin 149
- PhysDevExtTermin 150
- PhysDevExtTermin 151
- PhysDevExtTermin 152
- PhysDevExtTermin 153
- PhysDevExtTermin 154
- PhysDevExtTermin 155
- PhysDevExtTermin 156
- PhysDevExtTermin 157
- PhysDevExtTermin 158
- PhysDevExtTermin 159
- PhysDevExtTermin 160
- PhysDevExtTermin 161
- PhysDevExtTermin 162
- PhysDevExtTermin 163
- PhysDevExtTermin 164
- PhysDevExtTermin 165
- PhysDevExtTermin 166
- PhysDevExtTermin 167
- PhysDevExtTermin 168
- PhysDevExtTermin 169
- PhysDevExtTermin 170
- PhysDevExtTermin 171
- PhysDevExtTermin 172
- PhysDevExtTermin 173
- PhysDevExtTermin 174
- PhysDevExtTermin 175
- PhysDevExtTermin 176
- PhysDevExtTermin 177
- PhysDevExtTermin 178
- PhysDevExtTermin 179
- PhysDevExtTermin 180
- PhysDevExtTermin 181
- PhysDevExtTermin 182
- PhysDevExtTermin 183
- PhysDevExtTermin 184
- PhysDevExtTermin 185
- PhysDevExtTermin 186
- PhysDevExtTermin 187
- PhysDevExtTermin 188
- PhysDevExtTermin 189
- PhysDevExtTermin 190
- PhysDevExtTermin 191
- PhysDevExtTermin 192
- PhysDevExtTermin 193
- PhysDevExtTermin 194
- PhysDevExtTermin 195
- PhysDevExtTermin 196
- PhysDevExtTermin 197
- PhysDevExtTermin 198
- PhysDevExtTermin 199
- PhysDevExtTermin 200
- PhysDevExtTermin 201
- PhysDevExtTermin 202
- PhysDevExtTermin 203
- PhysDevExtTermin 204
- PhysDevExtTermin 205
- PhysDevExtTermin 206
- PhysDevExtTermin 207
- PhysDevExtTermin 208
- PhysDevExtTermin 209
- PhysDevExtTermin 210
- PhysDevExtTermin 211
- PhysDevExtTermin 212
- PhysDevExtTermin 213
- PhysDevExtTermin 214
- PhysDevExtTermin 215
- PhysDevExtTermin 216
- PhysDevExtTermin 217
- PhysDevExtTermin 218
- PhysDevExtTermin 219
- PhysDevExtTermin 220
- PhysDevExtTermin 221
- PhysDevExtTermin 222
- PhysDevExtTermin 223
- PhysDevExtTermin 224
- PhysDevExtTermin 225
- PhysDevExtTermin 226
- PhysDevExtTermin 227
- PhysDevExtTermin 228
- PhysDevExtTermin 229
- PhysDevExtTermin 230
- PhysDevExtTermin 231
- PhysDevExtTermin 232
- PhysDevExtTermin 233
- PhysDevExtTermin 234
- PhysDevExtTermin 235
- PhysDevExtTermin 236
- PhysDevExtTermin 237
- PhysDevExtTermin 238
- PhysDevExtTermin 239
- PhysDevExtTermin 240
- PhysDevExtTermin 241
- PhysDevExtTermin 242
- PhysDevExtTermin 243
- PhysDevExtTermin 244
- PhysDevExtTermin 245
- PhysDevExtTermin 246
- PhysDevExtTermin 247
- PhysDevExtTermin 248
- PhysDevExtTermin 249
-
- DevExtTramp 0
- DevExtTramp 1
- DevExtTramp 2
- DevExtTramp 3
- DevExtTramp 4
- DevExtTramp 5
- DevExtTramp 6
- DevExtTramp 7
- DevExtTramp 8
- DevExtTramp 9
- DevExtTramp 10
- DevExtTramp 11
- DevExtTramp 12
- DevExtTramp 13
- DevExtTramp 14
- DevExtTramp 15
- DevExtTramp 16
- DevExtTramp 17
- DevExtTramp 18
- DevExtTramp 19
- DevExtTramp 20
- DevExtTramp 21
- DevExtTramp 22
- DevExtTramp 23
- DevExtTramp 24
- DevExtTramp 25
- DevExtTramp 26
- DevExtTramp 27
- DevExtTramp 28
- DevExtTramp 29
- DevExtTramp 30
- DevExtTramp 31
- DevExtTramp 32
- DevExtTramp 33
- DevExtTramp 34
- DevExtTramp 35
- DevExtTramp 36
- DevExtTramp 37
- DevExtTramp 38
- DevExtTramp 39
- DevExtTramp 40
- DevExtTramp 41
- DevExtTramp 42
- DevExtTramp 43
- DevExtTramp 44
- DevExtTramp 45
- DevExtTramp 46
- DevExtTramp 47
- DevExtTramp 48
- DevExtTramp 49
- DevExtTramp 50
- DevExtTramp 51
- DevExtTramp 52
- DevExtTramp 53
- DevExtTramp 54
- DevExtTramp 55
- DevExtTramp 56
- DevExtTramp 57
- DevExtTramp 58
- DevExtTramp 59
- DevExtTramp 60
- DevExtTramp 61
- DevExtTramp 62
- DevExtTramp 63
- DevExtTramp 64
- DevExtTramp 65
- DevExtTramp 66
- DevExtTramp 67
- DevExtTramp 68
- DevExtTramp 69
- DevExtTramp 70
- DevExtTramp 71
- DevExtTramp 72
- DevExtTramp 73
- DevExtTramp 74
- DevExtTramp 75
- DevExtTramp 76
- DevExtTramp 77
- DevExtTramp 78
- DevExtTramp 79
- DevExtTramp 80
- DevExtTramp 81
- DevExtTramp 82
- DevExtTramp 83
- DevExtTramp 84
- DevExtTramp 85
- DevExtTramp 86
- DevExtTramp 87
- DevExtTramp 88
- DevExtTramp 89
- DevExtTramp 90
- DevExtTramp 91
- DevExtTramp 92
- DevExtTramp 93
- DevExtTramp 94
- DevExtTramp 95
- DevExtTramp 96
- DevExtTramp 97
- DevExtTramp 98
- DevExtTramp 99
- DevExtTramp 100
- DevExtTramp 101
- DevExtTramp 102
- DevExtTramp 103
- DevExtTramp 104
- DevExtTramp 105
- DevExtTramp 106
- DevExtTramp 107
- DevExtTramp 108
- DevExtTramp 109
- DevExtTramp 110
- DevExtTramp 111
- DevExtTramp 112
- DevExtTramp 113
- DevExtTramp 114
- DevExtTramp 115
- DevExtTramp 116
- DevExtTramp 117
- DevExtTramp 118
- DevExtTramp 119
- DevExtTramp 120
- DevExtTramp 121
- DevExtTramp 122
- DevExtTramp 123
- DevExtTramp 124
- DevExtTramp 125
- DevExtTramp 126
- DevExtTramp 127
- DevExtTramp 128
- DevExtTramp 129
- DevExtTramp 130
- DevExtTramp 131
- DevExtTramp 132
- DevExtTramp 133
- DevExtTramp 134
- DevExtTramp 135
- DevExtTramp 136
- DevExtTramp 137
- DevExtTramp 138
- DevExtTramp 139
- DevExtTramp 140
- DevExtTramp 141
- DevExtTramp 142
- DevExtTramp 143
- DevExtTramp 144
- DevExtTramp 145
- DevExtTramp 146
- DevExtTramp 147
- DevExtTramp 148
- DevExtTramp 149
- DevExtTramp 150
- DevExtTramp 151
- DevExtTramp 152
- DevExtTramp 153
- DevExtTramp 154
- DevExtTramp 155
- DevExtTramp 156
- DevExtTramp 157
- DevExtTramp 158
- DevExtTramp 159
- DevExtTramp 160
- DevExtTramp 161
- DevExtTramp 162
- DevExtTramp 163
- DevExtTramp 164
- DevExtTramp 165
- DevExtTramp 166
- DevExtTramp 167
- DevExtTramp 168
- DevExtTramp 169
- DevExtTramp 170
- DevExtTramp 171
- DevExtTramp 172
- DevExtTramp 173
- DevExtTramp 174
- DevExtTramp 175
- DevExtTramp 176
- DevExtTramp 177
- DevExtTramp 178
- DevExtTramp 179
- DevExtTramp 180
- DevExtTramp 181
- DevExtTramp 182
- DevExtTramp 183
- DevExtTramp 184
- DevExtTramp 185
- DevExtTramp 186
- DevExtTramp 187
- DevExtTramp 188
- DevExtTramp 189
- DevExtTramp 190
- DevExtTramp 191
- DevExtTramp 192
- DevExtTramp 193
- DevExtTramp 194
- DevExtTramp 195
- DevExtTramp 196
- DevExtTramp 197
- DevExtTramp 198
- DevExtTramp 199
- DevExtTramp 200
- DevExtTramp 201
- DevExtTramp 202
- DevExtTramp 203
- DevExtTramp 204
- DevExtTramp 205
- DevExtTramp 206
- DevExtTramp 207
- DevExtTramp 208
- DevExtTramp 209
- DevExtTramp 210
- DevExtTramp 211
- DevExtTramp 212
- DevExtTramp 213
- DevExtTramp 214
- DevExtTramp 215
- DevExtTramp 216
- DevExtTramp 217
- DevExtTramp 218
- DevExtTramp 219
- DevExtTramp 220
- DevExtTramp 221
- DevExtTramp 222
- DevExtTramp 223
- DevExtTramp 224
- DevExtTramp 225
- DevExtTramp 226
- DevExtTramp 227
- DevExtTramp 228
- DevExtTramp 229
- DevExtTramp 230
- DevExtTramp 231
- DevExtTramp 232
- DevExtTramp 233
- DevExtTramp 234
- DevExtTramp 235
- DevExtTramp 236
- DevExtTramp 237
- DevExtTramp 238
- DevExtTramp 239
- DevExtTramp 240
- DevExtTramp 241
- DevExtTramp 242
- DevExtTramp 243
- DevExtTramp 244
- DevExtTramp 245
- DevExtTramp 246
- DevExtTramp 247
- DevExtTramp 248
- DevExtTramp 249
assembler_type = sys.argv[3]
# Whether we are using gcc, clang, or msvc
compiler = sys.argv[4]
-# taken from CMAKE_SYSTEM_PROCESSOR - x86_64, aarch64, or x86
+# taken from CMAKE_SYSTEM_PROCESSOR - x86_64, aarch64|arm64, x86, aarch32|armhf
# Only used with GAS - MASM doesn't need this, as it has its own way to determine x86 vs x64
arch = sys.argv[5]
dest.write(".set X86_64, 1\n")
elif arch == "aarch64" or arch == "arm64":
dest.write(".set AARCH_64, 1\n")
+ elif arch == "aarch32" or arch == "armhf":
+ dest.write(".set AARCH_64, 0\n")
# Nothing to write in the x86 case
for d in defines: