Revision 3b46e624 target-arm/translate.c
b/target-arm/translate.c | ||
---|---|---|
116 | 116 |
1, /* bic */ |
117 | 117 |
1, /* mvn */ |
118 | 118 |
}; |
119 |
|
|
119 |
|
|
120 | 120 |
static GenOpFunc1 *gen_shift_T1_im[4] = { |
121 | 121 |
gen_op_shll_T1_im, |
122 | 122 |
gen_op_shrl_T1_im, |
... | ... | |
390 | 390 |
int extra) |
391 | 391 |
{ |
392 | 392 |
int val, rm; |
393 |
|
|
393 |
|
|
394 | 394 |
if (insn & (1 << 22)) { |
395 | 395 |
/* immediate */ |
396 | 396 |
val = (insn & 0xf) | ((insn >> 4) & 0xf0); |
... | ... | |
1784 | 1784 |
delta_m = 0; |
1785 | 1785 |
delta_d = 0; |
1786 | 1786 |
bank_mask = 0; |
1787 |
|
|
1787 |
|
|
1788 | 1788 |
if (veclen > 0) { |
1789 | 1789 |
if (dp) |
1790 | 1790 |
bank_mask = 0xc; |
... | ... | |
2205 | 2205 |
static void disas_arm_insn(CPUState * env, DisasContext *s) |
2206 | 2206 |
{ |
2207 | 2207 |
unsigned int cond, insn, val, op1, i, shift, rm, rs, rn, rd, sh; |
2208 |
|
|
2208 |
|
|
2209 | 2209 |
insn = ldl_code(s->pc); |
2210 | 2210 |
s->pc += 4; |
2211 |
|
|
2211 |
|
|
2212 | 2212 |
cond = insn >> 28; |
2213 | 2213 |
if (cond == 0xf){ |
2214 | 2214 |
/* Unconditional instructions. */ |
... | ... | |
2403 | 2403 |
(insn & 0x00000090) != 0x90) || |
2404 | 2404 |
((insn & 0x0e000000) == (1 << 25))) { |
2405 | 2405 |
int set_cc, logic_cc, shiftop; |
2406 |
|
|
2406 |
|
|
2407 | 2407 |
op1 = (insn >> 21) & 0xf; |
2408 | 2408 |
set_cc = (insn >> 20) & 1; |
2409 | 2409 |
logic_cc = table_logic_cc[op1] & set_cc; |
... | ... | |
2626 | 2626 |
} else { |
2627 | 2627 |
/* SWP instruction */ |
2628 | 2628 |
rm = (insn) & 0xf; |
2629 |
|
|
2629 |
|
|
2630 | 2630 |
gen_movl_T0_reg(s, rm); |
2631 | 2631 |
gen_movl_T1_reg(s, rn); |
2632 | 2632 |
if (insn & (1 << 22)) { |
... | ... | |
2799 | 2799 |
} |
2800 | 2800 |
rn = (insn >> 16) & 0xf; |
2801 | 2801 |
gen_movl_T1_reg(s, rn); |
2802 |
|
|
2802 |
|
|
2803 | 2803 |
/* compute total size */ |
2804 | 2804 |
loaded_base = 0; |
2805 | 2805 |
n = 0; |
... | ... | |
2897 | 2897 |
case 0xb: |
2898 | 2898 |
{ |
2899 | 2899 |
int32_t offset; |
2900 |
|
|
2900 |
|
|
2901 | 2901 |
/* branch (and link) */ |
2902 | 2902 |
val = (int32_t)s->pc; |
2903 | 2903 |
if (insn & (1 << 24)) { |
... | ... | |
3500 | 3500 |
val = (uint32_t)s->pc + 2; |
3501 | 3501 |
gen_op_movl_T1_im(val | 1); |
3502 | 3502 |
gen_movl_reg_T1(s, 14); |
3503 |
|
|
3503 |
|
|
3504 | 3504 |
val += offset << 1; |
3505 | 3505 |
if (insn & (1 << 12)) { |
3506 | 3506 |
/* bl */ |
... | ... | |
3532 | 3532 |
int j, lj; |
3533 | 3533 |
target_ulong pc_start; |
3534 | 3534 |
uint32_t next_page_start; |
3535 |
|
|
3535 |
|
|
3536 | 3536 |
/* generate intermediate code */ |
3537 | 3537 |
pc_start = tb->pc; |
3538 |
|
|
3538 |
|
|
3539 | 3539 |
dc->tb = tb; |
3540 | 3540 |
|
3541 | 3541 |
gen_opc_ptr = gen_opc_buf; |
Also available in: Unified diff