On 7/13/2026 1:01 AM, Alistair Francis wrote:
> On Mon, 2026-07-13 at 11:51 +0800, frank.chang@sifive.com wrote:
>> From: Frank Chang <frank.chang@sifive.com>
>>
>> Support the true Zicclsm extension so that we can trap misaligned
>> accesses
>> when Zicclsm is disabled.
>>
>> To enable/disable Zicclsm, simply set zicclsm=[true|false], e.g.:
>> -cpu rv64,zicclsm=[true|false]
>>
>> QEMU will raise a misaligned load/store exception when executing
>> misaligned
>> load/store instructions if Zicclsm is disabled.
>>
>> Changelog:
>> v6:
>> * Reorder and squash Zicclsm CPU property and RVA22U64 profile
>> patches to
>> make every single commit to pass `make check`.
>> v5:
>> * Add Zicclsm to RVA22U64 profile explicitly.
>> * Rebase to the latest riscv-to-apply.next.
>> v4:
>> * Align ROM reset vector data at 8-byte aligned offsets.
>> v3:
>> * Enable Zicclsm for the compatible CPUs.
>> * Rebase to the latest riscv-to-apply.next.
>> v2:
>> * Use (size_memop(size) | mo_endian_env(env)) to calculate MemOp.
>> * Use (log2_esz << MO_ASHIFT) to calculate aligment MemOp for
>> vector load/store whole register instructions.
>>
>> Frank Chang (6):
>> target/riscv: Add Zicclsm CPU option
>> target/riscv: Enable Zicclsm for the compatible CPUs
>> hw/riscv: sifive_u: Align ROM reset vector data
>> target/riscv: Support raising misaligned exceptions for scalar
>> loads/stores
>> target/riscv: Support raising misaligned exceptions for vector
>> loads/stores
>> target/riscv: Expose Zicclsm as a CPU property and update RVA22U64
>> profile
>
> This has missed the 11.1 release window [1]. So it will now need to
> include unit tests and a user of the extension (submitted toolchain
> support patches) according to [2].
>
> 1: https://wiki.qemu.org/Planning/11.1
> 2:
> https://wiki.qemu.org/Documentation/Platforms/RISCV#RISC-V_Foundation_Extensions
zicclsm is supported by GCC since
-----------
commit 5c18df44fd1387653595869c9145c63fffb8cfac
Author: Monk Chiang <monk.chiang@sifive.com>
Date: Thu Feb 1 17:14:18 2024 +0800
RISC-V: Add minimal support for 7 new unprivileged extensions
The RISC-V Profiles specification here:
https://github.com/riscv/riscv-profiles/blob/main/profiles.adoc#7-new-isa-extensions
These extensions don't add any new features but
describe existing features. So this patch only adds parsing.
Za64rs: Reservation set size of 64 bytes
Za128rs: Reservation set size of 128 bytes
Ziccif: Main memory supports instruction fetch with atomicity requirement
Ziccrse: Main memory supports forward progress on LR/SC sequences
Ziccamoa: Main memory supports all atomics in A
Zicclsm: Main memory supports misaligned loads/stores
Zic64b: Cache block size isf 64 bytes
-----------
I think we're good w.r.t a user/use for it. Thanks,
Daniel
>
> Alistair
>
>>
>> hw/riscv/sifive_u.c | 11 ++--
>> target/riscv/cpu.c | 10 +++-
>> target/riscv/cpu_cfg_fields.h.inc | 2 +
>> target/riscv/tcg/insn_trans/trans_rvi.c.inc | 6 ++
>> target/riscv/tcg/insn_trans/trans_rvv.c.inc | 18 +++++-
>> target/riscv/tcg/vector_helper.c | 65 ++++++++++++++++---
>> --
>> 6 files changed, 88 insertions(+), 24 deletions(-)
>>
>> --
>> 2.43.0
>>