diff options
author | Michael Sevakis <jethead71@rockbox.org> | 2010-06-30 02:02:46 +0000 |
---|---|---|
committer | Michael Sevakis <jethead71@rockbox.org> | 2010-06-30 02:02:46 +0000 |
commit | e286b0bbc04a34c181978efce19c6d0814e228c0 (patch) | |
tree | 841288761e20dc9a7a25e5ba83306adf52547d65 /firmware/export | |
parent | f4a00174b50c209f2a23b7a73fe7cb544ef59d02 (diff) | |
download | rockbox-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')
-rw-r--r-- | firmware/export/system.h | 5 |
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)) | |||
214 | uint32_t isolate_first_bit(uint32_t val) | 214 | uint32_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 */ | ||
218 | void bitmod32(volatile uint32_t *addr, uint32_t bits, uint32_t mask); | ||
219 | void bitset32(volatile uint32_t *addr, uint32_t mask); | ||
220 | void 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" |