Author: tkreuzer Date: Thu Oct 13 15:16:29 2011 New Revision: 54112
URL: http://svn.reactos.org/svn/reactos?rev=54112&view=rev Log: [ASM] Improve .proc / .endproc syntax, so that the full symbolic name is passed, which allows to create fastcall symbols. Remove the need to pass the function name to .endp
Modified: trunk/reactos/dll/ntdll/dispatch/i386/dispatch.S trunk/reactos/dll/win32/kernel32/client/i386/fiber.S trunk/reactos/dll/win32/rpcrt4/msvc.S trunk/reactos/hal/halx86/apic/tsccal.S trunk/reactos/include/asm/asm.inc trunk/reactos/include/asm/syscalls.inc trunk/reactos/include/reactos/asm.inc trunk/reactos/lib/rtl/i386/debug_asm.S trunk/reactos/lib/rtl/i386/rtlswap.S trunk/reactos/lib/sdk/crt/string/i386/tcscpy.inc trunk/reactos/ntoskrnl/include/internal/i386/asmmacro.S trunk/reactos/ntoskrnl/ke/i386/trap.s
Modified: trunk/reactos/dll/ntdll/dispatch/i386/dispatch.S URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/ntdll/dispatch/i386/dis... ============================================================================== --- trunk/reactos/dll/ntdll/dispatch/i386/dispatch.S [iso-8859-1] (original) +++ trunk/reactos/dll/ntdll/dispatch/i386/dispatch.S [iso-8859-1] Thu Oct 13 15:16:29 2011 @@ -184,7 +184,7 @@
PUBLIC _KiUserExceptionDispatcher@8 -.PROC KiUserExceptionDispatcher@8 +.PROC _KiUserExceptionDispatcher@8 FPO 0, 0, 0, 0, 0, FRAME_FPO
/* Clear direction flag */ @@ -241,10 +241,10 @@ call _RtlRaiseException@4 ret 8
-.ENDP KiUserExceptionDispatcher@8 +.ENDP
PUBLIC _KiIntSystemCall@0 -.PROC KiIntSystemCall@0 +.PROC _KiIntSystemCall@0 FPO 0, 0, 0, 0, 0, FRAME_FPO
/* Set stack in EDX and do the interrupt */ @@ -254,26 +254,26 @@ /* Return to caller */ ret
-.ENDP KiIntSystemCall@0 +.ENDP
PUBLIC _KiFastSystemCall@0 -.PROC KiFastSystemCall@0 +.PROC _KiFastSystemCall@0 FPO 0, 0, 0, 0, 0, FRAME_FPO
/* Put ESP in EDX and do the SYSENTER */ mov edx, esp sysenter
-.ENDP KiFastSystemCall@0 +.ENDP
PUBLIC _KiFastSystemCallRet@0 -.PROC KiFastSystemCallRet@0 +.PROC _KiFastSystemCallRet@0 FPO 0, 0, 0, 0, 0, FRAME_FPO
/* Just return to caller */ ret
-.ENDP KiFastSystemCallRet@0 +.ENDP
PUBLIC _RtlpGetStackLimits@8 _RtlpGetStackLimits@8:
Modified: trunk/reactos/dll/win32/kernel32/client/i386/fiber.S URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/kernel32/client/i... ============================================================================== --- trunk/reactos/dll/win32/kernel32/client/i386/fiber.S [iso-8859-1] (original) +++ trunk/reactos/dll/win32/kernel32/client/i386/fiber.S [iso-8859-1] Thu Oct 13 15:16:29 2011 @@ -15,7 +15,7 @@ .code
PUBLIC _BaseFiberStartup@0 -.PROC BaseFiberStartup@0 +.PROC _BaseFiberStartup@0 /* Frame pointer is zeroed */ FPO 0, 0, 0, 0, 0, FRAME_FPO
@@ -25,7 +25,7 @@ push dword ptr [eax+FIBER_CONTEXT_EBX] /* Parameter */ push dword ptr [eax+FIBER_CONTEXT_EAX] /* Start Address */ call _BaseThreadStartup@8 -.ENDP BaseFiberStartup@0 +.ENDP
PUBLIC _SwitchToFiber@4 @@ -135,6 +135,7 @@ /* Jump to new fiber */ mov esp, [ecx+FIBER_CONTEXT_ESP] ret 4 + + END - /* EOF */
Modified: trunk/reactos/dll/win32/rpcrt4/msvc.S URL: http://svn.reactos.org/svn/reactos/trunk/reactos/dll/win32/rpcrt4/msvc.S?rev... ============================================================================== --- trunk/reactos/dll/win32/rpcrt4/msvc.S [iso-8859-1] (original) +++ trunk/reactos/dll/win32/rpcrt4/msvc.S [iso-8859-1] Thu Oct 13 15:16:29 2011 @@ -63,7 +63,7 @@ call ndr_client_call add rsp, 38h ret -ENDFUNC call_stubless_func +ENDFUNC
PUBLIC call_server_func FUNC call_server_func @@ -102,7 +102,7 @@ pop rsi pop rbp ret -ENDFUNC call_server_func +ENDFUNC
PUBLIC NdrClientCall2 @@ -121,7 +121,7 @@
add rsp, 28h ret -ENDFUNC NdrClientCall2 +ENDFUNC
EXTERN ndr_async_client_call:PROC PUBLIC NdrAsyncClientCall @@ -139,7 +139,7 @@
add rsp, 28h ret -ENDFUNC NdrAsyncClientCall +ENDFUNC
#endif
Modified: trunk/reactos/hal/halx86/apic/tsccal.S URL: http://svn.reactos.org/svn/reactos/trunk/reactos/hal/halx86/apic/tsccal.S?re... ============================================================================== --- trunk/reactos/hal/halx86/apic/tsccal.S [iso-8859-1] (original) +++ trunk/reactos/hal/halx86/apic/tsccal.S [iso-8859-1] Thu Oct 13 15:16:29 2011 @@ -100,7 +100,7 @@ pop rbx pop rax iretq -ENDFUNC TscCalibrationISR +ENDFUNC #endif
END
Modified: trunk/reactos/include/asm/asm.inc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/asm/asm.inc?rev=541... ============================================================================== --- trunk/reactos/include/asm/asm.inc [iso-8859-1] (original) +++ trunk/reactos/include/asm/asm.inc [iso-8859-1] Thu Oct 13 15:16:29 2011 @@ -32,21 +32,18 @@
/* To avoid reverse syntax we provide a new macro .PROC, replacing PROC... */ .PROC MACRO name +__current_function_name EQU %name #ifdef _M_IX86 - _&name PROC + %name PROC #else - &name PROC FRAME + %name PROC FRAME #endif ENDM #define FUNC .PROC
/* ... and .ENDP, replacing ENDP */ -.ENDP MACRO name -#ifdef _M_IX86 - _&name ENDP -#else - &name ENDP -#endif +.ENDP MACRO + %__current_function_name ENDP ENDM #define ENDFUNC .ENDP
@@ -203,17 +200,17 @@ .macro .PROC name .func \name #ifdef _X86_ + /* x86 gas expects a label with _ prefix */ _\name: -#else +#endif \name: -#endif .cfi_startproc .equ cfa_current_offset, -8 .endm #define FUNC .PROC
/* ... and .ENDP, replacing ENDP */ -.macro .ENDP name +.macro .ENDP .cfi_endproc .endfunc .endm
Modified: trunk/reactos/include/asm/syscalls.inc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/asm/syscalls.inc?re... ============================================================================== --- trunk/reactos/include/asm/syscalls.inc [iso-8859-1] (original) +++ trunk/reactos/include/asm/syscalls.inc [iso-8859-1] Thu Oct 13 15:16:29 2011 @@ -77,10 +77,7 @@ ENDM MACRO(START_PROC, Name, Stackbytes) PUBLIC _&Name&@&Stackbytes - .PROC &Name&@&Stackbytes -ENDM -MACRO(END_PROC, Name, Stackbytes) - .ENDP &Name&@&Stackbytes + .PROC _&Name&@&Stackbytes ENDM #else MACRO(MAKE_LABEL, Name, Stackbytes) @@ -91,9 +88,6 @@ PUBLIC &Name .PROC &Name ENDM -MACRO(END_PROC, Name, Stackbytes) - .ENDP &Name -ENDM #endif
MACRO(STUB_U, Name, ArgCount) @@ -101,7 +95,7 @@ MAKE_LABEL Zw&Name, %Stackbytes START_PROC Nt&Name, %Stackbytes STUBCODE_U SyscallId, %Stackbytes - END_PROC Nt&Name, %Stackbytes + .ENDP SyscallId = SyscallId + 1 ENDM
@@ -109,6 +103,6 @@ Stackbytes = 4 * &ArgCount START_PROC Zw&Name, %Stackbytes STUBCODE_K SyscallId, %Stackbytes - END_PROC Zw&Name, %Stackbytes + .ENDP SyscallId = SyscallId + 1 ENDM
Modified: trunk/reactos/include/reactos/asm.inc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/include/reactos/asm.inc?rev... ============================================================================== --- trunk/reactos/include/reactos/asm.inc [iso-8859-1] (original) +++ trunk/reactos/include/reactos/asm.inc [iso-8859-1] Thu Oct 13 15:16:29 2011 @@ -32,14 +32,20 @@
/* To avoid reverse syntax we provide a new macro .PROC, replacing PROC... */ .PROC MACRO name - name PROC FRAME - _name: -ENDM +__current_function_name EQU %name +#ifdef _M_IX86 + %name PROC +#else + %name PROC FRAME +#endif +ENDM +#define FUNC .PROC
/* ... and .ENDP, replacing ENDP */ -.ENDP MACRO name - name ENDP -ENDM +.ENDP MACRO + %__current_function_name ENDP +ENDM +#define ENDFUNC .ENDP
/* check http://msdn.microsoft.com/en-us/library/9c9k076y%28VS.80%29.aspx and http://msdn.microsoft.com/en-us/library/ms679352%28VS.85%29.aspx */ @@ -150,17 +156,17 @@ .macro .PROC name .func \name #ifdef _X86_ + /* x86 gas expects a label with _ prefix */ _\name: -#else +#endif \name: -#endif .cfi_startproc .equ cfa_current_offset, -8 .endm #define FUNC .PROC
/* ... and .ENDP, replacing ENDP */ -.macro .ENDP name +.macro .ENDP .cfi_endproc .endfunc .endm
Modified: trunk/reactos/lib/rtl/i386/debug_asm.S URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/rtl/i386/debug_asm.S?re... ============================================================================== --- trunk/reactos/lib/rtl/i386/debug_asm.S [iso-8859-1] (original) +++ trunk/reactos/lib/rtl/i386/debug_asm.S [iso-8859-1] Thu Oct 13 15:16:29 2011 @@ -22,31 +22,31 @@
.code
-FUNC DbgBreakPointNoBugCheck@0 +FUNC _DbgBreakPointNoBugCheck@0 FPO 0, 0, 0, 0, 0, FRAME_FPO int 3 ret -ENDFUNC DbgBreakPointNoBugCheck@0 +ENDFUNC
_DbgUserBreakPoint@0: -FUNC DbgBreakPoint@0 +FUNC _DbgBreakPoint@0 FPO 0, 0, 0, 0, 0, FRAME_FPO int 3 ret -ENDFUNC DbgBreakPoint@0 +ENDFUNC
-FUNC DbgBreakPointWithStatus@4 +FUNC _DbgBreakPointWithStatus@4 FPO 0, 1, 0, 0, 0, FRAME_FPO mov eax, [esp+4] -ENDFUNC DbgBreakPointWithStatus@4 +ENDFUNC
-FUNC RtlpBreakWithStatusInstruction@0 +FUNC _RtlpBreakWithStatusInstruction@0 FPO 0, 0, 0, 0, 0, FRAME_FPO int 3 ret 4 -ENDFUNC RtlpBreakWithStatusInstruction@0 +ENDFUNC
-FUNC DebugService2@12 +FUNC _DebugService2@12 FPO 0, 3, 3, 0, 1, FRAME_NONFPO
/* Setup the stack */ @@ -63,9 +63,9 @@ /* Restore stack */ pop ebp ret 12 -ENDFUNC DebugService2@12 +ENDFUNC
-FUNC DebugService@20 +FUNC _DebugService@20 FPO 0, 5, 3, 0, 1, FRAME_NONFPO
/* Setup the stack */ @@ -92,6 +92,6 @@ /* Return */ pop ebp ret 20 -ENDFUNC DebugService@20 +ENDFUNC
END
Modified: trunk/reactos/lib/rtl/i386/rtlswap.S URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/rtl/i386/rtlswap.S?rev=... ============================================================================== --- trunk/reactos/lib/rtl/i386/rtlswap.S [iso-8859-1] (original) +++ trunk/reactos/lib/rtl/i386/rtlswap.S [iso-8859-1] Thu Oct 13 15:16:29 2011 @@ -16,28 +16,25 @@ /* FUNCTIONS ***************************************************************/ .code
-@RtlUshortByteSwap@4: -FUNC RtlUshortByteSwap +FUNC @RtlUshortByteSwap@4 FPO 0, 0, 0, 0, 0, FRAME_FPO
/* Swap high and low bits */ mov ah, cl mov al, ch ret -ENDFUNC RtlUshortByteSwap +ENDFUNC
-@RtlUlongByteSwap@4: -FUNC RtlUlongByteSwap +FUNC @RtlUlongByteSwap@4 FPO 0, 0, 0, 0, 0, FRAME_FPO
/* Swap high and low bits */ mov eax, ecx bswap eax ret -ENDFUNC RtlUlongByteSwap +ENDFUNC
-@RtlUlonglongByteSwap@8: -FUNC RtlUlonglongByteSwap +FUNC @RtlUlonglongByteSwap@8 FPO 0, 2, 0, 0, 0, FRAME_FPO
/* Get 64-bit integer */ @@ -53,6 +50,6 @@ and therefore put on tthe stack instead of in ecx and edx, but thats exactly how the function behaves on Windows! */ ret -ENDFUNC RtlUlonglongByteSwap +ENDFUNC
END
Modified: trunk/reactos/lib/sdk/crt/string/i386/tcscpy.inc URL: http://svn.reactos.org/svn/reactos/trunk/reactos/lib/sdk/crt/string/i386/tcs... ============================================================================== --- trunk/reactos/lib/sdk/crt/string/i386/tcscpy.inc [iso-8859-1] (original) +++ trunk/reactos/lib/sdk/crt/string/i386/tcscpy.inc [iso-8859-1] Thu Oct 13 15:16:29 2011 @@ -7,7 +7,7 @@ PUBLIC _tcscpy .code
-FUNC tcscpy +FUNC _tcscpy FPO 0, 2, 2, 2, 0, FRAME_FPO push esi push edi @@ -27,7 +27,7 @@ pop edi pop esi ret -ENDFUNC tcscpy +ENDFUNC
END /* EOF */
Modified: trunk/reactos/ntoskrnl/include/internal/i386/asmmacro.S URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/include/internal/i... ============================================================================== --- trunk/reactos/ntoskrnl/include/internal/i386/asmmacro.S [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/include/internal/i386/asmmacro.S [iso-8859-1] Thu Oct 13 15:16:29 2011 @@ -219,7 +219,7 @@ MACRO(TRAP_ENTRY, Trap, Flags) EXTERN @&Trap&Handler@4 :PROC PUBLIC _&Trap - .PROC &Trap + .PROC _&Trap /* Generate proper debugging symbols */ FPO 0, 0, 0, 0, 1, FRAME_TRAP
@@ -228,7 +228,7 @@
/* Call the C handler */ KiCallHandler @&Trap&Handler@4 - .ENDP &Trap + .ENDP ENDM
#define KI_RESTORE_EAX HEX(001)
Modified: trunk/reactos/ntoskrnl/ke/i386/trap.s URL: http://svn.reactos.org/svn/reactos/trunk/reactos/ntoskrnl/ke/i386/trap.s?rev... ============================================================================== --- trunk/reactos/ntoskrnl/ke/i386/trap.s [iso-8859-1] (original) +++ trunk/reactos/ntoskrnl/ke/i386/trap.s [iso-8859-1] Thu Oct 13 15:16:29 2011 @@ -136,19 +136,19 @@
EXTERN @KiSystemServiceHandler@8:PROC PUBLIC _KiSystemService -.PROC KiSystemService +.PROC _KiSystemService FPO 0, 0, 0, 0, 1, FRAME_TRAP KiEnterTrap (KI_PUSH_FAKE_ERROR_CODE OR KI_NONVOLATILES_ONLY OR KI_DONT_SAVE_SEGS) KiCallHandler @KiSystemServiceHandler@8 -.ENDP KiSystemService +.ENDP
EXTERN @KiFastCallEntryHandler@8:PROC PUBLIC _KiFastCallEntry -.PROC KiFastCallEntry +.PROC _KiFastCallEntry FPO 0, 0, 0, 0, 1, FRAME_TRAP KiEnterTrap (KI_FAST_SYSTEM_CALL OR KI_NONVOLATILES_ONLY OR KI_DONT_SAVE_SEGS) KiCallHandler @KiFastCallEntryHandler@8 -.ENDP KiFastCallEntry +.ENDP
PUBLIC _KiEndUnexpectedRange@0