Commit a67c543a authored by Madhavan Srinivasan's avatar Madhavan Srinivasan Committed by Michael Ellerman

powerpc/64: Implement and use soft_enabled_set_return API

Add a new wrapper function, soft_enabled_set_return(), added to do the
paca->soft_enabled updates requiring a set-return.
Signed-off-by: default avatarMadhavan Srinivasan <maddy@linux.vnet.ibm.com>
Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
parent e0b5687b
...@@ -76,6 +76,20 @@ static inline notrace void soft_enabled_set(unsigned long enable) ...@@ -76,6 +76,20 @@ static inline notrace void soft_enabled_set(unsigned long enable)
: "memory"); : "memory");
} }
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 unsigned long arch_local_save_flags(void)
{ {
return soft_enabled_return(); return soft_enabled_return();
...@@ -95,16 +109,7 @@ static inline void arch_local_irq_enable(void) ...@@ -95,16 +109,7 @@ static inline void arch_local_irq_enable(void)
static inline unsigned long arch_local_irq_save(void) static inline unsigned long arch_local_irq_save(void)
{ {
unsigned long flags; return soft_enabled_set_return(IRQS_DISABLED);
asm volatile(
"lbz %0,%1(13); stb %2,%1(13)"
: "=&r" (flags)
: "i" (offsetof(struct paca_struct, soft_enabled)),
"r" (IRQS_DISABLED)
: "memory");
return flags;
} }
static inline bool arch_irqs_disabled_flags(unsigned long flags) static inline bool arch_irqs_disabled_flags(unsigned long flags)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment