[kaffe] CVS kaffe (robilad): Fixlet for gcc 2.9x
Kaffe CVS
cvs-commits at kaffe.org
Fri Apr 1 13:39:11 PST 2005
PatchSet 5640
Date: 2005/04/01 21:32:19
Author: robilad
Branch: HEAD
Tag: (none)
Log:
Fixlet for gcc 2.9x
2005-04-01 gian paolo ciceri <gp.ciceri at acm.org>
* config/katomic.h (__atomic_val_bysize, __atomic_bool_bysize):
Added versions for gcc 2.x variadic macro format.
Members:
ChangeLog:1.3810->1.3811
config/katomic.h:1.1->1.2
Index: kaffe/ChangeLog
diff -u kaffe/ChangeLog:1.3810 kaffe/ChangeLog:1.3811
--- kaffe/ChangeLog:1.3810 Fri Apr 1 20:37:33 2005
+++ kaffe/ChangeLog Fri Apr 1 21:32:19 2005
@@ -1,3 +1,8 @@
+2005-04-01 gian paolo ciceri <gp.ciceri at acm.org>
+
+ * config/katomic.h (__atomic_val_bysize, __atomic_bool_bysize):
+ Added versions for gcc 2.x variadic macro format.
+
2005-04-01 Supreet Sethi <supreet at linux-delhi.org>
* configure.ac: Check for uintmax_t and intmax_t.
Index: kaffe/config/katomic.h
diff -u kaffe/config/katomic.h:1.1 kaffe/config/katomic.h:1.2
--- kaffe/config/katomic.h:1.1 Sun Mar 20 20:30:37 2005
+++ kaffe/config/katomic.h Fri Apr 1 21:32:21 2005
@@ -26,6 +26,43 @@
/* Wrapper macros to call pre_NN_post (mem, ...) where NN is the
bit width of *MEM. The calling macro puts parens around MEM
and following args. */
+
+
+#if __GNUC__ == 2
+
+#define __atomic_val_bysize(pre, post, mem, args...) \
+ ({ \
+ __typeof (*mem) __result; \
+ if (sizeof (*mem) == 1) \
+ __result = pre##_8_##post (mem, args...); \
+ else if (sizeof (*mem) == 2) \
+ __result = pre##_16_##post (mem, args...); \
+ else if (sizeof (*mem) == 4) \
+ __result = pre##_32_##post (mem, args...); \
+ else if (sizeof (*mem) == 8) \
+ __result = pre##_64_##post (mem, args...); \
+ else \
+ abort (); \
+ __result; \
+ })
+#define __atomic_bool_bysize(pre, post, mem, args...) \
+ ({ \
+ int __result; \
+ if (sizeof (*mem) == 1) \
+ __result = pre##_8_##post (mem, args...); \
+ else if (sizeof (*mem) == 2) \
+ __result = pre##_16_##post (mem, args...); \
+ else if (sizeof (*mem) == 4) \
+ __result = pre##_32_##post (mem, args...); \
+ else if (sizeof (*mem) == 8) \
+ __result = pre##_64_##post (mem, args...); \
+ else \
+ abort (); \
+ __result; \
+ })
+
+#else
+
#define __atomic_val_bysize(pre, post, mem, ...) \
({ \
__typeof (*mem) __result; \
@@ -56,7 +93,10 @@
abort (); \
__result; \
})
-
+
+
+#endif
+
/* Atomically store NEWVAL in *MEM if *MEM is equal to OLDVAL.
Return the old *MEM value. */
More information about the kaffe
mailing list