mirror of
https://github.com/reactos/reactos.git
synced 2025-06-20 07:36:05 +00:00
[ASM]
- prefix labels only on x86 - improve syscall stub code svn path=/trunk/; revision=53333
This commit is contained in:
parent
58972d8a1f
commit
1490c31014
2 changed files with 12 additions and 2 deletions
|
@ -32,13 +32,21 @@ rip = 0
|
|||
|
||||
/* To avoid reverse syntax we provide a new macro .PROC, replacing PROC... */
|
||||
.PROC MACRO name
|
||||
#ifdef _M_IX86
|
||||
_&name PROC
|
||||
#else
|
||||
&name PROC FRAME
|
||||
#endif
|
||||
ENDM
|
||||
#define FUNC .PROC
|
||||
|
||||
/* ... and .ENDP, replacing ENDP */
|
||||
.ENDP MACRO name
|
||||
#ifdef _M_IX86
|
||||
_&name ENDP
|
||||
#else
|
||||
&name ENDP
|
||||
#endif
|
||||
ENDM
|
||||
#define ENDFUNC .ENDP
|
||||
|
||||
|
|
|
@ -3,12 +3,14 @@
|
|||
#define KUSER_SHARED_SYSCALL HEX(7ffe0300)
|
||||
#define KGDT_R0_CODE 8
|
||||
MACRO(STUBCODE_U, SyscallId, StackBytes)
|
||||
FPO 0, 0, 0, 0, 0, FRAME_FPO
|
||||
mov eax, SyscallId
|
||||
mov ecx, KUSER_SHARED_SYSCALL
|
||||
call dword ptr [ecx]
|
||||
ret StackBytes
|
||||
ENDM
|
||||
MACRO(STUBCODE_K, SyscallId, StackBytes)
|
||||
FPO 0, 0, 0, 0, 0, FRAME_FPO
|
||||
mov eax, SyscallId
|
||||
lea edx, [esp + 4]
|
||||
pushfd
|
||||
|
@ -18,12 +20,14 @@ MACRO(STUBCODE_K, SyscallId, StackBytes)
|
|||
ENDM
|
||||
#elif defined(_M_AMD64)
|
||||
MACRO(STUBCODE_U, SyscallId, StackBytes)
|
||||
.ENDPROLOG
|
||||
mov eax, SyscallId
|
||||
mov r10, rcx
|
||||
syscall
|
||||
ret StackBytes
|
||||
ENDM
|
||||
MACRO(STUBCODE_K, SyscallId, StackBytes)
|
||||
.ENDPROLOG
|
||||
mov eax, SyscallId
|
||||
call KiSystemService
|
||||
ret StackBytes
|
||||
|
@ -74,7 +78,6 @@ ENDM
|
|||
MACRO(START_PROC, Name, Stackbytes)
|
||||
PUBLIC _&Name&@&Stackbytes
|
||||
.PROC &Name&@&Stackbytes
|
||||
FPO 0, 0, 0, 0, 0, FRAME_FPO
|
||||
ENDM
|
||||
MACRO(END_PROC, Name, Stackbytes)
|
||||
.ENDP &Name&@&Stackbytes
|
||||
|
@ -87,7 +90,6 @@ ENDM
|
|||
MACRO(START_PROC, Name, Stackbytes)
|
||||
PUBLIC &Name
|
||||
.PROC &Name
|
||||
FPO 0, 0, 0, 0, 0, FRAME_FPO
|
||||
ENDM
|
||||
MACRO(END_PROC, Name, Stackbytes)
|
||||
.ENDP &Name
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue