
When cnt reaches 0, any shift operation will keep cnt=0, so the condition `cnt >= 0` doesn't make sense.
To fix this endless loop, we drop the useless condition and simply break the loop when cnt reaches 0.
Signed-off-by: Eddy Petrișor eddy.petrisor@nxp.com --- common/memsize.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/common/memsize.c b/common/memsize.c index 5c0d279..a6af993 100644 --- a/common/memsize.c +++ b/common/memsize.c @@ -33,7 +33,7 @@ long get_ram_size(long *base, long maxsize) long size; int i = 0;
- for (cnt = (maxsize / sizeof(long)) >> 1; cnt >= 0; cnt >>= 1) { + for (cnt = (maxsize / sizeof(long)) >> 1; ; cnt >>= 1) { addr = base + cnt; /* pointer arith! */ sync(); save[i] = *addr; @@ -43,6 +43,7 @@ long get_ram_size(long *base, long maxsize) *addr = ~cnt; } else { *addr = 0; + break; } }