Mercurial > pub > dyncall > dyncall
comparison dyncall/dyncall_macros.h @ 302:d55f9d508074
- mips softfloat support for o32 callconv (calls and callbacks, little and big endian)
- cleanup of some mips files, removed unnecessary file, renamings..
- doc/manual cleanups, changelog entry
author | Tassilo Philipp |
---|---|
date | Mon, 21 May 2018 02:48:12 +0200 |
parents | f5577f6bf97a |
children | 451299d50c1a |
comparison
equal
deleted
inserted
replaced
301:74948b02cfa0 | 302:d55f9d508074 |
---|---|
187 # define DC__Arch_MIPS64 | 187 # define DC__Arch_MIPS64 |
188 #elif defined(_M_MRX000) || defined(__mips__) || defined(__mips) || defined(_mips) | 188 #elif defined(_M_MRX000) || defined(__mips__) || defined(__mips) || defined(_mips) |
189 # define DC__Arch_MIPS | 189 # define DC__Arch_MIPS |
190 #elif defined(__arm__) | 190 #elif defined(__arm__) |
191 # define DC__Arch_ARM | 191 # define DC__Arch_ARM |
192 #elif defined(__aarch64__) | 192 #elif defined(__aarch64__) || defined(__arm64) || defined(__arm64__) |
193 # define DC__Arch_ARM64 | 193 # define DC__Arch_ARM64 |
194 #elif defined(__sh__) | 194 #elif defined(__sh__) |
195 # define DC__Arch_SuperH | 195 # define DC__Arch_SuperH |
196 #elif defined(__sparc) || defined(__sparc__) | 196 #elif defined(__sparc) || defined(__sparc__) |
197 # if defined(__sparcv9) || defined(__sparc_v9__) || defined(__sparc64__) || defined(__arch64__) | 197 # if defined(__sparcv9) || defined(__sparc_v9__) || defined(__sparc64__) || defined(__arch64__) |
236 # define DC__ABI_ARM_OABI | 236 # define DC__ABI_ARM_OABI |
237 # endif | 237 # endif |
238 #endif /* ARM */ | 238 #endif /* ARM */ |
239 | 239 |
240 #if defined(DC__Arch_MIPS) || defined(DC__Arch_MIPS64) | 240 #if defined(DC__Arch_MIPS) || defined(DC__Arch_MIPS64) |
241 # if defined(_ABIO32) || defined(_MIPS_ARCH_MIPS1) || defined(_MIPS_ARCH_MIPS2) | 241 # if defined(_ABIO32) || defined(__mips_o32) || defined(_MIPS_ARCH_MIPS1) || defined(_MIPS_ARCH_MIPS2) |
242 # define DC__ABI_MIPS_O32 | 242 # define DC__ABI_MIPS_O32 |
243 # elif defined(_ABI64) || defined(_mips_n64) | 243 # elif defined(_ABI64) || defined(__mips_n64) |
244 # define DC__ABI_MIPS_N64 | 244 # define DC__ABI_MIPS_N64 |
245 # elif defined(_ABIN32) | 245 # elif defined(_ABIN32) |
246 # define DC__ABI_MIPS_N32 | 246 # define DC__ABI_MIPS_N32 |
247 # else | 247 # else |
248 # define DC__ABI_MIPS_EABI | 248 # define DC__ABI_MIPS_EABI |
249 # endif | 249 # endif |
250 /*@@@implement/support: __mips_hard_float*/ | 250 /* Set extra flag to know if FP hardware ABI, default to yes, if unsure */ |
251 # if (defined(__mips_hard_float) && (__mips_hard_float == 1)) || !defined(__mips_soft_float) || (__mips_soft_float != 1) | |
252 # define DC__ABI_HARDFLOAT /* @@@ make this general for all archs? */ | |
253 # else | |
254 # define DC__ABI_SOFTFLOAT | |
255 # endif | |
251 #endif /* MIPS */ | 256 #endif /* MIPS */ |
252 | 257 |
253 #if defined(DC__Arch_PPC64) | 258 #if defined(DC__Arch_PPC64) |
254 # if defined(_CALL_ELF) | 259 # if defined(_CALL_ELF) |
255 # define DC__ABI_PPC64_ELF_V _CALL_ELF | 260 # define DC__ABI_PPC64_ELF_V _CALL_ELF |
264 # define DC__Endian_LITTLE | 269 # define DC__Endian_LITTLE |
265 #elif defined(DC__Arch_Sparc) /* always purely big until v9 */ | 270 #elif defined(DC__Arch_Sparc) /* always purely big until v9 */ |
266 # define DC__Endian_BIG | 271 # define DC__Endian_BIG |
267 #else /* all others are bi-endian */ | 272 #else /* all others are bi-endian */ |
268 /* @@@check flags used on following bi-endianness archs: | 273 /* @@@check flags used on following bi-endianness archs: |
269 DC__Arch_ARM | |
270 DC__Arch_ARM64 | |
271 DC__Arch_Itanium | 274 DC__Arch_Itanium |
272 DC__Arch_PPC32 | 275 DC__Arch_PPC32 |
273 DC__Arch_PPC64 | 276 DC__Arch_PPC64 |
274 DC__Arch_SuperH | 277 DC__Arch_SuperH |
275 */ | 278 */ |
276 # if (defined(DC__Arch_PPC64) && (DC__ABI_PPC64_ELF_V == 1)) || defined(_BIG_ENDIAN) || defined(MIPSEB) || defined(_MIPSEB) || defined(__MIPSEB) || defined(__MIPSEB__) | 279 # if (defined(DC__Arch_PPC64) && (DC__ABI_PPC64_ELF_V == 1)) || defined(_BIG_ENDIAN) || defined(__BIG_ENDIAN__) || defined(MIPSEB) || defined(_MIPSEB) || defined(__MIPSEB) || defined(__MIPSEB__) || defined(__ARMEB__) || defined(__AARCH64EB__) |
277 # define DC__Endian_BIG | 280 # define DC__Endian_BIG |
278 # elif (defined(DC__Arch_PPC64) && (DC__ABI_PPC64_ELF_V == 2)) || defined(_LITTLE_ENDIAN) || defined(MIPSEL) || defined(_MIPSEL) || defined(__MIPSEL) || defined(__MIPSEL__) | 281 # elif (defined(DC__Arch_PPC64) && (DC__ABI_PPC64_ELF_V == 2)) || defined(_LITTLE_ENDIAN) || defined(__LITTLE_ENDIAN__) || defined(MIPSEL) || defined(_MIPSEL) || defined(__MIPSEL) || defined(__MIPSEL__) || defined(__ARMEL__) || defined(__AARCH64EL__) |
279 # define DC__Endian_LITTLE | 282 # define DC__Endian_LITTLE |
280 # elif defined(DC__Arch_Sparc64) && !defined(__BYTE_ORDER__) /* Sparc64 default is big-endian, except if explicitly defined */ | 283 # elif defined(DC__Arch_Sparc64) && !defined(__BYTE_ORDER__) /* Sparc64 default is big-endian, except if explicitly defined */ |
281 # define DC__Endian_BIG | 284 # define DC__Endian_BIG |
282 # elif defined(__BYTE_ORDER__) /* explicitly set */ | 285 # elif defined(__BYTE_ORDER__) /* explicitly set */ |
283 # if defined(__ORDER_BIG_ENDIAN__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) | 286 # if defined(__ORDER_BIG_ENDIAN__) && (__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__) |