[PATCH 2/5] riscv: Use SYM_*() assembly macros instead of deprecated ones

Clément Léger cleger at rivosinc.com
Mon Oct 23 03:08:05 PDT 2023



On 23/10/2023 11:59, Andrew Jones wrote:
> On Wed, Oct 04, 2023 at 04:30:51PM +0200, Clément Léger wrote:
> ...
>> diff --git a/arch/riscv/lib/memmove.S b/arch/riscv/lib/memmove.S
>> index 1930b388c3a0..5130033e3e02 100644
>> --- a/arch/riscv/lib/memmove.S
>> +++ b/arch/riscv/lib/memmove.S
>> @@ -7,7 +7,6 @@
>>  #include <asm/asm.h>
>>  
>>  SYM_FUNC_START(__memmove)
>> -SYM_FUNC_START_WEAK(memmove)
>>  	/*
>>  	 * Returns
>>  	 *   a0 - dest
>> @@ -314,5 +313,6 @@ SYM_FUNC_START_WEAK(memmove)
>>  
>>  SYM_FUNC_END(memmove)
> 
> Should this one above be removed?

Hugh :/ yeah, thanks for catching this.

> 
>>  SYM_FUNC_END(__memmove)
>> +SYM_FUNC_ALIAS_WEAK(memmove, __memmove)
>>  SYM_FUNC_ALIAS(__pi_memmove, __memmove)
>>  SYM_FUNC_ALIAS(__pi___memmove, __memmove)
>> diff --git a/arch/riscv/lib/memset.S b/arch/riscv/lib/memset.S
>> index 34c5360c6705..35f358e70bdb 100644
>> --- a/arch/riscv/lib/memset.S
>> +++ b/arch/riscv/lib/memset.S
>> @@ -8,8 +8,7 @@
>>  #include <asm/asm.h>
>>  
>>  /* void *memset(void *, int, size_t) */
>> -ENTRY(__memset)
>> -WEAK(memset)
>> +SYM_FUNC_START(__memset)
>>  	move t0, a0  /* Preserve return value */
>>  
>>  	/* Defer to byte-oriented fill for small sizes */
>> @@ -110,4 +109,5 @@ WEAK(memset)
>>  	bltu t0, a3, 5b
>>  6:
>>  	ret
>> -END(__memset)
>> +SYM_FUNC_END(__memset)
>> +SYM_FUNC_ALIAS_WEAK(memset, __memset)
>> diff --git a/arch/riscv/lib/uaccess.S b/arch/riscv/lib/uaccess.S
>> index 09b47ebacf2e..3ab438f30d13 100644
>> --- a/arch/riscv/lib/uaccess.S
>> +++ b/arch/riscv/lib/uaccess.S
>> @@ -10,8 +10,7 @@
>>  	_asm_extable	100b, \lbl
>>  	.endm
>>  
>> -ENTRY(__asm_copy_to_user)
>> -ENTRY(__asm_copy_from_user)
>> +SYM_FUNC_START(__asm_copy_to_user)
>>  
>>  	/* Enable access to user memory */
>>  	li t6, SR_SUM
>> @@ -181,13 +180,13 @@ ENTRY(__asm_copy_from_user)
>>  	csrc CSR_STATUS, t6
>>  	sub a0, t5, a0
>>  	ret
>> -ENDPROC(__asm_copy_to_user)
>> -ENDPROC(__asm_copy_from_user)
>> +SYM_FUNC_END(__asm_copy_to_user)
>>  EXPORT_SYMBOL(__asm_copy_to_user)
>> +SYM_FUNC_ALIAS(__asm_copy_from_user, __asm_copy_to_user)
> 
> IIUC, we'll only have debug information for __asm_copy_to_user. I'm not
> sure what that means for debugging. Is it possible to generate something
> confusing?

I'll check that with GDB to be sure we don't have anything fancy here.

> 
>>  EXPORT_SYMBOL(__asm_copy_from_user)
>>  
>>  
>> -ENTRY(__clear_user)
>> +SYM_FUNC_START(__clear_user)
>>  
>>  	/* Enable access to user memory */
>>  	li t6, SR_SUM
>> @@ -233,5 +232,5 @@ ENTRY(__clear_user)
>>  	csrc CSR_STATUS, t6
>>  	sub a0, a3, a0
>>  	ret
>> -ENDPROC(__clear_user)
>> +SYM_FUNC_END(__clear_user)
>>  EXPORT_SYMBOL(__clear_user)
>> diff --git a/arch/riscv/purgatory/entry.S b/arch/riscv/purgatory/entry.S
>> index 0194f4554130..7befa276fb01 100644
>> --- a/arch/riscv/purgatory/entry.S
>> +++ b/arch/riscv/purgatory/entry.S
>> @@ -7,15 +7,11 @@
>>   * Author: Li Zhengyu (lizhengyu3 at huawei.com)
>>   *
>>   */
>> -
>> -.macro	size, sym:req
>> -	.size \sym, . - \sym
>> -.endm
>> +#include <linux/linkage.h>
>>  
>>  .text
>>  
>> -.globl purgatory_start
>> -purgatory_start:
>> +SYM_CODE_START(purgatory_start)
>>  
>>  	lla	sp, .Lstack
>>  	mv	s0, a0	/* The hartid of the current hart */
>> @@ -28,8 +24,7 @@ purgatory_start:
>>  	mv	a1, s1
>>  	ld	a2, riscv_kernel_entry
>>  	jr	a2
>> -
>> -size purgatory_start
>> +SYM_CODE_END(purgatory_start)
>>  
>>  .align 4
>>  	.rept	256
>> @@ -39,9 +34,8 @@ size purgatory_start
>>  
>>  .data
>>  
>> -.globl riscv_kernel_entry
>> -riscv_kernel_entry:
>> +SYM_DATA_START(riscv_kernel_entry)
>>  	.quad	0
>> -size riscv_kernel_entry
>> +SYM_DATA_END(riscv_kernel_entry)
> 
> I think we could also use the shorthand version for this one-liner.
> 
> SYM_DATA(riscv_kernel_entry, quad 0)

Oh yes, nice catch.

Thanks,

Clément

> 
> Thanks,
> drew



More information about the linux-riscv mailing list