extern void __put_user_4(void);
 extern void __put_user_8(void);
 
-#define __put_user_x(size, x, ptr)                             \
+#define __put_user_x(size, x, ptr, __ret_pu)                   \
        asm volatile("call __put_user_" #size : "=a" (__ret_pu) \
                     :"0" ((typeof(*(ptr)))(x)), "c" (ptr) : "ebx")
 
-#define __put_user_8(x, ptr)                                   \
+#define __put_user_8(x, ptr, __ret_pu)                         \
        asm volatile("call __put_user_8" : "=a" (__ret_pu)      \
                     : "A" ((typeof(*(ptr)))(x)), "c" (ptr) : "ebx")
 
        __pu_val = x;                                           \
        switch (sizeof(*(ptr))) {                               \
        case 1:                                                 \
-               __put_user_x(1, __pu_val, ptr);                 \
+               __put_user_x(1, __pu_val, ptr, __ret_pu);       \
                break;                                          \
        case 2:                                                 \
-               __put_user_x(2, __pu_val, ptr);                 \
+               __put_user_x(2, __pu_val, ptr, __ret_pu);       \
                break;                                          \
        case 4:                                                 \
-               __put_user_x(4, __pu_val, ptr);                 \
+               __put_user_x(4, __pu_val, ptr, __ret_pu);       \
                break;                                          \
        case 8:                                                 \
-               __put_user_8(__pu_val, ptr);                    \
+               __put_user_8(__pu_val, ptr, __ret_pu);          \
                break;                                          \
        default:                                                \
-               __put_user_x(X, __pu_val, ptr);                 \
+               __put_user_x(X, __pu_val, ptr, __ret_pu);       \
                break;                                          \
        }                                                       \
        __ret_pu;                                               \