[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-devel] [PATCH 08/18] target-riscv: Add Atomic Instructions
From: |
Richard Henderson |
Subject: |
Re: [Qemu-devel] [PATCH 08/18] target-riscv: Add Atomic Instructions |
Date: |
Tue, 27 Sep 2016 12:30:03 -0700 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.2.0 |
On 09/26/2016 03:56 AM, Sagar Karandikar wrote:
> +static inline void gen_atomic(DisasContext *ctx, uint32_t opc,
> + int rd, int rs1, int rs2)
> +{
> + /* TODO: handle aq, rl bits? - for now just get rid of them: */
> + opc = MASK_OP_ATOMIC_NO_AQ_RL(opc);
We have already added tcg_gen_mb to insert memory barriers; hopefully the
branch containing atomic operations will be merged soon. See
git://github.com/rth7680/qemu.git atomic-4
> + case OPC_RISC_SC_W:
> + tcg_gen_brcond_tl(TCG_COND_NE, load_res, source1, j);
> + tcg_gen_qemu_st_tl(source2, source1, ctx->mem_idx, MO_TEUL |
> MO_ALIGN);
> + tcg_gen_movi_tl(dat, 0); /*success */
> + tcg_gen_br(done);
> + gen_set_label(j);
> + tcg_gen_movi_tl(dat, 1); /*fail */
> + gen_set_label(done);
> + break;
I will note that generally SC needs to compare against the value loaded by LR
as well as the address used by LR. Please have a look at the AArch64
implementation.
r~
- [Qemu-devel] [PATCH 00/18] target-riscv: Add full-system emulation support for the RISC-V Instruction Set Architecture (RV64G, RV32G), Sagar Karandikar, 2016/09/26
- [Qemu-devel] [PATCH 06/18] target-riscv: Add JALR, Branch Instructions, Sagar Karandikar, 2016/09/26
- [Qemu-devel] [PATCH 01/18] target-riscv: Add RISC-V target stubs and Maintainer, Sagar Karandikar, 2016/09/26
- [Qemu-devel] [PATCH 15/18] target-riscv: Interrupt Handling, Sagar Karandikar, 2016/09/26
- [Qemu-devel] [PATCH 07/18] target-riscv: Add Loads/Stores, FP Loads/Stores, Sagar Karandikar, 2016/09/26
- [Qemu-devel] [PATCH 08/18] target-riscv: Add Atomic Instructions, Sagar Karandikar, 2016/09/26
- Re: [Qemu-devel] [PATCH 08/18] target-riscv: Add Atomic Instructions,
Richard Henderson <=
- [Qemu-devel] [PATCH 03/18] target-riscv: Add initialization for translation, Sagar Karandikar, 2016/09/26
- [Qemu-devel] [PATCH 14/18] target-riscv: softmmu/address translation support, Sagar Karandikar, 2016/09/26
- [Qemu-devel] [PATCH 16/18] target-riscv: Timer Support, Sagar Karandikar, 2016/09/26
- [Qemu-devel] [PATCH 12/18] target-riscv: Add system instructions, Sagar Karandikar, 2016/09/26