From mboxrd@z Thu Jan 1 00:00:00 1970 From: Scott McNutt Date: Fri, 19 Mar 2010 19:43:50 -0400 Subject: [U-Boot] [PATCH 2/4] nios2: add local_irq_enable/disable to asm-nios2/system.h In-Reply-To: <1269039947-21155-2-git-send-email-thomas@wytron.com.tw> References: <1269039947-21155-1-git-send-email-thomas@wytron.com.tw> <1269039947-21155-2-git-send-email-thomas@wytron.com.tw> Message-ID: <4BA40C36.7040601@psyent.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de Applied. Thank you, --Scott Thomas Chou wrote: > Copy from linux header. This is needed for generic bitops. > > Signed-off-by: Thomas Chou > --- > include/asm-nios2/system.h | 33 +++++++++++++++++++++++++++++++++ > 1 files changed, 33 insertions(+), 0 deletions(-) > > diff --git a/include/asm-nios2/system.h b/include/asm-nios2/system.h > index ec84f59..bb03ca5 100644 > --- a/include/asm-nios2/system.h > +++ b/include/asm-nios2/system.h > @@ -23,4 +23,37 @@ > #ifndef __ASM_NIOS2_SYSTEM_H_ > #define __ASM_NIOS2_SYSTEM_H_ > > +#define local_irq_enable() __asm__ __volatile__ ( \ > + "rdctl r8, status\n" \ > + "ori r8, r8, 1\n" \ > + "wrctl status, r8\n" \ > + : : : "r8") > + > +#define local_irq_disable() __asm__ __volatile__ ( \ > + "rdctl r8, status\n" \ > + "andi r8, r8, 0xfffe\n" \ > + "wrctl status, r8\n" \ > + : : : "r8") > + > +#define local_save_flags(x) __asm__ __volatile__ ( \ > + "rdctl r8, status\n" \ > + "mov %0, r8\n" \ > + : "=r" (x) : : "r8", "memory") > + > +#define local_irq_restore(x) __asm__ __volatile__ ( \ > + "mov r8, %0\n" \ > + "wrctl status, r8\n" \ > + : : "r" (x) : "r8", "memory") > + > +/* For spinlocks etc */ > +#define local_irq_save(x) do { local_save_flags(x); local_irq_disable(); } \ > + while (0) > + > +#define irqs_disabled() \ > +({ \ > + unsigned long flags; \ > + local_save_flags(flags); \ > + ((flags & NIOS2_STATUS_PIE_MSK) == 0x0); \ > +}) > + > #endif /* __ASM_NIOS2_SYSTEM_H */