forked from KolibriOS/kolibrios
don't set_mtrr if only fixed MTRRs exist; fixes triple fault in VirtualBox on some CPUs
git-svn-id: svn://kolibrios.org@6721 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
parent
40fcec8ed7
commit
eb8c20f6c5
@ -764,6 +764,10 @@ proc set_mtrr stdcall, base:dword,size:dword,mem_type:dword
|
|||||||
; find unused register
|
; find unused register
|
||||||
mov ecx, 0x201
|
mov ecx, 0x201
|
||||||
.scan:
|
.scan:
|
||||||
|
mov eax, [num_variable_mtrrs]
|
||||||
|
lea eax, [0x200+eax*2]
|
||||||
|
cmp ecx, eax
|
||||||
|
jae .ret
|
||||||
rdmsr
|
rdmsr
|
||||||
dec ecx
|
dec ecx
|
||||||
test ah, 8
|
test ah, 8
|
||||||
@ -776,10 +780,7 @@ proc set_mtrr stdcall, base:dword,size:dword,mem_type:dword
|
|||||||
jz .ret
|
jz .ret
|
||||||
@@:
|
@@:
|
||||||
add ecx, 3
|
add ecx, 3
|
||||||
mov eax, [num_variable_mtrrs]
|
jmp .scan
|
||||||
lea eax, [0x200+eax*2]
|
|
||||||
cmp ecx, eax
|
|
||||||
jb .scan
|
|
||||||
; no free registers, ignore the call
|
; no free registers, ignore the call
|
||||||
.ret:
|
.ret:
|
||||||
ret
|
ret
|
||||||
|
Loading…
Reference in New Issue
Block a user