On Fri, Apr 22, 2016 at 11:04:23AM +0200, Peter Zijlstra wrote:
> +#define ATOMIC_FETCH_OP(op)                                          \
> +static inline int atomic_fetch_##op(int i, atomic_t *v)                      
> \
> +{                                                                    \
> +     int output, val;                                                \
> +                                                                     \
> +     __asm__ __volatile__ (                                          \
> +             "1:     %0 = memw_locked(%2);\n"                        \
> +             "       %1 = "#op "(%0,%3);\n"                          \
> +             "       memw_locked(%2,P3)=%0;\n"                       \

I'm thinking that wants to be:

                        memw_locked(%2,P3)=%1;

> +             "       if !P3 jump 1b;\n"                              \
> +             : "=&r" (output), "=&r" (val)                           \
> +             : "r" (&v->counter), "r" (i)                            \
> +             : "memory", "p3"                                        \
> +     );                                                              \
> +     return output;                                                  \
> +}

Reply via email to