summaryrefslogtreecommitdiff
path: root/firmware/export/system.h
diff options
context:
space:
mode:
authorMichael Sevakis <jethead71@rockbox.org>2010-06-30 02:02:46 +0000
committerMichael Sevakis <jethead71@rockbox.org>2010-06-30 02:02:46 +0000
commite286b0bbc04a34c181978efce19c6d0814e228c0 (patch)
tree841288761e20dc9a7a25e5ba83306adf52547d65 /firmware/export/system.h
parentf4a00174b50c209f2a23b7a73fe7cb544ef59d02 (diff)
downloadrockbox-e286b0bbc04a34c181978efce19c6d0814e228c0.tar.gz
rockbox-e286b0bbc04a34c181978efce19c6d0814e228c0.zip
Remove atomic register bit manipulation functions from i.MX and s3c target code and introduce generic functions for ARM (bitmod32, bitset32, and bitclr32). Multiprocessor support is possible but just not implemented at the moment, only interrupt lockout.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@27188 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'firmware/export/system.h')
-rw-r--r--firmware/export/system.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/firmware/export/system.h b/firmware/export/system.h
index fe8121ce20..ee668c87e4 100644
--- a/firmware/export/system.h
+++ b/firmware/export/system.h
@@ -214,6 +214,11 @@ static inline __attribute__((always_inline))
214uint32_t isolate_first_bit(uint32_t val) 214uint32_t isolate_first_bit(uint32_t val)
215 { return val & -val; } 215 { return val & -val; }
216 216
217/* Functions to set and clear register or variable bits atomically */
218void bitmod32(volatile uint32_t *addr, uint32_t bits, uint32_t mask);
219void bitset32(volatile uint32_t *addr, uint32_t mask);
220void bitclr32(volatile uint32_t *addr, uint32_t mask);
221
217/* gcc 3.4 changed the format of the constraints */ 222/* gcc 3.4 changed the format of the constraints */
218#if (__GNUC__ >= 3) && (__GNUC_MINOR__ > 3) || (__GNUC__ >= 4) 223#if (__GNUC__ >= 3) && (__GNUC_MINOR__ > 3) || (__GNUC__ >= 4)
219#define I_CONSTRAINT "I08" 224#define I_CONSTRAINT "I08"