Skip to content

Commit dd53b12

Browse files
committed
py/emitinline: Move inline-asm align and data methods to compiler.
These are generic methods that don't depend on the architecture and so can be handled directly by the compiler.
1 parent a7fd786 commit dd53b12

4 files changed

Lines changed: 5 additions & 24 deletions

File tree

py/compile.c

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
#include "py/emit.h"
3535
#include "py/compile.h"
3636
#include "py/runtime.h"
37+
#include "py/asmbase.h"
3738

3839
#if MICROPY_ENABLE_COMPILER
3940

@@ -3224,7 +3225,8 @@ STATIC void compile_scope_inline_asm(compiler_t *comp, scope_t *scope, pass_kind
32243225
return;
32253226
}
32263227
if (pass > MP_PASS_SCOPE) {
3227-
EMIT_INLINE_ASM_ARG(align, MP_PARSE_NODE_LEAF_SMALL_INT(pn_arg[0]));
3228+
mp_asm_base_align((mp_asm_base_t*)comp->emit_inline_asm,
3229+
MP_PARSE_NODE_LEAF_SMALL_INT(pn_arg[0]));
32283230
}
32293231
} else if (op == MP_QSTR_data) {
32303232
if (!(n_args >= 2 && MP_PARSE_NODE_IS_SMALL_INT(pn_arg[0]))) {
@@ -3238,7 +3240,8 @@ STATIC void compile_scope_inline_asm(compiler_t *comp, scope_t *scope, pass_kind
32383240
compile_syntax_error(comp, nodes[i], "'data' requires integer arguments");
32393241
return;
32403242
}
3241-
EMIT_INLINE_ASM_ARG(data, bytesize, MP_PARSE_NODE_LEAF_SMALL_INT(pn_arg[j]));
3243+
mp_asm_base_data((mp_asm_base_t*)comp->emit_inline_asm,
3244+
bytesize, MP_PARSE_NODE_LEAF_SMALL_INT(pn_arg[j]));
32423245
}
32433246
}
32443247
} else {

py/emit.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -266,8 +266,6 @@ typedef struct _emit_inline_asm_method_table_t {
266266
void (*end_pass)(emit_inline_asm_t *emit, mp_uint_t type_sig);
267267
mp_uint_t (*count_params)(emit_inline_asm_t *emit, mp_uint_t n_params, mp_parse_node_t *pn_params);
268268
bool (*label)(emit_inline_asm_t *emit, mp_uint_t label_num, qstr label_id);
269-
void (*align)(emit_inline_asm_t *emit, mp_uint_t align);
270-
void (*data)(emit_inline_asm_t *emit, mp_uint_t bytesize, mp_uint_t val);
271269
void (*op)(emit_inline_asm_t *emit, qstr op, mp_uint_t n_args, mp_parse_node_t *pn_args);
272270
} emit_inline_asm_method_table_t;
273271

py/emitinlinethumb.c

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -130,14 +130,6 @@ STATIC bool emit_inline_thumb_label(emit_inline_asm_t *emit, mp_uint_t label_num
130130
return true;
131131
}
132132

133-
STATIC void emit_inline_thumb_align(emit_inline_asm_t *emit, mp_uint_t align) {
134-
mp_asm_base_align(&emit->as.base, align);
135-
}
136-
137-
STATIC void emit_inline_thumb_data(emit_inline_asm_t *emit, mp_uint_t bytesize, mp_uint_t val) {
138-
mp_asm_base_data(&emit->as.base, bytesize, val);
139-
}
140-
141133
typedef struct _reg_name_t { byte reg; byte name[3]; } reg_name_t;
142134
STATIC const reg_name_t reg_name_table[] = {
143135
{0, "r0\0"},
@@ -823,8 +815,6 @@ const emit_inline_asm_method_table_t emit_inline_thumb_method_table = {
823815
emit_inline_thumb_end_pass,
824816
emit_inline_thumb_count_params,
825817
emit_inline_thumb_label,
826-
emit_inline_thumb_align,
827-
emit_inline_thumb_data,
828818
emit_inline_thumb_op,
829819
};
830820

py/emitinlinextensa.c

Lines changed: 0 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -123,14 +123,6 @@ STATIC bool emit_inline_xtensa_label(emit_inline_asm_t *emit, mp_uint_t label_nu
123123
return true;
124124
}
125125

126-
STATIC void emit_inline_xtensa_align(emit_inline_asm_t *emit, mp_uint_t align) {
127-
mp_asm_base_align(&emit->as.base, align);
128-
}
129-
130-
STATIC void emit_inline_xtensa_data(emit_inline_asm_t *emit, mp_uint_t bytesize, mp_uint_t val) {
131-
mp_asm_base_data(&emit->as.base, bytesize, val);
132-
}
133-
134126
typedef struct _reg_name_t { byte reg; byte name[3]; } reg_name_t;
135127
STATIC const reg_name_t reg_name_table[] = {
136128
{0, "a0\0"},
@@ -355,8 +347,6 @@ const emit_inline_asm_method_table_t emit_inline_xtensa_method_table = {
355347
emit_inline_xtensa_end_pass,
356348
emit_inline_xtensa_count_params,
357349
emit_inline_xtensa_label,
358-
emit_inline_xtensa_align,
359-
emit_inline_xtensa_data,
360350
emit_inline_xtensa_op,
361351
};
362352

0 commit comments

Comments
 (0)