summaryrefslogtreecommitdiff
path: root/py/asmthumb.c
diff options
context:
space:
mode:
authorDamien George <damien.p.george@gmail.com>2018-10-13 14:53:35 +1100
committerDamien George <damien.p.george@gmail.com>2018-10-13 15:16:33 +1100
commit006671056da6627073f041b4d451cab9db031ff0 (patch)
treeed1385d037fab8ed3b32869f0a9bb9ebd88b79f6 /py/asmthumb.c
parent355eb8eafb1a0b0e096cd452d1107ab45bbf72c4 (diff)
py/emitnative: Load native fun table ptr from const table for all archs.
All architectures now have a dedicated register to hold the pointer to the native function table mp_fun_table, and so they all need to load this register at the start of the native function. This commit makes the loading of this register uniform across architectures by passing the pointer in the constant table for the native function, and then loading the register from the constant table. Doing it this way means that the pointer is not stored in the assembly code, helping to make the code more portable.
Diffstat (limited to 'py/asmthumb.c')
-rw-r--r--py/asmthumb.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/py/asmthumb.c b/py/asmthumb.c
index 54b539a8d..1ef09c78e 100644
--- a/py/asmthumb.c
+++ b/py/asmthumb.c
@@ -383,7 +383,7 @@ void asm_thumb_bcc_label(asm_thumb_t *as, int cond, uint label) {
void asm_thumb_bl_ind(asm_thumb_t *as, void *fun_ptr, uint fun_id, uint reg_temp) {
// Load ptr to function from table, indexed by fun_id, then call it
- asm_thumb_ldr_reg_reg_i12_optimised(as, reg_temp, ASM_THUMB_REG_R7, fun_id);
+ asm_thumb_ldr_reg_reg_i12_optimised(as, reg_temp, ASM_THUMB_REG_FUN_TABLE, fun_id);
asm_thumb_op16(as, OP_BLX(reg_temp));
}