----- On May 14, 2019, at 4:42 PM, Mathieu Desnoyers 
mathieu.desnoy...@efficios.com wrote:

[...]
> 
> #define _$prefix$bt_bitfield_write_be(_ptr, type, _start, _length, _vtype, _v)
> \\
> do {                                                                  \\
> -     _vtype __v = (_v);                                      \\
> +     _vtype __v = (_v);                                              \\
>       type *__ptr = CAST_PTR(type *, _ptr);                           \\
>       unsigned long __start = (_start), __length = (_length);         \\
>       type mask, cmask;                                               \\
> @@ -740,15 +859,15 @@ do {                                                    
>                 \\
>                                                                       \\
>       /* Trim v high bits */                                          \\
>       if (__length < sizeof(__v) * CHAR_BIT)                          \\
> -             __v &= ~((~(_vtype) 0) << __length);                    \\
> +             __v &= _$prefix$bt_make_mask(_vtype, __length);         \\
>                                                                       \\
>       /* We can now append v with a simple "or", shift it piece-wise */ \\
>       this_unit = end_unit - 1;                                       \\
>       if (start_unit == end_unit - 1) {                               \\
> -             mask = ~((~(type) 0) << ((ts - (end % ts)) % ts));      \\
> +             mask = _$prefix$bt_make_mask(type, (ts - (end % ts)) % ts); \\
>               if (__start % ts)                                       \\
> -                     mask |= (~((type) 0)) << (ts - (__start % ts)); \\
> -             cmask = (type) __v << ((ts - (end % ts)) % ts);         \\
> +                     mask |= _$prefix$bt_make_mask_complement(type, ts - 
> (__start % ts)); \\
> +             cmask = _$prefix$bt_lshift(type, (type) (__v), (ts - (end % 
> ts)) % ts); \\
>               cmask &= ~mask;                                         \\
>               __ptr[this_unit] &= mask;                               \\
>               __ptr[this_unit] |= cmask;                              \\
> @@ -756,8 +875,8 @@ do {                                                      
>                 \\
>       }                                                               \\
>       if (end % ts) {                                                 \\
>               cshift = end % ts;                                      \\
> -             mask = ~((~(type) 0) << (ts - cshift));                 \\
> -             cmask = (type) __v << (ts - cshift);                    \\
> +             mask = _$prefix$bt_make_mask(type, ts - cshift);        \\
> +             cmask = _$prefix$bt_lshift(type, (type) (__v), ts - cshift); \\
>               cmask &= ~mask;                                         \\
>               __ptr[this_unit] &= mask;                               \\
>               __ptr[this_unit] |= cmask;                              \\
> @@ -771,7 +890,7 @@ do {                                                      
>                 \\
>               end -= ts;                                              \\
>       }                                                               \\
>       if (__start % ts) {                                             \\
> -             mask = (~(type) 0) << (ts - (__start % ts));            \\
> +             mask = _$prefix$bt_make_mask(type, ts - (__start % ts)); \\

Should be:

+               mask = _$prefix$bt_make_mask_complement(type, ts - (__start % 
ts)); \\

Will send an updated patch.

Mathieu

-- 
Mathieu Desnoyers
EfficiOS Inc.
http://www.efficios.com
_______________________________________________
lttng-dev mailing list
lttng-dev@lists.lttng.org
https://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev

Reply via email to