Revision 3a3b925d target-sparc/translate.c

b/target-sparc/translate.c
4368 4368
                    tcg_gen_st_i32(cpu_tmp32, cpu_env,
4369 4369
                                   offsetof(CPUState, fpr[rd]));
4370 4370
                    break;
4371
                case 0x21:      /* load fsr */
4371
                case 0x21:      /* ldfsr, V9 ldxfsr */
4372
#ifdef TARGET_SPARC64
4372 4373
                    gen_address_mask(dc, cpu_addr);
4373
                    tcg_gen_qemu_ld32u(cpu_tmp32, cpu_addr, dc->mem_idx);
4374
                    tcg_gen_st_i32(cpu_tmp32, cpu_env,
4375
                                   offsetof(CPUState, ft0));
4376
                    tcg_gen_helper_0_0(helper_ldfsr);
4374
                    if (rd == 1) {
4375
                        tcg_gen_qemu_ld64(cpu_tmp64, cpu_addr, dc->mem_idx);
4376
                        tcg_gen_helper_0_1(helper_ldxfsr, cpu_tmp64);
4377
                    } else
4378
#else
4379
                    {
4380
                        tcg_gen_qemu_ld32u(cpu_tmp32, cpu_addr, dc->mem_idx);
4381
                        tcg_gen_helper_0_1(helper_ldfsr, cpu_tmp32);
4382
                    }
4383
#endif
4377 4384
                    break;
4378 4385
                case 0x22:      /* load quad fpreg */
4379 4386
                    {
......
4506 4513
                    tcg_gen_qemu_st32(cpu_tmp32, cpu_addr, dc->mem_idx);
4507 4514
                    break;
4508 4515
                case 0x25: /* stfsr, V9 stxfsr */
4516
#ifdef TARGET_SPARC64
4509 4517
                    gen_address_mask(dc, cpu_addr);
4510
                    tcg_gen_helper_0_0(helper_stfsr);
4511
                    tcg_gen_ld_i32(cpu_tmp32, cpu_env,
4512
                                   offsetof(CPUState, ft0));
4518
                    tcg_gen_ld_i64(cpu_tmp64, cpu_env, offsetof(CPUState, fsr));
4519
                    if (rd == 1)
4520
                        tcg_gen_qemu_st64(cpu_tmp64, cpu_addr, dc->mem_idx);
4521
                    else {
4522
                        tcg_gen_trunc_tl_i32(cpu_tmp32, cpu_tmp64);
4523
                        tcg_gen_qemu_st32(cpu_tmp32, cpu_addr, dc->mem_idx);
4524
                    }
4525
#else
4526
                    tcg_gen_ld_i32(cpu_tmp32, cpu_env, offsetof(CPUState, fsr));
4513 4527
                    tcg_gen_qemu_st32(cpu_tmp32, cpu_addr, dc->mem_idx);
4528
#endif
4514 4529
                    break;
4515 4530
                case 0x26:
4516 4531
#ifdef TARGET_SPARC64

Also available in: Unified diff