mirror of
https://github.com/reactos/reactos.git
synced 2024-09-12 05:43:24 +00:00
[NTOS]: KiDispatchInterrupt crushes EBX, so maybe it should preserve it first? This only worked because KiDispatchInterrupt was only called by ASM code that already was magically aware of this fact, and preserved (or didn't use) EBX before making the call. Yuck!
svn path=/trunk/; revision=45212
This commit is contained in:
parent
5c2e1ab00c
commit
e18680bb11
|
@ -320,6 +320,9 @@ _KeUpdateSystemTime@0:
|
||||||
.func KiDispatchInterrupt@0
|
.func KiDispatchInterrupt@0
|
||||||
_KiDispatchInterrupt@0:
|
_KiDispatchInterrupt@0:
|
||||||
|
|
||||||
|
/* Preserve EBX */
|
||||||
|
push ebx
|
||||||
|
|
||||||
/* Get the PCR and disable interrupts */
|
/* Get the PCR and disable interrupts */
|
||||||
mov ebx, PCR[KPCR_SELF]
|
mov ebx, PCR[KPCR_SELF]
|
||||||
cli
|
cli
|
||||||
|
@ -418,12 +421,14 @@ GetNext:
|
||||||
|
|
||||||
Return:
|
Return:
|
||||||
/* All done */
|
/* All done */
|
||||||
|
pop ebx
|
||||||
ret
|
ret
|
||||||
|
|
||||||
QuantumEnd:
|
QuantumEnd:
|
||||||
/* Disable quantum end and process it */
|
/* Disable quantum end and process it */
|
||||||
mov byte ptr [ebx+KPCR_PRCB_QUANTUM_END], 0
|
mov byte ptr [ebx+KPCR_PRCB_QUANTUM_END], 0
|
||||||
call _KiQuantumEnd@0
|
call _KiQuantumEnd@0
|
||||||
|
pop ebx
|
||||||
ret
|
ret
|
||||||
.endfunc
|
.endfunc
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue