- Patch by Dmitry Timoshkov
- do not force repainting on WM_WINDOWPOSCHANGED in combobox, it
breaks Z-order based painting.
- do nothing in the combobox WM_ERASEBKGND handler do all painting in
WM_PAINT like Windows does.
svn path=/trunk/; revision=23905
- main.c -> freeldr.c + cleanups and nice formatitng.
- Move out variables that were in main.c to ex\init.c or cpu.c, depending.
- Separate i386/kernel.c into i386/kiinit.c for X86-specific intiailization, and /krnlinit.c for portable initialization across all architectures. Also move out global variables appropriately.
- main_asm.S -> cpu.S
svn path=/trunk/; revision=23903
- Rename and fixup initial stacks, instead of using 16 different variables all with confusining meanings and values. Define P0BootStack as the initial kernel stack, and KiDoubleFaultStack as the double-fault trap (and initial DPC) stack.
- Fix call to KiInitializePcr which was setting an incorrect DPC stack.
- Make space on the initial stack for a KTRAP_FRAME as well, not only for the FPU save area.
- Also push initial CR0 NPX state on the initial stack.
- Load the IDT and GDT directly in KiRosPrepareForSystemStartup.
- Completely rewrite main_asm.S in Intel syntax and clean it up.
svn path=/trunk/; revision=23901
it is always 1Bpp and 1Plans and we are doing same now if HDC is NULL, some wine test deepness on it.
Hopply it will take care of some program problem.
svn path=/trunk/; revision=23899
- Also setup an NMI Task gate after the double fault task gate. Will be useful when we hand to handle NMIs later.
- Setup FS in KiSystemStartup and initialize the TSS before the PCR. Also add a bit more support for SMP systems (To skip boot-cpu-only initialization).
- Also setup DS/ES directly in KiSystemStartup.
- Initialize KD at phase 0 in KiSystemStartup, not in KiInitializeKernel, and also check for debug break at this time.
svn path=/trunk/; revision=23898
- Move LDT-only GDT routines to ldt.c
- Cleanup formatting of GDT-related exported function stubs in gdt.c and rename file to abios.c. Those routines deal specifically with the ABIOS GDT selectors and are for ABIOS support.
- Move the lone 2 routines in fpu.c to cpu.c.
svn path=/trunk/; revision=23895
- Add GetSegment inlines (ie: GetSs, GetDs, etc)
- Fix up definition of KiBootGdt to use KGDTENTRY instead of USHORT. Also define KiGdtDescriptor using KDESCRIPTOR.
- Remove GDT initialization code completely. The GDT is already initialized on boot.
- Remove tss.c and add KiInitializeTss(2) to setup a TSS and proper IOPM/Interrupt Direction map settings for V86/VDM.
- Copy the TSS code over but prettyify it to use NT/NDK structures instead of ugly USHORT typecasts.
svn path=/trunk/; revision=23894
2. Bugfix NtGdiGetDIBits the BITMAPCOREHEADER is not same as BITMAPINFOHEADER
we now separate it in if(Bits==NULL) that will allow us pass two more wine tests
follow winetest is working now
1. bitmap.c 227 Test failed: GetDIBits doesn't work with a BITMAPCOREHEADER
2. bitmap.c 233 GetDIBits doesn't work with a BITMAPCOREHEADER
both of them are fixed now
svn path=/trunk/; revision=23891
- Use interrupt enable/disable instead of raising to HIGH_LEVEL.
- Better use and pairing of locks.
- Fix a lot of race conditions in DPC dispatching, due to the fact almost all data we're touching is ultra-volatile and can change at any time depending on various locks being held/released + interrupt state.
- Add stub code/support for tick-hased table-based timer implementation and deferred threads.
svn path=/trunk/; revision=23888
- Fix KDPC definition in DDK. You can always count on the w32api to get even the simplest structures wrong.
- Fix memory overwrite bug in KiInitSpinlocks.
- Part 1 of 2: Cleanup and improve DPC implementation to add partial support for Threaded DPCs and remove SMP vs non-SMP ifdefs. (At the expense of, oh God, 5 wasted CPU cycles!).
svn path=/trunk/; revision=23886
- Initialize bugcheck messages much earlier, separate clock initialization from KeInit2.
- Completely move out and isolate ROS/FREELDR PE loading hacks to KiRosPrepareForSystemStartup so that KiSystemStartup is clean of them.
svn path=/trunk/; revision=23881
- Initialize bugcheck lists, timer DPC, profile list/locks, timer lists, the swap lists and syscall table as part of KiInitSystem (portable).
- Add more initialization for the initial/idle process+thread (some code disabled due to dispatcher problems).
- Add code to support future Timer implementation (based on tick-hashes)
- Separate post-boostrap initialization code in KiInitializeKernel.
- Add some support for future SMP paths.
- Create a DPC stack.
- Changes based on WI4 and my automated parsing tool.
svn path=/trunk/; revision=23880
- don't assign a service name at the start as it causes problems when query(ex) doesn't supply one.
- Simplify the service starting code.
- Add missing options to the print type
- rewrite the querying functionality to be cleaner, and use existing code.
- remove the braces I left, used for collapsing dbg info
svn path=/trunk/; revision=23868
- Main difference is new CPU detection algorithms for ID, cache, etc, as well as using KF_ Kernel Feature bits instead of x86 CPU features (For portability).
- Also many many other cleanups and re-sequencing.
svn path=/trunk/; revision=23852
- Add support for recovering from user-mode win32k callback fault.
- Also add support for debug register saving/reloading during user-mode callbacks and return.
svn path=/trunk/; revision=23849