add_mtrrs_for_range(): Fixed computation of the register ranges. Per power of

2 size we might need to use two registers (for the start and the end of the
range).


git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@35753 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold
2010-03-04 09:43:04 +00:00
parent 2a196c6349
commit affb47166b
+9 -9
View File
@@ -141,16 +141,16 @@ static bool
add_mtrrs_for_range(uint64 base, uint64 size, uint32 type)
{
for (uint64 interval = B_PAGE_SIZE; size > 0; interval <<= 1) {
if (((base | size) & interval) != 0) {
if ((base & interval) != 0) {
if (!add_used_mtrr(base, interval, type))
return false;
base += interval;
} else {
if (!add_used_mtrr(base + size - interval, interval, type))
return false;
}
if ((base & interval) != 0) {
if (!add_used_mtrr(base, interval, type))
return false;
base += interval;
size -= interval;
}
if ((size & interval) != 0) {
if (!add_used_mtrr(base + size - interval, interval, type))
return false;
size -= interval;
}
}