[BOOTDATA]: Add NMIDEBUG.SYS to the BOM and registry hive.
This is the last patch for NMI support. It is up to you to leverage this feature as needed through the NMIDEBUG.SYS driver.
svn path=/trunk/; revision=44879
[NMIDEBUG]: Add new NMI Debug driver. It registers an NMI callback on startup. The callback does nothing useful at the moment, but you can enhance it to add all sorts of debugging information that would otherwise be unavailable in situations such as an interrupt storm, IRQL hang, etc. When you send an NMI, such as by using QEMU, you should see the driver print a string.
svn path=/trunk/; revision=44878
[NTOS]: Implement KeRegisterNMICallback.
[NTOS]: Call and implement KiHandleNMI to call all registered NMI callbacks and potentially resume from the NMI if handled.
svn path=/trunk/; revision=44877
- Implement registering hardware events (volume / mute control changes)
- Fix a bug when querying a source mixer line. The wrong line id was passed which caused the call to fail.
svn path=/trunk/; revision=44872
[NTOS]: Write barebones NMI Trap handler which does a TSS context switch to the NMI TSS and then calls the HAL NMI handler.
[NTOS]: Implement KiSaveProcessorState for doing a PRCB context save/restore.
You should now be able to test the new NMI functionality by either building the circuit referenced in my e-mail and attaching it to your PCI bus, or by using "nmi 0" in the QEMU stdio console.
svn path=/trunk/; revision=44871
[NTOS]: Implement a GNU Assembler version of the Windows SDK ASM calling convention macros. Only stdCall and its helpers have been written -- feel free to write the rest. Based on callconv.inc from Microsoft). SUGGESTION: Slowly start rewriting current code to use calling convention macros as it is much cleaner.
svn path=/trunk/; revision=44868
[HAL]: Piggyback on V8086 handler (don't restore kernel GPF handler) during an NMI, so that we don't enter another fault context during a recursive NMI after display reset. If another NMI does happen, the V8086 GPF handler will just spin.
svn path=/trunk/; revision=44862
[NTOS]: Improve UNHANDLED_PATH macro with a new "Reason" parameter which displays why the path is unhandled (ie: what the unexpected/unlikely/untested scenario is). This is better than just displaying the current PC which is typically useless.
[NTOS]: Separate UNHANDLED_PATH from UNHANDLED_V86_PATH which is specifically for paths that are unimplemented due to lack of VDM support.
[HAL]: Update to new macros in V8086 support, and handle invalid opcode errors with a debug print (I encountered these when the NMI TSS was being used, since the IOPM was invalid).
[HAL]: If the V8086 GPF handler is called outside of V8086 mode, assume an NMI happened around the BIOS Call and just spin forever. We'll piggyback on the V8086 GPF handler during an NMI, in order to avoid the kernel's GPF handler which would attempt to panic/reset the display again (and cause endless NMI recursion/corruption).
svn path=/trunk/; revision=44861
[HAL]: Use Mm headers to support PTE/PDE address translation instead of a hardcoded, homegrown macro. WARNING: The current HAL code is not PAE compatible (as it already wasn't).
[NTOS]: Define an inline function to set and query an interrupt handler associated with a given IDT vector. This results in much cleaner code as the uglyness of manually setting up an IDT handler isn't duplicated 10 times. Additionally, it fixes some callers which had not been using HalVectorToIDTEntry to make the initial translation.
svn path=/trunk/; revision=44855
- Add missing string resources and translate the german ones.
- Set the focus to the combobox when the details page is opened.
- Don't display an error message when a property is not set for the selected device.
- Display 'Capabilities' and 'Config Flags' as DWORD values.
Ooops! These should have been committed as well.
svn path=/trunk/; revision=44854
- Add missing string resources and translate the german ones.
- Set the focus to the combobox when the details page is opened.
- Don't display an error message when a property is not set for the selected device.
- Display 'Capabilities' and 'Config Flags' as DWORD values.
svn path=/trunk/; revision=44853
[HAL]: If the current TSS does not have enough space for an I/O Privilege Map then "borrow" the default TSS while the BIOS Call is in-flight. "Return" it when the BIOS call has ended. Fixes panics during a double fault (since the double fault handler will attempt to clear the display through a Video ROM BIOS Interrupt 10h). Allows NMI panics to do BIOS calls as well (for later).
svn path=/trunk/; revision=44843
[HAL]: Simplify IDT write-protection handling (always make it R/W and restore it to previous state).
[HAL]: Avoid two superflous TLB flushes.
svn path=/trunk/; revision=44842
[HAL]: The I/O Permissions Map on a typical Privileged Mode x86 OS is all 0xFF's, so it's quite wasteful to copy-in/out the entire map each single BIOS Call. As an optimization, only save and restore non-0xFF entries.
[NTOS]: Define and use constants for different IOPM values, instead of using hardcoded values.
svn path=/trunk/; revision=44841
Implement the details page and add dialogs for the resources and power pages. Some of the code is not final yet as I don't have a clean way of retrieving the required information. Some required stuff in setupapi or umpnpmgr is still incomplete too.
I wish you a happy and successful 2010!
Eric.
svn path=/trunk/; revision=44838
- Patch modified by Dmitry Timoshkov : Handle virtual key codes only in the WM_KEYDOWN case. See bug 5063. Reported by David Quintana.
svn path=/trunk/; revision=44819
- Plugged in region attribute support and added the PEB cache for it as well.
[Gdi32]
- Using CreateRectRgn only with attribute and PEB cache support.
[Testing]
- Wine tests: gdi32; clipping and dc. gdiplus; region. user32; dce. Same results.
- Applications, AbiWord 2.6.8, FF 3.5, miranda 0.7.19 unicode, putty, SeaMonkey 2.0, WinMerge 2.12.4 and winamp 2.95 rc std. Same results.
svn path=/trunk/; revision=44817
- Add mask offset coordinates to GreStretchBltMask parameters, add code to handle a mask offset
- Only fail if the mask is smaller than the color bitmap, print sizes in this case
- Adapt callers to GreStretchBltMask changes
- DrawIcon: use new features to combine mask and color images
- Mouse control panel now shows cursors again (masks still need some work), fixes ~15 user32:cursoricon tests
svn path=/trunk/; revision=44803
- Merge icon and cursor creation into one function, fix height assumptions
- Remove code preventing color cursors to be selected
- Winamp cursor is now shown correctly, bug #4370
svn path=/trunk/; revision=44802