Commit 3f0cbfb8 authored by Pincheng Wang's avatar Pincheng Wang Committed by Paul Walmsley
Browse files

riscv: add ISA extension parsing for Zilsd and Zclsd



Add parsing for Zilsd and Zclsd ISA extensions which were ratified in
commit f88abf1 ("Integrating load/store pair for RV32 with the
main manual") of the riscv-isa-manual.

Signed-off-by: default avatarPincheng Wang <pincheng.plct@isrc.iscas.ac.cn>
Reviewed-by: default avatarNutty Liu <nutty.liu@hotmail.com>
Link: https://patch.msgid.link/20250826162939.1494021-3-pincheng.plct@isrc.iscas.ac.cn


[pjw@kernel.org: cleaned up checkpatch issues, whitespace; updated to apply]
Signed-off-by: default avatarPaul Walmsley <pjw@kernel.org>
parent 4115155b
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -108,6 +108,8 @@
#define RISCV_ISA_EXT_ZICBOP		99
#define RISCV_ISA_EXT_SVRSW60T59B	100
#define RISCV_ISA_EXT_ZALASR		101
#define RISCV_ISA_EXT_ZILSD		102
#define RISCV_ISA_EXT_ZCLSD		103

#define RISCV_ISA_EXT_XLINUXENVCFG	127

+24 −0
Original line number Diff line number Diff line
@@ -242,6 +242,28 @@ static int riscv_ext_zcf_validate(const struct riscv_isa_ext_data *data,
	return -EPROBE_DEFER;
}

static int riscv_ext_zilsd_validate(const struct riscv_isa_ext_data *data,
				    const unsigned long *isa_bitmap)
{
	if (IS_ENABLED(CONFIG_64BIT))
		return -EINVAL;

	return 0;
}

static int riscv_ext_zclsd_validate(const struct riscv_isa_ext_data *data,
				    const unsigned long *isa_bitmap)
{
	if (IS_ENABLED(CONFIG_64BIT))
		return -EINVAL;

	if (__riscv_isa_extension_available(isa_bitmap, RISCV_ISA_EXT_ZILSD) &&
	    __riscv_isa_extension_available(isa_bitmap, RISCV_ISA_EXT_ZCA))
		return 0;

	return -EPROBE_DEFER;
}

static int riscv_vector_f_validate(const struct riscv_isa_ext_data *data,
				   const unsigned long *isa_bitmap)
{
@@ -484,6 +506,8 @@ const struct riscv_isa_ext_data riscv_isa_ext[] = {
	__RISCV_ISA_EXT_DATA_VALIDATE(zcd, RISCV_ISA_EXT_ZCD, riscv_ext_zcd_validate),
	__RISCV_ISA_EXT_DATA_VALIDATE(zcf, RISCV_ISA_EXT_ZCF, riscv_ext_zcf_validate),
	__RISCV_ISA_EXT_DATA_VALIDATE(zcmop, RISCV_ISA_EXT_ZCMOP, riscv_ext_zca_depends),
	__RISCV_ISA_EXT_DATA_VALIDATE(zclsd, RISCV_ISA_EXT_ZCLSD, riscv_ext_zclsd_validate),
	__RISCV_ISA_EXT_DATA_VALIDATE(zilsd, RISCV_ISA_EXT_ZILSD, riscv_ext_zilsd_validate),
	__RISCV_ISA_EXT_DATA(zba, RISCV_ISA_EXT_ZBA),
	__RISCV_ISA_EXT_DATA(zbb, RISCV_ISA_EXT_ZBB),
	__RISCV_ISA_EXT_DATA(zbc, RISCV_ISA_EXT_ZBC),