https://git.reactos.org/?p=reactos.git;a=commitdiff;h=d15e36a1f19b78ca4acbc…
commit d15e36a1f19b78ca4acbc6041a06e5abaa8050d8
Author: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
AuthorDate: Mon Feb 4 01:02:26 2019 +0100
Commit: Hermès Bélusca-Maïto <hermes.belusca-maito(a)reactos.org>
CommitDate: Thu Jun 20 18:07:59 2019 +0200
[NTOS:KE][SDK:ASM] Code formatting/styling only.
- Un-hardcode the RPL_MASK value.
- s/KiUnexpectedInterrupt&Number/KiUnexpectedInterrupt&Vector/
- Use C-style comments in traphdlr.c as everywhere else in the file.
- Update the URLs for the MSDN "FPO" macro documentation.
---
ntoskrnl/include/internal/i386/asmmacro.S | 39 +++++----
ntoskrnl/ke/i386/trap.s | 2 +-
ntoskrnl/ke/i386/traphdlr.c | 128 +++++++++++++-----------------
sdk/include/asm/asm.inc | 18 +++--
4 files changed, 86 insertions(+), 101 deletions(-)
diff --git a/ntoskrnl/include/internal/i386/asmmacro.S
b/ntoskrnl/include/internal/i386/asmmacro.S
index b976b1ab91..6d2d213c3d 100644
--- a/ntoskrnl/include/internal/i386/asmmacro.S
+++ b/ntoskrnl/include/internal/i386/asmmacro.S
@@ -66,16 +66,15 @@ MACRO(idt, Handler, Bits)
ENDM
-KI_PUSH_FAKE_ERROR_CODE = HEX(0001)
-KI_UNUSED = HEX(0002)
-KI_NONVOLATILES_ONLY = HEX(0004)
-KI_FAST_SYSTEM_CALL = HEX(0008)
-KI_SOFTWARE_TRAP = HEX(0010)
-KI_HARDWARE_INT = HEX(0020)
-KI_DONT_SAVE_SEGS = HEX(0100)
+#define KI_PUSH_FAKE_ERROR_CODE HEX(0001)
+#define KI_UNUSED HEX(0002)
+#define KI_NONVOLATILES_ONLY HEX(0004)
+#define KI_FAST_SYSTEM_CALL HEX(0008)
+#define KI_SOFTWARE_TRAP HEX(0010)
+#define KI_HARDWARE_INT HEX(0020)
+#define KI_DONT_SAVE_SEGS HEX(0100)
MACRO(KiEnterTrap, Flags)
- LOCAL kernel_trap
LOCAL not_v86_trap
LOCAL set_sane_segs
@@ -145,7 +144,7 @@ MACRO(KiEnterTrap, Flags)
if (Flags AND KI_DONT_SAVE_SEGS)
/* Initialize TrapFrame segment registers with sane values */
- mov eax, KGDT_R3_DATA OR 3
+ mov eax, KGDT_R3_DATA OR RPL_MASK
mov ecx, fs
mov [esp + KTRAP_FRAME_DS], eax
mov [esp + KTRAP_FRAME_ES], eax
@@ -250,17 +249,17 @@ MACRO(TRAP_ENTRY, Trap, Flags)
.ENDP
ENDM
-#define KI_RESTORE_EAX HEX(001)
-#define KI_RESTORE_ECX_EDX HEX(002)
-#define KI_RESTORE_FS HEX(004)
-#define KI_RESTORE_SEGMENTS HEX(008)
-#define KI_RESTORE_EFLAGS HEX(010)
-#define KI_EXIT_SYSCALL HEX(020)
-#define KI_EXIT_JMP HEX(040)
-#define KI_EXIT_RET HEX(080)
-#define KI_EXIT_IRET HEX(100)
-#define KI_EDITED_FRAME HEX(200)
-#define KI_EXIT_RET8 HEX(400)
+#define KI_RESTORE_EAX HEX(0001)
+#define KI_RESTORE_ECX_EDX HEX(0002)
+#define KI_RESTORE_FS HEX(0004)
+#define KI_RESTORE_SEGMENTS HEX(0008)
+#define KI_RESTORE_EFLAGS HEX(0010)
+#define KI_EXIT_SYSCALL HEX(0020)
+#define KI_EXIT_JMP HEX(0040)
+#define KI_EXIT_RET HEX(0080)
+#define KI_EXIT_IRET HEX(0100)
+#define KI_EDITED_FRAME HEX(0200)
+#define KI_EXIT_RET8 HEX(0400)
#define KI_RESTORE_VOLATILES (KI_RESTORE_EAX OR KI_RESTORE_ECX_EDX)
MACRO(KiTrapExitStub, Name, Flags)
diff --git a/ntoskrnl/ke/i386/trap.s b/ntoskrnl/ke/i386/trap.s
index 01d130e7e6..6bd57e8053 100644
--- a/ntoskrnl/ke/i386/trap.s
+++ b/ntoskrnl/ke/i386/trap.s
@@ -18,7 +18,7 @@ idt _KiUnexpectedInterrupt&Vector, INT_32_DPL0
ENDM
MACRO(GENERATE_INT_HANDLER, Vector)
-//.func KiUnexpectedInterrupt&Number
+//.func KiUnexpectedInterrupt&Vector
_KiUnexpectedInterrupt&Vector:
/* This is a push instruction with 8bit operand. Since the instruction
sign extends the value to 32 bits, we need to offset it */
diff --git a/ntoskrnl/ke/i386/traphdlr.c b/ntoskrnl/ke/i386/traphdlr.c
index 27ae26c805..7cf1fcde37 100644
--- a/ntoskrnl/ke/i386/traphdlr.c
+++ b/ntoskrnl/ke/i386/traphdlr.c
@@ -222,7 +222,7 @@ KiDebugHandler(IN PKTRAP_FRAME TrapFrame,
IN ULONG Parameter3)
{
/* Check for VDM trap */
- ASSERT((KiVdmTrap(TrapFrame)) == FALSE);
+ ASSERT(KiVdmTrap(TrapFrame) == FALSE);
/* Enable interrupts if the trap came from user-mode */
if (KiUserTrap(TrapFrame)) _enable();
@@ -248,7 +248,7 @@ KiNpxHandler(IN PKTRAP_FRAME TrapFrame,
ULONG Cr0, Mask, Error, ErrorOffset, DataOffset;
/* Check for VDM trap */
- ASSERT((KiVdmTrap(TrapFrame)) == FALSE);
+ ASSERT(KiVdmTrap(TrapFrame) == FALSE);
/* Check for kernel trap */
if (!KiUserTrap(TrapFrame))
@@ -410,7 +410,7 @@ KiTrap00Handler(IN PKTRAP_FRAME TrapFrame)
KiEnterTrap(TrapFrame);
/* Check for VDM trap */
- ASSERT((KiVdmTrap(TrapFrame)) == FALSE);
+ ASSERT(KiVdmTrap(TrapFrame) == FALSE);
/* Enable interrupts */
_enable();
@@ -430,7 +430,7 @@ KiTrap01Handler(IN PKTRAP_FRAME TrapFrame)
KiEnterTrap(TrapFrame);
/* Check for VDM trap */
- ASSERT((KiVdmTrap(TrapFrame)) == FALSE);
+ ASSERT(KiVdmTrap(TrapFrame) == FALSE);
/* Check if this was a single step after sysenter */
if (TrapFrame->Eip == (ULONG)KiFastCallEntry)
@@ -467,58 +467,52 @@ KiTrap02(VOID)
KTRAP_FRAME TrapFrame;
KIRQL OldIrql;
- //
- // In some sort of strange recursion case, we might end up here with the IF
- // flag incorrectly on the interrupt frame -- during a normal NMI this would
- // normally already be set.
- //
- // For sanity's sake, make sure interrupts are disabled for sure.
- // NMIs will already be since the CPU does it for us.
- //
+ /*
+ * In some sort of strange recursion case, we might end up here with the IF
+ * flag incorrectly on the interrupt frame -- during a normal NMI this would
+ * normally already be set.
+ *
+ * For sanity's sake, make sure interrupts are disabled for sure.
+ * NMIs will already be since the CPU does it for us.
+ */
_disable();
- //
- // Get the current TSS, thread, and process
- //
+ /* Get the current TSS, thread, and process */
Tss = PCR->TSS;
Thread = ((PKIPCR)PCR)->PrcbData.CurrentThread;
Process = Thread->ApcState.Process;
- //
- // Save data usually not in the TSS
- //
+ /* Save data usually not present in the TSS */
Tss->CR3 = Process->DirectoryTableBase[0];
Tss->IoMapBase = Process->IopmOffset;
Tss->LDT = Process->LdtDescriptor.LimitLow ? KGDT_LDT : 0;
- //
- // Now get the base address of the NMI TSS
- //
+ /* Now get the base address of the NMI TSS */
TssGdt = &((PKIPCR)KeGetPcr())->GDT[KGDT_NMI_TSS / sizeof(KGDTENTRY)];
NmiTss = (PKTSS)(ULONG_PTR)(TssGdt->BaseLow |
TssGdt->HighWord.Bytes.BaseMid << 16 |
TssGdt->HighWord.Bytes.BaseHi << 24);
- //
- // Switch to it and activate it, masking off the nested flag
- //
- // Note that in reality, we are already on the NMI tss -- we just need to
- // update the PCR to reflect this
- //
+ /*
+ * Switch to it and activate it, masking off the nested flag.
+ *
+ * Note that in reality, we are already on the NMI TSS -- we just
+ * need to update the PCR to reflect this.
+ */
PCR->TSS = NmiTss;
__writeeflags(__readeflags() &~ EFLAGS_NESTED_TASK);
TssGdt->HighWord.Bits.Dpl = 0;
TssGdt->HighWord.Bits.Pres = 1;
TssGdt->HighWord.Bits.Type = I386_TSS;
- //
- // Now build the trap frame based on the original TSS
- //
- // The CPU does a hardware "Context switch" / task switch of sorts and so
it
- // takes care of saving our context in the normal TSS.
- //
- // We just have to go get the values...
- //
+ /*
+ * Now build the trap frame based on the original TSS.
+ *
+ * The CPU does a hardware "Context switch" / task switch of sorts
+ * and so it takes care of saving our context in the normal TSS.
+ *
+ * We just have to go get the values...
+ */
RtlZeroMemory(&TrapFrame, sizeof(KTRAP_FRAME));
TrapFrame.HardwareSegSs = Tss->Ss0;
TrapFrame.HardwareEsp = Tss->Esp0;
@@ -541,64 +535,50 @@ KiTrap02(VOID)
TrapFrame.DbgEip = Tss->Eip;
TrapFrame.DbgEbp = Tss->Ebp;
- //
- // Store the trap frame in the KPRCB
- //
+ /* Store the trap frame in the KPRCB */
KiSaveProcessorState(&TrapFrame, NULL);
- //
- // Call any registered NMI handlers and see if they handled it or not
- //
+ /* Call any registered NMI handlers and see if they handled it or not */
if (!KiHandleNmi())
{
- //
- // They did not, so call the platform HAL routine to bugcheck the system
- //
- // Make sure the HAL believes it's running at HIGH IRQL... we can't use
- // the normal APIs here as playing with the IRQL could change the system
- // state
- //
+ /*
+ * They did not, so call the platform HAL routine to bugcheck the system
+ *
+ * Make sure the HAL believes it's running at HIGH IRQL... we can't use
+ * the normal APIs here as playing with the IRQL could change the system
+ * state.
+ */
OldIrql = PCR->Irql;
PCR->Irql = HIGH_LEVEL;
HalHandleNMI(NULL);
PCR->Irql = OldIrql;
}
- //
- // Although the CPU disabled NMIs, we just did a BIOS Call, which could've
- // totally changed things.
- //
- // We have to make sure we're still in our original NMI -- a nested NMI
- // will point back to the NMI TSS, and in that case we're hosed.
- //
+ /*
+ * Although the CPU disabled NMIs, we just did a BIOS call, which could've
+ * totally changed things.
+ *
+ * We have to make sure we're still in our original NMI -- a nested NMI
+ * will point back to the NMI TSS, and in that case we're hosed.
+ */
if (PCR->TSS->Backlink != KGDT_NMI_TSS)
{
- //
- // Restore original TSS
- //
+ /* Restore original TSS */
PCR->TSS = Tss;
- //
- // Set it back to busy
- //
+ /* Set it back to busy */
TssGdt->HighWord.Bits.Dpl = 0;
TssGdt->HighWord.Bits.Pres = 1;
TssGdt->HighWord.Bits.Type = I386_ACTIVE_TSS;
- //
- // Restore nested flag
- //
+ /* Restore nested flag */
__writeeflags(__readeflags() | EFLAGS_NESTED_TASK);
- //
- // Handled, return from interrupt
- //
+ /* Handled, return from interrupt */
KiIret();
}
- //
- // Unhandled: crash the system
- //
+ /* Unhandled: crash the system */
KiSystemFatalException(EXCEPTION_NMI, NULL);
}
@@ -623,7 +603,7 @@ KiTrap04Handler(IN PKTRAP_FRAME TrapFrame)
KiEnterTrap(TrapFrame);
/* Check for VDM trap */
- ASSERT((KiVdmTrap(TrapFrame)) == FALSE);
+ ASSERT(KiVdmTrap(TrapFrame) == FALSE);
/* Enable interrupts */
_enable();
@@ -643,7 +623,7 @@ KiTrap05Handler(IN PKTRAP_FRAME TrapFrame)
KiEnterTrap(TrapFrame);
/* Check for VDM trap */
- ASSERT((KiVdmTrap(TrapFrame)) == FALSE);
+ ASSERT(KiVdmTrap(TrapFrame) == FALSE);
/* Check for kernel-mode fault */
if (!KiUserTrap(TrapFrame)) KiSystemFatalException(EXCEPTION_BOUND_CHECK,
TrapFrame);
@@ -878,7 +858,7 @@ KiTrap0AHandler(IN PKTRAP_FRAME TrapFrame)
KiEnterTrap(TrapFrame);
/* Check for VDM trap */
- ASSERT((KiVdmTrap(TrapFrame)) == FALSE);
+ ASSERT(KiVdmTrap(TrapFrame) == FALSE);
/* Kill the system */
KiSystemFatalException(EXCEPTION_INVALID_TSS, TrapFrame);
@@ -1485,7 +1465,7 @@ KiTrap13Handler(IN PKTRAP_FRAME TrapFrame)
SaveArea = KiGetThreadNpxArea(Thread);
/* Check for VDM trap */
- ASSERT((KiVdmTrap(TrapFrame)) == FALSE);
+ ASSERT(KiVdmTrap(TrapFrame) == FALSE);
/* Check for user trap */
if (!KiUserTrap(TrapFrame))
diff --git a/sdk/include/asm/asm.inc b/sdk/include/asm/asm.inc
index 7612815607..458fce72f1 100644
--- a/sdk/include/asm/asm.inc
+++ b/sdk/include/asm/asm.inc
@@ -9,8 +9,10 @@
#ifndef __ASM_INC__
#define __ASM_INC__
-/* Common definitions for FPO macro
- see
http://msdn.microsoft.com/en-us/library/ms679352%28VS.85%29.aspx */
+/*
+ * Common definitions for the FPO macro.
+ * See
https://docs.microsoft.com/en-us/windows/desktop/api/winnt/ns-winnt-_fpo_da…
+ */
#define FRAME_FPO 0
#define FRAME_TRAP 1
#define FRAME_TSS 2
@@ -65,8 +67,10 @@ GLOBAL_LABEL MACRO label
%label::
ENDM
-/* check
http://msdn.microsoft.com/en-us/library/9c9k076y%28VS.80%29.aspx
- and
http://msdn.microsoft.com/en-us/library/ms679352%28VS.85%29.aspx */
+/*
+ * See
https://docs.microsoft.com/en-us/cpp/assembler/masm/dot-fpo
+ * and
https://docs.microsoft.com/en-us/windows/desktop/api/winnt/ns-winnt-_fpo_da…
+ */
FPO MACRO cdwLocals, cdwParams, cbProlog, cbRegs, fUseBP, cbFrame
.FPO (cdwLocals, cdwParams, cbProlog, cbRegs, fUseBP, cbFrame)
ENDM
@@ -317,8 +321,10 @@ ENDM
.section .rdata
.endm
-/* check
http://msdn.microsoft.com/en-us/library/9c9k076y%28VS.80%29.aspx
- and
http://msdn.microsoft.com/en-us/library/ms679352%28VS.85%29.aspx */
+/*
+ * See
https://docs.microsoft.com/en-us/cpp/assembler/masm/dot-fpo
+ * and
https://docs.microsoft.com/en-us/windows/desktop/api/winnt/ns-winnt-_fpo_da…
+ */
.macro FPO cdwLocals, cdwParams, cbProlog, cbRegs, fUseBP, cbFrame
.if (cbFrame == FRAME_TRAP)
.cfi_signal_frame