]> git.alsa-project.org Git - alsa-lib.git/commitdiff
arm section update
authorJaroslav Kysela <perex@perex.cz>
Sat, 14 Jun 2003 08:11:24 +0000 (08:11 +0000)
committerJaroslav Kysela <perex@perex.cz>
Sat, 14 Jun 2003 08:11:24 +0000 (08:11 +0000)
include/iatomic.h

index c30b1e3f7ca44fa9f91f00ce57ea7764c3c2a0a5..d4b12c1e2831b1e502c539cb21b3535afc5b7355 100644 (file)
@@ -891,8 +891,38 @@ __asm__ __volatile__(                                      \
 #endif /* __mips__ */
 
 #ifdef __arm__
-/* we'll need to duplicate this code, too.. */
-#include <asm/proc/system.h>
+
+/*
+ * 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;