Instead of emitnative.c having configuration code for each supported architecture, and then compiling this file multiple times with different macros defined, this patch adds a file per architecture with the necessary code to configure the native emitter. These files then #include the emitnative.c file. This simplifies emitnative.c (which is already very large), and simplifies the build system because emitnative.c no longer needs special handling for compilation and qstr extraction.crypto-aes
parent
5ad27d4b8b
commit
ef12a4bd05
@ -0,0 +1,15 @@
|
||||
// ARM specific stuff
|
||||
|
||||
#include "py/mpconfig.h"
|
||||
|
||||
#if MICROPY_EMIT_ARM
|
||||
|
||||
// This is defined so that the assembler exports generic assembler API macros
|
||||
#define GENERIC_ASM_API (1)
|
||||
#include "py/asmarm.h"
|
||||
|
||||
#define N_ARM (1)
|
||||
#define EXPORT_FUN(name) emit_native_arm_##name
|
||||
#include "py/emitnative.c"
|
||||
|
||||
#endif
|
@ -0,0 +1,15 @@
|
||||
// thumb specific stuff
|
||||
|
||||
#include "py/mpconfig.h"
|
||||
|
||||
#if MICROPY_EMIT_THUMB
|
||||
|
||||
// this is defined so that the assembler exports generic assembler API macros
|
||||
#define GENERIC_ASM_API (1)
|
||||
#include "py/asmthumb.h"
|
||||
|
||||
#define N_THUMB (1)
|
||||
#define EXPORT_FUN(name) emit_native_thumb_##name
|
||||
#include "py/emitnative.c"
|
||||
|
||||
#endif
|
@ -0,0 +1,15 @@
|
||||
// x64 specific stuff
|
||||
|
||||
#include "py/mpconfig.h"
|
||||
|
||||
#if MICROPY_EMIT_X64
|
||||
|
||||
// This is defined so that the assembler exports generic assembler API macros
|
||||
#define GENERIC_ASM_API (1)
|
||||
#include "py/asmx64.h"
|
||||
|
||||
#define N_X64 (1)
|
||||
#define EXPORT_FUN(name) emit_native_x64_##name
|
||||
#include "py/emitnative.c"
|
||||
|
||||
#endif
|
@ -0,0 +1,67 @@
|
||||
// x86 specific stuff
|
||||
|
||||
#include "py/mpconfig.h"
|
||||
|
||||
#if MICROPY_EMIT_X86
|
||||
|
||||
// This is defined so that the assembler exports generic assembler API macros
|
||||
#define GENERIC_ASM_API (1)
|
||||
#include "py/asmx86.h"
|
||||
|
||||
// x86 needs a table to know how many args a given function has
|
||||
STATIC byte mp_f_n_args[MP_F_NUMBER_OF] = {
|
||||
[MP_F_CONVERT_OBJ_TO_NATIVE] = 2,
|
||||
[MP_F_CONVERT_NATIVE_TO_OBJ] = 2,
|
||||
[MP_F_LOAD_NAME] = 1,
|
||||
[MP_F_LOAD_GLOBAL] = 1,
|
||||
[MP_F_LOAD_BUILD_CLASS] = 0,
|
||||
[MP_F_LOAD_ATTR] = 2,
|
||||
[MP_F_LOAD_METHOD] = 3,
|
||||
[MP_F_LOAD_SUPER_METHOD] = 2,
|
||||
[MP_F_STORE_NAME] = 2,
|
||||
[MP_F_STORE_GLOBAL] = 2,
|
||||
[MP_F_STORE_ATTR] = 3,
|
||||
[MP_F_OBJ_SUBSCR] = 3,
|
||||
[MP_F_OBJ_IS_TRUE] = 1,
|
||||
[MP_F_UNARY_OP] = 2,
|
||||
[MP_F_BINARY_OP] = 3,
|
||||
[MP_F_BUILD_TUPLE] = 2,
|
||||
[MP_F_BUILD_LIST] = 2,
|
||||
[MP_F_LIST_APPEND] = 2,
|
||||
[MP_F_BUILD_MAP] = 1,
|
||||
[MP_F_STORE_MAP] = 3,
|
||||
#if MICROPY_PY_BUILTINS_SET
|
||||
[MP_F_BUILD_SET] = 2,
|
||||
[MP_F_STORE_SET] = 2,
|
||||
#endif
|
||||
[MP_F_MAKE_FUNCTION_FROM_RAW_CODE] = 3,
|
||||
[MP_F_NATIVE_CALL_FUNCTION_N_KW] = 3,
|
||||
[MP_F_CALL_METHOD_N_KW] = 3,
|
||||
[MP_F_CALL_METHOD_N_KW_VAR] = 3,
|
||||
[MP_F_NATIVE_GETITER] = 2,
|
||||
[MP_F_NATIVE_ITERNEXT] = 1,
|
||||
[MP_F_NLR_PUSH] = 1,
|
||||
[MP_F_NLR_POP] = 0,
|
||||
[MP_F_NATIVE_RAISE] = 1,
|
||||
[MP_F_IMPORT_NAME] = 3,
|
||||
[MP_F_IMPORT_FROM] = 2,
|
||||
[MP_F_IMPORT_ALL] = 1,
|
||||
#if MICROPY_PY_BUILTINS_SLICE
|
||||
[MP_F_NEW_SLICE] = 3,
|
||||
#endif
|
||||
[MP_F_UNPACK_SEQUENCE] = 3,
|
||||
[MP_F_UNPACK_EX] = 3,
|
||||
[MP_F_DELETE_NAME] = 1,
|
||||
[MP_F_DELETE_GLOBAL] = 1,
|
||||
[MP_F_NEW_CELL] = 1,
|
||||
[MP_F_MAKE_CLOSURE_FROM_RAW_CODE] = 3,
|
||||
[MP_F_SETUP_CODE_STATE] = 5,
|
||||
[MP_F_SMALL_INT_FLOOR_DIVIDE] = 2,
|
||||
[MP_F_SMALL_INT_MODULO] = 2,
|
||||
};
|
||||
|
||||
#define N_X86 (1)
|
||||
#define EXPORT_FUN(name) emit_native_x86_##name
|
||||
#include "py/emitnative.c"
|
||||
|
||||
#endif
|
@ -0,0 +1,15 @@
|
||||
// Xtensa specific stuff
|
||||
|
||||
#include "py/mpconfig.h"
|
||||
|
||||
#if MICROPY_EMIT_XTENSA
|
||||
|
||||
// this is defined so that the assembler exports generic assembler API macros
|
||||
#define GENERIC_ASM_API (1)
|
||||
#include "py/asmxtensa.h"
|
||||
|
||||
#define N_XTENSA (1)
|
||||
#define EXPORT_FUN(name) emit_native_xtensa_##name
|
||||
#include "py/emitnative.c"
|
||||
|
||||
#endif
|
Loading…
Reference in new issue