comparison dyncall/dyncall_callvm_arm32_arm.c @ 533:71c884e610f0

- integration of patches from Raphael Luba, Thekla, Inc.: * integration of aggregate-by-value (struct, union) support patch for x64 (win and sysv) * windows/x64 asm additions to specify how stack unwinds (help for debuggers, exception handling, etc.) * see Changelog for details - new calling convention modes for thiscalls (platform agnostic, was specific before) * new signature character for platform agnostic thiscalls ('*' / DC_SIGCHAR_CC_THISCALL) - dcCallF(), dcVCallF(), dcArgF() and dcVArgF(): * added support for aggregates-by-value (wasn't part of patch) * change that those functions don't implicitly call dcReset() anymore, which was unflexible (breaking change) - added macros to feature test implementation for aggregate-by-value and syscall support - changed libdyncall_s.lib and libdyncallback_s.lib order in callback test makefiles, as some toolchains are picky about order - doc: * man page updates to describe aggregate interface * manual overview changes to highlight platforms with aggregate-by-value support - test/plain: replaced tests w/ old/stale sctruct interface with new aggregate one
author Tassilo Philipp
date Thu, 21 Apr 2022 13:35:47 +0200
parents ddfb9577a00e
children
comparison
equal deleted inserted replaced
532:d4bf63ab9164 533:71c884e610f0
170 , &dc_callvm_argLong_arm32_arm 170 , &dc_callvm_argLong_arm32_arm
171 , &dc_callvm_argLongLong_arm32_arm 171 , &dc_callvm_argLongLong_arm32_arm
172 , &dc_callvm_argFloat_arm32_arm 172 , &dc_callvm_argFloat_arm32_arm
173 , &dc_callvm_argDouble_arm32_arm 173 , &dc_callvm_argDouble_arm32_arm
174 , &dc_callvm_argPointer_arm32_arm 174 , &dc_callvm_argPointer_arm32_arm
175 , NULL /* argStruct */ 175 , NULL /* argAggr */
176 , (DCvoidvmfunc*) &dc_callvm_call_arm32_arm 176 , (DCvoidvmfunc*) &dc_callvm_call_arm32_arm
177 , (DCboolvmfunc*) &dc_callvm_call_arm32_arm 177 , (DCboolvmfunc*) &dc_callvm_call_arm32_arm
178 , (DCcharvmfunc*) &dc_callvm_call_arm32_arm 178 , (DCcharvmfunc*) &dc_callvm_call_arm32_arm
179 , (DCshortvmfunc*) &dc_callvm_call_arm32_arm 179 , (DCshortvmfunc*) &dc_callvm_call_arm32_arm
180 , (DCintvmfunc*) &dc_callvm_call_arm32_arm 180 , (DCintvmfunc*) &dc_callvm_call_arm32_arm
181 , (DClongvmfunc*) &dc_callvm_call_arm32_arm 181 , (DClongvmfunc*) &dc_callvm_call_arm32_arm
182 , (DClonglongvmfunc*) &dc_callvm_call_arm32_arm 182 , (DClonglongvmfunc*) &dc_callvm_call_arm32_arm
183 , (DCfloatvmfunc*) &dc_callvm_call_arm32_arm 183 , (DCfloatvmfunc*) &dc_callvm_call_arm32_arm
184 , (DCdoublevmfunc*) &dc_callvm_call_arm32_arm 184 , (DCdoublevmfunc*) &dc_callvm_call_arm32_arm
185 , (DCpointervmfunc*) &dc_callvm_call_arm32_arm 185 , (DCpointervmfunc*) &dc_callvm_call_arm32_arm
186 , NULL /* callStruct */ 186 , NULL /* callAggr */
187 , NULL /* beginAggr */
187 }; 188 };
188 189
189 DCCallVM_vt gVT_arm32_arm_eabi = 190 DCCallVM_vt gVT_arm32_arm_eabi =
190 { 191 {
191 &dc_callvm_free_arm32_arm 192 &dc_callvm_free_arm32_arm
198 , &dc_callvm_argLong_arm32_arm 199 , &dc_callvm_argLong_arm32_arm
199 , &dc_callvm_argLongLong_arm32_arm_eabi 200 , &dc_callvm_argLongLong_arm32_arm_eabi
200 , &dc_callvm_argFloat_arm32_arm 201 , &dc_callvm_argFloat_arm32_arm
201 , &dc_callvm_argDouble_arm32_arm_eabi 202 , &dc_callvm_argDouble_arm32_arm_eabi
202 , &dc_callvm_argPointer_arm32_arm 203 , &dc_callvm_argPointer_arm32_arm
203 , NULL /* argStruct */ 204 , NULL /* argAggr */
204 , (DCvoidvmfunc*) &dc_callvm_call_arm32_arm 205 , (DCvoidvmfunc*) &dc_callvm_call_arm32_arm
205 , (DCboolvmfunc*) &dc_callvm_call_arm32_arm 206 , (DCboolvmfunc*) &dc_callvm_call_arm32_arm
206 , (DCcharvmfunc*) &dc_callvm_call_arm32_arm 207 , (DCcharvmfunc*) &dc_callvm_call_arm32_arm
207 , (DCshortvmfunc*) &dc_callvm_call_arm32_arm 208 , (DCshortvmfunc*) &dc_callvm_call_arm32_arm
208 , (DCintvmfunc*) &dc_callvm_call_arm32_arm 209 , (DCintvmfunc*) &dc_callvm_call_arm32_arm
209 , (DClongvmfunc*) &dc_callvm_call_arm32_arm 210 , (DClongvmfunc*) &dc_callvm_call_arm32_arm
210 , (DClonglongvmfunc*) &dc_callvm_call_arm32_arm 211 , (DClonglongvmfunc*) &dc_callvm_call_arm32_arm
211 , (DCfloatvmfunc*) &dc_callvm_call_arm32_arm 212 , (DCfloatvmfunc*) &dc_callvm_call_arm32_arm
212 , (DCdoublevmfunc*) &dc_callvm_call_arm32_arm 213 , (DCdoublevmfunc*) &dc_callvm_call_arm32_arm
213 , (DCpointervmfunc*) &dc_callvm_call_arm32_arm 214 , (DCpointervmfunc*) &dc_callvm_call_arm32_arm
214 , NULL /* callStruct */ 215 , NULL /* callAggr */
216 , NULL /* beginAggr */
215 }; 217 };
216 218
217 static void dc_callvm_mode_arm32_arm(DCCallVM* in_self, DCint mode) 219 static void dc_callvm_mode_arm32_arm(DCCallVM* in_self, DCint mode)
218 { 220 {
219 DCCallVM_arm32_arm* self = (DCCallVM_arm32_arm*)in_self; 221 DCCallVM_arm32_arm* self = (DCCallVM_arm32_arm*)in_self;