Am 29.04.2014 17:20, schrieb Richard Henderson:
> On 04/28/2014 10:57 PM, Stefan Weil wrote:
>> -static tcg_target_ulong tci_reg[TCG_TARGET_NB_REGS];
>> +static inline void save_tb_ptr(void *tb_ptr)
>> +{
>> +#ifdef CONFIG_SOFTMMU
>> +    tci_tb_ptr = (uintptr_t)tb_ptr;
>> +#endif
>> +}
>>  
> 
> Wouldn't it be better to save this always?
> 
> I'm a bit confused about how the SIGSEGV path works with TCI (not at all?), 
> but
> I have trouble believing that it ever could work without having this value
> available.
> 
> 
> r~
> 

Hi,

I'm still investigating whether it's necessary to set tci_tb_ptr to 0
(as you suggested). Up to now, the TCI code did never invalidate
tci_tb_ptr, but there was no obvious indication of problems caused by
this behaviour.

The new function save_tb_ptr() is only used for the opcodes which call
helper_{ld,st}*_mmu. Those calls are only compiled for CONFIG_SOFTMMU,
so there is no need to save tci_tb_ptr if that macro is undefined. The
user mode emulation (which does not set CONFIG_SOFTMMU) is faster like that.

For the op_call opcode, tci_tb_ptr is set unconditionally.

Regards
Stefan


Reply via email to