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