target/loongarch: Add support for dbar hint variants
LoongArch architecture (since LA664) introduces fine-grained dbar hints that allow controlling which memory accesses are ordered by the barrier. Previously, all dbar instructions were treated as a full barrier (TCG_MO_ALL | TCG_BAR_SC). This patch adds support for decoding dbar hints and emitting the appropriate TCG memory barrier flags. For CPUs that do not advertise the DBAR_HINTS feature (cpucfg3.DBAR_HINTS = 0), all dbar hints fall back to a full barrier, preserving compatibility. The hint encoding follows the LoongArch v1.10 specification: The hint is a 5-bit field (bits 4-0). Bit4 is reserved and currently ignored/discarded. Only bits 3-0 are used for ordering control. * Bit3: barrier for previous read (0: true, 1: false) * Bit2: barrier for previous write (0: true, 1: false) * Bit1: barrier for succeeding read (0: true, 1: false) * Bit0: barrier for succeeding write (0: true, 1: false) The mapping to TCG memory order flags is as follows: TCG_BAR_SC |TCG_MO_LD_LD | TCG_MO_LD_ST; TCG_BAR_SC |TCG_MO_ST_LD | TCG_MO_ST_ST; TCG_BAR_SC |TCG_MO_LD_LD | TCG_MO_ST_LD; TCG_BAR_SC |TCG_MO_ST_ST | TCG_MO_LD_ST; Special hint handling: - hint 0x700: LL/SC loop barrier, treated as a full barrier as recommended. - hint 0xf and 0x1f: reserved/no-op, treated as no operation Signed-off-by: Song Gao <gaosong@loongson.cn> Reviewed-by: Bibo Mao <maobibo@loongson.cn>