X-Git-Url: http://git.mutantstargoat.com/user/nuclear/?p=bootcensus;a=blobdiff_plain;f=src%2Fmem.c;fp=src%2Fmem.c;h=4125fe40170b3f7cb0a113a1cae4e67d2b8cffcc;hp=95562b34b560f2c56a432bc07a02ecfbe591dbb1;hb=c1a6b9caf99005e0496f51d07b727ac73d09e3fd;hpb=3cb6f9dad7e37db865bd3cbccf0b5d6471fdd73f diff --git a/src/mem.c b/src/mem.c index 95562b3..4125fe4 100644 --- a/src/mem.c +++ b/src/mem.c @@ -120,14 +120,17 @@ void init_mem(void) } printf("Total usable RAM: %u.%u %s\n", total, 100 * rem / 1024, suffix[i]); - bmsize = max_pg / 8; /* size of the useful bitmap in bytes */ + /* size of the useful part of the bitmap in bytes padded to 4-byte + * boundaries to allow 32bit at a time operations. + */ + bmsize = (max_pg / 32 + 1) * 4; - /* mark all pages occupied by the bitmap as usef */ + /* mark all pages occupied by the bitmap as used */ used_end = (uint32_t)bitmap + bmsize - 1; - printf("marking pages up to %x (page: %d) as used\n", used_end, ADDR_TO_PAGE(used_end)); - - for(i=0; i<=used_end; i++) { + max_pg = ADDR_TO_PAGE(used_end); + printf("marking pages up to %x (page: %d) as used\n", used_end, max_pg); + for(i=0; i<=max_pg; i++) { mark_page(i, USED); } }