Revision 379f6698 tcg/arm/tcg-target.c

b/tcg/arm/tcg-target.c
990 990
# endif
991 991

  
992 992
    *label_ptr += ((void *) s->code_ptr - (void *) label_ptr - 8) >> 2;
993
#else
993
#else /* !CONFIG_SOFTMMU */
994
    if (GUEST_BASE) {
995
        uint32_t offset = GUEST_BASE;
996
        int i;
997
        int rot;
998

  
999
        while (offset) {
1000
            i = ctz32(offset) & ~1;
1001
            rot = ((32 - i) << 7) & 0xf00;
1002

  
1003
            tcg_out_dat_imm(s, COND_AL, ARITH_ADD, 8, addr_reg,
1004
                            ((offset >> i) & 0xff) | rot);
1005
            addr_reg = 8;
1006
            offset &= ~(0xff << i);
1007
        }
1008
    }
994 1009
    switch (opc) {
995 1010
    case 0:
996 1011
        tcg_out_ld8_12(s, COND_AL, data_reg, addr_reg, 0);
......
1200 1215
# endif
1201 1216

  
1202 1217
    *label_ptr += ((void *) s->code_ptr - (void *) label_ptr - 8) >> 2;
1203
#else
1218
#else /* !CONFIG_SOFTMMU */
1219
    if (GUEST_BASE) {
1220
        uint32_t offset = GUEST_BASE;
1221
        int i;
1222
        int rot;
1223

  
1224
        while (offset) {
1225
            i = ctz32(offset) & ~1;
1226
            rot = ((32 - i) << 7) & 0xf00;
1227

  
1228
            tcg_out_dat_imm(s, COND_AL, ARITH_ADD, 8, addr_reg,
1229
                            ((offset >> i) & 0xff) | rot);
1230
            addr_reg = 8;
1231
            offset &= ~(0xff << i);
1232
        }
1233
    }
1204 1234
    switch (opc) {
1205 1235
    case 0:
1206 1236
        tcg_out_st8_12(s, COND_AL, data_reg, addr_reg, 0);

Also available in: Unified diff