https://git.reactos.org/?p=reactos.git;a=commitdiff;h=040d78354e7da85350629a...
commit 040d78354e7da85350629a8b28f303d959a81f9c Author: Thomas Faber thomas.faber@reactos.org AuthorDate: Sun Feb 11 11:33:16 2018 +0100 Commit: Thomas Faber thomas.faber@reactos.org CommitDate: Sun Feb 18 13:06:37 2018 +0100
[HAL] Convert HalpEndSoftwareInterrupt2 to fastcall. CORE-14076 --- hal/halx86/up/pic.S | 11 ++++++----- hal/halx86/up/pic.c | 2 +- 2 files changed, 7 insertions(+), 6 deletions(-)
diff --git a/hal/halx86/up/pic.S b/hal/halx86/up/pic.S index c9bd891407..5025a44254 100644 --- a/hal/halx86/up/pic.S +++ b/hal/halx86/up/pic.S @@ -11,7 +11,7 @@
#include <ks386.inc>
-EXTERN _HalpEndSoftwareInterrupt2@8:PROC +EXTERN @HalpEndSoftwareInterrupt2@8:PROC
/* GLOBALS *******************************************************************/
@@ -26,9 +26,9 @@ PUBLIC _HalpEndSoftwareInterrupt@8 FPO 0, 2, 0, 0, 0, FRAME_FPO
/* Call the C function with the same arguments we got */ - push [esp+8] - push [esp+8] - call _HalpEndSoftwareInterrupt2@8 + mov ecx, [esp+4] + mov edx, [esp+8] + call @HalpEndSoftwareInterrupt2@8
/* Check if we got a pointer back */ test eax, eax @@ -39,7 +39,8 @@ PUBLIC _HalpEndSoftwareInterrupt@8
CallIntHandler: /* We got a pointer to call. Since it won't return, free up our stack - space, or we could end up with some nasty deep recursion */ + space. Otherwise we could end up with some nasty deep recursion. + The next function takes the trap frame as its (fastcall) argument. */ mov ecx, [esp+8] add esp, 12 jmp eax diff --git a/hal/halx86/up/pic.c b/hal/halx86/up/pic.c index a66526cd50..f61bf738d0 100644 --- a/hal/halx86/up/pic.c +++ b/hal/halx86/up/pic.c @@ -677,7 +677,7 @@ HalClearSoftwareInterrupt(IN KIRQL Irql) }
PHAL_SW_INTERRUPT_HANDLER_2ND_ENTRY -NTAPI +FASTCALL HalpEndSoftwareInterrupt2(IN KIRQL OldIrql, IN PKTRAP_FRAME TrapFrame) {