[ASM]
authorTimo Kreuzer <timo.kreuzer@reactos.org>
Sat, 20 Aug 2011 10:39:28 +0000 (10:39 +0000)
committerTimo Kreuzer <timo.kreuzer@reactos.org>
Sat, 20 Aug 2011 10:39:28 +0000 (10:39 +0000)
- prefix labels only on x86
- improve syscall stub code

svn path=/trunk/; revision=53333

reactos/include/asm/asm.inc
reactos/include/asm/syscalls.inc

index db0acdb..17c57c3 100644 (file)
@@ -32,13 +32,21 @@ rip = 0
 \r
 /* To avoid reverse syntax we provide a new macro .PROC, replacing PROC... */\r
 .PROC MACRO name\r
+#ifdef _M_IX86\r
     _&name PROC\r
+#else\r
+    &name PROC FRAME\r
+#endif\r
 ENDM\r
 #define FUNC .PROC\r
 \r
 /* ... and .ENDP, replacing ENDP */\r
 .ENDP MACRO name\r
+#ifdef _M_IX86\r
     _&name ENDP\r
+#else\r
+    &name ENDP\r
+#endif\r
 ENDM\r
 #define ENDFUNC .ENDP\r
 \r
index 85ef7a4..aad93da 100644 (file)
@@ -3,12 +3,14 @@
 #define KUSER_SHARED_SYSCALL HEX(7ffe0300)\r
 #define KGDT_R0_CODE 8\r
 MACRO(STUBCODE_U, SyscallId, StackBytes)\r
+    FPO 0, 0, 0, 0, 0, FRAME_FPO\r
     mov eax, SyscallId\r
     mov ecx, KUSER_SHARED_SYSCALL\r
     call dword ptr [ecx]\r
     ret StackBytes\r
 ENDM\r
 MACRO(STUBCODE_K, SyscallId, StackBytes)\r
+    FPO 0, 0, 0, 0, 0, FRAME_FPO\r
     mov eax, SyscallId\r
     lea edx, [esp + 4]\r
     pushfd\r
@@ -18,12 +20,14 @@ MACRO(STUBCODE_K, SyscallId, StackBytes)
 ENDM\r
 #elif defined(_M_AMD64)\r
 MACRO(STUBCODE_U, SyscallId, StackBytes)\r
+    .ENDPROLOG\r
     mov eax, SyscallId\r
     mov r10, rcx\r
     syscall\r
     ret StackBytes\r
 ENDM\r
 MACRO(STUBCODE_K, SyscallId, StackBytes)\r
+    .ENDPROLOG\r
     mov eax, SyscallId\r
     call KiSystemService\r
     ret StackBytes\r
@@ -74,7 +78,6 @@ ENDM
 MACRO(START_PROC, Name, Stackbytes)\r
     PUBLIC _&Name&@&Stackbytes\r
     .PROC &Name&@&Stackbytes\r
-    FPO 0, 0, 0, 0, 0, FRAME_FPO\r
 ENDM\r
 MACRO(END_PROC, Name, Stackbytes)\r
     .ENDP &Name&@&Stackbytes\r
@@ -87,7 +90,6 @@ ENDM
 MACRO(START_PROC, Name, Stackbytes)\r
     PUBLIC &Name\r
     .PROC &Name\r
-    FPO 0, 0, 0, 0, 0, FRAME_FPO\r
 ENDM\r
 MACRO(END_PROC, Name, Stackbytes)\r
     .ENDP &Name\r