[U-Boot] [PATCH 2/4] nios2: add local_irq_enable/disable to asm-nios2/system.h

Scott McNutt smcnutt at psyent.com
Sat Mar 20 00:43:50 CET 2010


Applied.
Thank you,
--Scott

Thomas Chou wrote:
> Copy from linux header. This is needed for generic bitops.
> 
> Signed-off-by: Thomas Chou <thomas at wytron.com.tw>
> ---
>  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 */


More information about the U-Boot mailing list