Can vmap unaligned paddrs
[akaros.git] / kern / include / ros / common.h
index eb9c72f..377e96d 100644 (file)
@@ -34,7 +34,7 @@ typedef unsigned long uintreg_t;
 #define PiB    1125899906842624ull
 #define EiB    1152921504606846976ull
 
-#define ALIGNED(p, a)  (!(((uintptr)(p)) & ((a)-1)))
+#define ALIGNED(p, a)  (!(((uintptr_t)(p)) & ((a)-1)))
 
 #define ARRAY_SIZE(x) (sizeof((x))/sizeof((x)[0]))
 
@@ -90,6 +90,7 @@ typedef unsigned long uintreg_t;
        __b;                                                                       \
 })
 
+#define DIV_ROUND_UP(n,d) (((n) + (d) - 1) / (d))
 // Return the integer logarithm of the value provided rounded down
 static inline uintptr_t LOG2_DOWN(uintptr_t value)
 {
@@ -140,10 +141,6 @@ static inline bool mult_will_overflow_u64(uint64_t a, uint64_t b)
  * http://lwn.net/Articles/508991/ for more info. */
 #define ACCESS_ONCE(x) (*(volatile typeof(x) *)&(x))
 
-// Ivy currently can only handle 63 bits (OCaml thing), so use this to make
-// a uint64_t programatically
-#define UINT64(upper, lower) ( (((uint64_t)(upper)) << 32) | (lower) )
-
 /* Makes sure func is run exactly once.  Can handle concurrent callers, and
  * other callers spin til the func is complete. */
 #define run_once(func)                                                         \