summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorZhang Yanfei <zhangyanfei@cn.fujitsu.com>2013-03-14 01:19:13 +0800
committerSimon Horman <horms@verge.net.au>2013-03-14 09:39:06 +0100
commit9ea6e0577b67febf117c8340d4bb69fa8bf24554 (patch)
tree2b4af545daf53370fa7427aa16f09e8804a178fc
parent5db7ba5dbc87daf361397ac727f146e0565db1a9 (diff)
downloadkexec-tools-9ea6e0577b67febf117c8340d4bb69fa8bf24554.tar.gz
kexec: add _ALIGN* marcos for align operation
This patch imports Macros for align operation: - _ALIGN_UP(addr, size): align addr up on a size boundary - _ALIGN_DOWN(addr, size): align addr down on a size boundary - _ALIGN(addr, size): align addr up on a size boundary Signed-off-by: Zhang Yanfei <zhangyanfei@cn.fujitsu.com> Signed-off-by: Simon Horman <horms@verge.net.au>
-rw-r--r--kexec/kexec.h12
1 files changed, 12 insertions, 0 deletions
diff --git a/kexec/kexec.h b/kexec/kexec.h
index 94c62c19..916a24be 100644
--- a/kexec/kexec.h
+++ b/kexec/kexec.h
@@ -100,6 +100,18 @@ do { \
} \
} while(0)
+#define _ALIGN_UP_MASK(addr, mask) (((addr) + (mask)) & ~(mask))
+#define _ALIGN_DOWN_MASK(addr, mask) ((addr) & ~(mask))
+
+/* align addr on a size boundary - adjust address up/down if needed */
+#define _ALIGN_UP(addr, size) \
+ _ALIGN_UP_MASK(addr, (typeof(addr))(size) - 1)
+#define _ALIGN_DOWN(addr, size) \
+ _ALIGN_DOWN_MASK(addr, (typeof(addr))(size) - 1)
+
+/* align addr on a size boundary - adjust address up if needed */
+#define _ALIGN(addr, size) _ALIGN_UP(addr, size)
+
extern unsigned long long mem_min, mem_max;
extern int kexec_debug;