Compare commits

...

3 Commits

Author SHA1 Message Date
9944f79b2e fix: last page of the pt is now usable 2024-11-26 14:17:04 +01:00
773f55466e add: memory test 2024-11-26 14:16:46 +01:00
8203b36092 fix: remove imcomplete page 2024-11-26 14:16:24 +01:00
3 changed files with 21 additions and 6 deletions

View File

@ -69,11 +69,25 @@ void kernel_main(multiboot_info_t *mbd, uint32_t magic)
// PRINT_PTR(alloc_frame());
if (false) {
void *ptr;
while ((ptr = alloc_pages(PAGE_SIZE * 1))) {
if (ptr)
memset(ptr, ~0, PAGE_SIZE * 1);
void *start = alloc_pages(1);
int *ptr;
uint32_t i;
for (i = 1; (ptr = alloc_pages(PAGE_SIZE)); i++) {
*ptr = i;
if (i == 4096)
break;
}
uint16_t bozo = 0;
for (uint32_t j = 1; j < i - 1; j++) {
ptr = start + j * PAGE_SIZE;
if (*ptr != j) {
bozo++;
if (bozo == 12)
break;
}
kprintf("j=%d %p: %d\n", j, ptr, *ptr);
}
} else {
while (vmalloc(10))
;

View File

@ -90,7 +90,8 @@ static void add_frame_node(multiboot_memory_map_t *mmmt)
*/
if (KERNEL_START <= start_addr && KERNEL_END > start_addr &&
KERNEL_END <= end_addr) {
len = len - (KERNEL_END - start_addr);
len = ROUND_CEIL(len - (KERNEL_END - start_addr), PAGE_SIZE) -
PAGE_SIZE; // cringe but ROUND_FLOOR is un poquito crampte
start_addr = ROUND_CEIL(KERNEL_END, PAGE_SIZE);
}
end_addr = ROUND_CEIL(start_addr + len, PAGE_SIZE);

View File

@ -17,7 +17,7 @@ static int16_t find_next_block(size_t nb_pages, uint16_t *pd_index_ptr,
}
*page_table_ptr =
(uint32_t *)GET_PAGE_ADDR(0, *pd_index_ptr + PT_START);
for (uint16_t i = 0; i + nb_pages < PT_SIZE; i++) {
for (uint16_t i = 0; i + nb_pages - 1 < PT_SIZE; i++) {
uint16_t j;
for (j = 0; (*page_table_ptr)[i + j] >> 12 == i + j &&
j < nb_pages;