haiku/headers/private/kernel/arch
Ingo Weinhold dac21d8bfe * map_physical_memory() does now always set a memory type. If none is given (it
needs to be or'ed to the address specification), "uncached" is assumed.
* Set the memory type for the "BIOS" and "DMA" areas to write-back. Not sure, if
  that's correct, but that's what was effectively used on my machines before.
* Changed x86_set_mtrrs() and the CPU module hook to also set the default memory
  type.
* Rewrote the MTRR computation once more:
  - Now we know all used memory ranges, so we are free to extend used ranges
    into unused ones in order to simplify them for MTRR setup.
  - Leverage the subtractive properties of uncached and write-through ranges to
    simplify ranges of any other respectively write-back type.
  - Set the default memory type to write-back, so we don't need MTRRs for the
    RAM ranges.
  - If a new range intersects with an existing one, we no longer just fail.
    Instead we use the strictest requirements implied by the ranges. This fixes
    #5383.

Overall the new algorithm should be sufficient with far less MTRRs than before
(on my desktop machine 4 are used at maximum, while 8 didn't quite suffice
before). A drawback of the current implementation is that it doesn't deal with
the case of running out of MTRRs at all, which might result in some ranges
having weaker caching/memory ordering properties than requested.


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35515 a95241bf-73f2-0310-859d-f6bbb57e9c96
2010-02-18 13:52:43 +00:00
..
alpha
arm * Moved the VM headers into subdirectory vm/. 2009-12-02 18:05:10 +00:00
m68k * Moved the VM headers into subdirectory vm/. 2009-12-02 18:05:10 +00:00
mipsel Added and modified kernel stubs and headers for arch mipsel. Correctness not included. 2009-08-23 02:52:09 +00:00
ppc Added missing include. 2010-02-03 18:47:07 +00:00
sh4 Removed unused <arch>_switch_stack_and_call() and 2010-01-09 15:09:02 +00:00
sparc Removed execute property that was set accidently (since CVS days). 2005-03-18 01:50:45 +00:00
x86 * map_physical_memory() does now always set a memory type. If none is given (it 2010-02-18 13:52:43 +00:00
cpu.h memory barrier functions available for drivers. 2008-04-26 15:18:04 +00:00
debug_console.h * Added the opportunity to add temporary debug interrupt handlers for 2006-06-12 22:24:53 +00:00
debug.h * arch_debug_get_stack_trace(): 2009-12-22 15:15:07 +00:00
elf.h Symbol resolution functions in the kernel: Removed the unused parameter 2009-05-13 15:25:27 +00:00
int.h Fully inline {disable,restore}_interrupts() and friends when including 2008-10-01 14:33:10 +00:00
platform.h Implemented first basic APM driver. Only tested with QEMU so far, that's why 2006-01-28 18:11:20 +00:00
real_time_clock.h The real_time_data structure contains an architecture specific 2006-01-04 02:17:59 +00:00
smp.h
system_info.h Added our first x86-only syscall for get_cpuid(). 2004-12-01 03:54:23 +00:00
thread_types.h Replaced arch/thread_struct.h with arch/thread_types.h, and renamed 2005-12-20 16:07:27 +00:00
thread.h Removed unused <arch>_switch_stack_and_call() and 2010-01-09 15:09:02 +00:00
timer.h
user_debugger.h * Always include the public arch_debugger.h headers. The structures defined 2009-07-21 22:18:39 +00:00
vm_translation_map.h Refactored vm_translation_map: 2010-01-14 03:26:12 +00:00
vm_types.h Preparation for MTRR support, code is completely untested, though. 2005-12-12 17:04:36 +00:00
vm.h vm_area -> VMArea 2009-12-01 17:40:04 +00:00