summaryrefslogtreecommitdiff
path: root/kexec/kexec.c
diff options
context:
space:
mode:
authorZhang Yanfei <zhangyanfei@cn.fujitsu.com>2013-03-15 17:46:35 +0800
committerSimon Horman <horms@verge.net.au>2013-03-15 16:51:02 +0100
commit56af4f566a637b8dd78a8d4ea8624e3d27645e6e (patch)
treea8a120370c50ceda5ee1c2ddb4a14c2cc199d1f7 /kexec/kexec.c
parent337d4fcbdc45e61cab28f8ba6da49015cca5c8d0 (diff)
kexec: use _ALIGN* to make the logic clear
By replacing all the explicit align opertion with marco _ALIGN*, the code logic could more clear. Signed-off-by: Zhang Yanfei <zhangyanfei@cn.fujitsu.com> Signed-off-by: Simon Horman <horms@verge.net.au>
Diffstat (limited to 'kexec/kexec.c')
-rw-r--r--kexec/kexec.c15
1 files changed, 7 insertions, 8 deletions
diff --git a/kexec/kexec.c b/kexec/kexec.c
index 494c5b3..f3928af 100644
--- a/kexec/kexec.c
+++ b/kexec/kexec.c
@@ -257,8 +257,7 @@ unsigned long locate_hole(struct kexec_info *info,
if (start < hole_min) {
start = hole_min;
}
- start = (start + hole_align - 1) &
- ~((unsigned long long)hole_align - 1);
+ start = _ALIGN(start, hole_align);
if (end > mem_max) {
end = mem_max;
}
@@ -276,8 +275,8 @@ unsigned long locate_hole(struct kexec_info *info,
hole_base = start;
break;
} else {
- hole_base = (end - hole_size) &
- ~((unsigned long long)hole_align - 1);
+ hole_base = _ALIGN_DOWN(end - hole_size,
+ hole_align);
}
}
}
@@ -313,7 +312,7 @@ void add_segment_phys_virt(struct kexec_info *info,
/* Round memsz up to a multiple of pagesize */
pagesize = getpagesize();
- memsz = (memsz + (pagesize - 1)) & ~(pagesize - 1);
+ memsz = _ALIGN(memsz, pagesize);
/* Verify base is pagesize aligned.
* Finding a way to cope with this problem
@@ -363,7 +362,7 @@ unsigned long add_buffer_phys_virt(struct kexec_info *info,
/* Round memsz up to a multiple of pagesize */
pagesize = getpagesize();
- memsz = (memsz + (pagesize - 1)) & ~(pagesize - 1);
+ memsz = _ALIGN(memsz, pagesize);
base = locate_hole(info, memsz, buf_align, buf_min, buf_max, buf_end);
if (base == ULONG_MAX) {
@@ -457,8 +456,8 @@ int add_backup_segments(struct kexec_info *info, unsigned long backup_base,
return -1;
if (!find_segment_hole(info, &bkseg_base, &bkseg_size))
break;
- start = (bkseg_base + pagesize - 1) & ~(pagesize - 1);
- end = (bkseg_base + bkseg_size) & ~(pagesize - 1);
+ start = _ALIGN(bkseg_base, pagesize);
+ end = _ALIGN_DOWN(bkseg_base + bkseg_size, pagesize);
add_segment_phys_virt(info, NULL, 0,
start, end-start, 0);
mem_size = mem_base + mem_size - \