}
// Align functions, from http://stackoverflow.com/questions/4840410/how-to-align-a-pointer-in-c
-#define ALIGN_UP(n, align) ((((int64_t)n) + ((int64_t)align)-1) & -((int64_t)align))
-#define ALIGN_DOWN(n, align) (((int64_t)n) & -((int64_t)align))
+#define ALIGN_UP(n, align) (((int64_t)(n) + (int64_t)(align) - 1) & -(int64_t)(align))
+#define ALIGN_DOWN(n, align) ((int64_t)(n) & -(int64_t)(align))
constexpr unsigned PAGE_SIZE = 0x1000;
constexpr unsigned HUGE_PAGE_SIZE = 1U << 21;