Compare commits
3 Commits
da804296c6
...
9944f79b2e
Author | SHA1 | Date | |
---|---|---|---|
9944f79b2e | |||
773f55466e | |||
8203b36092 |
22
src/kernel.c
22
src/kernel.c
@ -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))
|
||||
;
|
||||
|
@ -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);
|
||||
|
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user