From dc83382903675c017f449285bf42a51d0e936e4e Mon Sep 17 00:00:00 2001 From: Damien Date: Sun, 6 Oct 2013 01:01:01 +0100 Subject: Make runtime able to call inline asm with 1 argument. --- py/runtime.c | 11 +++++++++++ 1 file changed, 11 insertions(+) (limited to 'py/runtime.c') diff --git a/py/runtime.c b/py/runtime.c index 4ac680562c..b133b31e06 100644 --- a/py/runtime.c +++ b/py/runtime.c @@ -772,6 +772,17 @@ py_obj_t rt_call_function_1(py_obj_t fun, py_obj_t arg) { assert(o->u_fun_bc.n_args == 1); DEBUG_OP_printf("calling byte code %p with 1 arg\n", o->u_fun_bc.code); return py_execute_byte_code(o->u_fun_bc.code, o->u_fun_bc.len, &arg, 1); + } else if (IS_O(fun, O_FUN_ASM)) { + py_obj_base_t *o = fun; + assert(o->u_fun_asm.n_args == 1); + DEBUG_OP_printf("calling inline asm %p with 1 arg\n", o->u_fun_asm.fun); + machine_int_t arg_val; + if (IS_SMALL_INT(arg)) { + arg_val = FROM_SMALL_INT(arg); + } else { + arg_val = arg; + } + return ((py_fun_1_t)o->u_fun_asm.fun)(arg_val); } else if (IS_O(fun, O_BOUND_METH)) { py_obj_base_t *o = fun; return rt_call_function_2(o->u_bound_meth.meth, o->u_bound_meth.self, arg); -- cgit v1.2.3