Re: [PATCH v3 02/16] powerpc: Override __ALIGN and __ALIGN_STR macros

Christophe Leroy
2022-09-13T12:22:00Z

Le 13/09/2022 à 14:03, Peter Zijlstra a écrit :
> On Mon, Sep 12, 2022 at 01:50:06PM +0530, Sathvika Vasireddy wrote:
>> In a subsequent patch, we would want to annotate powerpc assembly functions
>> with SYM_FUNC_START_LOCAL macro. This macro depends on __ALIGN macro.
>>
>> The default expansion of __ALIGN macro is:
>> #define __ALIGN .align 4,0x90
>>
>> So, override __ALIGN and __ALIGN_STR macros to use the same alignment as
>> that of the existing _GLOBAL macro. Also, do not pad with 0x90, because
>> repeated 0x90s are not a nop or trap on powerpc.
>>
>> Signed-off-by: Sathvika Vasireddy <sv@linux.ibm.com>
>> ---
>> arch/powerpc/include/asm/linkage.h | 3 +++
>> 1 file changed, 3 insertions(+)
>>
>> diff --git a/arch/powerpc/include/asm/linkage.h b/arch/powerpc/include/asm/linkage.h
>> index b71b9582e754..b88d1d2cf304 100644
>> --- a/arch/powerpc/include/asm/linkage.h
>> +++ b/arch/powerpc/include/asm/linkage.h
>> @@ -4,6 +4,9 @@
>>
>> #include <asm/types.h>
>>
>> +#define __ALIGN .align 2
>> +#define __ALIGN_STR ".align 2"
>
> Like mentioned last time; I'm fixing this (but you're right to not wait
> on that), that said, would it make sense to write it like:
>
> #define __ALIGN .balign 4
> #define __ALIGN_STR __stringify(__ALIGN)

By the way, I commented to Sathvika to not use __stringify() in order to
avoid having to include stringify.h as we are trying to minimise
dependencies between headers.

Several other architectures also do it that way.

That being said, it could then be

#define __ALIGN .balign 4
#define __ALIGN_STR ".balign 4"

>
> That said; with power instructions being 4 bytes, the above alignment is
> basically no-alignment, right?
>

Yes indeed.