#if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 2)
 
 #define __CS_LOOP(ptr, op_val, op_string) ({                           \
-       typeof(ptr->counter) old_val, new_val;                          \
+       int old_val, new_val;                                           \
        asm volatile(                                                   \
                "       l       %0,%2\n"                                \
                "0:     lr      %1,%0\n"                                \
 #else /* __GNUC__ */
 
 #define __CS_LOOP(ptr, op_val, op_string) ({                           \
-       typeof(ptr->counter) old_val, new_val;                          \
+       int old_val, new_val;                                           \
        asm volatile(                                                   \
                "       l       %0,0(%3)\n"                             \
                "0:     lr      %1,%0\n"                                \
 #if __GNUC__ > 3 || (__GNUC__ == 3 && __GNUC_MINOR__ > 2)
 
 #define __CSG_LOOP(ptr, op_val, op_string) ({                          \
-       typeof(ptr->counter) old_val, new_val;                          \
+       long long old_val, new_val;                                     \
        asm volatile(                                                   \
                "       lg      %0,%2\n"                                \
                "0:     lgr     %1,%0\n"                                \
 #else /* __GNUC__ */
 
 #define __CSG_LOOP(ptr, op_val, op_string) ({                          \
-       typeof(ptr->counter) old_val, new_val;                          \
+       long long old_val, new_val;                                     \
        asm volatile(                                                   \
                "       lg      %0,0(%3)\n"                             \
                "0:     lgr     %1,%0\n"                                \