mirror of
https://github.com/reactos/reactos.git
synced 2024-12-28 01:55:19 +00:00
[HAL] Create a macro for the HalpEndSoftwareInterrupt to allow reuse. CORE-14076
This commit is contained in:
parent
040d78354e
commit
7a9474a6bb
1 changed files with 12 additions and 7 deletions
|
@ -11,8 +11,6 @@
|
||||||
|
|
||||||
#include <ks386.inc>
|
#include <ks386.inc>
|
||||||
|
|
||||||
EXTERN @HalpEndSoftwareInterrupt2@8:PROC
|
|
||||||
|
|
||||||
/* GLOBALS *******************************************************************/
|
/* GLOBALS *******************************************************************/
|
||||||
|
|
||||||
.data
|
.data
|
||||||
|
@ -21,23 +19,26 @@ ASSUME CS:NOTHING, DS:NOTHING, ES:NOTHING, FS:NOTHING, GS:NOTHING
|
||||||
/* FUNCTIONS *****************************************************************/
|
/* FUNCTIONS *****************************************************************/
|
||||||
|
|
||||||
.code
|
.code
|
||||||
PUBLIC _HalpEndSoftwareInterrupt@8
|
|
||||||
.PROC _HalpEndSoftwareInterrupt@8
|
MACRO(DEFINE_END_INTERRUPT_WRAPPER, WrapperName, HandlerName)
|
||||||
|
EXTERN @&HandlerName&@8:PROC
|
||||||
|
PUBLIC _&WrapperName&@8
|
||||||
|
.PROC _&WrapperName&@8
|
||||||
FPO 0, 2, 0, 0, 0, FRAME_FPO
|
FPO 0, 2, 0, 0, 0, FRAME_FPO
|
||||||
|
|
||||||
/* Call the C function with the same arguments we got */
|
/* Call the C function with the same arguments we got */
|
||||||
mov ecx, [esp+4]
|
mov ecx, [esp+4]
|
||||||
mov edx, [esp+8]
|
mov edx, [esp+8]
|
||||||
call @HalpEndSoftwareInterrupt2@8
|
call @&HandlerName&@8
|
||||||
|
|
||||||
/* Check if we got a pointer back */
|
/* Check if we got a pointer back */
|
||||||
test eax, eax
|
test eax, eax
|
||||||
jnz CallIntHandler
|
jnz WrapperName&_CallIntHandler
|
||||||
|
|
||||||
/* No? Just return */
|
/* No? Just return */
|
||||||
ret 8
|
ret 8
|
||||||
|
|
||||||
CallIntHandler:
|
WrapperName&_CallIntHandler:
|
||||||
/* We got a pointer to call. Since it won't return, free up our stack
|
/* We got a pointer to call. Since it won't return, free up our stack
|
||||||
space. Otherwise 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. */
|
The next function takes the trap frame as its (fastcall) argument. */
|
||||||
|
@ -45,5 +46,9 @@ CallIntHandler:
|
||||||
add esp, 12
|
add esp, 12
|
||||||
jmp eax
|
jmp eax
|
||||||
.ENDP
|
.ENDP
|
||||||
|
ENDM
|
||||||
|
|
||||||
|
|
||||||
|
DEFINE_END_INTERRUPT_WRAPPER HalpEndSoftwareInterrupt, HalpEndSoftwareInterrupt2
|
||||||
|
|
||||||
END
|
END
|
||||||
|
|
Loading…
Reference in a new issue