diff --git a/include/import/atomic-ops.h b/include/import/atomic-ops.h index 9d0e4f582..0081f9a69 100644 --- a/include/import/atomic-ops.h +++ b/include/import/atomic-ops.h @@ -78,7 +78,9 @@ ret; /* return value */ \ }) : ({ \ void __unsupported_argument_size_for_pl_inc__(char *,int); \ - __unsupported_argument_size_for_pl_inc__(__FILE__,__LINE__); \ + if (sizeof(*(ptr)) != 1 && sizeof(*(ptr)) != 2 && \ + sizeof(*(ptr)) != 4 && (sizeof(long) != 8 || sizeof(*(ptr)) != 8)) \ + __unsupported_argument_size_for_pl_inc__(__FILE__,__LINE__); \ 0; \ }) \ ) @@ -121,7 +123,9 @@ ret; /* return value */ \ }) : ({ \ void __unsupported_argument_size_for_pl_dec__(char *,int); \ - __unsupported_argument_size_for_pl_dec__(__FILE__,__LINE__); \ + if (sizeof(*(ptr)) != 1 && sizeof(*(ptr)) != 2 && \ + sizeof(*(ptr)) != 4 && (sizeof(long) != 8 || sizeof(*(ptr)) != 8)) \ + __unsupported_argument_size_for_pl_dec__(__FILE__,__LINE__); \ 0; \ }) \ ) @@ -150,7 +154,9 @@ : "cc"); \ } else { \ void __unsupported_argument_size_for_pl_inc_noret__(char *,int); \ - __unsupported_argument_size_for_pl_inc_noret__(__FILE__,__LINE__); \ + if (sizeof(*(ptr)) != 1 && sizeof(*(ptr)) != 2 && \ + sizeof(*(ptr)) != 4 && (sizeof(long) != 8 || sizeof(*(ptr)) != 8)) \ + __unsupported_argument_size_for_pl_inc_noret__(__FILE__,__LINE__); \ } \ }) @@ -178,7 +184,9 @@ : "cc"); \ } else { \ void __unsupported_argument_size_for_pl_dec_noret__(char *,int); \ - __unsupported_argument_size_for_pl_dec_noret__(__FILE__,__LINE__); \ + if (sizeof(*(ptr)) != 1 && sizeof(*(ptr)) != 2 && \ + sizeof(*(ptr)) != 4 && (sizeof(long) != 8 || sizeof(*(ptr)) != 8)) \ + __unsupported_argument_size_for_pl_dec_noret__(__FILE__,__LINE__); \ } \ }) @@ -208,7 +216,9 @@ : "cc"); \ } else { \ void __unsupported_argument_size_for_pl_add__(char *,int); \ - __unsupported_argument_size_for_pl_add__(__FILE__,__LINE__); \ + if (sizeof(*(ptr)) != 1 && sizeof(*(ptr)) != 2 && \ + sizeof(*(ptr)) != 4 && (sizeof(long) != 8 || sizeof(*(ptr)) != 8)) \ + __unsupported_argument_size_for_pl_add__(__FILE__,__LINE__); \ } \ }) @@ -238,7 +248,9 @@ : "cc"); \ } else { \ void __unsupported_argument_size_for_pl_sub__(char *,int); \ - __unsupported_argument_size_for_pl_sub__(__FILE__,__LINE__); \ + if (sizeof(*(ptr)) != 1 && sizeof(*(ptr)) != 2 && \ + sizeof(*(ptr)) != 4 && (sizeof(long) != 8 || sizeof(*(ptr)) != 8)) \ + __unsupported_argument_size_for_pl_sub__(__FILE__,__LINE__); \ } \ }) @@ -268,7 +280,9 @@ : "cc"); \ } else { \ void __unsupported_argument_size_for_pl_and__(char *,int); \ - __unsupported_argument_size_for_pl_and__(__FILE__,__LINE__); \ + if (sizeof(*(ptr)) != 1 && sizeof(*(ptr)) != 2 && \ + sizeof(*(ptr)) != 4 && (sizeof(long) != 8 || sizeof(*(ptr)) != 8)) \ + __unsupported_argument_size_for_pl_and__(__FILE__,__LINE__); \ } \ }) @@ -298,7 +312,9 @@ : "cc"); \ } else { \ void __unsupported_argument_size_for_pl_or__(char *,int); \ - __unsupported_argument_size_for_pl_or__(__FILE__,__LINE__); \ + if (sizeof(*(ptr)) != 1 && sizeof(*(ptr)) != 2 && \ + sizeof(*(ptr)) != 4 && (sizeof(long) != 8 || sizeof(*(ptr)) != 8)) \ + __unsupported_argument_size_for_pl_or__(__FILE__,__LINE__); \ } \ }) @@ -328,7 +344,9 @@ : "cc"); \ } else { \ void __unsupported_argument_size_for_pl_xor__(char *,int); \ - __unsupported_argument_size_for_pl_xor__(__FILE__,__LINE__); \ + if (sizeof(*(ptr)) != 1 && sizeof(*(ptr)) != 2 && \ + sizeof(*(ptr)) != 4 && (sizeof(long) != 8 || sizeof(*(ptr)) != 8)) \ + __unsupported_argument_size_for_pl_xor__(__FILE__,__LINE__); \ } \ }) @@ -363,7 +381,9 @@ ret; /* return value */ \ }) : ({ \ void __unsupported_argument_size_for_pl_bts__(char *,int); \ - __unsupported_argument_size_for_pl_bts__(__FILE__,__LINE__); \ + if (sizeof(*(ptr)) != 1 && sizeof(*(ptr)) != 2 && \ + sizeof(*(ptr)) != 4 && (sizeof(long) != 8 || sizeof(*(ptr)) != 8)) \ + __unsupported_argument_size_for_pl_bts__(__FILE__,__LINE__); \ 0; \ }) \ ) @@ -407,7 +427,9 @@ ret; /* return value */ \ }) : ({ \ void __unsupported_argument_size_for_pl_xadd__(char *,int); \ - __unsupported_argument_size_for_pl_xadd__(__FILE__,__LINE__); \ + if (sizeof(*(ptr)) != 1 && sizeof(*(ptr)) != 2 && \ + sizeof(*(ptr)) != 4 && (sizeof(long) != 8 || sizeof(*(ptr)) != 8)) \ + __unsupported_argument_size_for_pl_xadd__(__FILE__,__LINE__); \ 0; \ }) \ ) @@ -446,7 +468,9 @@ ret; /* return value */ \ }) : ({ \ void __unsupported_argument_size_for_pl_xchg__(char *,int); \ - __unsupported_argument_size_for_pl_xchg__(__FILE__,__LINE__); \ + if (sizeof(*(ptr)) != 1 && sizeof(*(ptr)) != 2 && \ + sizeof(*(ptr)) != 4 && (sizeof(long) != 8 || sizeof(*(ptr)) != 8)) \ + __unsupported_argument_size_for_pl_xchg__(__FILE__,__LINE__); \ 0; \ }) \ ) @@ -490,7 +514,9 @@ ret; /* return value */ \ }) : ({ \ void __unsupported_argument_size_for_pl_cmpxchg__(char *,int); \ - __unsupported_argument_size_for_pl_cmpxchg__(__FILE__,__LINE__); \ + if (sizeof(*(ptr)) != 1 && sizeof(*(ptr)) != 2 && \ + sizeof(*(ptr)) != 4 && (sizeof(long) != 8 || sizeof(*(ptr)) != 8)) \ + __unsupported_argument_size_for_pl_cmpxchg__(__FILE__,__LINE__); \ 0; \ }) \ ) diff --git a/include/import/plock.h b/include/import/plock.h index 40bf50bf7..22244c5a6 100644 --- a/include/import/plock.h +++ b/include/import/plock.h @@ -69,7 +69,8 @@ !__pl_r; /* return value */ \ }) : ({ \ void __unsupported_argument_size_for_pl_try_r__(char *,int); \ - __unsupported_argument_size_for_pl_try_r__(__FILE__,__LINE__); \ + if (sizeof(*(lock)) != 4 && (sizeof(long) != 8 || sizeof(*(lock)) != 8)) \ + __unsupported_argument_size_for_pl_try_r__(__FILE__,__LINE__); \ 0; \ }) \ ) @@ -89,7 +90,8 @@ pl_sub(lock, PLOCK32_RL_1); \ }) : ({ \ void __unsupported_argument_size_for_pl_drop_r__(char *,int); \ - __unsupported_argument_size_for_pl_drop_r__(__FILE__,__LINE__); \ + if (sizeof(*(lock)) != 4 && (sizeof(long) != 8 || sizeof(*(lock)) != 8)) \ + __unsupported_argument_size_for_pl_drop_r__(__FILE__,__LINE__); \ }) \ ) @@ -117,7 +119,8 @@ !__pl_r; /* return value */ \ }) : ({ \ void __unsupported_argument_size_for_pl_try_s__(char *,int); \ - __unsupported_argument_size_for_pl_try_s__(__FILE__,__LINE__); \ + if (sizeof(*(lock)) != 4 && (sizeof(long) != 8 || sizeof(*(lock)) != 8)) \ + __unsupported_argument_size_for_pl_try_s__(__FILE__,__LINE__); \ 0; \ }) \ ) @@ -137,7 +140,8 @@ pl_sub(lock, PLOCK32_SL_1 + PLOCK32_RL_1); \ }) : ({ \ void __unsupported_argument_size_for_pl_drop_s__(char *,int); \ - __unsupported_argument_size_for_pl_drop_s__(__FILE__,__LINE__); \ + if (sizeof(*(lock)) != 4 && (sizeof(long) != 8 || sizeof(*(lock)) != 8)) \ + __unsupported_argument_size_for_pl_drop_s__(__FILE__,__LINE__); \ }) \ ) @@ -149,7 +153,8 @@ pl_sub(lock, PLOCK32_SL_1); \ }) : ({ \ void __unsupported_argument_size_for_pl_stor__(char *,int); \ - __unsupported_argument_size_for_pl_stor__(__FILE__,__LINE__); \ + if (sizeof(*(lock)) != 4 && (sizeof(long) != 8 || sizeof(*(lock)) != 8)) \ + __unsupported_argument_size_for_pl_stor__(__FILE__,__LINE__); \ }) \ ) @@ -167,7 +172,8 @@ __pl_r = pl_deref_int(lock); \ }) : ({ \ void __unsupported_argument_size_for_pl_stow__(char *,int); \ - __unsupported_argument_size_for_pl_stow__(__FILE__,__LINE__); \ + if (sizeof(*(lock)) != 4 && (sizeof(long) != 8 || sizeof(*(lock)) != 8)) \ + __unsupported_argument_size_for_pl_stow__(__FILE__,__LINE__); \ }) \ ) @@ -179,7 +185,8 @@ pl_sub(lock, PLOCK32_WL_1); \ }) : ({ \ void __unsupported_argument_size_for_pl_wtos__(char *,int); \ - __unsupported_argument_size_for_pl_wtos__(__FILE__,__LINE__); \ + if (sizeof(*(lock)) != 4 && (sizeof(long) != 8 || sizeof(*(lock)) != 8)) \ + __unsupported_argument_size_for_pl_wtos__(__FILE__,__LINE__); \ }) \ ) @@ -191,7 +198,8 @@ pl_sub(lock, PLOCK32_WL_1 | PLOCK32_SL_1); \ }) : ({ \ void __unsupported_argument_size_for_pl_wtor__(char *,int); \ - __unsupported_argument_size_for_pl_wtor__(__FILE__,__LINE__); \ + if (sizeof(*(lock)) != 4 && (sizeof(long) != 8 || sizeof(*(lock)) != 8)) \ + __unsupported_argument_size_for_pl_wtor__(__FILE__,__LINE__); \ }) \ ) @@ -249,7 +257,8 @@ !__pl_r; /* return value */ \ }) : ({ \ void __unsupported_argument_size_for_pl_try_w__(char *,int); \ - __unsupported_argument_size_for_pl_try_w__(__FILE__,__LINE__); \ + if (sizeof(*(lock)) != 4 && (sizeof(long) != 8 || sizeof(*(lock)) != 8)) \ + __unsupported_argument_size_for_pl_try_w__(__FILE__,__LINE__); \ 0; \ }) \ ) @@ -269,7 +278,8 @@ pl_sub(lock, PLOCK32_WL_1 | PLOCK32_SL_1 | PLOCK32_RL_1); \ }) : ({ \ void __unsupported_argument_size_for_pl_drop_w__(char *,int); \ - __unsupported_argument_size_for_pl_drop_w__(__FILE__,__LINE__); \ + if (sizeof(*(lock)) != 4 && (sizeof(long) != 8 || sizeof(*(lock)) != 8)) \ + __unsupported_argument_size_for_pl_drop_w__(__FILE__,__LINE__); \ }) \ ) @@ -301,7 +311,8 @@ !__pl_r; /* return value */ \ }) : ({ \ void __unsupported_argument_size_for_pl_try_rtos__(char *,int); \ - __unsupported_argument_size_for_pl_try_rtos__(__FILE__,__LINE__); \ + if (sizeof(*(lock)) != 4 && (sizeof(long) != 8 || sizeof(*(lock)) != 8)) \ + __unsupported_argument_size_for_pl_try_rtos__(__FILE__,__LINE__); \ 0; \ }) \ ) @@ -352,7 +363,8 @@ !__pl_r; /* return value */ \ }) : ({ \ void __unsupported_argument_size_for_pl_try_a__(char *,int); \ - __unsupported_argument_size_for_pl_try_a__(__FILE__,__LINE__); \ + if (sizeof(*(lock)) != 4 && (sizeof(long) != 8 || sizeof(*(lock)) != 8)) \ + __unsupported_argument_size_for_pl_try_a__(__FILE__,__LINE__); \ 0; \ }) \ ) @@ -372,7 +384,8 @@ pl_sub(lock, PLOCK32_WL_1); \ }) : ({ \ void __unsupported_argument_size_for_pl_drop_a__(char *,int); \ - __unsupported_argument_size_for_pl_drop_a__(__FILE__,__LINE__); \ + if (sizeof(*(lock)) != 4 && (sizeof(long) != 8 || sizeof(*(lock)) != 8)) \ + __unsupported_argument_size_for_pl_drop_a__(__FILE__,__LINE__); \ }) \ ) @@ -421,7 +434,8 @@ !__pl_r; /* return value */ \ }) : ({ \ void __unsupported_argument_size_for_pl_try_rtoa__(char *,int); \ - __unsupported_argument_size_for_pl_try_rtoa__(__FILE__,__LINE__); \ + if (sizeof(*(lock)) != 4 && (sizeof(long) != 8 || sizeof(*(lock)) != 8)) \ + __unsupported_argument_size_for_pl_try_rtoa__(__FILE__,__LINE__); \ 0; \ }) \ )