[PATCH 05/13] powerpc: Add soft_enabled manipulation functions

Madhavan Srinivasan maddy at linux.vnet.ibm.com
Mon Sep 19 15:41:56 AEST 2016



On Friday 16 September 2016 03:27 PM, Nicholas Piggin wrote:
> On Thu, 15 Sep 2016 18:31:55 +0530
> Madhavan Srinivasan <maddy at linux.vnet.ibm.com> wrote:
>
>> Add new soft_enabled_* manipulation function and implement
>> arch_local_* using the soft_enabled_* wrappers.
>>
>> Signed-off-by: Madhavan Srinivasan <maddy at linux.vnet.ibm.com>
>> ---
>>   arch/powerpc/include/asm/hw_irq.h | 32 ++++++++++++++------------------
>>   1 file changed, 14 insertions(+), 18 deletions(-)
>>
>> diff --git a/arch/powerpc/include/asm/hw_irq.h b/arch/powerpc/include/asm/hw_irq.h
>> index f828b8f8df02..dc3c248f9244 100644
>> --- a/arch/powerpc/include/asm/hw_irq.h
>> +++ b/arch/powerpc/include/asm/hw_irq.h
>> @@ -53,21 +53,7 @@ static inline notrace void soft_enabled_set(unsigned long enable)
>>   	: : "r" (enable), "i" (offsetof(struct paca_struct, soft_enabled)));
>>   }
>>   
>> -static inline notrace unsigned long soft_enabled_set_return(unsigned long enable)
>> -{
>> -	unsigned long flags;
>> -
>> -	asm volatile(
>> -		"lbz %0,%1(13); stb %2,%1(13)"
>> -		: "=r" (flags)
>> -		: "i" (offsetof(struct paca_struct, soft_enabled)),\
>> -		  "r" (enable)
>> -		: "memory");
>> -
>> -	return flags;
>> -}
>> -
>> -static inline unsigned long arch_local_save_flags(void)
>> +static inline notrace unsigned long soft_enabled_return(void)
>>   {
>>   	unsigned long flags;
>>   
>> @@ -79,20 +65,30 @@ static inline unsigned long arch_local_save_flags(void)
>>   	return flags;
>>   }
>>   
>> -static inline unsigned long arch_local_irq_disable(void)
>> +static inline notrace unsigned long soft_enabled_set_return(unsigned long enable)
>>   {
>>   	unsigned long flags, zero;
>>   
>>   	asm volatile(
>> -		"li %1,%3; lbz %0,%2(13); stb %1,%2(13)"
>> +		"mr %1,%3; lbz %0,%2(13); stb %1,%2(13)"
>>   		: "=r" (flags), "=&r" (zero)
>>   		: "i" (offsetof(struct paca_struct, soft_enabled)),\
>> -		  "i" (IRQ_DISABLE_MASK_LINUX)
>> +		  "r" (enable)
>>   		: "memory");
>>   
>>   	return flags;
>>   }
> As we talked about earlier, it would be nice to add builtin_constant
> variants to avoid the extra instruction. If you prefer to do that
> after this series, that's fine.

True. my bad. Will look into this.

Maddy

>
> Reviewed-by: Nicholas Piggin <npiggin at gmail.com>
>



More information about the Linuxppc-dev mailing list