git://scm.lunaixsky.com
/
lunaix-os.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
feat: spec-compliant AHCI HBA initialization
[lunaix-os.git]
/
lunaix-os
/
kernel
/
proc0.c
diff --git
a/lunaix-os/kernel/proc0.c
b/lunaix-os/kernel/proc0.c
index d1956795bc6713d37c7a97bdf49f7a95e8f3db6a..3a6ea62116aea40654d96c93ee97a39ac8c1167f 100644
(file)
--- a/
lunaix-os/kernel/proc0.c
+++ b/
lunaix-os/kernel/proc0.c
@@
-124,6
+124,7
@@
init_platform()
pci_init();
ahci_init();
pci_print_device();
pci_init();
ahci_init();
pci_print_device();
+ ahci_list_device();
syscall_install();
syscall_install();
@@
-174,6
+175,8
@@
__do_reserved_memory(int unlock)
break;
}
vmm_set_mapping(PD_REFERENCED, _pa, _pa, PG_PREM_R, VMAP_NULL);
break;
}
vmm_set_mapping(PD_REFERENCED, _pa, _pa, PG_PREM_R, VMAP_NULL);
+ pmm_mark_page_occupied(
+ KERNEL_PID, _pa >> PG_SIZE_BITS, PP_FGLOCKED);
}
// Save the progress for later unmapping.
mmaps[i].len_low = j * PG_SIZE;
}
// Save the progress for later unmapping.
mmaps[i].len_low = j * PG_SIZE;
@@
-181,6
+184,9
@@
__do_reserved_memory(int unlock)
for (; j < pg_num; j++) {
uintptr_t _pa = pa + (j << PG_SIZE_BITS);
vmm_del_mapping(PD_REFERENCED, _pa);
for (; j < pg_num; j++) {
uintptr_t _pa = pa + (j << PG_SIZE_BITS);
vmm_del_mapping(PD_REFERENCED, _pa);
+ if (mmap.type == MULTIBOOT_MEMORY_ACPI_RECLAIMABLE) {
+ pmm_mark_page_free(_pa >> PG_SIZE_BITS);
+ }
}
}
}
}
}
}