[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