greybus: loopback: Fix warning on 32-bit build
authorAlexandre Bailon <abailon@baylibre.com>
Tue, 8 Mar 2016 15:37:36 +0000 (16:37 +0100)
committerGreg Kroah-Hartman <gregkh@google.com>
Thu, 10 Mar 2016 06:31:32 +0000 (22:31 -0800)
gb_loopback_ro_avg_attr() is using "/" to divide two 64-bit integer,
causing a reference to __aeabi_uldivmod() that is not availalbe on 32-bit.
Instead, use do_div().

Signed-off-by: Alexandre Bailon <abailon@baylibre.com>
Reviewed-by: Johan Hovold <johan@hovoldconsulting.com>
Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
drivers/staging/greybus/loopback.c

index ba6e12a3648ccd70951fae0be672e322bc38b1c3..75bff56b48c3ccb3c8ca357a8fb99af9b8b15c07 100644 (file)
@@ -164,7 +164,8 @@ static ssize_t name##_avg_show(struct device *dev,          \
        count = stats->count ? stats->count : 1;                        \
        avg = stats->sum;                                               \
        rem = do_div(avg, count);                                       \
-       rem = 1000000 * rem / count;                                    \
+       rem *= 1000000;                                                 \
+       do_div(rem, count);                                             \
        return sprintf(buf, "%llu.%06u\n", avg, (u32)rem);              \
 }                                                                      \
 static DEVICE_ATTR_RO(name##_avg)