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... */
|
/* To avoid reverse syntax we provide a new macro .PROC, replacing PROC... */
|
||||||
.PROC MACRO name
|
.PROC MACRO name
|
||||||
|
#ifdef _M_IX86
|
||||||
_&name PROC
|
_&name PROC
|
||||||
|
#else
|
||||||
|
&name PROC FRAME
|
||||||
|
#endif
|
||||||
ENDM
|
ENDM
|
||||||
#define FUNC .PROC
|
#define FUNC .PROC
|
||||||
|
|
||||||
/* ... and .ENDP, replacing ENDP */
|
/* ... and .ENDP, replacing ENDP */
|
||||||
.ENDP MACRO name
|
.ENDP MACRO name
|
||||||
|
#ifdef _M_IX86
|
||||||
_&name ENDP
|
_&name ENDP
|
||||||
|
#else
|
||||||
|
&name ENDP
|
||||||
|
#endif
|
||||||
ENDM
|
ENDM
|
||||||
#define ENDFUNC .ENDP
|
#define ENDFUNC .ENDP
|
||||||
|
|
||||||
|
|
|
@ -3,12 +3,14 @@
|
||||||
#define KUSER_SHARED_SYSCALL HEX(7ffe0300)
|
#define KUSER_SHARED_SYSCALL HEX(7ffe0300)
|
||||||
#define KGDT_R0_CODE 8
|
#define KGDT_R0_CODE 8
|
||||||
MACRO(STUBCODE_U, SyscallId, StackBytes)
|
MACRO(STUBCODE_U, SyscallId, StackBytes)
|
||||||
|
FPO 0, 0, 0, 0, 0, FRAME_FPO
|
||||||
mov eax, SyscallId
|
mov eax, SyscallId
|
||||||
mov ecx, KUSER_SHARED_SYSCALL
|
mov ecx, KUSER_SHARED_SYSCALL
|
||||||
call dword ptr [ecx]
|
call dword ptr [ecx]
|
||||||
ret StackBytes
|
ret StackBytes
|
||||||
ENDM
|
ENDM
|
||||||
MACRO(STUBCODE_K, SyscallId, StackBytes)
|
MACRO(STUBCODE_K, SyscallId, StackBytes)
|
||||||
|
FPO 0, 0, 0, 0, 0, FRAME_FPO
|
||||||
mov eax, SyscallId
|
mov eax, SyscallId
|
||||||
lea edx, [esp + 4]
|
lea edx, [esp + 4]
|
||||||
pushfd
|
pushfd
|
||||||
|
@ -18,12 +20,14 @@ MACRO(STUBCODE_K, SyscallId, StackBytes)
|
||||||
ENDM
|
ENDM
|
||||||
#elif defined(_M_AMD64)
|
#elif defined(_M_AMD64)
|
||||||
MACRO(STUBCODE_U, SyscallId, StackBytes)
|
MACRO(STUBCODE_U, SyscallId, StackBytes)
|
||||||
|
.ENDPROLOG
|
||||||
mov eax, SyscallId
|
mov eax, SyscallId
|
||||||
mov r10, rcx
|
mov r10, rcx
|
||||||
syscall
|
syscall
|
||||||
ret StackBytes
|
ret StackBytes
|
||||||
ENDM
|
ENDM
|
||||||
MACRO(STUBCODE_K, SyscallId, StackBytes)
|
MACRO(STUBCODE_K, SyscallId, StackBytes)
|
||||||
|
.ENDPROLOG
|
||||||
mov eax, SyscallId
|
mov eax, SyscallId
|
||||||
call KiSystemService
|
call KiSystemService
|
||||||
ret StackBytes
|
ret StackBytes
|
||||||
|
@ -74,7 +78,6 @@ ENDM
|
||||||
MACRO(START_PROC, Name, Stackbytes)
|
MACRO(START_PROC, Name, Stackbytes)
|
||||||
PUBLIC _&Name&@&Stackbytes
|
PUBLIC _&Name&@&Stackbytes
|
||||||
.PROC &Name&@&Stackbytes
|
.PROC &Name&@&Stackbytes
|
||||||
FPO 0, 0, 0, 0, 0, FRAME_FPO
|
|
||||||
ENDM
|
ENDM
|
||||||
MACRO(END_PROC, Name, Stackbytes)
|
MACRO(END_PROC, Name, Stackbytes)
|
||||||
.ENDP &Name&@&Stackbytes
|
.ENDP &Name&@&Stackbytes
|
||||||
|
@ -87,7 +90,6 @@ ENDM
|
||||||
MACRO(START_PROC, Name, Stackbytes)
|
MACRO(START_PROC, Name, Stackbytes)
|
||||||
PUBLIC &Name
|
PUBLIC &Name
|
||||||
.PROC &Name
|
.PROC &Name
|
||||||
FPO 0, 0, 0, 0, 0, FRAME_FPO
|
|
||||||
ENDM
|
ENDM
|
||||||
MACRO(END_PROC, Name, Stackbytes)
|
MACRO(END_PROC, Name, Stackbytes)
|
||||||
.ENDP &Name
|
.ENDP &Name
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue