Hi,
On Fri, 9 Sep 2005, john stultz wrote:
> +/* Required to safely shift negative values */
> +#define shiftR(x, s) ({ __typeof__(x) __x = x;\
> + __typeof__(s) __s = s; \
> + (__x < 0) ? (-((-__x) >> (__s))) : ((__x) >> (__s));})
> +
Some parenthesis are missing and some are redundant. Formatting it so it
looks more like normal function makes it more readable:
#define shiftR(x, s) ({ \
__typeof__(x) __x = (x); \
__typeof__(s) __s = (s); \
__x < 0 ? -(-__x >> __s) : __x >> __s; \
})
> @@ -792,13 +769,8 @@ static void update_wall_time_one_tick(vo
> * advance the tick more.
> */
> time_phase += time_adj;
> - if (time_phase <= -FINENSEC) {
> - long ltemp = -time_phase >> (SHIFT_SCALE - 10);
> - time_phase += ltemp << (SHIFT_SCALE - 10);
> - delta_nsec -= ltemp;
> - }
> - else if (time_phase >= FINENSEC) {
> - long ltemp = time_phase >> (SHIFT_SCALE - 10);
> + if (abs(time_phase) >= FINENSEC) {
> + long ltemp = shiftR(time_phase, (SHIFT_SCALE - 10));
> time_phase -= ltemp << (SHIFT_SCALE - 10);
> delta_nsec += ltemp;
> }
It would be interesting to check, whether gcc produces the same code here.
bye, Roman
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/
[Index of Archives]
[Kernel Newbies]
[Netfilter]
[Bugtraq]
[Photo]
[Gimp]
[Yosemite News]
[MIPS Linux]
[ARM Linux]
[Linux Security]
[Linux RAID]
[Video 4 Linux]
[Linux for the blind]
|
|