A free Windows-compatible Operating System - mirrored from GitHub
Find a file
Timo Kreuzer 69330a5795 [NTOS]
Rewrite Trap exits stubs in raw assembly (2nd try) and remove inline assembly. Bugcheck in KiTrap0DHandler, when the fault was not handled. Replace code patching for sysexit vs iret with a function pointer. Slightly refactor KiSystemServiceHandler/KiFastCallEntryHanlder. Unroll the loop in the systemcall handler and use volatile keyword when reloading TrapFrame and DescriptorTable from the new stack after converting to gui thread to prevent the compiler from optimizing it away (or moving it out of the loop). Add an asm macro KiCallHandler, which expands to call on debug builds to make sure backtraces work as expected and to jmp on release builds for improved performance. Modify KiExitV86Trap to always exit and add DECLSPEC_NORETURN. Use __debugbreak() instead of while(TRUE) on errors in KiExitTrapDebugChecks.
The old code hat 2 issues: one was restoring segments in KiExitV86Trap when they shouldn't be, leading to a bugcheck. And the other was a long hang (5 mintes or more) in 3rd stage on qemu when selecting RosDbg, caused by the KiFastCallExitHandler function pointer being initialized with a pointer to the iret handler. Initializing it in code solved the issue. To figure out why is left as an exercise to the reader.

svn path=/trunk/; revision=46247
2010-03-17 13:12:46 +00:00
irc Give Techbot the ability to check for and ghost existing bots, then rename itself 2008-08-10 13:06:58 +00:00
reactos [NTOS] 2010-03-17 13:12:46 +00:00
rosapps [ROSAPPS] 2010-03-13 18:07:56 +00:00
rostests [NTDLL_WINETEST] 2010-03-15 22:13:19 +00:00
wallpaper Rename the wallpaper to conform with ISO 9660:1988 and make cdmake happy... 2009-02-03 13:26:30 +00:00