Skip to content

Commit 5d78952

Browse files
committed
[NTOS:KD64] Simplify some code in debugging helpers
1 parent 1c61d4c commit 5d78952

File tree

5 files changed

+36
-48
lines changed

5 files changed

+36
-48
lines changed

ntoskrnl/include/internal/kd64.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -401,13 +401,13 @@ NTSTATUS
401401
NTAPI
402402
KdpSysReadMsr(
403403
_In_ ULONG Msr,
404-
_Out_ PLARGE_INTEGER MsrValue);
404+
_Out_ PULONGLONG MsrValue);
405405

406406
NTSTATUS
407407
NTAPI
408408
KdpSysWriteMsr(
409409
_In_ ULONG Msr,
410-
_In_ PLARGE_INTEGER MsrValue);
410+
_In_ PULONGLONG MsrValue);
411411

412412
//
413413
// Bus

ntoskrnl/kd64/amd64/kdx64.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,12 +95,12 @@ NTSTATUS
9595
NTAPI
9696
KdpSysReadMsr(
9797
_In_ ULONG Msr,
98-
_Out_ PLARGE_INTEGER MsrValue)
98+
_Out_ PULONGLONG MsrValue)
9999
{
100100
/* Use SEH to protect from invalid MSRs */
101101
_SEH2_TRY
102102
{
103-
MsrValue->QuadPart = __readmsr(Msr);
103+
*MsrValue = __readmsr(Msr);
104104
}
105105
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
106106
{
@@ -115,12 +115,12 @@ NTSTATUS
115115
NTAPI
116116
KdpSysWriteMsr(
117117
_In_ ULONG Msr,
118-
_In_ PLARGE_INTEGER MsrValue)
118+
_In_ PULONGLONG MsrValue)
119119
{
120120
/* Use SEH to protect from invalid MSRs */
121121
_SEH2_TRY
122122
{
123-
__writemsr(Msr, MsrValue->QuadPart);
123+
__writemsr(Msr, *MsrValue);
124124
}
125125
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
126126
{

ntoskrnl/kd64/arm/kdarm.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ NTSTATUS
3737
NTAPI
3838
KdpSysReadMsr(
3939
_In_ ULONG Msr,
40-
_Out_ PLARGE_INTEGER MsrValue)
40+
_Out_ PULONGLONG MsrValue)
4141
{
4242
UNIMPLEMENTED;
4343
return STATUS_UNSUCCESSFUL;
@@ -47,7 +47,7 @@ NTSTATUS
4747
NTAPI
4848
KdpSysWriteMsr(
4949
_In_ ULONG Msr,
50-
_In_ PLARGE_INTEGER MsrValue)
50+
_In_ PULONGLONG MsrValue)
5151
{
5252
UNIMPLEMENTED;
5353
return STATUS_UNSUCCESSFUL;

ntoskrnl/kd64/i386/kdx86.c

Lines changed: 22 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -93,45 +93,39 @@ NTSTATUS
9393
NTAPI
9494
KdpSysReadMsr(
9595
_In_ ULONG Msr,
96-
_Out_ PLARGE_INTEGER MsrValue)
96+
_Out_ PULONGLONG MsrValue)
9797
{
98-
/* Wrap this in SEH in case the MSR doesn't exist */
98+
/* Use SEH to protect from invalid MSRs */
9999
_SEH2_TRY
100100
{
101-
/* Read from the MSR */
102-
MsrValue->QuadPart = __readmsr(Msr);
101+
*MsrValue = __readmsr(Msr);
103102
}
104103
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
105104
{
106-
/* Invalid MSR */
107105
_SEH2_YIELD(return STATUS_NO_SUCH_DEVICE);
108106
}
109107
_SEH2_END;
110108

111-
/* Success */
112109
return STATUS_SUCCESS;
113110
}
114111

115112
NTSTATUS
116113
NTAPI
117114
KdpSysWriteMsr(
118115
_In_ ULONG Msr,
119-
_In_ PLARGE_INTEGER MsrValue)
116+
_In_ PULONGLONG MsrValue)
120117
{
121-
/* Wrap this in SEH in case the MSR doesn't exist */
118+
/* Use SEH to protect from invalid MSRs */
122119
_SEH2_TRY
123120
{
124-
/* Write to the MSR */
125-
__writemsr(Msr, MsrValue->QuadPart);
121+
__writemsr(Msr, *MsrValue);
126122
}
127123
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
128124
{
129-
/* Invalid MSR */
130125
_SEH2_YIELD(return STATUS_NO_SUCH_DEVICE);
131126
}
132127
_SEH2_END;
133128

134-
/* Success */
135129
return STATUS_SUCCESS;
136130
}
137131

@@ -155,7 +149,7 @@ KdpSysReadBusData(
155149
Length);
156150

157151
/* Return status */
158-
return *ActualLength != 0 ? STATUS_SUCCESS : STATUS_UNSUCCESSFUL;
152+
return (*ActualLength != 0 ? STATUS_SUCCESS : STATUS_UNSUCCESSFUL);
159153
}
160154

161155
NTSTATUS
@@ -178,7 +172,7 @@ KdpSysWriteBusData(
178172
Length);
179173

180174
/* Return status */
181-
return *ActualLength != 0 ? STATUS_SUCCESS : STATUS_UNSUCCESSFUL;
175+
return (*ActualLength != 0 ? STATUS_SUCCESS : STATUS_UNSUCCESSFUL);
182176
}
183177

184178
NTSTATUS
@@ -272,9 +266,7 @@ KdpSysReadIoSpace(
272266
NTSTATUS Status;
273267

274268
/* Verify parameters */
275-
if ((InterfaceType != Isa) ||
276-
(BusNumber != 0) ||
277-
(AddressSpace != 1))
269+
if ((InterfaceType != Isa) || (BusNumber != 0) || (AddressSpace != 1))
278270
{
279271
/* Fail, we don't support this */
280272
*ActualDataSize = 0;
@@ -285,16 +277,17 @@ KdpSysReadIoSpace(
285277
switch (DataSize)
286278
{
287279
case sizeof(UCHAR):
288-
280+
{
289281
/* Read 1 byte */
290282
*(PUCHAR)DataValue =
291283
READ_PORT_UCHAR((PUCHAR)(ULONG_PTR)IoAddress);
292284
*ActualDataSize = sizeof(UCHAR);
293285
Status = STATUS_SUCCESS;
294286
break;
287+
}
295288

296289
case sizeof(USHORT):
297-
290+
{
298291
/* Make sure the address is aligned */
299292
if ((IoAddress & (sizeof(USHORT) - 1)) != 0)
300293
{
@@ -310,9 +303,10 @@ KdpSysReadIoSpace(
310303
*ActualDataSize = sizeof(USHORT);
311304
Status = STATUS_SUCCESS;
312305
break;
306+
}
313307

314308
case sizeof(ULONG):
315-
309+
{
316310
/* Make sure the address is aligned */
317311
if ((IoAddress & (sizeof(ULONG) - 1)) != 0)
318312
{
@@ -328,9 +322,9 @@ KdpSysReadIoSpace(
328322
*ActualDataSize = sizeof(ULONG);
329323
Status = STATUS_SUCCESS;
330324
break;
325+
}
331326

332327
default:
333-
334328
/* Invalid size, fail */
335329
*ActualDataSize = 0;
336330
Status = STATUS_INVALID_PARAMETER;
@@ -354,9 +348,7 @@ KdpSysWriteIoSpace(
354348
NTSTATUS Status;
355349

356350
/* Verify parameters */
357-
if ((InterfaceType != Isa) ||
358-
(BusNumber != 0) ||
359-
(AddressSpace != 1))
351+
if ((InterfaceType != Isa) || (BusNumber != 0) || (AddressSpace != 1))
360352
{
361353
/* Fail, we don't support this */
362354
*ActualDataSize = 0;
@@ -367,16 +359,17 @@ KdpSysWriteIoSpace(
367359
switch (DataSize)
368360
{
369361
case sizeof(UCHAR):
370-
362+
{
371363
/* Write 1 byte */
372364
WRITE_PORT_UCHAR((PUCHAR)(ULONG_PTR)IoAddress,
373365
*(PUCHAR)DataValue);
374366
*ActualDataSize = sizeof(UCHAR);
375367
Status = STATUS_SUCCESS;
376368
break;
369+
}
377370

378371
case sizeof(USHORT):
379-
372+
{
380373
/* Make sure the address is aligned */
381374
if ((IoAddress & (sizeof(USHORT) - 1)) != 0)
382375
{
@@ -392,9 +385,10 @@ KdpSysWriteIoSpace(
392385
*ActualDataSize = sizeof(USHORT);
393386
Status = STATUS_SUCCESS;
394387
break;
388+
}
395389

396390
case sizeof(ULONG):
397-
391+
{
398392
/* Make sure the address is aligned */
399393
if ((IoAddress & (sizeof(ULONG) - 1)) != 0)
400394
{
@@ -410,9 +404,9 @@ KdpSysWriteIoSpace(
410404
*ActualDataSize = sizeof(ULONG);
411405
Status = STATUS_SUCCESS;
412406
break;
407+
}
413408

414409
default:
415-
416410
/* Invalid size, fail */
417411
*ActualDataSize = 0;
418412
Status = STATUS_INVALID_PARAMETER;

ntoskrnl/kd64/kdapi.c

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -961,16 +961,15 @@ KdpReadMachineSpecificRegister(IN PDBGKD_MANIPULATE_STATE64 State,
961961
{
962962
STRING Header;
963963
PDBGKD_READ_WRITE_MSR ReadMsr = &State->u.ReadWriteMsr;
964-
LARGE_INTEGER MsrValue;
964+
ULARGE_INTEGER MsrValue;
965965

966966
/* Setup the header */
967967
Header.Length = sizeof(DBGKD_MANIPULATE_STATE64);
968968
Header.Buffer = (PCHAR)State;
969969
ASSERT(Data->Length == 0);
970970

971971
/* Call the internal routine */
972-
State->ReturnStatus = KdpSysReadMsr(ReadMsr->Msr,
973-
&MsrValue);
972+
State->ReturnStatus = KdpSysReadMsr(ReadMsr->Msr, &MsrValue.QuadPart);
974973

975974
/* Return the data */
976975
ReadMsr->DataValueLow = MsrValue.LowPart;
@@ -991,7 +990,7 @@ KdpWriteMachineSpecificRegister(IN PDBGKD_MANIPULATE_STATE64 State,
991990
{
992991
STRING Header;
993992
PDBGKD_READ_WRITE_MSR WriteMsr = &State->u.ReadWriteMsr;
994-
LARGE_INTEGER MsrValue;
993+
ULARGE_INTEGER MsrValue;
995994

996995
/* Setup the header */
997996
Header.Length = sizeof(DBGKD_MANIPULATE_STATE64);
@@ -1001,8 +1000,7 @@ KdpWriteMachineSpecificRegister(IN PDBGKD_MANIPULATE_STATE64 State,
10011000
/* Call the internal routine */
10021001
MsrValue.LowPart = WriteMsr->DataValueLow;
10031002
MsrValue.HighPart = WriteMsr->DataValueHigh;
1004-
State->ReturnStatus = KdpSysWriteMsr(WriteMsr->Msr,
1005-
&MsrValue);
1003+
State->ReturnStatus = KdpSysWriteMsr(WriteMsr->Msr, &MsrValue.QuadPart);
10061004

10071005
/* Send the reply */
10081006
KdSendPacket(PACKET_TYPE_KD_STATE_MANIPULATE,
@@ -1062,7 +1060,6 @@ KdpSetBusData(IN PDBGKD_MANIPULATE_STATE64 State,
10621060
{
10631061
STRING Header;
10641062
PDBGKD_GET_SET_BUS_DATA SetBusData = &State->u.GetSetBusData;
1065-
ULONG Length;
10661063

10671064
/* Setup the header */
10681065
Header.Length = sizeof(DBGKD_MANIPULATE_STATE64);
@@ -1075,10 +1072,7 @@ KdpSetBusData(IN PDBGKD_MANIPULATE_STATE64 State,
10751072
SetBusData->Offset,
10761073
Data->Buffer,
10771074
SetBusData->Length,
1078-
&Length);
1079-
1080-
/* Return the actual length written */
1081-
SetBusData->Length = Length;
1075+
&SetBusData->Length);
10821076

10831077
/* Send the reply */
10841078
KdSendPacket(PACKET_TYPE_KD_STATE_MANIPULATE,
@@ -1926,7 +1920,7 @@ KdEnterDebugger(IN PKTRAP_FRAME TrapFrame,
19261920
/* Freeze all CPUs, raising also the IRQL to HIGH_LEVEL */
19271921
Enable = KeFreezeExecution(TrapFrame, ExceptionFrame);
19281922

1929-
/* Lock the port, save the state and set debugger entered */
1923+
/* Lock the port, save its state and set the debugger entered flag */
19301924
KdpPortLocked = KeTryToAcquireSpinLockAtDpcLevel(&KdpDebuggerLock);
19311925
KdSave(FALSE);
19321926
KdEnteredDebugger = TRUE;

0 commit comments

Comments
 (0)