mirror of
https://github.com/mii443/qemu.git
synced 2025-12-16 17:18:49 +00:00
tcg: Clean up from 'next_tb'
The value returned from tcg_qemu_tb_exec() is the value passed to the corresponding tcg_gen_exit_tb() at translation time of the last TB attempted to execute. It is a little confusing to store it in a variable named 'next_tb'. In fact, it is a combination of 4-byte aligned pointer and additional information in its two least significant bits. Break it down right away into two variables named 'last_tb' and 'tb_exit' which are a pointer to the last TB attempted to execute and the TB exit reason, correspondingly. This simplifies the code and improves its readability. Correct a misleading documentation comment for tcg_qemu_tb_exec() and fix logging in cpu_tb_exec(). Also rename a misleading 'next_tb' in another couple of places. Signed-off-by: Sergey Fedorov <serge.fdrv@gmail.com> Signed-off-by: Sergey Fedorov <sergey.fedorov@linaro.org> Signed-off-by: Richard Henderson <rth@twiddle.net>
This commit is contained in:
committed by
Richard Henderson
parent
7687bf52e5
commit
819af24b9c
6
tci.c
6
tci.c
@@ -467,7 +467,7 @@ uintptr_t tcg_qemu_tb_exec(CPUArchState *env, uint8_t *tb_ptr)
|
||||
{
|
||||
long tcg_temps[CPU_TEMP_BUF_NLONGS];
|
||||
uintptr_t sp_value = (uintptr_t)(tcg_temps + CPU_TEMP_BUF_NLONGS);
|
||||
uintptr_t next_tb = 0;
|
||||
uintptr_t ret = 0;
|
||||
|
||||
tci_reg[TCG_AREG0] = (tcg_target_ulong)env;
|
||||
tci_reg[TCG_REG_CALL_STACK] = sp_value;
|
||||
@@ -1085,7 +1085,7 @@ uintptr_t tcg_qemu_tb_exec(CPUArchState *env, uint8_t *tb_ptr)
|
||||
/* QEMU specific operations. */
|
||||
|
||||
case INDEX_op_exit_tb:
|
||||
next_tb = *(uint64_t *)tb_ptr;
|
||||
ret = *(uint64_t *)tb_ptr;
|
||||
goto exit;
|
||||
break;
|
||||
case INDEX_op_goto_tb:
|
||||
@@ -1243,5 +1243,5 @@ uintptr_t tcg_qemu_tb_exec(CPUArchState *env, uint8_t *tb_ptr)
|
||||
tci_assert(tb_ptr == old_code_ptr + op_size);
|
||||
}
|
||||
exit:
|
||||
return next_tb;
|
||||
return ret;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user