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

From: Clément Léger
Date: Mon Oct 23 2023 - 06:08:33 EST




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@xxxxxxxxxx)
>> *
>> */
>> -
>> -.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