#
819824e0 |
|
26-Jan-2014 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel/{x86, vm}: Add more error checks in VM initialization
|
#
02749e24 |
|
10-Dec-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
x86/paging: Do not use array placement new Array placement new has implementation defined memory overhead what makes it pretty useless.
|
#
e052b3e6 |
|
05-Dec-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
x86/paging: Remove unusued local variable
|
#
5f379892 |
|
05-Dec-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
x86/paging: Use ROUNUP() to compute the number of initial slots
|
#
2e3cbcfa |
|
01-Dec-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
x86: Allocate as much initial physical page pools as needed
|
#
d1f280c8 |
|
01-Apr-2012 |
Hamish Morrison <hamishm53@gmail.com> |
Add support for pthread_attr_get/setguardsize() * Added the aforementioned functions. * create_area_etc() now takes a guard size parameter. * The thread_info::stack_base/end range now refers to the usable range only.
|
#
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.
|
#
4e8fbfb2 |
|
03-Jul-2012 |
Alex Smith <alex@alex-smith.me.uk> |
x86_{read,write}_cr{0,4} can just be implemented as macros, put an x86_ prefix on the other read/write macros for consistency.
|
#
e5fc2bfc |
|
26-Jun-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Implemented long mode setup/switch code, the bootloader can now start the 64-bit kernel! The setup procedure is fairly simple: create a 64-bit GDT and 64-bit page tables that include all kernel mappings from the 32-bit address space, but at the correct 64-bit address, then go through kernel_args and changes all virtual addresses to 64-bit addresses, and finally switch to long mode and jump to the kernel.
|
#
7014f7f3 |
|
01-Nov-2011 |
François Revol <revol@free.fr> |
Fix method name in trace. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43083 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
45bd7bb3 |
|
25-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Removed unnecessary inclusions of <boot/kernel_args.h> in private kernel headers and respectively added includes in source files. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37259 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a8ad734f |
|
14-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Introduced structures {virtual,physical}_address_restrictions, which specify restrictions for virtual/physical addresses. * vm_page_allocate_page_run(): - Fixed conversion of base/limit to array indexes. sPhysicalPageOffset was not taken into account. - Takes a physical_address_restrictions instead of base/limit and also supports alignment and boundary restrictions, now. * map_backing_store(), VM[User,Kernel]AddressSpace::InsertArea()/ ReserveAddressRange() take a virtual_address_restrictions parameter, now. They also support an alignment independent from the range size. * create_area_etc(), vm_create_anonymous_area(): Take {virtual,physical}_address_restrictions parameters, now. * Removed no longer needed B_PHYSICAL_BASE_ADDRESS. * DMAResources: - Fixed potential overflows of uint32 when initializing from device node attributes. - Fixed bounce buffer creation TODOs: By using create_area_etc() with the new restrictions parameters we can directly support physical high address, boundary, and alignment. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37131 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e5885c7d |
|
09-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Moved kPageTableAlignment to paging.h. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37074 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2ea7b17c |
|
09-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* vm_allocate_early(): Replace "bool blockAlign" parameter by a more flexible "addr_t aligmnent". * X86PagingMethod32Bit::PhysicalPageSlotPool::InitInitial(), generic_vm_physical_page_mapper_init(): Use vm_allocate_early()'s alignment feature instead of aligning by hand. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37070 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1c7fda89 |
|
08-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Moved X86VMTranslationMap32Bit to its own source file. * Made all helper function operating on paging structures static methods of X86PagingMethod32Bit. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37064 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2434bdc4 |
|
08-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Introduced global variable gX86PagingMethod, so the paging method can be accessed from anywhere. Added static X86PagingMethod32Bit::Method() returning it as the subtype pointer -- to be used in the code related to that method only, of course. * Made a bunch of static variables non-static members of X86PagingMethod32Bit and added accessors for them. This makes them accessible in other source files (allowing for more refactoring) and saves memory, when we actually have another paging method implementation. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37062 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f0675bf7 |
|
08-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Moved X86PagingStructures32Bit into its own source/header pair. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37061 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1b3e83ad |
|
08-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Moved paging related files to new subdirectories paging and paging/32bit. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37060 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
819824e020bf6ab001077b4ae48de9f33d778349 |
|
26-Jan-2014 |
Pawel Dziepak <pdziepak@quarnos.org> |
kernel/{x86, vm}: Add more error checks in VM initialization
|
#
02749e2429d9ccc09f94febaf316da7803ecb922 |
|
10-Dec-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
x86/paging: Do not use array placement new Array placement new has implementation defined memory overhead what makes it pretty useless.
|
#
e052b3e630aa8ef3520cfc5462f06fd584a0be65 |
|
05-Dec-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
x86/paging: Remove unusued local variable
|
#
5f3798921f1bde57a28d7a1704dd22314bbf9c24 |
|
05-Dec-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
x86/paging: Use ROUNUP() to compute the number of initial slots
|
#
2e3cbcfa8a455f6d0ac65f51e795e42ccfbf9eb3 |
|
01-Dec-2013 |
Pawel Dziepak <pdziepak@quarnos.org> |
x86: Allocate as much initial physical page pools as needed
|
#
d1f280c80529d5f0bc55030c2934f9255bc7f6a2 |
|
01-Apr-2012 |
Hamish Morrison <hamishm53@gmail.com> |
Add support for pthread_attr_get/setguardsize() * Added the aforementioned functions. * create_area_etc() now takes a guard size parameter. * The thread_info::stack_base/end range now refers to the usable range only.
|
#
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.
|
#
4e8fbfb2d158de7b1cadd1c060acee51a7d67309 |
|
03-Jul-2012 |
Alex Smith <alex@alex-smith.me.uk> |
x86_{read,write}_cr{0,4} can just be implemented as macros, put an x86_ prefix on the other read/write macros for consistency.
|
#
e5fc2bfcab8c15a3ff7d33c358f9aa82ed73c823 |
|
26-Jun-2012 |
Alex Smith <alex@alex-smith.me.uk> |
Implemented long mode setup/switch code, the bootloader can now start the 64-bit kernel! The setup procedure is fairly simple: create a 64-bit GDT and 64-bit page tables that include all kernel mappings from the 32-bit address space, but at the correct 64-bit address, then go through kernel_args and changes all virtual addresses to 64-bit addresses, and finally switch to long mode and jump to the kernel.
|
#
7014f7f3e47a6ce3068eb4571922a53d61747523 |
|
01-Nov-2011 |
François Revol <revol@free.fr> |
Fix method name in trace. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@43083 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
45bd7bb3db9d9e4dcb02b89a3e7c2bf382c0a88c |
|
25-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Removed unnecessary inclusions of <boot/kernel_args.h> in private kernel headers and respectively added includes in source files. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37259 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a8ad734f1c698917badb15e1641e0f38b3e9a013 |
|
14-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Introduced structures {virtual,physical}_address_restrictions, which specify restrictions for virtual/physical addresses. * vm_page_allocate_page_run(): - Fixed conversion of base/limit to array indexes. sPhysicalPageOffset was not taken into account. - Takes a physical_address_restrictions instead of base/limit and also supports alignment and boundary restrictions, now. * map_backing_store(), VM[User,Kernel]AddressSpace::InsertArea()/ ReserveAddressRange() take a virtual_address_restrictions parameter, now. They also support an alignment independent from the range size. * create_area_etc(), vm_create_anonymous_area(): Take {virtual,physical}_address_restrictions parameters, now. * Removed no longer needed B_PHYSICAL_BASE_ADDRESS. * DMAResources: - Fixed potential overflows of uint32 when initializing from device node attributes. - Fixed bounce buffer creation TODOs: By using create_area_etc() with the new restrictions parameters we can directly support physical high address, boundary, and alignment. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37131 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e5885c7d0cd831b82af51aedd152d68ae32b23e9 |
|
09-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Moved kPageTableAlignment to paging.h. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37074 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2ea7b17cf341036024bd84c4f791f332b2e15e48 |
|
09-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* vm_allocate_early(): Replace "bool blockAlign" parameter by a more flexible "addr_t aligmnent". * X86PagingMethod32Bit::PhysicalPageSlotPool::InitInitial(), generic_vm_physical_page_mapper_init(): Use vm_allocate_early()'s alignment feature instead of aligning by hand. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37070 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1c7fda897e52591c6f2ada9a2a16f33e6e127b32 |
|
08-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Moved X86VMTranslationMap32Bit to its own source file. * Made all helper function operating on paging structures static methods of X86PagingMethod32Bit. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37064 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2434bdc4d9e08c5adab979d84f07cc3734e655a8 |
|
08-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Introduced global variable gX86PagingMethod, so the paging method can be accessed from anywhere. Added static X86PagingMethod32Bit::Method() returning it as the subtype pointer -- to be used in the code related to that method only, of course. * Made a bunch of static variables non-static members of X86PagingMethod32Bit and added accessors for them. This makes them accessible in other source files (allowing for more refactoring) and saves memory, when we actually have another paging method implementation. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37062 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f0675bf7571235ecdedb5cf4fda90ade6b4598f6 |
|
08-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Moved X86PagingStructures32Bit into its own source/header pair. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37061 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
1b3e83addefd97925b84cebaf4003d14c9062781 |
|
08-Jun-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Moved paging related files to new subdirectories paging and paging/32bit. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@37060 a95241bf-73f2-0310-859d-f6bbb57e9c96
|