summaryrefslogtreecommitdiff
path: root/recipes/mozilla/firefox-3.5.2/Bug405992.atomic.nspr.diff
diff options
context:
space:
mode:
authorGraeme Gregory <dp@xora.org.uk>2009-08-18 14:52:06 +0100
committerGraeme Gregory <dp@xora.org.uk>2009-08-18 14:52:06 +0100
commit3942e499aea0ea4b64ca53fdc06a9495bf4fd503 (patch)
tree782893c3e64229ef1f49536ce2102638947d4b29 /recipes/mozilla/firefox-3.5.2/Bug405992.atomic.nspr.diff
parent3de2a694e2cdd17bf741c7b70a72ed7026b8d501 (diff)
firefox_3.5.2.bb : add newest version of firefox
Diffstat (limited to 'recipes/mozilla/firefox-3.5.2/Bug405992.atomic.nspr.diff')
-rw-r--r--recipes/mozilla/firefox-3.5.2/Bug405992.atomic.nspr.diff48
1 files changed, 48 insertions, 0 deletions
diff --git a/recipes/mozilla/firefox-3.5.2/Bug405992.atomic.nspr.diff b/recipes/mozilla/firefox-3.5.2/Bug405992.atomic.nspr.diff
new file mode 100644
index 0000000000..f54f916a6a
--- /dev/null
+++ b/recipes/mozilla/firefox-3.5.2/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