|
@@ -40,23 +40,23 @@ static void __init reserve_bad_mem(u64 pattern, u64 start_bad, u64 end_bad)
|
|
|
|
|
|
static void __init memtest(u64 pattern, u64 start_phys, u64 size)
|
|
|
{
|
|
|
- u64 i, count;
|
|
|
- u64 *start;
|
|
|
+ u64 *p;
|
|
|
+ void *start, *end;
|
|
|
u64 start_bad, last_bad;
|
|
|
u64 start_phys_aligned;
|
|
|
size_t incr;
|
|
|
|
|
|
incr = sizeof(pattern);
|
|
|
start_phys_aligned = ALIGN(start_phys, incr);
|
|
|
- count = (size - (start_phys_aligned - start_phys))/incr;
|
|
|
start = __va(start_phys_aligned);
|
|
|
+ end = start + size - (start_phys_aligned - start_phys);
|
|
|
start_bad = 0;
|
|
|
last_bad = 0;
|
|
|
|
|
|
- for (i = 0; i < count; i++)
|
|
|
- start[i] = pattern;
|
|
|
- for (i = 0; i < count; i++, start++, start_phys_aligned += incr) {
|
|
|
- if (*start == pattern)
|
|
|
+ for (p = start; p < end; p++)
|
|
|
+ *p = pattern;
|
|
|
+ for (p = start; p < end; p++, start_phys_aligned += incr) {
|
|
|
+ if (*p == pattern)
|
|
|
continue;
|
|
|
if (start_phys_aligned == last_bad + incr) {
|
|
|
last_bad += incr;
|