[PATCH 05/18] riscv: asm: use .insn for making custom instructioons

Ben Dooks ben.dooks at codethink.co.uk
Mon Oct 20 04:04:17 PDT 2025


On 02/10/2025 15:51, Andrew Jones wrote:
> On Thu, Oct 02, 2025 at 09:45:05AM -0500, Andrew Jones wrote:
>> On Fri, Aug 22, 2025 at 05:52:35PM +0100, Ben Dooks wrote:
>>> Using .word breaks with big endian builds, making something which
>>> is not a valid or worse an instruction or pair that does something
>>> which is not intended.
>>>
>>> Signed-off-by: Ben Dooks <ben.dooks at codethink.co.uk>
>>> ---
>>>   arch/riscv/include/asm/insn-def.h | 7 +++++++
>>>   1 file changed, 7 insertions(+)
>>>
>>> diff --git a/arch/riscv/include/asm/insn-def.h b/arch/riscv/include/asm/insn-def.h
>>> index d5adbaec1d01..2a3019bc1a3b 100644
>>> --- a/arch/riscv/include/asm/insn-def.h
>>> +++ b/arch/riscv/include/asm/insn-def.h
>>> @@ -256,10 +256,17 @@
>>>   	INSN_S(OPCODE_OP_IMM, FUNC3(6), __RS2(3),		\
>>>   	       SIMM12((offset) & 0xfe0), RS1(base))
>>>   
>>> +#ifndef CONFIG_AS_HAS_INSN
>>>   #define RISCV_PAUSE	".4byte 0x100000f"
>>>   #define ZAWRS_WRS_NTO	".4byte 0x00d00073"
>>>   #define ZAWRS_WRS_STO	".4byte 0x01d00073"
>>>   #define RISCV_NOP4	".4byte 0x00000013"
>>> +#else
>>> +#define RISCV_PAUSE	".insn 0x100000f"
>>> +#define ZAWRS_WRS_NTO	".insn 0x00d00073"
>>> +#define ZAWRS_WRS_STO	".insn 0x01d00073"
>>> +#define RISCV_NOP4	".insn 0x00000013"
>>> +#endif
>>
>> I agree we should use .insn when possible because it provides validation
>> and allows mapping symbols to identify the words as instructions. So ack
>> to the change, but without adding a depends on AS_HAS_INSN to the riscv
>> CPU_BIG_ENDIAN config, then the commit message should drop the reference
>> to big endian for its motivation.
>>
> 
> And Patch14 of this series looks good, but it should be squashed into this
> one.
> 
> Thanks,
> drew
> 

ok, thanks.

-- 
Ben Dooks				http://www.codethink.co.uk/
Senior Engineer				Codethink - Providing Genius

https://www.codethink.co.uk/privacy.html



More information about the linux-riscv mailing list