https://git.reactos.org/?p=reactos.git;a=commitdiff;h=040d78354e7da85350629…
commit 040d78354e7da85350629a8b28f303d959a81f9c
Author: Thomas Faber <thomas.faber(a)reactos.org>
AuthorDate: Sun Feb 11 11:33:16 2018 +0100
Commit: Thomas Faber <thomas.faber(a)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)
{