[FreeBSD] Do a bit of optimization on drm_order()
authorRobert Noland <rnoland@2hip.net>
Fri, 3 Oct 2008 17:56:50 +0000 (13:56 -0400)
committerRobert Noland <rnoland@2hip.net>
Fri, 3 Oct 2008 17:56:50 +0000 (13:56 -0400)
bsd-core/drm_bufs.c

index c9b5dc4..60f57cf 100644 (file)
@@ -1099,11 +1099,12 @@ int drm_mapbufs(struct drm_device *dev, void *data, struct drm_file *file_priv)
 int drm_order(unsigned long size)
 {
        int order;
-       unsigned long tmp;
 
-       for (order = 0, tmp = size; tmp >>= 1; ++order);
+       if (size == 0)
+               return 0;
 
-       if (size & ~(1 << order))
+       order = ffsl(size) - 1;
+       if (size & ~(1ul << order))
                ++order;
 
        return order;