[ros-dev] [ros-diffs] [ros-arm-bringup] 44861: NMI Support Patch 7: [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).
Alexander Potashev
aspotashev at gmail.com
Sun Jan 10 01:16:44 CET 2010
On 21:03 Fri 01 Jan , ros-arm-bringup at svn.reactos.org wrote:
> Author: ros-arm-bringup
> Date: Fri Jan 1 22:03:22 2010
> New Revision: 44861
>
> Modified: trunk/reactos/ntoskrnl/include/internal/i386/asmmacro.S
> @@ -87,18 +87,47 @@
> //
> // @name UNHANDLED_PATH
> //
> -// This macro TODO
> +// This macro prints out that the current code path is not expected yet
> //
> // @param None
> //
> // @remark None.
> //
> -.macro UNHANDLED_PATH
> +.macro UNHANDLED_PATH Reason
> +
> + /* Push reason */
> + push offset 1f
> +
> /* Get EIP */
> call $+5
>
> /* Print debug message */
> push offset _UnhandledMsg
> + call _DbgPrint
> + add esp, 12
> +
> + /* Loop indefinitely */
> + jmp $
> +
> +1:
> + .asciz \Reason
I think, this should be:
.asciz "\Reason"
I don't know why, but this line (both variants) doesn't compile for me
with RosBE 1.4.2 (Linux):
ntoskrnl/ke/i386/trap.s: Assembler messages:
ntoskrnl/ke/i386/trap.s:290: Error: junk at end of line, first unrecognized character is `o'
ntoskrnl/ke/i386/trap.s:290: Error: junk at end of line, first unrecognized character is `j'
ntoskrnl/ke/i386/trap.s:290: Error: junk at end of line, first unrecognized character is `o'
ntoskrnl/ke/i386/trap.s:425: Error: junk at end of line, first unrecognized character is `j'
ntoskrnl/ke/i386/trap.s:425: Error: junk at end of line, first unrecognized character is `j'
ntoskrnl/ke/i386/trap.s:425: Error: junk at end of line, first unrecognized character is `j'
ntoskrnl/ke/i386/trap.s:439: Error: junk at end of line, first unrecognized character is `j'
ntoskrnl/ke/i386/trap.s:439: Error: junk at end of line, first unrecognized character is `j'
ntoskrnl/ke/i386/trap.s:439: Error: junk at end of line, first unrecognized character is `j'
ntoskrnl/ke/i386/trap.s:467: Error: junk at end of line, first unrecognized character is `A'
ntoskrnl/ke/i386/trap.s:1677: Error: junk at end of line, first unrecognized character is `R'
ntoskrnl/ke/i386/trap.s:1677: Error: junk at end of line, first unrecognized character is `j'
ntoskrnl/ke/i386/trap.s:1677: Error: junk at end of line, first unrecognized character is `R'
ntoskrnl/ke/i386/trap.s:2415: Error: junk at end of line, first unrecognized character is `c'
ntoskrnl/ke/i386/trap.s:2594: Error: junk at end of line, first unrecognized character is `m'
make: *** [obj-i386/ntoskrnl/ke/i386/trap_ntoskrnl.o] Error 1
--
Alexander Potashev
More information about the Ros-dev
mailing list