From: Jaroslav Kysela Date: Sat, 14 Jun 2003 08:11:24 +0000 (+0000) Subject: arm section update X-Git-Tag: v1.0.3~165 X-Git-Url: https://git.alsa-project.org/?a=commitdiff_plain;h=19e3baa6e10ee9c535cba90548e7f14d4b7be3d1;p=alsa-lib.git arm section update --- diff --git a/include/iatomic.h b/include/iatomic.h index c30b1e3f..d4b12c1e 100644 --- a/include/iatomic.h +++ b/include/iatomic.h @@ -891,8 +891,38 @@ __asm__ __volatile__( \ #endif /* __mips__ */ #ifdef __arm__ -/* we'll need to duplicate this code, too.. */ -#include + +/* + * FIXME: bellow code is valid only for SA11xx + */ + +/* + * Save the current interrupt enable state & disable IRQs + */ +#define local_irq_save(x) \ + ({ \ + unsigned long temp; \ + __asm__ __volatile__( \ + "mrs %0, cpsr @ local_irq_save\n" \ +" orr %1, %0, #128\n" \ +" msr cpsr_c, %1" \ + : "=r" (x), "=r" (temp) \ + : \ + : "memory"); \ + }) + +/* + * restore saved IRQ & FIQ state + */ +#define local_irq_restore(x) \ + __asm__ __volatile__( \ + "msr cpsr_c, %0 @ local_irq_restore\n" \ + : \ + : "r" (x) \ + : "memory") + +#define __save_flags_cli(x) local_irq_save(x) +#define __restore_flags(x) local_irq_restore(x) typedef struct { volatile int counter; } atomic_t;