Author: tkreuzer
Date: Sat Jan 30 04:12:26 2010
New Revision: 45336
URL: 
http://svn.reactos.org/svn/reactos?rev=45336&view=rev
Log:
trap.S is now fully MASM/ML compatible
Modified:
    branches/ros-amd64-bringup/reactos/ntoskrnl/ke/amd64/trap.S
Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/ke/amd64/trap.S
URL:
http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntosk…
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/ke/amd64/trap.S [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/ke/amd64/trap.S [iso-8859-1] Sat Jan 30
04:12:26 2010
@@ -11,7 +11,7 @@
 #include <ndk/amd64/asm.h>
 EXTERN _KiDispatchException:PROC
-EXTERN _FrLdrDbgPrint:PROC
+EXTERN _FrLdrDbgPrint:DWORD
 EXTERN _KeBugCheckWithTf:PROC
 EXTERN _MmAccessFault:PROC
@@ -45,16 +45,16 @@
 .ascii "Trap: %s at %p\n\0"
 MACRO(TRAPINFO, func)
+LOCAL label1, label2
 #if 0
-    jmp 2f
-    .equ expr, 12
-1:  .asciz "\func"
-2:
+    jmp label2
+label1:  .asciz "\func"
+label2:
     sub rsp, 32
     lea rcx, RIP(_MsgTrapInfo)
     lea rdx, 1b[rip]
     mov r8, [rbp + KTRAP_FRAME_Rip]
-    call _FrLdrDbgPrint[rip]
+    call qword ptr RIP(_FrLdrDbgPrint)
     add rsp, 32
 #endif
 ENDM
@@ -86,6 +86,7 @@
  * ENTER_TRAP_FRAME - Allocate SIZE_KTRAP_FRAME and save registers to it
  */
 MACRO(ENTER_TRAP_FRAME, Flags)
+LOCAL dont_swap
     SIZE_INITIAL_FRAME = 7 * 8
     SIZE_TRAP_FRAME_ALLOC = SIZE_KTRAP_FRAME - SIZE_INITIAL_FRAME
     TRAPFLAGS = VAL(Flags)
@@ -145,9 +146,9 @@
     mov ax, [rbp + KTRAP_FRAME_SegCs]
     and al, 1
     mov [rbp + KTRAP_FRAME_PreviousMode], al
-    jz 1f
+    jz dont_swap
     swapgs
-1:
+dont_swap:
     /* Save previous irql */
     mov rax, cr8
@@ -189,7 +190,7 @@
  *  LEAVE_TRAP_FRAME - Restore registers and free stack space
  */
 MACRO(LEAVE_TRAP_FRAME)
-
+LOCAL dont_swap_back
 if (TRAPFLAGS AND TRAPFLAG_SEGMENTS)
     /* Restore segment selectors */
     mov ax, [rbp + KTRAP_FRAME_SegDs]
@@ -201,9 +202,9 @@
 endif
     test byte ptr [rbp + KTRAP_FRAME_PreviousMode], 1
-    jz 1f
+    jz dont_swap_back
     swapgs
-1:
+dont_swap_back:
 if (TRAPFLAGS AND TRAPFLAG_NONVOLATILES)
     /* Restore non-volatile registers */
@@ -330,7 +331,7 @@
 PUBLIC _KiDivideErrorFault
 .PROC _KiDivideErrorFault
-    .pushframe 0
+    .pushframe
     /* Push pseudo error code */
     push 0
     .allocstack 8
@@ -343,7 +344,7 @@
 PUBLIC _KiDebugTrapOrFault
 .PROC _KiDebugTrapOrFault
-    .pushframe 0
+    .pushframe
     /* Push pseudo error code */
     push 0
     .allocstack 8
@@ -377,7 +378,7 @@
 PUBLIC _KiNmiInterrupt
 .PROC _KiNmiInterrupt
-    .pushframe 0
+    .pushframe
     /* Push pseudo error code */
     push 0
     .allocstack 8
@@ -390,7 +391,7 @@
 PUBLIC _KiBreakpointTrap
 .PROC _KiBreakpointTrap
-    .pushframe 0
+    .pushframe
     /* Push pseudo error code */
     push 0
     .allocstack 8
@@ -402,7 +403,7 @@
 //    lea rcx, RIP(_MsgBreakpointTrap)
 //    mov rdx, rsp
-//    call RIP(_FrLdrDbgPrint)
+//    call qword ptr RIP(_FrLdrDbgPrint)
     /* Dispatch the exception */
     mov eax, STATUS_BREAKPOINT
@@ -419,7 +420,7 @@
 PUBLIC _KiOverflowTrap
 .PROC _KiOverflowTrap
-    .pushframe 0
+    .pushframe
     /* Push pseudo error code */
     push 0
     .allocstack 8
@@ -431,7 +432,7 @@
 PUBLIC _KiBoundFault
 .PROC _KiBoundFault
-    .pushframe 0
+    .pushframe
     /* Push pseudo error code */
     push 0
     .allocstack 8
@@ -450,7 +451,7 @@
 PUBLIC _KiInvalidOpcodeFault
 .PROC _KiInvalidOpcodeFault
-    .pushframe 0
+    .pushframe
     /* Push pseudo error code */
     push 0
     .allocstack 8
@@ -464,7 +465,7 @@
     mov rdx, [rbp + KTRAP_FRAME_Rip]
     lea rcx, RIP(_MsgInvalidOpcodeFault)
-    call RIP(_FrLdrDbgPrint)
+    call qword ptr RIP(_FrLdrDbgPrint)
     jmp $
     /* Return */
@@ -474,7 +475,7 @@
 PUBLIC _KiNpxNotAvailableFault
 .PROC _KiNpxNotAvailableFault
-    .pushframe 0
+    .pushframe
     /* Push pseudo error code */
     push 0
     .allocstack 8
@@ -487,7 +488,7 @@
 PUBLIC _KiDoubleFaultAbort
 .PROC _KiDoubleFaultAbort
-    .pushframe 0
+    .pushframe
     /* Push pseudo error code */
     push 0
     .allocstack 8
@@ -498,7 +499,7 @@
     lea rcx, RIP(_MsgDoubleFault)
     mov rdx, [rbp + KTRAP_FRAME_FaultAddress]
     mov r8, rbp
-    call RIP(_FrLdrDbgPrint)
+    call qword ptr RIP(_FrLdrDbgPrint)
     /* Bugcheck code UNEXPECTED_KERNEL_MODE_TRAP */
     mov rcx, HEX(0000007F)
@@ -516,7 +517,7 @@
 PUBLIC _KiNpxSegmentOverrunAbort
 .PROC _KiNpxSegmentOverrunAbort
-    .pushframe 0
+    .pushframe
     /* Push pseudo error code */
     push 0
     .allocstack 8
@@ -529,7 +530,7 @@
 PUBLIC _KiInvalidTssFault
 .PROC _KiInvalidTssFault
-    .pushframe 1
+    .pushframe code
     /* We have an error code */
     .endprolog
@@ -540,7 +541,7 @@
 PUBLIC _KiSegmentNotPresentFault
 .PROC _KiSegmentNotPresentFault
-    .pushframe 1
+    .pushframe
     /* We have an error code */
     .endprolog
@@ -551,7 +552,7 @@
 PUBLIC _KiStackFault
 .PROC _KiStackFault
-    .pushframe 1
+    .pushframe code
     /* We have an error code */
     .endprolog
@@ -562,7 +563,7 @@
 PUBLIC _KiGeneralProtectionFault
 .PROC _KiGeneralProtectionFault
-    .pushframe 1
+    .pushframe code
     /* We have an error code */
     .endprolog
@@ -573,7 +574,7 @@
     mov rdx, [rbp + KTRAP_FRAME_Rip]
     lea rcx, RIP(_MsgGeneralProtFault)
-    call RIP(_FrLdrDbgPrint)
+    call qword ptr RIP(_FrLdrDbgPrint)
     /* Check if this was from user-mode */
     cmp byte ptr [rbp + KTRAP_FRAME_PreviousMode], KernelMode
@@ -675,7 +676,7 @@
 PUBLIC _KiPageFault
 .PROC _KiPageFault
-    .pushframe 1
+    .pushframe code
     /* We have an error code */
     .endprolog
@@ -688,7 +689,7 @@
     mov rdx, [rbp + KTRAP_FRAME_ErrorCode]
     mov r8, [rbp + KTRAP_FRAME_Rip]
     mov r9, [rbp + KTRAP_FRAME_FaultAddress]
-    call RIP(_FrLdrDbgPrint)
+    call qword ptr RIP(_FrLdrDbgPrint)
 #endif
     /* Save page fault address */
@@ -745,7 +746,7 @@
 PUBLIC _KiFloatingErrorFault
 .PROC _KiFloatingErrorFault
-    .pushframe 0
+    .pushframe
     /* Push pseudo error code */
     push 0
     .allocstack 8
@@ -758,7 +759,7 @@
 PUBLIC _KiAlignmentFault
 .PROC _KiAlignmentFault
-    .pushframe 1
+    .pushframe code
     /* We have an error code */
     .endprolog
@@ -769,7 +770,7 @@
 PUBLIC _KiMcheckAbort
 .PROC _KiMcheckAbort
-    .pushframe 0
+    .pushframe
     /* Push pseudo error code */
     push 0
     .allocstack 8
@@ -782,7 +783,7 @@
 PUBLIC _KiXmmException
 .PROC _KiXmmException
-    .pushframe 0
+    .pushframe
     /* Push pseudo error code */
     push 0
     .allocstack 8
@@ -795,7 +796,7 @@
 PUBLIC _KiApcInterrupt
 .PROC _KiApcInterrupt
-    .pushframe 1
+    .pushframe code
     .endprolog
     UNIMPLEMENTED KiApcInterrupt
@@ -805,7 +806,7 @@
 PUBLIC _KiRaiseAssertion
 .PROC _KiRaiseAssertion
-    .pushframe 1
+    .pushframe code
     .endprolog
     UNIMPLEMENTED KiRaiseAssertion
@@ -815,7 +816,7 @@
 PUBLIC _KiDebugServiceTrap
 .PROC _KiDebugServiceTrap
-    .pushframe 0
+    .pushframe
     /* Push pseudo error code */
     push 0
     .allocstack 8
@@ -842,7 +843,7 @@
 PUBLIC _KiDpcInterrupt
 .PROC _KiDpcInterrupt
-    .pushframe 1
+    .pushframe code
     .endprolog
     UNIMPLEMENTED KiDpcInterrupt
@@ -852,7 +853,7 @@
 PUBLIC _KiIpiInterrupt
 .PROC _KiIpiInterrupt
-    .pushframe 1
+    .pushframe code
     .endprolog
     UNIMPLEMENTED KiIpiInterrupt
@@ -862,7 +863,7 @@
 PUBLIC _KiUnexpectedInterrupt
 .PROC _KiUnexpectedInterrupt
-    .pushframe 0
+    .pushframe
     .endprolog
     /* The error code is the vector */