translate.c (59c58f96b270f5edd4ad10954c3a96556cb3a728) translate.c (14776ab5a12972ea439c7fb2203a4c15a09094b4)
1/*
2 * OpenRISC translation
3 *
4 * Copyright (c) 2011-2012 Jia Liu <proljc@gmail.com>
5 * Feng Gao <gf91597@gmail.com>
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public

--- 667 unchanged lines hidden (view full) ---

676 tcg_gen_addi_tl(ea, cpu_R[a->a], a->i);
677 tcg_gen_qemu_ld_tl(cpu_R[a->d], ea, dc->mem_idx, MO_TEUL);
678 tcg_gen_mov_tl(cpu_lock_addr, ea);
679 tcg_gen_mov_tl(cpu_lock_value, cpu_R[a->d]);
680 tcg_temp_free(ea);
681 return true;
682}
683
1/*
2 * OpenRISC translation
3 *
4 * Copyright (c) 2011-2012 Jia Liu <proljc@gmail.com>
5 * Feng Gao <gf91597@gmail.com>
6 *
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Lesser General Public

--- 667 unchanged lines hidden (view full) ---

676 tcg_gen_addi_tl(ea, cpu_R[a->a], a->i);
677 tcg_gen_qemu_ld_tl(cpu_R[a->d], ea, dc->mem_idx, MO_TEUL);
678 tcg_gen_mov_tl(cpu_lock_addr, ea);
679 tcg_gen_mov_tl(cpu_lock_value, cpu_R[a->d]);
680 tcg_temp_free(ea);
681 return true;
682}
683
684static void do_load(DisasContext *dc, arg_load *a, TCGMemOp mop)
684static void do_load(DisasContext *dc, arg_load *a, MemOp mop)
685{
686 TCGv ea;
687
688 check_r0_write(a->d);
689 ea = tcg_temp_new();
690 tcg_gen_addi_tl(ea, cpu_R[a->a], a->i);
691 tcg_gen_qemu_ld_tl(cpu_R[a->d], ea, dc->mem_idx, mop);
692 tcg_temp_free(ea);

--- 65 unchanged lines hidden (view full) ---

758 gen_set_label(lab_fail);
759 tcg_gen_movi_tl(cpu_sr_f, 0);
760
761 gen_set_label(lab_done);
762 tcg_gen_movi_tl(cpu_lock_addr, -1);
763 return true;
764}
765
685{
686 TCGv ea;
687
688 check_r0_write(a->d);
689 ea = tcg_temp_new();
690 tcg_gen_addi_tl(ea, cpu_R[a->a], a->i);
691 tcg_gen_qemu_ld_tl(cpu_R[a->d], ea, dc->mem_idx, mop);
692 tcg_temp_free(ea);

--- 65 unchanged lines hidden (view full) ---

758 gen_set_label(lab_fail);
759 tcg_gen_movi_tl(cpu_sr_f, 0);
760
761 gen_set_label(lab_done);
762 tcg_gen_movi_tl(cpu_lock_addr, -1);
763 return true;
764}
765
766static void do_store(DisasContext *dc, arg_store *a, TCGMemOp mop)
766static void do_store(DisasContext *dc, arg_store *a, MemOp mop)
767{
768 TCGv t0 = tcg_temp_new();
769 tcg_gen_addi_tl(t0, cpu_R[a->a], a->i);
770 tcg_gen_qemu_st_tl(cpu_R[a->b], t0, dc->mem_idx, mop);
771 tcg_temp_free(t0);
772}
773
774static bool trans_l_sw(DisasContext *dc, arg_store *a)

--- 665 unchanged lines hidden ---
767{
768 TCGv t0 = tcg_temp_new();
769 tcg_gen_addi_tl(t0, cpu_R[a->a], a->i);
770 tcg_gen_qemu_st_tl(cpu_R[a->b], t0, dc->mem_idx, mop);
771 tcg_temp_free(t0);
772}
773
774static bool trans_l_sw(DisasContext *dc, arg_store *a)

--- 665 unchanged lines hidden ---