On 04/25/2017 09:53 AM, Emilio G. Cota wrote:
+void tcg_gen_goto_ptr(TCGv_ptr ptr)
+{
+    if (TCG_TARGET_HAS_goto_ptr) {
+        tcg_gen_op1i(INDEX_op_goto_ptr, GET_TCGV_PTR(ptr));
+    } else {
+        tcg_gen_exit_tb(0);
+    }
+}
+

I think this function should look more like

void tcg_gen_lookup_and_goto_ptr(TCGv target_addr)
{
    if (TCG_TARGET_HAS_goto_ptr) {
        TCGv_ptr ptr = tcg_temp_new_ptr();
        gen_helper_lookup_tb_ptr(ptr, tcg_ctx.tcg_env, addr);
        tcg_gen_op1i(INDEX_op_goto_ptr, GET_TCGV_PTR(ptr));
        tcg_temp_free_ptr(ptr);
    } else {
        tcg_gen_exit_tb(0);
    }
}

since there's not really any point in all targets being exposed to the implementation detail of lookup_tb_ptr.


r~

Reply via email to