Revision 2633a2d0
b/tcg/arm/tcg-target.c | ||
---|---|---|
1048 | 1048 |
# if TARGET_LONG_BITS == 32 |
1049 | 1049 |
tcg_out_dat_imm(s, COND_AL, ARITH_MOV, TCG_REG_R1, 0, mem_index); |
1050 | 1050 |
# else |
1051 |
if (addr_reg2 != TCG_REG_R1) { |
|
1052 |
tcg_out_dat_reg(s, COND_AL, ARITH_MOV, |
|
1053 |
TCG_REG_R1, 0, addr_reg2, SHIFT_IMM_LSL(0)); |
|
1054 |
} |
|
1051 |
tcg_out_dat_reg(s, COND_AL, ARITH_MOV, |
|
1052 |
TCG_REG_R1, 0, addr_reg2, SHIFT_IMM_LSL(0)); |
|
1055 | 1053 |
tcg_out_dat_imm(s, COND_AL, ARITH_MOV, TCG_REG_R2, 0, mem_index); |
1056 | 1054 |
# endif |
1057 | 1055 |
tcg_out_bl(s, COND_AL, (tcg_target_long) qemu_ld_helpers[s_bits] - |
... | ... | |
1257 | 1255 |
tcg_out_b(s, COND_EQ, 8); |
1258 | 1256 |
|
1259 | 1257 |
/* TODO: move this code to where the constants pool will be */ |
1260 |
if (addr_reg != TCG_REG_R0) { |
|
1261 |
tcg_out_dat_reg(s, COND_AL, ARITH_MOV, |
|
1262 |
TCG_REG_R0, 0, addr_reg, SHIFT_IMM_LSL(0)); |
|
1263 |
} |
|
1258 |
tcg_out_dat_reg(s, COND_AL, ARITH_MOV, |
|
1259 |
TCG_REG_R0, 0, addr_reg, SHIFT_IMM_LSL(0)); |
|
1264 | 1260 |
# if TARGET_LONG_BITS == 32 |
1265 | 1261 |
switch (opc) { |
1266 | 1262 |
case 0: |
... | ... | |
1272 | 1268 |
tcg_out_dat_imm(s, COND_AL, ARITH_MOV, TCG_REG_R2, 0, mem_index); |
1273 | 1269 |
break; |
1274 | 1270 |
case 2: |
1275 |
if (data_reg != TCG_REG_R1) { |
|
1276 |
tcg_out_dat_reg(s, COND_AL, ARITH_MOV, |
|
1277 |
TCG_REG_R1, 0, data_reg, SHIFT_IMM_LSL(0)); |
|
1278 |
} |
|
1271 |
tcg_out_dat_reg(s, COND_AL, ARITH_MOV, |
|
1272 |
TCG_REG_R1, 0, data_reg, SHIFT_IMM_LSL(0)); |
|
1279 | 1273 |
tcg_out_dat_imm(s, COND_AL, ARITH_MOV, TCG_REG_R2, 0, mem_index); |
1280 | 1274 |
break; |
1281 | 1275 |
case 3: |
1282 |
if (data_reg != TCG_REG_R1) { |
|
1283 |
tcg_out_dat_reg(s, COND_AL, ARITH_MOV, |
|
1284 |
TCG_REG_R1, 0, data_reg, SHIFT_IMM_LSL(0)); |
|
1285 |
} |
|
1276 |
tcg_out_dat_reg(s, COND_AL, ARITH_MOV, |
|
1277 |
TCG_REG_R1, 0, data_reg, SHIFT_IMM_LSL(0)); |
|
1286 | 1278 |
if (data_reg2 != TCG_REG_R2) { |
1287 | 1279 |
tcg_out_dat_reg(s, COND_AL, ARITH_MOV, |
1288 | 1280 |
TCG_REG_R2, 0, data_reg2, SHIFT_IMM_LSL(0)); |
... | ... | |
1291 | 1283 |
break; |
1292 | 1284 |
} |
1293 | 1285 |
# else |
1294 |
if (addr_reg2 != TCG_REG_R1) { |
|
1295 |
tcg_out_dat_reg(s, COND_AL, ARITH_MOV, |
|
1296 |
TCG_REG_R1, 0, addr_reg2, SHIFT_IMM_LSL(0)); |
|
1297 |
} |
|
1286 |
tcg_out_dat_reg(s, COND_AL, ARITH_MOV, |
|
1287 |
TCG_REG_R1, 0, addr_reg2, SHIFT_IMM_LSL(0)); |
|
1298 | 1288 |
switch (opc) { |
1299 | 1289 |
case 0: |
1300 | 1290 |
tcg_out_ext8u(s, COND_AL, TCG_REG_R2, data_reg); |
Also available in: Unified diff