From fffa27d2696c8c40829728eec531a7d8dbc3876b Mon Sep 17 00:00:00 2001 From: Lioncash Date: Fri, 23 Feb 2018 20:29:11 -0500 Subject: [PATCH] osdep: MSVC-compatible alignment macros --- qemu/include/qemu/osdep.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/qemu/include/qemu/osdep.h b/qemu/include/qemu/osdep.h index 49a4bb0a..8bdf4069 100644 --- a/qemu/include/qemu/osdep.h +++ b/qemu/include/qemu/osdep.h @@ -147,6 +147,19 @@ /* Check if n is a multiple of m */ #define QEMU_IS_ALIGNED(n, m) (((n) % (m)) == 0) +/* Unfortunately MSVC compatibility means explicit casting */ +#ifdef _MSC_VER +/* n-byte align pointer down */ +#define QEMU_ALIGN_PTR_DOWN(p, n) \ + (QEMU_ALIGN_DOWN((uintptr_t)(p), (n))) + +/* n-byte align pointer up */ +#define QEMU_ALIGN_PTR_UP(p, n) \ + (QEMU_ALIGN_UP((uintptr_t)(p), (n))) + +/* Check if pointer p is n-bytes aligned */ +#define QEMU_PTR_IS_ALIGNED(p, n) QEMU_IS_ALIGNED((uintptr_t)(p), (n)) +#else /* n-byte align pointer down */ #define QEMU_ALIGN_PTR_DOWN(p, n) \ ((typeof(p))QEMU_ALIGN_DOWN((uintptr_t)(p), (n))) @@ -157,6 +170,7 @@ /* Check if pointer p is n-bytes aligned */ #define QEMU_PTR_IS_ALIGNED(p, n) QEMU_IS_ALIGNED((uintptr_t)(p), (n)) +#endif #ifndef ROUND_UP #define ROUND_UP(n,d) (((n) + (d) - 1) & -(d))