summaryrefslogtreecommitdiff
path: root/recipes/mozilla/firefox-3.0.8/Bug405992.atomic.nspr.diff
diff options
context:
space:
mode:
authorGraeme Gregory <dp@xora.org.uk>2009-03-30 15:41:49 +0100
committerGraeme Gregory <dp@xora.org.uk>2009-03-30 15:41:49 +0100
commit80570a8a80155e65f38261514be8102ff0bb62cc (patch)
treeffdd325ae078f0e7d612ee240c4e6671c0fa036f /recipes/mozilla/firefox-3.0.8/Bug405992.atomic.nspr.diff
parent2263e973b5822e46566d8a5a33d306723617b1cb (diff)
firefox_3.0.8.bb : add new version, seems to compile with modern gcc
so made it the default.
Diffstat (limited to 'recipes/mozilla/firefox-3.0.8/Bug405992.atomic.nspr.diff')
-rw-r--r--recipes/mozilla/firefox-3.0.8/Bug405992.atomic.nspr.diff48
1 files changed, 48 insertions, 0 deletions
diff --git a/recipes/mozilla/firefox-3.0.8/Bug405992.atomic.nspr.diff b/recipes/mozilla/firefox-3.0.8/Bug405992.atomic.nspr.diff
new file mode 100644
index 0000000000..f54f916a6a
--- /dev/null
+++ b/recipes/mozilla/firefox-3.0.8/Bug405992.atomic.nspr.diff
@@ -0,0 +1,48 @@
+# Add atomic operations for ARM.
+diff --git a/nsprpub/pr/include/md/_linux.h b/nsprpub/pr/include/md/_linux.h
+index 5b794c5..cb8d58e 100644
+--- a/nsprpub/pr/include/md/_linux.h
++++ b/nsprpub/pr/include/md/_linux.h
+@@ -194,6 +194,42 @@ extern PRInt32 _PR_x86_64_AtomicSet(PRInt32 *val, PRInt32 newval);
+ })
+ #endif
+
++#if defined(__arm__)
++#define _PR_HAVE_ATOMIC_OPS
++#define _MD_INIT_ATOMIC()
++
++typedef int (__kernel_cmpxchg_t)(int oldval, int newval, volatile int *ptr);
++#define __kernel_cmpxchg (*(__kernel_cmpxchg_t *)0xffff0fc0)
++
++#define _MD_ATOMIC_INCREMENT(ptr) _MD_ATOMIC_ADD(ptr, 1)
++#define _MD_ATOMIC_DECREMENT(ptr) _MD_ATOMIC_ADD(ptr, -1)
++#define _MD_ATOMIC_ADD(ptr, n) \
++ ({ \
++ PRInt32 ov, nv; \
++ volatile PRInt32 *vp = (ptr); \
++ \
++ do { \
++ ov = *vp; \
++ nv = ov + (n); \
++ } \
++ while (__kernel_cmpxchg(ov, nv, vp)); \
++ \
++ nv; \
++ })
++#define _MD_ATOMIC_SET(ptr, nv) \
++ ({ \
++ PRInt32 ov; \
++ volatile PRInt32 *vp = (ptr); \
++ \
++ do { \
++ ov = *vp; \
++ } \
++ while (__kernel_cmpxchg(ov, (nv), vp)); \
++ \
++ ov; \
++ })
++#endif
++
+ #define USE_SETJMP
+ #if defined(__GLIBC__) && __GLIBC__ >= 2
+ #define _PR_POLL_AVAILABLE