[ros-diffs] [tkreuzer] 45399: [NTOS] - Get rid of all Ke386* inline functions for amd64 - add some stubs for msvc

tkreuzer at svn.reactos.org tkreuzer at svn.reactos.org
Wed Feb 3 19:53:41 CET 2010


Author: tkreuzer
Date: Wed Feb  3 19:53:41 2010
New Revision: 45399

URL: http://svn.reactos.org/svn/reactos?rev=45399&view=rev
Log:
[NTOS]
- Get rid of all Ke386* inline functions for amd64
- add some stubs for msvc

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

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=45399&r1=45398&r2=45399&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] Wed Feb  3 19:53:41 2010
@@ -1,13 +1,12 @@
 #ifndef _INTRIN_INTERNAL_
 #define _INTRIN_INTERNAL_
 
-#ifdef CONFIG_SMP
-#define LOCK "lock ; "
-#else
-#define LOCK ""
-#endif
-
-#define KeSetCurrentIrql(x) __writecr8(x)
+VOID
+FORCEINLINE
+KeSetCurrentIrql(KIRQL Irql)
+{
+    __writecr8(Irql);
+}
 
 PKGDTENTRY64
 FORCEINLINE
@@ -103,344 +102,41 @@
 }
 
 
-#define _Ke386GetSeg(N)           ({ \
-                                     unsigned int __d; \
-                                     __asm__("movl %%" #N ",%0\n\t" :"=r" (__d)); \
-                                     __d; \
-                                 })
+#elif defined(_MSC_VER)
 
-#define _Ke386SetSeg(N,X)         __asm__ __volatile__("movl %0,%%" #N : :"r" (X));
+#define UNIMPLEMENTED DbgPrint("%s is unimplemented!!!\n", __FUNCTION__);
 
-#define _Ke386GetDr(N)           ({ \
-                                     unsigned int __d; \
-                                     __asm__("movq %%dr" #N ",%0\n\t" :"=r" (__d)); \
-                                     __d; \
-                                 })
+void FORCEINLINE __lgdt(void *Source)
+{
+	UNIMPLEMENTED;
+}
 
-#define _Ke386SetDr(N,X)         __asm__ __volatile__("movl %0,%%dr" #N : :"r" (X));
+void FORCEINLINE __sgdt(void *Destination)
+{
+	UNIMPLEMENTED;
+}
+
+void FORCEINLINE __lldt(unsigned short Value)
+{
+	UNIMPLEMENTED;
+}
+
+void FORCEINLINE __sldt(void *Destination)
+{
+	UNIMPLEMENTED;
+}
+
+void FORCEINLINE __ltr(unsigned short Source)
+{
+	UNIMPLEMENTED;
+}
+
+void FORCEINLINE __str(unsigned short *Destination)
+{
+	UNIMPLEMENTED;
+}
 
 
-static inline void Ki386Cpuid(ULONG Op, PULONG Eax, PULONG Ebx, PULONG Ecx, PULONG Edx)
-{
-    __asm__("cpuid"
-	    : "=a" (*Eax), "=b" (*Ebx), "=c" (*Ecx), "=d" (*Edx)
-	    : "0" (Op));
-}
-
-#define Ke386Rdmsr(msr,val1,val2) __asm__ __volatile__("rdmsr" : "=a" (val1), "=d" (val2) : "c" (msr))
-#define Ke386Wrmsr(msr,val1,val2) __asm__ __volatile__("wrmsr" : /* no outputs */ : "c" (msr), "a" (val1), "d" (val2))
-
-#define Ke386HaltProcessor()        __asm__("hlt\n\t");
-
-#define Ke386FnInit()               __asm__("fninit\n\t");
-
-
-//
-// CR Macros
-//
-#define Ke386SetCr2(X)              __asm__ __volatile__("movq %0,%%cr2" : :"r" ((void*)X));
-
-//
-// DR Macros
-//
-#define Ke386GetDr0()               _Ke386GetDr(0)
-#define Ke386GetDr1()               _Ke386GetDr(1)
-#define Ke386SetDr0(X)              _Ke386SetDr(0,X)
-#define Ke386SetDr1(X)              _Ke386SetDr(1,X)
-#define Ke386GetDr2()               _Ke386GetDr(2)
-#define Ke386SetDr2(X)              _Ke386SetDr(2,X)
-#define Ke386GetDr3()               _Ke386GetDr(3)
-#define Ke386SetDr3(X)              _Ke386SetDr(3,X)
-#define Ke386GetDr4()               _Ke386GetDr(4)
-#define Ke386SetDr4(X)              _Ke386SetDr(4,X)
-#define Ke386GetDr6()               _Ke386GetDr(6)
-#define Ke386SetDr6(X)              _Ke386SetDr(6,X)
-#define Ke386GetDr7()               _Ke386GetDr(7)
-#define Ke386SetDr7(X)              _Ke386SetDr(7,X)
-
-//
-// Segment Macros
-//
-#define Ke386GetSs()                _Ke386GetSeg(ss)
-#define Ke386GetFs()                _Ke386GetSeg(fs)
-#define Ke386SetFs(X)               _Ke386SetSeg(fs, X)
-#define Ke386SetGs(X)               _Ke386SetSeg(gs, X)
-#define Ke386SetDs(X)               _Ke386SetSeg(ds, X)
-#define Ke386SetEs(X)               _Ke386SetSeg(es, X)
-#define Ke386SetSs(X)               _Ke386SetSeg(ss, X)
-
-#elif defined(_MSC_VER)
-
-VOID
-FORCEINLINE
-Ke386Wrmsr(IN ULONG Register,
-           IN ULONG Var1,
-           IN ULONG Var2)
-{
-    __writemsr(Register, (ULONG64)Var1 <<32 | Var2);
-}
-
-ULONGLONG
-FORCEINLINE
-Ke386Rdmsr(IN ULONG Register,
-           IN ULONG Var1,
-           IN ULONG Var2)
-{
-    return __readmsr(Register);
-}
-
-#define UNIMPLEMENTED DbgPrint("unimplemented!!!\n");
-
-VOID
-FORCEINLINE
-Ki386Cpuid(IN ULONG Operation,
-           OUT PULONG Var1,
-           OUT PULONG Var2,
-           OUT PULONG Var3,
-           OUT PULONG Var4)
-{
-    UNIMPLEMENTED;
-}
-
-VOID
-FORCEINLINE
-Ke386FnInit(VOID)
-{
-    UNIMPLEMENTED;
-}
-
-VOID
-FORCEINLINE
-Ke386HaltProcessor(VOID)
-{
-    UNIMPLEMENTED;
-}
-
-VOID
-FORCEINLINE
-Ke386GetInterruptDescriptorTable(OUT KDESCRIPTOR Descriptor)
-{
-    UNIMPLEMENTED;
-}
-
-VOID
-FORCEINLINE
-Ke386SetInterruptDescriptorTable(IN KDESCRIPTOR Descriptor)
-{
-    UNIMPLEMENTED;
-}
-
-VOID
-FORCEINLINE
-Ke386GetGlobalDescriptorTable(OUT KDESCRIPTOR Descriptor)
-{
-    UNIMPLEMENTED;
-}
-
-VOID
-FORCEINLINE
-Ke386SetGlobalDescriptorTable(IN KDESCRIPTOR Descriptor)
-{
-    UNIMPLEMENTED;
-}
-
-VOID
-FORCEINLINE
-Ke386GetLocalDescriptorTable(OUT USHORT Descriptor)
-{
-    UNIMPLEMENTED;
-}
-
-VOID
-FORCEINLINE
-Ke386SetLocalDescriptorTable(IN USHORT Descriptor)
-{
-    UNIMPLEMENTED;
-}
-
-VOID
-FORCEINLINE
-Ke386SaveFlags(IN ULONG Flags)
-{
-    UNIMPLEMENTED;
-}
-
-VOID
-FORCEINLINE
-Ke386RestoreFlags(IN ULONG Flags)
-{
-    UNIMPLEMENTED;
-}
-
-VOID
-FORCEINLINE
-Ke386SetTr(IN USHORT Tr)
-{
-    UNIMPLEMENTED;
-}
-
-USHORT
-FORCEINLINE
-Ke386GetTr(IN USHORT Tr)
-{
-    UNIMPLEMENTED;
-}
-
-//
-// CR Macros
-//
-VOID
-FORCEINLINE
-Ke386SetCr2(IN ULONG Value)
-{
-    UNIMPLEMENTED;
-}
-
-//
-// DR Macros
-//
-ULONG
-FORCEINLINE
-Ke386GetDr0(VOID)
-{
-    UNIMPLEMENTED;
-}
-
-ULONG
-FORCEINLINE
-Ke386GetDr1(VOID)
-{
-    UNIMPLEMENTED;
-}
-
-ULONG
-FORCEINLINE
-Ke386GetDr2(VOID)
-{
-    UNIMPLEMENTED;
-}
-
-ULONG
-FORCEINLINE
-Ke386GetDr3(VOID)
-{
-    UNIMPLEMENTED;
-}
-
-ULONG
-FORCEINLINE
-Ke386GetDr6(VOID)
-{
-    UNIMPLEMENTED;
-}
-
-ULONG
-FORCEINLINE
-Ke386GetDr7(VOID)
-{
-    UNIMPLEMENTED;
-}
-
-VOID
-FORCEINLINE
-Ke386SetDr0(IN ULONG Value)
-{
-    UNIMPLEMENTED;
-}
-
-VOID
-FORCEINLINE
-Ke386SetDr1(IN ULONG Value)
-{
-    UNIMPLEMENTED;
-}
-
-VOID
-FORCEINLINE
-Ke386SetDr2(IN ULONG Value)
-{
-    UNIMPLEMENTED;
-}
-
-VOID
-FORCEINLINE
-Ke386SetDr3(IN ULONG Value)
-{
-    UNIMPLEMENTED;
-}
-
-VOID
-FORCEINLINE
-Ke386SetDr6(IN ULONG Value)
-{
-    UNIMPLEMENTED;
-}
-
-VOID
-FORCEINLINE
-Ke386SetDr7(IN ULONG Value)
-{
-    UNIMPLEMENTED;
-}
-
-//
-// Segment Macros
-//
-USHORT
-FORCEINLINE
-Ke386GetSs(VOID)
-{
-    UNIMPLEMENTED;
-}
-
-USHORT
-FORCEINLINE
-Ke386GetFs(VOID)
-{
-    UNIMPLEMENTED;
-}
-
-USHORT
-FORCEINLINE
-Ke386GetDs(VOID)
-{
-    UNIMPLEMENTED;
-}
-
-USHORT
-FORCEINLINE
-Ke386GetEs(VOID)
-{
-    UNIMPLEMENTED;
-}
-
-VOID
-FORCEINLINE
-Ke386SetSs(IN USHORT Value)
-{
-    UNIMPLEMENTED;
-}
-
-VOID
-FORCEINLINE
-Ke386SetFs(IN USHORT Value)
-{
-    UNIMPLEMENTED;
-}
-
-VOID
-FORCEINLINE
-Ke386SetDs(IN USHORT Value)
-{
-    UNIMPLEMENTED;
-}
-
-VOID
-FORCEINLINE
-Ke386SetEs(IN USHORT Value)
-{
-    UNIMPLEMENTED;
-}
 
 #else
 #error Unknown compiler for inline assembler

Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/ke/amd64/kiinit.c
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/ke/amd64/kiinit.c?rev=45399&r1=45398&r2=45399&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/ke/amd64/kiinit.c [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/ke/amd64/kiinit.c [iso-8859-1] Wed Feb  3 19:53:41 2010
@@ -389,11 +389,6 @@
     __writemsr(X86_MSR_GSBASE, (ULONG64)Pcr);
     __writemsr(X86_MSR_KERNEL_GSBASE, (ULONG64)Pcr);
 
-    /* Load Ring 3 selectors for DS/ES/FS */
-    Ke386SetDs(KGDT64_R3_DATA | RPL_MASK);
-    Ke386SetEs(KGDT64_R3_DATA | RPL_MASK);
-    Ke386SetFs(KGDT64_R3_CMTEB | RPL_MASK);
-
     /* LDT is unused */
     __lldt(0);
 




More information about the Ros-diffs mailing list