[ros-diffs] [tkreuzer] 45433: [NTOS] On MSVC implement _lgdt, __sgdt, __lldt, __sldt, __ltr and __str as assembly functions, because there is no inline assembly. The MSVC/ML64 built kernel now boots and WinDbg connects.

tkreuzer at svn.reactos.org tkreuzer at svn.reactos.org
Fri Feb 5 04:05:51 CET 2010


Author: tkreuzer
Date: Fri Feb  5 04:05:51 2010
New Revision: 45433

URL: http://svn.reactos.org/svn/reactos?rev=45433&view=rev
Log:
[NTOS]
On MSVC implement _lgdt, __sgdt, __lldt, __sldt, __ltr and __str as assembly functions, because there is no inline assembly.
The MSVC/ML64 built kernel now boots and WinDbg connects.

Modified:
    branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/intrin_i.h
    branches/ros-amd64-bringup/reactos/ntoskrnl/ke/amd64/trap.S

Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/intrin_i.h
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/intrin_i.h?rev=45433&r1=45432&r2=45433&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/intrin_i.h [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/intrin_i.h [iso-8859-1] Fri Feb  5 04:05:51 2010
@@ -106,36 +106,17 @@
 
 #define UNIMPLEMENTED DbgPrint("%s is unimplemented!!!\n", __FUNCTION__);
 
-void FORCEINLINE __lgdt(void *Source)
-{
-	UNIMPLEMENTED;
-}
+void __lgdt(void *Source);
 
-void FORCEINLINE __sgdt(void *Destination)
-{
-	UNIMPLEMENTED;
-}
+void __sgdt(void *Destination);
 
-void FORCEINLINE __lldt(unsigned short Value)
-{
-	UNIMPLEMENTED;
-}
+void __lldt(unsigned short Value);
 
-void FORCEINLINE __sldt(void *Destination)
-{
-	UNIMPLEMENTED;
-}
+void __sldt(void *Destination);
 
-void FORCEINLINE __ltr(unsigned short Source)
-{
-	UNIMPLEMENTED;
-}
+void __ltr(unsigned short Source);
 
-void FORCEINLINE __str(unsigned short *Destination)
-{
-	UNIMPLEMENTED;
-}
-
+void __str(unsigned short *Destination);
 
 
 #else

Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/ke/amd64/trap.S
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/ke/amd64/trap.S?rev=45433&r1=45432&r2=45433&view=diff
==============================================================================
--- 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] Fri Feb  5 04:05:51 2010
@@ -905,6 +905,44 @@
     jmp $
 .ENDP KiUnexpectedInterrupt
 
-
+#ifdef _MSC_VER
+
+//void __lgdt(void *Source);
+PUBLIC __lgdt
+__lgdt:
+    lgdt fword ptr [rcx]
+    ret
+
+//void __sgdt(void *Destination);
+PUBLIC __sgdt
+__sgdt:
+    sgdt fword ptr [rcx]
+    ret
+
+// void __lldt(unsigned short Value)
+PUBLIC __lldt
+__lldt:
+    lldt cx
+    ret
+
+//void __sldt(void *Destination);
+PUBLIC __sldt
+__sldt:
+    sldt word ptr [rcx]
+    ret
+
+//void __ltr(unsigned short Source);
+PUBLIC __ltr
+__ltr:
+    ltr cx
+    ret
+
+//void __str(unsigned short *Destination);
+PUBLIC __str
+__str:
+    str word ptr [rcx]
+    ret
+
+#endif
 
 END




More information about the Ros-diffs mailing list