|
55 | 55 |
|
56 | 56 | // Define the host architecture
|
57 | 57 | #if MICROPY_EMIT_X86
|
58 |
| -#define MPY_FEATURE_ARCH (MP_NATIVE_ARCH_X86) |
| 58 | + #define MPY_FEATURE_ARCH (MP_NATIVE_ARCH_X86) |
59 | 59 | #elif MICROPY_EMIT_X64
|
60 |
| -#define MPY_FEATURE_ARCH (MP_NATIVE_ARCH_X64) |
| 60 | + #define MPY_FEATURE_ARCH (MP_NATIVE_ARCH_X64) |
61 | 61 | #elif MICROPY_EMIT_THUMB
|
62 |
| -#define MPY_FEATURE_ARCH (MP_NATIVE_ARCH_ARMV7M) |
| 62 | + #if defined(__thumb2__) |
| 63 | + #if defined(__ARM_FP) && (__ARM_FP & 8) == 8 |
| 64 | + #define MPY_FEATURE_ARCH (MP_NATIVE_ARCH_ARMV7EMDP) |
| 65 | + #elif defined(__ARM_FP) && (__ARM_FP & 4) == 4 |
| 66 | + #define MPY_FEATURE_ARCH (MP_NATIVE_ARCH_ARMV7EMSP) |
| 67 | + #else |
| 68 | + #define MPY_FEATURE_ARCH (MP_NATIVE_ARCH_ARMV7EM) |
| 69 | + #endif |
| 70 | + #else |
| 71 | + #define MPY_FEATURE_ARCH (MP_NATIVE_ARCH_ARMV7M) |
| 72 | + #endif |
| 73 | + #define MPY_FEATURE_ARCH_TEST(x) (MP_NATIVE_ARCH_ARMV6M <= (x) && (x) <= MPY_FEATURE_ARCH) |
63 | 74 | #elif MICROPY_EMIT_ARM
|
64 |
| -#define MPY_FEATURE_ARCH (MP_NATIVE_ARCH_ARMV6) |
| 75 | + #define MPY_FEATURE_ARCH (MP_NATIVE_ARCH_ARMV6) |
65 | 76 | #elif MICROPY_EMIT_XTENSA
|
66 |
| -#define MPY_FEATURE_ARCH (MP_NATIVE_ARCH_XTENSA) |
| 77 | + #define MPY_FEATURE_ARCH (MP_NATIVE_ARCH_XTENSA) |
67 | 78 | #elif MICROPY_EMIT_XTENSAWIN
|
68 |
| -#define MPY_FEATURE_ARCH (MP_NATIVE_ARCH_XTENSAWIN) |
| 79 | + #define MPY_FEATURE_ARCH (MP_NATIVE_ARCH_XTENSAWIN) |
69 | 80 | #else
|
70 |
| -#define MPY_FEATURE_ARCH (MP_NATIVE_ARCH_NONE) |
| 81 | + #define MPY_FEATURE_ARCH (MP_NATIVE_ARCH_NONE) |
| 82 | +#endif |
| 83 | + |
| 84 | +#ifndef MPY_FEATURE_ARCH_TEST |
| 85 | +#define MPY_FEATURE_ARCH_TEST(x) ((x) == MPY_FEATURE_ARCH) |
71 | 86 | #endif
|
72 | 87 |
|
73 | 88 | // 16-bit little-endian integer with the second and third bytes of supported .mpy files
|
|
0 commit comments