mirror of
https://github.com/micropython/micropython.git
synced 2026-01-05 03:30:14 +01:00
py/emitinlinerv32: Add inline assembler support for RV32.
This commit adds support for writing inline assembler functions when targeting a RV32IMC processor. Given that this takes up a bit of rodata space due to its large instruction decoding table and its extensive error messages, it is enabled by default only on offline targets such as mpy-cross and the qemu port. Signed-off-by: Alessandro Gatti <a.gatti@frob.it>
This commit is contained in:
committed by
Damien George
parent
3044233ea3
commit
268acb714d
@@ -147,6 +147,7 @@ static const emit_inline_asm_method_table_t *emit_asm_table[] = {
|
||||
&emit_inline_thumb_method_table,
|
||||
&emit_inline_xtensa_method_table,
|
||||
NULL,
|
||||
&emit_inline_rv32_method_table,
|
||||
};
|
||||
|
||||
#elif MICROPY_EMIT_INLINE_ASM
|
||||
@@ -157,6 +158,9 @@ static const emit_inline_asm_method_table_t *emit_asm_table[] = {
|
||||
#elif MICROPY_EMIT_INLINE_XTENSA
|
||||
#define ASM_DECORATOR_QSTR MP_QSTR_asm_xtensa
|
||||
#define ASM_EMITTER(f) emit_inline_xtensa_##f
|
||||
#elif MICROPY_EMIT_INLINE_RV32
|
||||
#define ASM_DECORATOR_QSTR MP_QSTR_asm_rv32
|
||||
#define ASM_EMITTER(f) emit_inline_rv32_##f
|
||||
#else
|
||||
#error "unknown asm emitter"
|
||||
#endif
|
||||
@@ -855,6 +859,8 @@ static bool compile_built_in_decorator(compiler_t *comp, size_t name_len, mp_par
|
||||
*emit_options = MP_EMIT_OPT_ASM;
|
||||
} else if (attr == MP_QSTR_asm_xtensa) {
|
||||
*emit_options = MP_EMIT_OPT_ASM;
|
||||
} else if (attr == MP_QSTR_asm_rv32) {
|
||||
*emit_options = MP_EMIT_OPT_ASM;
|
||||
#else
|
||||
} else if (attr == ASM_DECORATOR_QSTR) {
|
||||
*emit_options = MP_EMIT_OPT_ASM;
|
||||
|
||||
Reference in New Issue
Block a user