|
@@ -100,11 +100,12 @@ union bpf_attr;
|
|
|
#define __MAP(n,...) __MAP##n(__VA_ARGS__)
|
|
|
|
|
|
#define __SC_DECL(t, a) t a
|
|
|
-#define __TYPE_IS_L(t) (__same_type((t)0, 0L))
|
|
|
-#define __TYPE_IS_UL(t) (__same_type((t)0, 0UL))
|
|
|
-#define __TYPE_IS_LL(t) (__same_type((t)0, 0LL) || __same_type((t)0, 0ULL))
|
|
|
+#define __TYPE_AS(t, v) __same_type((__force t)0, v)
|
|
|
+#define __TYPE_IS_L(t) (__TYPE_AS(t, 0L))
|
|
|
+#define __TYPE_IS_UL(t) (__TYPE_AS(t, 0UL))
|
|
|
+#define __TYPE_IS_LL(t) (__TYPE_AS(t, 0LL) || __TYPE_AS(t, 0ULL))
|
|
|
#define __SC_LONG(t, a) __typeof(__builtin_choose_expr(__TYPE_IS_LL(t), 0LL, 0L)) a
|
|
|
-#define __SC_CAST(t, a) (t) a
|
|
|
+#define __SC_CAST(t, a) (__force t) a
|
|
|
#define __SC_ARGS(t, a) a
|
|
|
#define __SC_TEST(t, a) (void)BUILD_BUG_ON_ZERO(!__TYPE_IS_LL(t) && sizeof(t) > sizeof(long))
|
|
|
|