Uh, sorry for the horriblly long diff. I guess someone initially
committed the file with CRLF file endings :-/

Le 04/02/2015 17:58, jgar...@svn.reactos.org a écrit :
> Author: jgardou
> Date: Wed Feb  4 16:58:41 2015
> New Revision: 66161
> 
> URL: http://svn.reactos.org/svn/reactos?rev=66161&view=rev
> Log:
> [NTDLL]
>  - use the edx register to store the function pointer to the syscall 
> trampoline.
> This is how google Chrome checks if an exported function is a system call or 
> not.
> See 
> https://chromium.googlesource.com/chromium/src.git/+/master/sandbox/win/src/service_resolver_32.cc
>  and https://bugs.winehq.org/show_bug.cgi?id=21232 for details
> 
> Modified:
>     trunk/reactos/include/asm/syscalls.inc
> 
> Modified: trunk/reactos/include/asm/syscalls.inc
> URL: 
> http://svn.reactos.org/svn/reactos/trunk/reactos/include/asm/syscalls.inc?rev=66161&r1=66160&r2=66161&view=diff
> ==============================================================================
> --- trunk/reactos/include/asm/syscalls.inc    [iso-8859-1] (original)
> +++ trunk/reactos/include/asm/syscalls.inc    [iso-8859-1] Wed Feb  4 
> 16:58:41 2015
> @@ -1,109 +1,109 @@
> -
> -#ifdef _M_IX86
> -#define KUSER_SHARED_SYSCALL HEX(7ffe0300)
> -#define KGDT_R0_CODE 8
> -MACRO(STUBCODE_U, Name, SyscallId, ArgCount)
> -    StackBytes = 4 * ArgCount
> -    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, Name, SyscallId, ArgCount)
> -    StackBytes = 4 * &ArgCount
> -    FPO 0, 0, 0, 0, 0, FRAME_FPO
> -    mov eax, SyscallId
> -    lea edx, [esp + 4]
> -    pushfd
> -    push KGDT_R0_CODE
> -    call _KiSystemService
> -    ret StackBytes
> -ENDM
> -#elif defined(_M_AMD64)
> -MACRO(STUBCODE_U, Name, SyscallId, ArgCount)
> -    .ENDPROLOG
> -    mov eax, SyscallId
> -    mov r10, rcx
> -    syscall
> -    ret
> -ENDM
> -MACRO(STUBCODE_K, Name, SyscallId, ArgCount)
> -    .ENDPROLOG
> -    EXTERN Nt&Name:PROC
> -    lea rax, Nt&Name[rip]
> -    mov r10, ArgCount * 8
> -    jmp KiZwSystemService
> -ENDM
> -#elif defined(_M_ARM)
> -MACRO(STUBCODE_U, Name, SyscallId, ArgCount)
> -    swi #SyscallId
> -    bx lr
> -ENDM
> -MACRO(STUBCODE_K, Name, SyscallId, ArgCount)
> -    mov ip, lr
> -    swi #SyscallId
> -    bx ip
> -ENDM
> -#elif defined(_M_PPC)
> -MACRO(STUBCODE_U, Name, SyscallId, ArgCount)
> -    stwu 1,-16(1)
> -    mflr 0
> -    stw  0,0(1)
> -    li   0, SyscallId
> -    sc
> -    lwz 0,0(1)
> -    mtlr 0
> -    addi 1,1,16
> -    blr
> -ENDM
> -#define STUBCODE_K STUBCODE_U
> -#elif defined(_M_MIPS)
> -MACRO(STUBCODE_U, Name, SyscallId, ArgCount)
> -    li $8, KUSER_SHARED_SYSCALL
> -    lw $8,0($8)
> -    j $8
> -    nop
> -ENDM
> -MACRO(STUBCODE_K, Name, SyscallId, ArgCount)
> -    j KiSystemService
> -    nop
> -ENDM
> -#else
> -#error unsupported architecture
> -#endif
> -
> -#ifdef _M_IX86
> -MACRO(MAKE_LABEL, Name, StackBytes)
> -    PUBLIC _&Name&@&StackBytes
> -    _&Name&@&StackBytes:
> -ENDM
> -MACRO(START_PROC, Name, StackBytes)
> -    PUBLIC _&Name&@&StackBytes
> -    .PROC _&Name&@&StackBytes
> -ENDM
> -#else
> -MACRO(MAKE_LABEL, Name, StackBytes)
> -    PUBLIC &Name
> -    &Name:
> -ENDM
> -MACRO(START_PROC, Name, StackBytes)
> -    PUBLIC &Name
> -    .PROC &Name
> -ENDM
> -#endif
> -
> -MACRO(STUB_U, Name, ArgCount)
> -    MAKE_LABEL Zw&Name, %ArgCount * 4
> -    START_PROC Nt&Name, %ArgCount * 4
> -    STUBCODE_U Name, SyscallId, %ArgCount
> -    .ENDP
> -    SyscallId = SyscallId + 1
> -ENDM
> -
> -MACRO(STUB_K, Name, ArgCount)
> -    START_PROC Zw&Name, %ArgCount * 4
> -    STUBCODE_K Name, SyscallId, %ArgCount
> -    .ENDP
> -    SyscallId = SyscallId + 1
> -ENDM
> +
> +#ifdef _M_IX86
> +#define KUSER_SHARED_SYSCALL HEX(7ffe0300)
> +#define KGDT_R0_CODE 8
> +MACRO(STUBCODE_U, Name, SyscallId, ArgCount)
> +    StackBytes = 4 * ArgCount
> +    FPO 0, 0, 0, 0, 0, FRAME_FPO
> +    mov eax, SyscallId
> +    mov edx, KUSER_SHARED_SYSCALL
> +    call dword ptr [edx]
> +    ret StackBytes
> +ENDM
> +MACRO(STUBCODE_K, Name, SyscallId, ArgCount)
> +    StackBytes = 4 * &ArgCount
> +    FPO 0, 0, 0, 0, 0, FRAME_FPO
> +    mov eax, SyscallId
> +    lea edx, [esp + 4]
> +    pushfd
> +    push KGDT_R0_CODE
> +    call _KiSystemService
> +    ret StackBytes
> +ENDM
> +#elif defined(_M_AMD64)
> +MACRO(STUBCODE_U, Name, SyscallId, ArgCount)
> +    .ENDPROLOG
> +    mov eax, SyscallId
> +    mov r10, rcx
> +    syscall
> +    ret
> +ENDM
> +MACRO(STUBCODE_K, Name, SyscallId, ArgCount)
> +    .ENDPROLOG
> +    EXTERN Nt&Name:PROC
> +    lea rax, Nt&Name[rip]
> +    mov r10, ArgCount * 8
> +    jmp KiZwSystemService
> +ENDM
> +#elif defined(_M_ARM)
> +MACRO(STUBCODE_U, Name, SyscallId, ArgCount)
> +    swi #SyscallId
> +    bx lr
> +ENDM
> +MACRO(STUBCODE_K, Name, SyscallId, ArgCount)
> +    mov ip, lr
> +    swi #SyscallId
> +    bx ip
> +ENDM
> +#elif defined(_M_PPC)
> +MACRO(STUBCODE_U, Name, SyscallId, ArgCount)
> +    stwu 1,-16(1)
> +    mflr 0
> +    stw  0,0(1)
> +    li   0, SyscallId
> +    sc
> +    lwz 0,0(1)
> +    mtlr 0
> +    addi 1,1,16
> +    blr
> +ENDM
> +#define STUBCODE_K STUBCODE_U
> +#elif defined(_M_MIPS)
> +MACRO(STUBCODE_U, Name, SyscallId, ArgCount)
> +    li $8, KUSER_SHARED_SYSCALL
> +    lw $8,0($8)
> +    j $8
> +    nop
> +ENDM
> +MACRO(STUBCODE_K, Name, SyscallId, ArgCount)
> +    j KiSystemService
> +    nop
> +ENDM
> +#else
> +#error unsupported architecture
> +#endif
> +
> +#ifdef _M_IX86
> +MACRO(MAKE_LABEL, Name, StackBytes)
> +    PUBLIC _&Name&@&StackBytes
> +    _&Name&@&StackBytes:
> +ENDM
> +MACRO(START_PROC, Name, StackBytes)
> +    PUBLIC _&Name&@&StackBytes
> +    .PROC _&Name&@&StackBytes
> +ENDM
> +#else
> +MACRO(MAKE_LABEL, Name, StackBytes)
> +    PUBLIC &Name
> +    &Name:
> +ENDM
> +MACRO(START_PROC, Name, StackBytes)
> +    PUBLIC &Name
> +    .PROC &Name
> +ENDM
> +#endif
> +
> +MACRO(STUB_U, Name, ArgCount)
> +    MAKE_LABEL Zw&Name, %ArgCount * 4
> +    START_PROC Nt&Name, %ArgCount * 4
> +    STUBCODE_U Name, SyscallId, %ArgCount
> +    .ENDP
> +    SyscallId = SyscallId + 1
> +ENDM
> +
> +MACRO(STUB_K, Name, ArgCount)
> +    START_PROC Zw&Name, %ArgCount * 4
> +    STUBCODE_K Name, SyscallId, %ArgCount
> +    .ENDP
> +    SyscallId = SyscallId + 1
> +ENDM
> 
> 

_______________________________________________
Ros-dev mailing list
Ros-dev@reactos.org
http://www.reactos.org/mailman/listinfo/ros-dev

Reply via email to