[ros-diffs] [tkreuzer] 34753: - add ntoskrnl to the build again, as we will need it now. - add ke.h, mm.h and intrin_i.h for amd64 currently copied from i386 - remove Interlocked funtions from private ntoskrnl header that don't belong there, this will probably break x86 build, but who cares ; -) At least the header compiles now...

tkreuzer at svn.reactos.org tkreuzer at svn.reactos.org
Thu Jul 24 22:07:30 CEST 2008


Author: tkreuzer
Date: Thu Jul 24 15:07:30 2008
New Revision: 34753

URL: http://svn.reactos.org/svn/reactos?rev=34753&view=rev
Log:
- add ntoskrnl to the build again, as we will need it now.
- add ke.h, mm.h and intrin_i.h for amd64 currently copied from i386
- remove Interlocked funtions from private ntoskrnl header that don't belong there, this will probably break x86 build, but who cares ;-)
At least the header compiles now...

Added:
    branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/
    branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/intrin_i.h   (with props)
    branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/ke.h   (with props)
    branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/mm.h   (with props)
Modified:
    branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/arch/intrin_i.h
    branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/arch/ke.h
    branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/arch/mm.h
    branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/ntoskrnl.h
    branches/ros-amd64-bringup/reactos/ntoskrnl/ntoskrnl.rbuild

Added: 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=34753&view=auto
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/intrin_i.h (added)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/intrin_i.h [iso-8859-1] Thu Jul 24 15:07:30 2008
@@ -1,0 +1,415 @@
+#ifndef _INTRIN_INTERNAL_
+#define _INTRIN_INTERNAL_
+
+#ifdef CONFIG_SMP
+#define LOCK "lock ; "
+#else
+#define LOCK ""
+#endif
+
+#if defined(__GNUC__)
+
+#define Ke386SetInterruptDescriptorTable(X) \
+    __asm__("lidt %0\n\t" \
+    : /* no outputs */ \
+    : "m" (X));
+
+#define Ke386GetInterruptDescriptorTable(X) \
+    __asm__("sidt %0\n\t" \
+    : /* no outputs */ \
+    : "m" (X));
+
+#define Ke386SetGlobalDescriptorTable(X) \
+    __asm__("lgdt %0\n\t" \
+    : /* no outputs */ \
+    : "m" (X));
+
+#define Ke386GetGlobalDescriptorTable(X) \
+    __asm__("sgdt %0\n\t" \
+    : /* no outputs */ \
+    : "m" (X));
+
+#define Ke386GetLocalDescriptorTable(X) \
+    __asm__("sldt %0\n\t" \
+    : /* no outputs */ \
+    : "m" (X));
+
+#define Ke386SetLocalDescriptorTable(X) \
+    __asm__("lldt %w0\n\t" \
+    : /* no outputs */ \
+    : "q" (X));
+
+#define Ke386SetTr(X)                   __asm__ __volatile__("ltr %%ax" : :"a" (X));
+
+#define Ke386GetTr(X) \
+    __asm__("str %0\n\t" \
+    : /* no outputs */ \
+    : "m" (X));
+
+#define Ke386SaveFlags(x)        __asm__ __volatile__("pushfl ; popl %0":"=g" (x): /* no input */)
+#define Ke386RestoreFlags(x)     __asm__ __volatile__("pushl %0 ; popfl": /* no output */ :"g" (x):"memory")
+
+#define _Ke386GetSeg(N)           ({ \
+                                     unsigned int __d; \
+                                     __asm__("movl %%" #N ",%0\n\t" :"=r" (__d)); \
+                                     __d; \
+                                 })
+
+#define _Ke386SetSeg(N,X)         __asm__ __volatile__("movl %0,%%" #N : :"r" (X));
+
+#define _Ke386GetDr(N)           ({ \
+                                     unsigned int __d; \
+                                     __asm__("movl %%dr" #N ",%0\n\t" :"=r" (__d)); \
+                                     __d; \
+                                 })
+
+#define _Ke386SetDr(N,X)         __asm__ __volatile__("movl %0,%%dr" #N : :"r" (X));
+
+
+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__("movl %0,%%cr2" : :"r" (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 Ke386SetDs(X)               _Ke386SetSeg(ds, X)
+#define Ke386SetEs(X)               _Ke386SetSeg(es, X)
+
+#elif defined(_MSC_VER)
+
+VOID
+FORCEINLINE
+Ke386Wrmsr(IN ULONG Register,
+           IN ULONG Var1,
+           IN ULONG Var2)
+{
+    __asm mov eax, Var1;
+    __asm mov edx, Var2;
+    __asm wrmsr;
+}
+
+ULONGLONG
+FORCEINLINE
+Ke386Rdmsr(IN ULONG Register,
+           IN ULONG Var1,
+           IN ULONG Var2)
+{
+    __asm mov eax, Var1;
+    __asm mov edx, Var2;
+    __asm rdmsr;
+}
+
+VOID
+FORCEINLINE
+Ki386Cpuid(IN ULONG Operation,
+           OUT PULONG Var1,
+           OUT PULONG Var2,
+           OUT PULONG Var3,
+           OUT PULONG Var4)
+{
+    __asm mov eax, Operation;
+    __asm cpuid;
+    __asm mov [Var1], eax;
+    __asm mov [Var2], ebx;
+    __asm mov [Var3], ecx;
+    __asm mov [Var4], edx;
+}
+
+VOID
+FORCEINLINE
+Ke386FnInit(VOID)
+{
+    __asm fninit;
+}
+
+VOID
+FORCEINLINE
+Ke386HaltProcessor(VOID)
+{
+    __asm hlt;
+}
+
+VOID
+FORCEINLINE
+Ke386GetInterruptDescriptorTable(OUT KDESCRIPTOR Descriptor)
+{
+    __asm sidt Descriptor;
+}
+
+VOID
+FORCEINLINE
+Ke386SetInterruptDescriptorTable(IN KDESCRIPTOR Descriptor)
+{
+    __asm lidt Descriptor;
+}
+
+VOID
+FORCEINLINE
+Ke386GetGlobalDescriptorTable(OUT KDESCRIPTOR Descriptor)
+{
+    __asm sgdt Descriptor;
+}
+
+VOID
+FORCEINLINE
+Ke386SetGlobalDescriptorTable(IN KDESCRIPTOR Descriptor)
+{
+    __asm lgdt Descriptor;
+}
+
+VOID
+FORCEINLINE
+Ke386GetLocalDescriptorTable(OUT USHORT Descriptor)
+{
+    __asm sldt Descriptor;
+}
+
+VOID
+FORCEINLINE
+Ke386SetLocalDescriptorTable(IN USHORT Descriptor)
+{
+    __asm lldt Descriptor;
+}
+
+VOID
+FORCEINLINE
+Ke386SaveFlags(IN ULONG Flags)
+{
+    __asm pushf;
+    __asm pop Flags;
+}
+
+VOID
+FORCEINLINE
+Ke386RestoreFlags(IN ULONG Flags)
+{
+    __asm push Flags;
+    __asm popf;
+}
+
+VOID
+FORCEINLINE
+Ke386SetTr(IN USHORT Tr)
+{
+    __asm ltr Tr;
+}
+
+USHORT
+FORCEINLINE
+Ke386GetTr(IN USHORT Tr)
+{
+    __asm str Tr;
+}
+
+//
+// CR Macros
+//
+VOID
+FORCEINLINE
+Ke386SetCr2(IN ULONG Value)
+{
+    __asm mov eax, Value;
+    __asm mov cr2, eax;
+}
+
+//
+// DR Macros
+//
+ULONG
+FORCEINLINE
+Ke386GetDr0(VOID)
+{
+    __asm mov eax, dr0;
+}
+
+ULONG
+FORCEINLINE
+Ke386GetDr1(VOID)
+{
+    __asm mov eax, dr1;
+}
+
+ULONG
+FORCEINLINE
+Ke386GetDr2(VOID)
+{
+    __asm mov eax, dr2;
+}
+
+ULONG
+FORCEINLINE
+Ke386GetDr3(VOID)
+{
+    __asm mov eax, dr3;
+}
+
+ULONG
+FORCEINLINE
+Ke386GetDr6(VOID)
+{
+    __asm mov eax, dr6;
+}
+
+ULONG
+FORCEINLINE
+Ke386GetDr7(VOID)
+{
+    __asm mov eax, dr7;
+}
+
+VOID
+FORCEINLINE
+Ke386SetDr0(IN ULONG Value)
+{
+    __asm mov eax, Value;
+    __asm mov dr0, eax;
+}
+
+VOID
+FORCEINLINE
+Ke386SetDr1(IN ULONG Value)
+{
+    __asm mov eax, Value;
+    __asm mov dr1, eax;
+}
+
+VOID
+FORCEINLINE
+Ke386SetDr2(IN ULONG Value)
+{
+    __asm mov eax, Value;
+    __asm mov dr2, eax;
+}
+
+VOID
+FORCEINLINE
+Ke386SetDr3(IN ULONG Value)
+{
+    __asm mov eax, Value;
+    __asm mov dr3, eax;
+}
+
+VOID
+FORCEINLINE
+Ke386SetDr6(IN ULONG Value)
+{
+    __asm mov eax, Value;
+    __asm mov dr6, eax;
+}
+
+VOID
+FORCEINLINE
+Ke386SetDr7(IN ULONG Value)
+{
+    __asm mov eax, Value;
+    __asm mov dr7, eax;
+}
+
+//
+// Segment Macros
+//
+USHORT
+FORCEINLINE
+Ke386GetSs(VOID)
+{
+    __asm mov ax, ss;
+}
+
+USHORT
+FORCEINLINE
+Ke386GetFs(VOID)
+{
+    __asm mov ax, fs;
+}
+
+USHORT
+FORCEINLINE
+Ke386GetDs(VOID)
+{
+    __asm mov ax, ds;
+}
+
+USHORT
+FORCEINLINE
+Ke386GetEs(VOID)
+{
+    __asm mov ax, es;
+}
+
+VOID
+FORCEINLINE
+Ke386SetSs(IN USHORT Value)
+{
+    __asm mov ax, Value;
+    __asm mov ss, ax;
+}
+
+VOID
+FORCEINLINE
+Ke386SetFs(IN USHORT Value)
+{
+    __asm mov ax, Value;
+    __asm mov fs, ax;
+}
+
+VOID
+FORCEINLINE
+Ke386SetDs(IN USHORT Value)
+{
+    __asm mov ax, Value;
+    __asm mov ds, ax;
+}
+
+VOID
+FORCEINLINE
+Ke386SetEs(IN USHORT Value)
+{
+    __asm mov ax, Value;
+    __asm mov es, ax;
+}
+
+#else
+#error Unknown compiler for inline assembler
+#endif
+
+#endif
+
+/* EOF */

Propchange: branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/intrin_i.h
------------------------------------------------------------------------------
    svn:eol-style = native

Added: branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/ke.h
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/ke.h?rev=34753&view=auto
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/ke.h (added)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/ke.h [iso-8859-1] Thu Jul 24 15:07:30 2008
@@ -1,0 +1,141 @@
+#ifndef __NTOSKRNL_INCLUDE_INTERNAL_I386_KE_H
+#define __NTOSKRNL_INCLUDE_INTERNAL_I386_KE_H
+
+#if __GNUC__ >=3
+#pragma GCC system_header
+#endif
+
+#define X86_EFLAGS_TF           0x00000100 /* Trap flag */
+#define X86_EFLAGS_IF           0x00000200 /* Interrupt Enable flag */
+#define X86_EFLAGS_IOPL         0x00003000 /* I/O Privilege Level bits */
+#define X86_EFLAGS_NT           0x00004000 /* Nested Task flag */
+#define X86_EFLAGS_RF           0x00010000 /* Resume flag */
+#define X86_EFLAGS_VM           0x00020000 /* Virtual Mode */
+#define X86_EFLAGS_ID           0x00200000 /* CPUID detection flag */
+
+#define X86_CR0_PE              0x00000001 /* enable Protected Mode */
+#define X86_CR0_NE              0x00000020 /* enable native FPU error reporting */
+#define X86_CR0_TS              0x00000008 /* enable exception on FPU instruction for task switch */
+#define X86_CR0_EM              0x00000004 /* enable FPU emulation (disable FPU) */
+#define X86_CR0_MP              0x00000002 /* enable FPU monitoring */
+#define X86_CR0_WP              0x00010000 /* enable Write Protect (copy on write) */
+#define X86_CR0_PG              0x80000000 /* enable Paging */
+
+#define X86_CR4_PAE             0x00000020 /* enable physical address extensions */
+#define X86_CR4_PGE             0x00000080 /* enable global pages */
+#define X86_CR4_OSFXSR          0x00000200 /* enable FXSAVE/FXRSTOR instructions */
+#define X86_CR4_OSXMMEXCPT      0x00000400 /* enable #XF exception */
+
+#define X86_FEATURE_VME         0x00000002 /* Virtual 8086 Extensions are present */
+#define X86_FEATURE_TSC         0x00000010 /* time stamp counters are present */
+#define X86_FEATURE_PAE         0x00000040 /* physical address extension is present */
+#define X86_FEATURE_CX8         0x00000100 /* CMPXCHG8B instruction present */
+#define X86_FEATURE_SYSCALL     0x00000800 /* SYSCALL/SYSRET support present */
+#define X86_FEATURE_PGE         0x00002000 /* Page Global Enable */
+#define X86_FEATURE_MMX         0x00800000 /* MMX extension present */
+#define X86_FEATURE_FXSR        0x01000000 /* FXSAVE/FXRSTOR instructions present */
+#define X86_FEATURE_SSE         0x02000000 /* SSE extension present */
+#define X86_FEATURE_SSE2        0x04000000 /* SSE2 extension present */
+#define X86_FEATURE_HT          0x10000000 /* Hyper-Threading present */
+
+#define X86_EXT_FEATURE_SSE3    0x00000001 /* SSE3 extension present */
+#define X86_EXT_FEATURE_3DNOW   0x40000000 /* 3DNOW! extension present */
+
+#define FRAME_EDITED        0xFFF8
+
+#ifndef __ASM__
+
+//#include "intrin_i.h"
+
+#define KeArchFnInit() Ke386FnInit()
+#define KeArchHaltProcessor() Ke386HaltProcessor()
+
+extern ULONG Ke386CacheAlignment;
+
+struct _KPCR;
+VOID
+KiInitializeGdt(struct _KPCR* Pcr);
+VOID
+Ki386ApplicationProcessorInitializeTSS(VOID);
+
+VOID
+FASTCALL
+Ki386InitializeTss(
+    IN PKTSS Tss,
+    IN PKIDTENTRY Idt,
+    IN PKGDTENTRY Gdt
+);
+
+VOID
+KiGdtPrepareForApplicationProcessorInit(ULONG Id);
+VOID
+Ki386InitializeLdt(VOID);
+VOID
+Ki386SetProcessorFeatures(VOID);
+
+VOID
+NTAPI
+KiSetCR0Bits(VOID);
+
+VOID
+NTAPI
+KiGetCacheInformation(VOID);
+
+BOOLEAN
+NTAPI
+KiIsNpxPresent(
+    VOID
+);
+
+BOOLEAN
+NTAPI
+KiIsNpxErrataPresent(
+    VOID
+);
+
+VOID
+NTAPI
+KiSetProcessorType(VOID);
+
+ULONG
+NTAPI
+KiGetFeatureBits(VOID);
+
+ULONG KeAllocateGdtSelector(ULONG Desc[2]);
+VOID KeFreeGdtSelector(ULONG Entry);
+VOID
+NtEarlyInitVdm(VOID);
+VOID
+KeApplicationProcessorInitDispatcher(VOID);
+VOID
+KeCreateApplicationProcessorIdleThread(ULONG Id);
+
+typedef
+VOID
+(NTAPI*PKSYSTEM_ROUTINE)(PKSTART_ROUTINE StartRoutine,
+                    PVOID StartContext);
+
+VOID
+NTAPI
+Ke386InitThreadWithContext(PKTHREAD Thread,
+                           PKSYSTEM_ROUTINE SystemRoutine,
+                           PKSTART_ROUTINE StartRoutine,
+                           PVOID StartContext,
+                           PCONTEXT Context);
+#define KeArchInitThreadWithContext(Thread,SystemRoutine,StartRoutine,StartContext,Context) \
+  Ke386InitThreadWithContext(Thread,SystemRoutine,StartRoutine,StartContext,Context)
+
+#ifdef _NTOSKRNL_ /* FIXME: Move flags above to NDK instead of here */
+VOID
+NTAPI
+KiThreadStartup(PKSYSTEM_ROUTINE SystemRoutine,
+                PKSTART_ROUTINE StartRoutine,
+                PVOID StartContext,
+                BOOLEAN UserThread,
+                KTRAP_FRAME TrapFrame);
+#endif
+
+#endif
+#endif /* __NTOSKRNL_INCLUDE_INTERNAL_I386_KE_H */
+
+/* EOF */

Propchange: branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/ke.h
------------------------------------------------------------------------------
    svn:eol-style = native

Added: branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/mm.h
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/mm.h?rev=34753&view=auto
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/mm.h (added)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/mm.h [iso-8859-1] Thu Jul 24 15:07:30 2008
@@ -1,0 +1,31 @@
+/*
+ * Lowlevel memory managment definitions
+ */
+
+#ifndef __NTOSKRNL_INCLUDE_INTERNAL_I386_MM_H
+#define __NTOSKRNL_INCLUDE_INTERNAL_I386_MM_H
+
+struct _EPROCESS;
+PULONG MmGetPageDirectory(VOID);
+
+#define PAGE_MASK(x)		((x)&(~0xfff))
+#define PAE_PAGE_MASK(x)	((x)&(~0xfffLL))
+
+/* Base addresses of PTE and PDE */
+#define PAGETABLE_MAP       (0xc0000000)
+#define PAGEDIRECTORY_MAP   (0xc0000000 + (PAGETABLE_MAP / (1024)))
+
+/* Converting address to a corresponding PDE or PTE entry */
+#define MiAddressToPde(x) \
+    ((PMMPTE)(((((ULONG)(x)) >> 22) << 2) + PAGEDIRECTORY_MAP))
+#define MiAddressToPte(x) \
+    ((PMMPTE)(((((ULONG)(x)) >> 12) << 2) + PAGETABLE_MAP))
+
+#define ADDR_TO_PAGE_TABLE(v) (((ULONG)(v)) / (1024 * PAGE_SIZE))
+#define ADDR_TO_PDE_OFFSET(v) ((((ULONG)(v)) / (1024 * PAGE_SIZE)))
+#define ADDR_TO_PTE_OFFSET(v)  ((((ULONG)(v)) % (1024 * PAGE_SIZE)) / PAGE_SIZE)
+
+/* Easy accessing PFN in PTE */
+#define PFN_FROM_PTE(v) ((v)->u.Hard.PageFrameNumber)
+
+#endif /* __NTOSKRNL_INCLUDE_INTERNAL_I386_MM_H */

Propchange: branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/amd64/mm.h
------------------------------------------------------------------------------
    svn:eol-style = native

Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/arch/intrin_i.h
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/arch/intrin_i.h?rev=34753&r1=34752&r2=34753&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/arch/intrin_i.h [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/arch/intrin_i.h [iso-8859-1] Thu Jul 24 15:07:30 2008
@@ -27,6 +27,8 @@
 #include "../mips/intrin_i.h"
 #elif defined(_M_ARM)
 #include "../arm/intrin_i.h"
+#elif defined(_M_AMD64)
+#include "../amd64/intrin_i.h"
 #else
 #error "Unknown processor"
 #endif

Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/arch/ke.h
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/arch/ke.h?rev=34753&r1=34752&r2=34753&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/arch/ke.h [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/arch/ke.h [iso-8859-1] Thu Jul 24 15:07:30 2008
@@ -27,6 +27,8 @@
 #include "../mips/ke.h"
 #elif defined(_M_ARM)
 #include "../arm/ke.h"
+#elif defined(_M_AMD64)
+#include "../amd64/ke.h"
 #else
 #error "Unknown processor"
 #endif

Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/arch/mm.h
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/arch/mm.h?rev=34753&r1=34752&r2=34753&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/arch/mm.h [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/arch/mm.h [iso-8859-1] Thu Jul 24 15:07:30 2008
@@ -27,6 +27,8 @@
 #include <internal/mips/mm.h>
 #elif defined(_M_ARM)
 #include <internal/arm/mm.h>
+#elif defined(_M_AMD64)
+#include <internal/amd64/mm.h>
 #else
 #error "Unknown processor"
 #endif

Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/ntoskrnl.h
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/ntoskrnl.h?rev=34753&r1=34752&r2=34753&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/ntoskrnl.h [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/include/internal/ntoskrnl.h [iso-8859-1] Thu Jul 24 15:07:30 2008
@@ -17,7 +17,7 @@
 
 #ifdef _NTOSKRNL_
 
-#ifndef _ARM_
+#if !defined (_ARM_) && !defined (_M_AMD64)
 #define KeGetCurrentThread  _KeGetCurrentThread
 #define KeGetPreviousMode   _KeGetPreviousMode
 #endif
@@ -34,7 +34,7 @@
 #define InterlockedExchange         _InterlockedExchange
 #define InterlockedExchangeAdd      _InterlockedExchangeAdd
 
-#include "ke.h"
+//#include "ke.h"
 #include "i386/mm.h"
 #include "i386/fpu.h"
 #include "i386/v86m.h"
@@ -102,49 +102,6 @@
                  IN PVOID ContextData,
                  IN ULONG Size);
 
-/* FIXME: Interlocked functions that need to be made into a public header */
-#ifdef __GNUC__
-FORCEINLINE
-LONG
-InterlockedAnd(IN OUT LONG volatile *Target,
-               IN LONG Set)
-{
-    LONG i;
-    LONG j;
-
-    j = *Target;
-    do {
-        i = j;
-        j = InterlockedCompareExchange((PLONG)Target,
-                                       i & Set,
-                                       i);
-
-    } while (i != j);
-
-    return j;
-}
-
-FORCEINLINE
-LONG
-InterlockedOr(IN OUT LONG volatile *Target,
-              IN LONG Set)
-{
-    LONG i;
-    LONG j;
-
-    j = *Target;
-    do {
-        i = j;
-        j = InterlockedCompareExchange((PLONG)Target,
-                                       i | Set,
-                                       i);
-
-    } while (i != j);
-
-    return j;
-}
-#endif
-
 /*
  * generic information class probing code
  */
@@ -309,6 +266,7 @@
 
 #endif
 
+#ifndef _WIN64
 C_ASSERT(FIELD_OFFSET(KUSER_SHARED_DATA, SystemCall) == 0x300);
 C_ASSERT(FIELD_OFFSET(KTHREAD, InitialStack) == KTHREAD_INITIAL_STACK);
 C_ASSERT(FIELD_OFFSET(KTHREAD, Teb) == KTHREAD_TEB);
@@ -322,6 +280,8 @@
 C_ASSERT(FIELD_OFFSET(KPROCESS, DirectoryTableBase) == KPROCESS_DIRECTORY_TABLE_BASE);
 //C_ASSERT(FIELD_OFFSET(KPCR, Tib.ExceptionList) == KPCR_EXCEPTION_LIST);
 //C_ASSERT(FIELD_OFFSET(KPCR, Self) == KPCR_SELF);
+#endif
+
 #ifdef _M_IX86
 C_ASSERT(FIELD_OFFSET(KPCR, IRR) == KPCR_IRR);
 C_ASSERT(FIELD_OFFSET(KPCR, IDR) == KPCR_IDR);

Modified: branches/ros-amd64-bringup/reactos/ntoskrnl/ntoskrnl.rbuild
URL: http://svn.reactos.org/svn/reactos/branches/ros-amd64-bringup/reactos/ntoskrnl/ntoskrnl.rbuild?rev=34753&r1=34752&r2=34753&view=diff
==============================================================================
--- branches/ros-amd64-bringup/reactos/ntoskrnl/ntoskrnl.rbuild [iso-8859-1] (original)
+++ branches/ros-amd64-bringup/reactos/ntoskrnl/ntoskrnl.rbuild [iso-8859-1] Thu Jul 24 15:07:30 2008
@@ -2,7 +2,6 @@
 <!DOCTYPE module SYSTEM "../tools/rbuild/project.dtd">
 <group xmlns:xi="http://www.w3.org/2001/XInclude">
 	<module name="ntoskrnl" type="kernel" installbase="system32" installname="ntoskrnl.exe">
-		<!-- xi:include href="ntoskrnl-generic.rbuild" / -->
-		<importlibrary definition="ntoskrnl_$(ARCH).def" />
+		<xi:include href="ntoskrnl-generic.rbuild" />
 	</module>
 </group>



More information about the Ros-diffs mailing list