Revision 56779034

b/tcg/arm/tcg-target.c
352 352

  
353 353
static inline void tcg_out_b_noaddr(TCGContext *s, int cond)
354 354
{
355
    /* We pay attention here to not modify the branch target by skipping
356
       the corresponding bytes. This ensure that caches and memory are
357
       kept coherent during retranslation. */
355 358
#ifdef HOST_WORDS_BIGENDIAN
356 359
    tcg_out8(s, (cond << 4) | 0x0a);
357 360
    s->code_ptr += 3;
b/tcg/ia64/tcg-target.c
871 871
{
872 872
    TCGLabel *l = &s->labels[label_index];
873 873

  
874
    /* We pay attention here to not modify the branch target by reading
875
       the existing value and using it again. This ensure that caches and
876
       memory are kept coherent during retranslation. */
874 877
    tcg_out_bundle(s, mmB,
875 878
                   tcg_opc_m48(TCG_REG_P0, OPC_NOP_M48, 0),
876 879
                   tcg_opc_m48(TCG_REG_P0, OPC_NOP_M48, 0),
b/tcg/mips/tcg-target.c
351 351
 */
352 352
static inline void tcg_out_opc_br(TCGContext *s, int opc, int rt, int rs)
353 353
{
354
    /* We need to keep the offset unchanged for retranslation */
354
    /* We pay attention here to not modify the branch target by reading
355
       the existing value and using it again. This ensure that caches and
356
       memory are kept coherent during retranslation. */
355 357
    uint16_t offset = (uint16_t)(*(uint32_t *) s->code_ptr);
356 358

  
357 359
    tcg_out_opc_imm(s, opc, rt, rs, offset);

Also available in: Unified diff