Adds round-down to the nearest power of 2
authorBarret Rhoden <brho@cs.berkeley.edu>
Fri, 6 Sep 2013 01:36:47 +0000 (18:36 -0700)
committerBarret Rhoden <brho@cs.berkeley.edu>
Thu, 12 Sep 2013 00:45:32 +0000 (17:45 -0700)
Can also use the Xen macros, if you're interested (__RD32).

kern/include/ros/common.h

index 46d2fa9..20fec9d 100644 (file)
@@ -102,6 +102,11 @@ static inline uintptr_t ROUNDUPPWR2(uintptr_t value)
        return 1 << LOG2_UP(value);
 }
 
+static inline uintptr_t ROUNDDOWNPWR2(uintptr_t value)
+{
+       return 1 << LOG2_DOWN(value);
+}
+
 /* We wraparound if UINT_MAX < a * b, which is also UINT_MAX / a < b. */
 static inline bool mult_will_overflow_u64(uint64_t a, uint64_t b)
 {