[U-Boot-Users] [Q] memtest doubt
Guennadi Liakhovetski
g.liakhovetski at gmx.de
Thu Feb 7 00:48:54 CET 2008
Hi all,
looking through the common/cmd_mem.c::do_mem_mtest() function, I couldn't
understand the following place:
addr_mask = ((ulong)end - (ulong)start)/sizeof(vu_long);
...
for (offset = 1; (offset & addr_mask) != 0; offset <<= 1) {
start[offset] = pattern;
}
why (offset & addr_mask) != 0 and not just offset < addr_mask? Suppose
end = 0xbf;
start = 0;
addr_mask = 0x2f;
The loop will iterate over offset = 1, 2, 4, 8, and on 0x10 it will abort
and 0x10 and 0x20 will stay untested. Whereas if we just had "offset <
addr_mask" it would just function correctly, wouldn't it? Yes, I do
realise, that it is at least unusual to set the end address to anything
other than start address + ((1 << x) - 1), but still.
Thanks
Guennadi
---
Guennadi Liakhovetski
More information about the U-Boot
mailing list