Merge trunk head (r45466)
authorTimo Kreuzer <timo.kreuzer@reactos.org>
Sat, 6 Feb 2010 20:36:45 +0000 (20:36 +0000)
committerTimo Kreuzer <timo.kreuzer@reactos.org>
Sat, 6 Feb 2010 20:36:45 +0000 (20:36 +0000)
svn path=/branches/ros-amd64-bringup/; revision=45467

31 files changed:
1  2 
reactos/Doxyfile
reactos/ReactOS-arm.rbuild
reactos/config-arm.template.rbuild
reactos/dll/win32/user32/include/ntwrapper.h
reactos/drivers/base/bootvid/i386/bootvid.c
reactos/drivers/network/afd/afd/main.c
reactos/hal/halarm/generic/hal.c
reactos/hal/halx86/generic/amd64/misc.c
reactos/hal/halx86/generic/misc.c
reactos/hal/halx86/generic/timer.c
reactos/hal/halx86/hal_generic.rbuild
reactos/hal/halx86/include/halp.h
reactos/hal/halx86/mp/mpsirql.c
reactos/include/ndk/halfuncs.h
reactos/include/ndk/i386/ketypes.h
reactos/include/reactos/win32k/ntuser.h
reactos/lib/drivers/sound/mmebuddy/wave/header.c
reactos/ntoskrnl/include/internal/amd64/ke.h
reactos/ntoskrnl/include/internal/arm/mm.h
reactos/ntoskrnl/include/internal/ke.h
reactos/ntoskrnl/kdbg/kdb_cli.c
reactos/ntoskrnl/ke/amd64/stubs.c
reactos/ntoskrnl/ke/clock.c
reactos/ntoskrnl/ke/except.c
reactos/ntoskrnl/ke/i386/cpu.c
reactos/ntoskrnl/ke/i386/ctxswitch.S
reactos/ntoskrnl/ke/time.c
reactos/ntoskrnl/ntoskrnl.pspec
reactos/ntoskrnl/ps/process.c
reactos/subsystems/win32/win32k/objects/gdiobj.c
reactos/tools/rbuild/backend/mingw/compilers/gcc.mak

@@@ -573,7 -590,7 +590,7 @@@ WARN_LOGFILE           
  # directories like "/usr/src/myproject". Separate the files or directories 
  # with spaces.
  
--INPUT                  = 
++INPUT                  = .
  
  # This tag can be used to specify the character encoding of the source files 
  # that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is 
@@@ -704,7 -723,7 +723,7 @@@ INLINE_SOURCES         = YE
  # doxygen to hide any special comment blocks from generated source code 
  # fragments. Normal C and C++ comments will always remain visible.
  
--STRIP_CODE_COMMENTS    = YES
++STRIP_CODE_COMMENTS    = NO
  
  # If the REFERENCED_BY_RELATION tag is set to YES 
  # then for each documented function all documented 
@@@ -787,13 -806,13 +806,13 @@@ HTML_FILE_EXTENSION    = .htm
  # each generated HTML page. If it is left blank doxygen will generate a 
  # standard header.
  
--HTML_HEADER            = Doxygen/header.html
++HTML_HEADER            = 
  
  # The HTML_FOOTER tag can be used to specify a personal HTML footer for 
  # each generated HTML page. If it is left blank doxygen will generate a 
  # standard footer.
  
--HTML_FOOTER            = Doxygen/footer.html
++HTML_FOOTER            = 
  
  # The HTML_STYLESHEET tag can be used to specify a user-defined cascading 
  # style sheet that is used by each HTML page. It can be used to 
Simple merge
Simple merge
@@@ -355,9 -355,9 +355,9 @@@ BOOLEA
  NTAPI
  VidInitialize(IN BOOLEAN SetMode)
  {
 -    ULONG Context = 0;
 +    ULONG_PTR Context = 0;
      PHYSICAL_ADDRESS TranslatedAddress;
-     PHYSICAL_ADDRESS NullAddress = {{0, 0}};
+     PHYSICAL_ADDRESS NullAddress = {{0, 0}}, VgaAddress;
      ULONG AddressSpace = 1;
      BOOLEAN Result;
      ULONG_PTR Base;
Simple merge
index 7196560,0000000..8914cd9
mode 100644,000000..100644
--- /dev/null
@@@ -1,191 -1,0 +1,191 @@@
-     ULONG Vector,
 +/*
 + * PROJECT:         ReactOS HAL
 + * LICENSE:         GPL - See COPYING in the top level directory
 + * FILE:            hal/halx86/generic/misc.c
 + * PURPOSE:         Miscellanous Routines
 + * PROGRAMMERS:     Alex Ionescu (alex.ionescu@reactos.org)
 + *                  Eric Kohl (ekohl@abo.rhein-zeitung.de)
 + *                  Timo Kreuzer (timo.kreuzer@reactos.org)
 + */
 +
 +/* INCLUDES ******************************************************************/
 +
 +#include <hal.h>
 +#define NDEBUG
 +#include <debug.h>
 +
 +LARGE_INTEGER HalpPerformanceFrequency;
 +
 +/* PRIVATE FUNCTIONS *********************************************************/
 +
 +VOID
 +NTAPI
 +HalpCheckPowerButton(VOID)
 +{
 +    /* Nothing to do on non-ACPI */
 +    return;
 +}
 +
 +PVOID
 +NTAPI
 +HalpMapPhysicalMemory64(IN PHYSICAL_ADDRESS PhysicalAddress,
 +                        IN ULONG NumberPage)
 +{
 +    /* Use kernel memory manager I/O map facilities */
 +    return MmMapIoSpace(PhysicalAddress,
 +                        NumberPage << PAGE_SHIFT,
 +                        MmNonCached);
 +}
 +
 +VOID
 +NTAPI
 +HalpUnmapVirtualAddress(IN PVOID VirtualAddress,
 +                        IN ULONG NumberPages)
 +{
 +    /* Use kernel memory manager I/O map facilities */
 +    MmUnmapIoSpace(VirtualAddress, NumberPages << PAGE_SHIFT);
 +}
 +
 +VOID
 +NTAPI
 +HalpInitIdtEntry(PKIDTENTRY64 Idt, PVOID Address)
 +{
 +    Idt->OffsetLow = (ULONG_PTR)Address & 0xffff;
 +    Idt->OffsetMiddle = ((ULONG_PTR)Address >> 16) & 0xffff;
 +    Idt->OffsetHigh = (ULONG_PTR)Address >> 32;
 +    Idt->Selector = KGDT64_R0_CODE;
 +    Idt->IstIndex = 0;
 +    Idt->Type = 0x0e;
 +    Idt->Dpl = 0;
 +    Idt->Present = 1;
 +    Idt->Reserved0 = 0;
 +    Idt->Reserved1 = 0;
 +}
 +
 +VOID
 +NTAPI
 +HalpSetInterruptGate(ULONG Index, PVOID Address)
 +{
 +    ULONG_PTR Flags;
 +
 +    /* Disable interupts */
 +    Flags = __readeflags();
 +    _disable();
 +
 +    /* Initialize the entry */
 +    HalpInitIdtEntry(&KeGetPcr()->IdtBase[Index], Address);
 +
 +    /* Enable interrupts if they were enabled previously */
 +    __writeeflags(Flags);
 +}
 +
 +
 +/* FUNCTIONS *****************************************************************/
 +
 +/*
 + * @implemented
 + */
 +VOID
 +NTAPI
 +HalHandleNMI(IN PVOID NmiInfo)
 +{
 +    UCHAR ucStatus;
 +
 +    /* Get the NMI Flag */
 +    ucStatus = READ_PORT_UCHAR((PUCHAR)0x61);
 +
 +    /* Display NMI failure string */
 +    HalDisplayString ("\n*** Hardware Malfunction\n\n");
 +    HalDisplayString ("Call your hardware vendor for support\n\n");
 +
 +    /* Check for parity error */
 +    if (ucStatus & 0x80)
 +    {
 +        /* Display message */
 +        HalDisplayString ("NMI: Parity Check / Memory Parity Error\n");
 +    }
 +
 +    /* Check for I/O failure */
 +    if (ucStatus & 0x40)
 +    {
 +        /* Display message */
 +        HalDisplayString ("NMI: Channel Check / IOCHK\n");
 +    }
 +
 +    /* Halt the system */
 +    HalDisplayString("\n*** The system has halted ***\n");
 +    //KeEnterKernelDebugger();
 +}
 +
 +/*
 + * @implemented
 + */
 +UCHAR
 +FASTCALL
 +HalSystemVectorDispatchEntry(IN ULONG Vector,
 +                             OUT PKINTERRUPT_ROUTINE **FlatDispatch,
 +                             OUT PKINTERRUPT_ROUTINE *NoConnection)
 +{
 +    /* Not implemented on x86 */
 +    return FALSE;
 +}
 +
 +VOID
 +NTAPI
 +HalBugCheckSystem (PVOID ErrorRecord)
 +{
 +  UNIMPLEMENTED;
 +}
 +
 +
 +/*
 + * @implemented
 + */
 +VOID
 +NTAPI
 +KeFlushWriteBuffer(VOID)
 +{
 +    /* Not implemented on x86 */
 +    return;
 +}
 +
 +LARGE_INTEGER
 +NTAPI
 +KeQueryPerformanceCounter(
 +    OUT PLARGE_INTEGER PerformanceFrequency OPTIONAL)
 +{
 +    LARGE_INTEGER Result;
 +
 +//    ASSERT(HalpPerformanceFrequency.QuadPart != 0);
 +
 +    /* Does the caller want the frequency? */
 +    if (PerformanceFrequency)
 +    {
 +        /* Return value */
 +        *PerformanceFrequency = HalpPerformanceFrequency;
 +    }
 +
 +    Result.QuadPart = __rdtsc();
 +    return Result;
 +}
 +
 +VOID
 +NTAPI
 +HalDisableSystemInterrupt(
-     ULONG Vector,
++    UCHAR Vector,
 +    KIRQL Irql)
 +{
 +    UNIMPLEMENTED;
 +}
 +
 +BOOLEAN
 +NTAPI
 +HalEnableSystemInterrupt(
++    UCHAR Vector,
 +    KIRQL Irql,
 +    KINTERRUPT_MODE InterruptMode)
 +{
 +    UNIMPLEMENTED;
 +    return FALSE;
 +}
 +
Simple merge
@@@ -109,6 -109,61 +109,63 @@@ HalpInitializeClock(VOID
      HalpCurrentRollOver = RollOver;
  }
  
++#ifdef _M_IX86
+ VOID
+ FASTCALL
+ HalpClockInterruptHandler(IN PKTRAP_FRAME TrapFrame)
+ {
+     KIRQL Irql;
+     
+     /* Enter trap */
+     KiEnterInterruptTrap(TrapFrame);
+     
+     /* Start the interrupt */
+     if (HalBeginSystemInterrupt(CLOCK2_LEVEL, PRIMARY_VECTOR_BASE, &Irql))
+     {
+         /* Update the performance counter */
+         HalpPerfCounter.QuadPart += HalpCurrentRollOver;
+         
+         /* Check if someone changed the time rate */
+         if (HalpClockSetMSRate)
+         {
+             /* Not yet supported */
+             UNIMPLEMENTED;
+             while (TRUE);
+         }
+         
+         /* Update the system time -- the kernel will exit this trap  */
+         KeUpdateSystemTime(TrapFrame, HalpCurrentTimeIncrement, Irql);
+     }
+     
+     /* Spurious, just end the interrupt */
+     KiEoiHelper(TrapFrame);
+ }
+ VOID
+ FASTCALL
+ HalpProfileInterruptHandler(IN PKTRAP_FRAME TrapFrame)
+ {
+     KIRQL Irql;
+     
+     /* Enter trap */
+     KiEnterInterruptTrap(TrapFrame);
+     
+     /* Start the interrupt */
+     if (HalBeginSystemInterrupt(PROFILE_LEVEL, PRIMARY_VECTOR_BASE + 8, &Irql))
+     {
+         /* Profiling isn't yet enabled */
+         UNIMPLEMENTED;
+         while (TRUE);
+     }
+     
+     /* Spurious, just end the interrupt */
+     KiEoiHelper(TrapFrame);
+ }
+ KiTrap(HalpClockInterrupt,   KI_PUSH_FAKE_ERROR_CODE);
+ KiTrap(HalpProfileInterrupt, KI_PUSH_FAKE_ERROR_CODE);
++#endif
  /* PUBLIC FUNCTIONS ***********************************************************/
  
  /*
                        <file>dma.c</file>
                        <file>drive.c</file>
                        <file>display.c</file>
-                       <file>pic.c</file>
 -                      <file>halinit.c</file>
 -                      <file>misc.c</file>
 -                      <file>portio.c</file>
                        <file>profil.c</file>
                        <file>reboot.c</file>
                        <file>sysinfo.c</file>
 -                      <file>systimer.S</file>
                        <file>timer.c</file>
 -                      <file>usage.c</file>
 +                      <if property="ARCH" value="i386">
 +                              <file>bios.c</file>
 +                              <file>halinit.c</file>
 +                              <file>misc.c</file>
++                              <file>pic.c</file>
 +                              <file>usage.c</file>
 +                              <directory name="i386">
 +                                      <file>portio.c</file>
 +                                      <file>systimer.S</file>
 +                                      <file>v86.s</file>
 +                              </directory>
 +                      </if>
 +                      <if property="ARCH" value="amd64">
 +                              <directory name="amd64">
 +                                      <file>halinit.c</file>
 +                                      <file>irq.S</file>
 +                                      <file>misc.c</file>
++                                      <file>apic.c</file>
 +                                      <file>systimer.S</file>
 +                                      <file>usage.c</file>
 +                              </directory>
 +                      </if>
                </directory>
 +              <if property="ARCH" value="amd64">
 +                      <directory name="mp">
 +                              <file>apic.c</file>
 +                      </directory>
 +              </if>
                <directory name="include">
                        <pch>hal.h</pch>
                </directory>
Simple merge
Simple merge
Simple merge
Simple merge
index 3ca4fef,0000000..001c402
mode 100644,000000..100644
--- /dev/null
@@@ -1,265 -1,0 +1,275 @@@
 +#ifndef __NTOSKRNL_INCLUDE_INTERNAL_AMD64_KE_H
 +#define __NTOSKRNL_INCLUDE_INTERNAL_AMD64_KE_H
 +
 +#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
 +
 +#define X86_MSR_GSBASE          0xC0000101
 +#define X86_MSR_KERNEL_GSBASE   0xC0000102
 +#define X86_MSR_EFER            0xC0000080
 +#define X86_MSR_STAR            0xC0000081
 +#define X86_MSR_LSTAR           0xC0000082
 +#define X86_MSR_CSTAR           0xC0000083
 +#define X86_MSR_SFMASK          0xC0000084
 +
 +#define EFER_SCE 0x01
 +#define EFER_LME 0x10
 +#define EFER_LMA 0x40
 +#define EFER_NXE 0x80
 +#define EFER_SVME 0x100
 +#define EFER_FFXSR 0x400
 +
 +#define AMD64_TSS 9
 +
 +#ifndef __ASM__
 +
 +#include "intrin_i.h"
 +
 +typedef struct _KIDT_INIT
 +{
 +    UCHAR InterruptId;
 +    UCHAR Dpl;
 +    UCHAR IstIndex;
 +    PVOID ServiceRoutine;
 +} KIDT_INIT, *PKIDT_INIT;
 +
 +extern ULONG Ke386CacheAlignment;
 +extern ULONG KeI386NpxPresent;
 +extern ULONG KeI386XMMIPresent;
 +extern ULONG KeI386FxsrPresent;
 +extern ULONG KeI386CpuType;
 +extern ULONG KeI386CpuStep;
 +
 +#define IMAGE_FILE_MACHINE_ARCHITECTURE IMAGE_FILE_MACHINE_AMD64
 +
 +//
 +// INT3 is 1 byte long
 +//
 +#define KD_BREAKPOINT_TYPE        UCHAR
 +#define KD_BREAKPOINT_SIZE        sizeof(UCHAR)
 +#define KD_BREAKPOINT_VALUE       0xCC
 +
 +//
 +// Macros for getting and setting special purpose registers in portable code
 +//
 +#define KeGetContextPc(Context) \
 +    ((Context)->Rip)
 +
 +#define KeSetContextPc(Context, ProgramCounter) \
 +    ((Context)->Rip = (ProgramCounter))
 +
 +#define KeGetTrapFramePc(TrapFrame) \
 +    ((TrapFrame)->Rip)
 +
 +#define KeGetContextReturnRegister(Context) \
 +    ((Context)->Rax)
 +
 +#define KeSetContextReturnRegister(Context, ReturnValue) \
 +    ((Context)->Rax = (ReturnValue))
 +
 +//
 +// Macro to get trap and exception frame from a thread stack
 +//
 +#define KeGetTrapFrame(Thread) \
 +    (PKTRAP_FRAME)((ULONG_PTR)((Thread)->InitialStack) - \
 +                   sizeof(KTRAP_FRAME))
 +
 +//
 +// Macro to get context switches from the PRCB
 +// All architectures but x86 have it in the PRCB's KeContextSwitches
 +//
 +#define KeGetContextSwitches(Prcb)  \
 +    (Prcb->KeContextSwitches)
 +
 +#define KeGetExceptionFrame(Thread) \
 +    (PKEXCEPTION_FRAME)((ULONG_PTR)KeGetTrapFrame(Thread) - \
 +                        sizeof(KEXCEPTION_FRAME))
 +
 +//
 +// Returns the Interrupt State from a Trap Frame.
 +// ON = TRUE, OFF = FALSE
 +//
 +#define KeGetTrapFrameInterruptState(TrapFrame) \
 +        BooleanFlagOn((TrapFrame)->EFlags, EFLAGS_INTERRUPT_MASK)
 +
 +//
 +// Invalidates the TLB entry for a specified address
 +//
 +FORCEINLINE
 +VOID
 +KeInvalidateTlbEntry(IN PVOID Address)
 +{
 +    /* Invalidate the TLB entry for this address */
 +    __invlpg(Address);
 +}
 +
 +FORCEINLINE
 +VOID
 +KeFlushProcessTb(VOID)
 +{
 +    /* Flush the TLB by resetting CR3 */
 +    __writecr3(__readcr3());
 +}
 +
 +FORCEINLINE
 +PRKTHREAD
 +KeGetCurrentThread(VOID)
 +{
 +    return (PRKTHREAD)__readgsqword(FIELD_OFFSET(KIPCR, Prcb.CurrentThread));
 +}
 +
 +FORCEINLINE
 +VOID
 +KiRundownThread(IN PKTHREAD Thread)
 +{
 +#ifndef CONFIG_SMP
 +    DbgPrint("KiRundownThread is unimplemented\n");
 +#else
 +    /* Nothing to do */
 +#endif
 +}
 +
++VOID
++FORCEINLINE
++KiEndInterrupt(IN KIRQL Irql,
++               IN PKTRAP_FRAME TrapFrame)
++{
++    DbgPrint("KiEndInterrupt is unimplemented\n");
++}
++
++#define Ki386PerfEnd(x)
++
 +struct _KPCR;
 +
 +VOID
 +FASTCALL
 +KiInitializeTss(IN PKTSS Tss, IN UINT64 Stack);
 +
 +VOID KiDivideErrorFault();
 +VOID KiDebugTrapOrFault();
 +VOID KiNmiInterrupt();
 +VOID KiBreakpointTrap();
 +VOID KiOverflowTrap();
 +VOID KiBoundFault();
 +VOID KiInvalidOpcodeFault();
 +VOID KiNpxNotAvailableFault();
 +VOID KiDoubleFaultAbort();
 +VOID KiNpxSegmentOverrunAbort();
 +VOID KiInvalidTssFault();
 +VOID KiSegmentNotPresentFault();
 +VOID KiStackFault();
 +VOID KiGeneralProtectionFault();
 +VOID KiPageFault();
 +VOID KiFloatingErrorFault();
 +VOID KiAlignmentFault();
 +VOID KiMcheckAbort();
 +VOID KiXmmException();
 +VOID KiApcInterrupt();
 +VOID KiRaiseAssertion();
 +VOID KiDebugServiceTrap();
 +VOID KiDpcInterrupt();
 +VOID KiIpiInterrupt();
 +
 +VOID
 +KiGdtPrepareForApplicationProcessorInit(ULONG Id);
 +VOID
 +Ki386InitializeLdt(VOID);
 +VOID
 +Ki386SetProcessorFeatures(VOID);
 +
 +VOID
 +NTAPI
 +KiGetCacheInformation(VOID);
 +
 +BOOLEAN
 +NTAPI
 +KiIsNpxPresent(
 +    VOID
 +);
 +
 +BOOLEAN
 +NTAPI
 +KiIsNpxErrataPresent(
 +    VOID
 +);
 +
 +VOID
 +NTAPI
 +KiSetProcessorType(VOID);
 +
 +ULONG
 +NTAPI
 +KiGetFeatureBits(VOID);
 +
 +VOID
 +NTAPI
 +KiInitializeCpuFeatures();
 +
 +ULONG KeAllocateGdtSelector(ULONG Desc[2]);
 +VOID KeFreeGdtSelector(ULONG Entry);
 +VOID
 +NtEarlyInitVdm(VOID);
 +VOID
 +KeApplicationProcessorInitDispatcher(VOID);
 +VOID
 +KeCreateApplicationProcessorIdleThread(ULONG Id);
 +
 +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_AMD64_KE_H */
 +
 +/* EOF */
@@@ -1119,22 -1095,12 +1095,24 @@@ KiIdleLoop
  
  VOID
  FASTCALL
- KiIdleLoop(
-     VOID
+ DECLSPEC_NORETURN
+ KiSystemFatalException(
+     IN ULONG ExceptionCode,
+     IN PKTRAP_FRAME TrapFrame
  );
  
 +PVOID
 +NTAPI
 +KiPcToFileHeader(IN PVOID Eip,
 +                 OUT PLDR_DATA_TABLE_ENTRY *LdrEntry,
 +                 IN BOOLEAN DriversOnly,
 +                 OUT PBOOLEAN InKernel);
 +
 +PVOID
 +NTAPI
 +KiRosPcToUserFileHeader(IN PVOID Eip,
 +                        OUT PLDR_DATA_TABLE_ENTRY *LdrEntry);
 +
  #include "ke_x.h"
  
  #endif /* __NTOSKRNL_INCLUDE_INTERNAL_KE_H */
@@@ -2072,37 -1788,9 +2072,37 @@@ KdbpCmdPcr
                Pcr->NtTib.Self, Pcr->Self, Pcr->Prcb, Pcr->Irql, Pcr->IRR, Pcr->IrrActive,
                Pcr->IDR, Pcr->KdVersionBlock, Pcr->IDT, Pcr->GDT, Pcr->TSS,
                Pcr->MajorVersion, Pcr->MinorVersion, Pcr->SetMember, Pcr->StallScaleFactor,
-               Pcr->Number, Pcr->L2CacheAssociativity,
+               Pcr->Number, Pcr->SecondLevelCacheAssociativity,
                Pcr->VdmAlert, Pcr->SecondLevelCacheSize, Pcr->InterruptMode);
 -
 +#elif defined(_M_AMD64)
 +    KdbpPrint("Current PCR is at 0x%x.\n", (INT_PTR)Pcr);
 +    KdbpPrint("  Tib.ExceptionList:         0x%p\n"
 +              "  Tib.StackBase:             0x%p\n"
 +              "  Tib.StackLimit:            0x%x\n"
 +              "  Tib.SubSystemTib:          0x%p\n"
 +              "  Tib.FiberData/Version:     0x%x\n"
 +              "  Tib.ArbitraryUserPointer:  0x%p\n"
 +              "  Tib.Self:                  0x%p\n"
 +              "  Self:                      0x%p\n"
 +              "  PCRCB:                     0x%p\n"
 +              "  Irql:                      0x%x\n"
 +              "  KdVersionBlock:            0x%08x\n"
 +              "  IDT:                       0x%p\n"
 +              "  GDT:                       0x%p\n"
 +              "  TSS:                       0x%p\n"
 +              "  UserRsp:                   0x%p\n"
 +              "  MajorVersion:              0x%04x\n"
 +              "  MinorVersion:              0x%04x\n"
 +              "  StallScaleFactor:          0x%08x\n"
 +              "  L2CacheAssociativity:      0x%02x\n"
 +              "  L2CacheSize:               0x%08x\n",
 +              Pcr->NtTib.ExceptionList, Pcr->NtTib.StackBase, Pcr->NtTib.StackLimit,
 +              Pcr->NtTib.SubSystemTib, Pcr->NtTib.FiberData, Pcr->NtTib.ArbitraryUserPointer,
 +              Pcr->NtTib.Self, Pcr->Self, Pcr->Prcb, Pcr->Irql,
 +              Pcr->KdVersionBlock, Pcr->IdtBase, Pcr->GdtBase, Pcr->TssBase,Pcr->UserRsp,
 +              Pcr->MajorVersion, Pcr->MinorVersion,  Pcr->StallScaleFactor,
 +              Pcr->SecondLevelCacheAssociativity, Pcr->SecondLevelCacheSize);
 +#endif
      return TRUE;
  }
  
index c53af48,0000000..ae8416b
mode 100644,000000..100644
--- /dev/null
@@@ -1,179 -1,0 +1,182 @@@
 +/*
 + * PROJECT:         ReactOS Kernel
 + * LICENSE:         GPL - See COPYING in the top level directory
 + * PURPOSE:         stubs
 + * PROGRAMMERS:     Timo Kreuzer (timo.kreuzer@reactos.org)
 + */
 +
 +/* INCLUDES ******************************************************************/
 +
 +#include <ntoskrnl.h>
 +
 +#define NDEBUG
 +#include <debug.h>
 +
 +BOOLEAN
 +NTAPI
 +KeConnectInterrupt(IN PKINTERRUPT Interrupt)
 +{
 +    UNIMPLEMENTED;
 +    return FALSE;
 +}
 +
 +PVOID
 +NTAPI
 +KeSwitchKernelStack(PVOID StackBase, PVOID StackLimit)
 +{
 +    UNIMPLEMENTED;
 +    return NULL;
 +}
 +
 +BOOLEAN
 +NTAPI
 +KeSynchronizeExecution(
 +    IN OUT PKINTERRUPT Interrupt,
 +    IN PKSYNCHRONIZE_ROUTINE SynchronizeRoutine,
 +    IN PVOID SynchronizeContext)
 +{
 +    UNIMPLEMENTED;
 +    return FALSE;
 +}
 +
 +NTSTATUS
 +NTAPI
 +KeUserModeCallback(IN ULONG RoutineIndex,
 +                   IN PVOID Argument,
 +                   IN ULONG ArgumentLength,
 +                   OUT PVOID *Result,
 +                   OUT PULONG ResultLength)
 +{
 +    UNIMPLEMENTED;
 +    return STATUS_UNSUCCESSFUL;
 +}
 +
 +VOID
 +KiIdleLoop()
 +{
 +    UNIMPLEMENTED;
 +    for(;;);
 +}
 +
 +VOID
 +NTAPI
 +KiInitializeUserApc(IN PKEXCEPTION_FRAME ExceptionFrame,
 +                    IN PKTRAP_FRAME TrapFrame,
 +                    IN PKNORMAL_ROUTINE NormalRoutine,
 +                    IN PVOID NormalContext,
 +                    IN PVOID SystemArgument1,
 +                    IN PVOID SystemArgument2)
 +{
 +    UNIMPLEMENTED;
 +}
 +
 +VOID
 +NTAPI
 +KiSwapProcess(IN PKPROCESS NewProcess,
 +              IN PKPROCESS OldProcess)
 +{
 +    UNIMPLEMENTED;
 +}
 +
 +VOID
 +KiSystemService(IN PKTHREAD Thread,
 +                IN PKTRAP_FRAME TrapFrame,
 +                IN ULONG Instruction)
 +{
 +    UNIMPLEMENTED;
 +}
 +
 +NTSYSAPI
 +NTSTATUS
 +NTAPI
 +NtCallbackReturn
 +( IN PVOID Result OPTIONAL, IN ULONG ResultLength, IN NTSTATUS Status )
 +{
 +    UNIMPLEMENTED;
 +    return STATUS_UNSUCCESSFUL;
 +}
 +
 +NTSYSAPI
 +NTSTATUS
 +NTAPI
 +NtContinue(
 +    IN PCONTEXT ThreadContext, IN BOOLEAN RaiseAlert)
 +{
 +    UNIMPLEMENTED;
 +    return STATUS_UNSUCCESSFUL;
 +}
 +
 +NTSYSAPI
 +NTSTATUS
 +NTAPI
 +NtRaiseException
 +(IN PEXCEPTION_RECORD ExceptionRecord, IN PCONTEXT ThreadContext, IN BOOLEAN HandleException )
 +{
 +    UNIMPLEMENTED;
 +    return STATUS_UNSUCCESSFUL;
 +}
 +
 +NTSTATUS
 +NTAPI
 +NtSetLdtEntries
 +(ULONG Selector1, LDT_ENTRY LdtEntry1, ULONG Selector2, LDT_ENTRY LdtEntry2)
 +{
 +    UNIMPLEMENTED;
 +    return STATUS_UNSUCCESSFUL;
 +}
 +
 +NTSTATUS
 +NTAPI
 +NtVdmControl(IN ULONG ControlCode,
 +             IN PVOID ControlData)
 +{
 +    UNIMPLEMENTED;
 +    return STATUS_UNSUCCESSFUL;
 +}
 +
 +NTSTATUS
 +NTAPI
 +KiCallUserMode(
 +    IN PVOID *OutputBuffer,
 +    IN PULONG OutputLength)
 +{
 +    UNIMPLEMENTED;
 +    return STATUS_UNSUCCESSFUL;
 +}
 +
 +#undef ExQueryDepthSList
 +NTKERNELAPI
 +USHORT
 +ExQueryDepthSList(IN PSLIST_HEADER ListHead)
 +{
 +    return (USHORT)(ListHead->Alignment & 0xffff);
 +}
 +
++
++ULONG ProcessCount;
++
 +#ifdef _MSC_VER
 +void
 +__GSHandlerCheck()
 +{
 +}
 +
 +int __security_cookie;
 +
 +void
 +__security_check_cookie()
 +{
 +}
 +
 +BOOLEAN CcPfEnablePrefetcher;
 +
 +unsigned long __readfsdword(const unsigned long Offset)
 +{
 +    return 0;
 +}
 +
 +void main()
 +{
 +}
 +
 +#endif
Simple merge
Simple merge
Simple merge
Simple merge
@@@ -19,19 -19,11 +19,11 @@@ ULONG KeTimeAdjustment
  
  /* FUNCTIONS ******************************************************************/
  
- #ifdef _M_IX86
  VOID
- __attribute__((regparm(3)))
- KeUpdateSystemTimeHandler(IN ULONG Increment,
-                           IN KIRQL Irql,
-                           IN PKTRAP_FRAME TrapFrame)
- #else
- VOID
- NTAPI
+ FASTCALL
  KeUpdateSystemTime(IN PKTRAP_FRAME TrapFrame,
 -                   IN ULONG Increment,
 -                   IN KIRQL Irql)                   
 +                   IN KIRQL Irql,
 +                   IN ULONG Increment)
- #endif                   
  {
      PKPRCB Prcb = KeGetCurrentPrcb();
      ULARGE_INTEGER CurrentTime, InterruptTime;
  @ stdcall KeStackAttachProcess(ptr ptr)
  @ stdcall KeSynchronizeExecution(ptr ptr ptr)
  @ stdcall KeTerminateThread(long)
 -@ fastcall KeTestSpinLock(ptr)
 +@ FASTCALL KeTestSpinLock(ptr)
  @ extern KeTickCount
 -@ fastcall KeTryToAcquireGuardedMutex(ptr)
 -@ fastcall KeTryToAcquireSpinLockAtDpcLevel(ptr)
 +@ FASTCALL KeTryToAcquireGuardedMutex(ptr)
 +@ FASTCALL KeTryToAcquireSpinLockAtDpcLevel(ptr)
  @ stdcall KeUnstackDetachProcess(ptr)
  @ stdcall KeUpdateRunTime(ptr long)
- #ifdef _M_IX86
- @ stdcall KeUpdateSystemTime()
- #else
- @ stdcall KeUpdateSystemTime(ptr long long)
- #endif
+ @ fastcall KeUpdateSystemTime(ptr long long)
  @ stdcall KeUserModeCallback(long ptr long ptr ptr)
  @ stdcall KeWaitForMultipleObjects(long ptr long long long long ptr ptr)
  @ stdcall KeWaitForMutexObject(ptr long long long ptr) KeWaitForSingleObject
  @ stdcall KeWaitForSingleObject(ptr long long long ptr)
 -@ fastcall KefAcquireSpinLockAtDpcLevel(ptr)
 -@ fastcall KefReleaseSpinLockFromDpcLevel(ptr)
 -#ifdef _M_IX86
 -@ stdcall Kei386EoiHelper()
 -@ fastcall KiEoiHelper(ptr) /* FIXME: Evaluate decision */
 -#endif
 -@ fastcall KiAcquireSpinLock(ptr)
 +@ FASTCALL KefAcquireSpinLockAtDpcLevel(ptr)
 +@ FASTCALL KefReleaseSpinLockFromDpcLevel(ptr)
- @ stdcall -arch=i386 Kei386EoiHelper()
++@ stdcall -arch=i386 Kei386EoiHelper(ptr) /* FIXME: Evaluate decision */
 +@ FASTCALL KiAcquireSpinLock(ptr)
  @ extern KiBugCheckData
  @ stdcall KiCheckForKernelApcDelivery()
  ;KiCheckForSListAddress
Simple merge