#
58353b38 |
|
02-Oct-2020 |
Jérôme Duval <jerome.duval@gmail.com> |
kernel/x86_64: LA57 aka 5-level paging this enables the kernel to correctly take over when the bootloader prepares the paging in 4-level or 5-level. Change-Id: I0444486d8e17aade574e2afe255a3c2cfc49f21f Reviewed-on: https://review.haiku-os.org/c/haiku/+/3551 Reviewed-by: Adrien Destugues <pulkomandy@gmail.com> Reviewed-by: Axel Dörfler <axeld@pinc-software.de>
|
#
b20eb413 |
|
29-May-2014 |
Paweł Dziepak <pdziepak@quarnos.org> |
kernel/x86_64: help gcc with devirtualization This patch gets rid of some indirect calls in the paging code.
|
#
fb010e29 |
|
29-May-2014 |
Paweł Dziepak <pdziepak@quarnos.org> |
kernel/x86_64: use C++11 atomics in X86PagingMethod64Bit
|
#
077c84eb |
|
05-Nov-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: atomic_*() functions rework * No need for the atomically changed variables to be declared as volatile. * Drop support for atomically getting and setting unaligned data. * Introduce atomic_get_and_set[64]() which works the same as atomic_set[64]() used to. atomic_set[64]() does not return the previous value anymore.
|
#
966f2076 |
|
06-Mar-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
x86: enable data execution prevention Set execute disable bit for any page that belongs to area with neither B_EXECUTE_AREA nor B_KERNEL_EXECUTE_AREA set. In order to take advanage of NX bit in 32 bit protected mode PAE must be enabled. Thus, from now on it is also enabled when the CPU supports NX bit. vm_page_fault() takes additional argument which indicates whether page fault was caused by an illegal instruction fetch.
|
#
5e0c3db2 |
|
22-Mar-2013 |
Alex Smith <alex@alex-smith.me.uk> |
Account for the physical map area in the kernel VM space. Fixes #9547. The physical memory map area was not included in the kernel virtual address space range (it was below KERNEL_BASE). This caused problems if an I/O operation took place on physical memory mapped there (the bad address error seen in #9547 was occurring in lock_memory_etc()). Changed KERNEL_BASE and KERNEL_SIZE to cover the area and add a null area that covers all of it. Also changed X86VMTranslationMap64Bit to handle large pages in Query(), as the physical map area uses large pages.
|
#
e276cc04 |
|
05-Jul-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Finished implementation of x86_64 paging. * vm_init now runs up until create_preloaded_image_areas(), which needs fixing to handle ELF64. * Not completely tested. I know Map(), Unmap() and Query() work fine, the other methods have not been tested as the kernel doesn't boot far enough for any of them to be called yet. As far as I know they're correct, though. * Not yet implemented the destructor for X86VMTranslationMap64Bit or Init() for a user address space.
|
#
950b24e3 |
|
04-Jul-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Begun work on VMTranslationMap implementation for x86_64. * Added empty source files for all the 64-bit paging method code, and a stub implementation of X86PagingMethod64Bit. * arch_vm_translation_map.cpp has been modified to use X86PagingMethod64Bit on x86_64.
|
#
b20eb413cd5afe7d879235b4553deeaab4ee5ed0 |
|
29-May-2014 |
Paweł Dziepak <pdziepak@quarnos.org> |
kernel/x86_64: help gcc with devirtualization This patch gets rid of some indirect calls in the paging code.
|
#
fb010e297f7581a6c8e27defd53775ff481a7f78 |
|
29-May-2014 |
Paweł Dziepak <pdziepak@quarnos.org> |
kernel/x86_64: use C++11 atomics in X86PagingMethod64Bit
|
#
077c84eb27b25430428d356f3d13afabc0cc0d13 |
|
05-Nov-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel: atomic_*() functions rework * No need for the atomically changed variables to be declared as volatile. * Drop support for atomically getting and setting unaligned data. * Introduce atomic_get_and_set[64]() which works the same as atomic_set[64]() used to. atomic_set[64]() does not return the previous value anymore.
|
#
966f207668d19610dae34d5331150e3742815bcf |
|
06-Mar-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
x86: enable data execution prevention Set execute disable bit for any page that belongs to area with neither B_EXECUTE_AREA nor B_KERNEL_EXECUTE_AREA set. In order to take advanage of NX bit in 32 bit protected mode PAE must be enabled. Thus, from now on it is also enabled when the CPU supports NX bit. vm_page_fault() takes additional argument which indicates whether page fault was caused by an illegal instruction fetch.
|
#
5e0c3db2867defa76df0e83fd74a9a39e0dd622b |
|
22-Mar-2013 |
Alex Smith <alex@alex-smith.me.uk> |
Account for the physical map area in the kernel VM space. Fixes #9547. The physical memory map area was not included in the kernel virtual address space range (it was below KERNEL_BASE). This caused problems if an I/O operation took place on physical memory mapped there (the bad address error seen in #9547 was occurring in lock_memory_etc()). Changed KERNEL_BASE and KERNEL_SIZE to cover the area and add a null area that covers all of it. Also changed X86VMTranslationMap64Bit to handle large pages in Query(), as the physical map area uses large pages.
|
#
e276cc0457a4ddb3f137504e220ee5e839f132d4 |
|
05-Jul-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Finished implementation of x86_64 paging. * vm_init now runs up until create_preloaded_image_areas(), which needs fixing to handle ELF64. * Not completely tested. I know Map(), Unmap() and Query() work fine, the other methods have not been tested as the kernel doesn't boot far enough for any of them to be called yet. As far as I know they're correct, though. * Not yet implemented the destructor for X86VMTranslationMap64Bit or Init() for a user address space.
|
#
950b24e32d8ddbc0d2a4e46de77c0fb4cc18b128 |
|
04-Jul-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Begun work on VMTranslationMap implementation for x86_64. * Added empty source files for all the 64-bit paging method code, and a stub implementation of X86PagingMethod64Bit. * arch_vm_translation_map.cpp has been modified to use X86PagingMethod64Bit on x86_64.
|