#
147133b7 |
|
25-May-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* First run through the kernel's private parts to use phys_{addr,size}_t where appropriate. * Typedef'ed page_num_t to phys_addr_t and used it in more places in vm_page.{h,cpp}. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36937 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a99eb6b5 |
|
01-Dec-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
vm_area -> VMArea git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34423 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b0db552c |
|
01-Dec-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Renamed vm_address_space to VMAddressSpace. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34422 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
74785e79 |
|
07-Oct-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Added "from" address space parameter to vm_swap_address_space()/ arch_vm_aspace_swap(). * The x86 implementation does now maintain a bit mask per vm_translation_map_arch_info indicating on which CPUs the address space is active. This allows flush_tmap() to avoid ICI for user address spaces when the team isn't currently running on any other CPU. In this context ICI is relatively expensive, particularly since we map most pages via vm_map_page() and therefore invoke flush_tmap() pretty much for every single page. This optimization speeds up a "hello world" compilation about 20% on my machine (KDEBUG turned off, freshly booted), but interestingly it has virtually no effect on the "-j2" haiku build time. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27912 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e6dc7903 |
|
26-Sep-2007 |
Axel Dörfler <axeld@pinc-software.de> |
* vm.h no longer includes vm_types.h - only those that actually need access to the private VM types are including vm_types.h now. * Removed vm_page, vm_area, vm_cache, and vm_address_space typedefs; it's cleaner this way, and the actual types are only used in C++ files now, anyway. * And that caused changes in many files... * Made commpage.h self-containing. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22329 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
51a3c450 |
|
13-Dec-2005 |
Axel Dörfler <axeld@pinc-software.de> |
The short story: we now have MTRR support on Intel and AMD CPUs (the latter has not yet been tested, though - I'll do this after this commit): * Removed the arch_memory_type stuff from vm_area; since there are only 8 memory ranges on x86, it's simply overkill. The MTRR code now remembers the area ID and finds the MTRR that way (it could also iterate over the existing MTRRs). * Introduced some post_modules() init functions. * If the other x86 CPUs out there don't differ a lot, MTRR functionality might be put back into the kernel. * x86_write_msr() was broken, it wrote the 64 bit number with the 32 bit words switched - it took me some time (and lots of #GPs) to figure that one out. * Removed the macro read_ebp() and introduced a function x86_read_ebp() (it's not really a time critical call). * Followed the Intel docs on how to change MTRRs (symmetrically on all CPUs with caches turned off). * Asking for memory types will automatically change the requested length to a power of two - note that BeOS seems to behave in the same, although that's not really very clean. * fixed MTRRs are ignored for now - we should make sure at least, though, that they are identical on all CPUs (or turn them off, even though I'd prefer the BIOS stuff to be uncacheable, which we don't enforce yet, though). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15528 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2ed21b85 |
|
12-Dec-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Some work in progress of the MTRR support. Shouldn't do any harm yet :-) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15525 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7c0a9357 |
|
12-Dec-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Preparation for MTRR support, code is completely untested, though. The CPU specific MTRR code will be in modules. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15520 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f05e261f |
|
05-Apr-2005 |
Axel Dörfler <axeld@pinc-software.de> |
The VM can now ask the platform dependent part if it supports a specified protection. create_area() and friends should fail if it's not supported. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12248 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
68b54c0d |
|
10-Dec-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Introduced new arch_vm.h header. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10385 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
67a53f72 |
|
19-Oct-2004 |
Axel Dörfler <axeld@pinc-software.de> |
- the arch_vm_translation_map.c exported functions now have the arch_ prefix - the above file now also exports a function to finally complete the kernel's address space translation map after semaphores became available (was just not done before) - renamed some functions, especially the *_init2() functions are now called like *_init_post_area() to indicate they are called after the area functionality became available - removed the _struct suffix from certain structures - fixed some return types - added prototype for vm_free_unused_boot_loader_range() to be called by arch code. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9423 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e45975b8 |
|
28-Oct-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Definitions were doubled in vm_translation_map.h and arch/vm_translation_map.h. The former now only contains the structure definitions, while the other one contains the arch-specific function prototypes (which do not have the arch_ prefix). Added a ToDo comment to remember cleaning this up one day. Made all headers C++ safe, simplified where possible. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5197 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c17f45d1 |
|
03-May-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Some header cleanups. Renamed dbg_save_registers() to arch_...() since it's arch dependent. Removed unnecessary dependencies to stage2.h. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3138 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
52a38012 |
|
08-Jul-2002 |
ejakowatz <ejakowatz@nowhere.fake> |
It is accomplished ... git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
147133b76cbb1603bdbff295505f5b830cb4e688 |
|
25-May-2010 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* First run through the kernel's private parts to use phys_{addr,size}_t where appropriate. * Typedef'ed page_num_t to phys_addr_t and used it in more places in vm_page.{h,cpp}. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@36937 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
a99eb6b56f61bd847d246e44885618fdeaa313a1 |
|
01-Dec-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
vm_area -> VMArea git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34423 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
b0db552cd921ff16d61400ee5a5f855f392e8b87 |
|
01-Dec-2009 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
Renamed vm_address_space to VMAddressSpace. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@34422 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
74785e79db32355e0a8ee6b488672ac09ad57b1b |
|
07-Oct-2008 |
Ingo Weinhold <ingo_weinhold@gmx.de> |
* Added "from" address space parameter to vm_swap_address_space()/ arch_vm_aspace_swap(). * The x86 implementation does now maintain a bit mask per vm_translation_map_arch_info indicating on which CPUs the address space is active. This allows flush_tmap() to avoid ICI for user address spaces when the team isn't currently running on any other CPU. In this context ICI is relatively expensive, particularly since we map most pages via vm_map_page() and therefore invoke flush_tmap() pretty much for every single page. This optimization speeds up a "hello world" compilation about 20% on my machine (KDEBUG turned off, freshly booted), but interestingly it has virtually no effect on the "-j2" haiku build time. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@27912 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e6dc7903e4277bf6e22527ed611df619c7e645f1 |
|
26-Sep-2007 |
Axel Dörfler <axeld@pinc-software.de> |
* vm.h no longer includes vm_types.h - only those that actually need access to the private VM types are including vm_types.h now. * Removed vm_page, vm_area, vm_cache, and vm_address_space typedefs; it's cleaner this way, and the actual types are only used in C++ files now, anyway. * And that caused changes in many files... * Made commpage.h self-containing. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@22329 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
51a3c450bebefa32a5636bc6078bdd648818da41 |
|
13-Dec-2005 |
Axel Dörfler <axeld@pinc-software.de> |
The short story: we now have MTRR support on Intel and AMD CPUs (the latter has not yet been tested, though - I'll do this after this commit): * Removed the arch_memory_type stuff from vm_area; since there are only 8 memory ranges on x86, it's simply overkill. The MTRR code now remembers the area ID and finds the MTRR that way (it could also iterate over the existing MTRRs). * Introduced some post_modules() init functions. * If the other x86 CPUs out there don't differ a lot, MTRR functionality might be put back into the kernel. * x86_write_msr() was broken, it wrote the 64 bit number with the 32 bit words switched - it took me some time (and lots of #GPs) to figure that one out. * Removed the macro read_ebp() and introduced a function x86_read_ebp() (it's not really a time critical call). * Followed the Intel docs on how to change MTRRs (symmetrically on all CPUs with caches turned off). * Asking for memory types will automatically change the requested length to a power of two - note that BeOS seems to behave in the same, although that's not really very clean. * fixed MTRRs are ignored for now - we should make sure at least, though, that they are identical on all CPUs (or turn them off, even though I'd prefer the BIOS stuff to be uncacheable, which we don't enforce yet, though). git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15528 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
2ed21b85257d9d36d4d8a25c2a798a42add6e618 |
|
12-Dec-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Some work in progress of the MTRR support. Shouldn't do any harm yet :-) git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15525 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
7c0a93573b061c8ff2b1e9e8644eb3943c1f5855 |
|
12-Dec-2005 |
Axel Dörfler <axeld@pinc-software.de> |
Preparation for MTRR support, code is completely untested, though. The CPU specific MTRR code will be in modules. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@15520 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
f05e261fd72f051501606c14904ff721d79fe127 |
|
05-Apr-2005 |
Axel Dörfler <axeld@pinc-software.de> |
The VM can now ask the platform dependent part if it supports a specified protection. create_area() and friends should fail if it's not supported. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@12248 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
68b54c0db9d30c13d517a3732e3cc0fa531a1a53 |
|
10-Dec-2004 |
Axel Dörfler <axeld@pinc-software.de> |
Introduced new arch_vm.h header. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10385 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
67a53f72afb4b4b41b49d10e939949a84bbc0efb |
|
19-Oct-2004 |
Axel Dörfler <axeld@pinc-software.de> |
- the arch_vm_translation_map.c exported functions now have the arch_ prefix - the above file now also exports a function to finally complete the kernel's address space translation map after semaphores became available (was just not done before) - renamed some functions, especially the *_init2() functions are now called like *_init_post_area() to indicate they are called after the area functionality became available - removed the _struct suffix from certain structures - fixed some return types - added prototype for vm_free_unused_boot_loader_range() to be called by arch code. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@9423 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
e45975b8798f64fe45038d07c7d8a4a435e0dec5 |
|
28-Oct-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Definitions were doubled in vm_translation_map.h and arch/vm_translation_map.h. The former now only contains the structure definitions, while the other one contains the arch-specific function prototypes (which do not have the arch_ prefix). Added a ToDo comment to remember cleaning this up one day. Made all headers C++ safe, simplified where possible. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@5197 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
c17f45d123e46467438e56fa001df91db9850917 |
|
03-May-2003 |
Axel Dörfler <axeld@pinc-software.de> |
Some header cleanups. Renamed dbg_save_registers() to arch_...() since it's arch dependent. Removed unnecessary dependencies to stage2.h. git-svn-id: file:///srv/svn/repos/haiku/trunk/current@3138 a95241bf-73f2-0310-859d-f6bbb57e9c96
|
#
52a380120846174213ccce9c4aab0dda17c72083 |
|
08-Jul-2002 |
ejakowatz <ejakowatz@nowhere.fake> |
It is accomplished ... git-svn-id: file:///srv/svn/repos/haiku/trunk/current@10 a95241bf-73f2-0310-859d-f6bbb57e9c96
|