mirror of
https://github.com/reactos/reactos.git
synced 2025-02-28 19:32:59 +00:00
[NTOS:KD64] Simplify some code in debugging helpers
This commit is contained in:
parent
1c61d4ce90
commit
5d78952024
5 changed files with 36 additions and 48 deletions
|
@ -401,13 +401,13 @@ NTSTATUS
|
|||
NTAPI
|
||||
KdpSysReadMsr(
|
||||
_In_ ULONG Msr,
|
||||
_Out_ PLARGE_INTEGER MsrValue);
|
||||
_Out_ PULONGLONG MsrValue);
|
||||
|
||||
NTSTATUS
|
||||
NTAPI
|
||||
KdpSysWriteMsr(
|
||||
_In_ ULONG Msr,
|
||||
_In_ PLARGE_INTEGER MsrValue);
|
||||
_In_ PULONGLONG MsrValue);
|
||||
|
||||
//
|
||||
// Bus
|
||||
|
|
|
@ -95,12 +95,12 @@ NTSTATUS
|
|||
NTAPI
|
||||
KdpSysReadMsr(
|
||||
_In_ ULONG Msr,
|
||||
_Out_ PLARGE_INTEGER MsrValue)
|
||||
_Out_ PULONGLONG MsrValue)
|
||||
{
|
||||
/* Use SEH to protect from invalid MSRs */
|
||||
_SEH2_TRY
|
||||
{
|
||||
MsrValue->QuadPart = __readmsr(Msr);
|
||||
*MsrValue = __readmsr(Msr);
|
||||
}
|
||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
|
@ -115,12 +115,12 @@ NTSTATUS
|
|||
NTAPI
|
||||
KdpSysWriteMsr(
|
||||
_In_ ULONG Msr,
|
||||
_In_ PLARGE_INTEGER MsrValue)
|
||||
_In_ PULONGLONG MsrValue)
|
||||
{
|
||||
/* Use SEH to protect from invalid MSRs */
|
||||
_SEH2_TRY
|
||||
{
|
||||
__writemsr(Msr, MsrValue->QuadPart);
|
||||
__writemsr(Msr, *MsrValue);
|
||||
}
|
||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
|
|
|
@ -37,7 +37,7 @@ NTSTATUS
|
|||
NTAPI
|
||||
KdpSysReadMsr(
|
||||
_In_ ULONG Msr,
|
||||
_Out_ PLARGE_INTEGER MsrValue)
|
||||
_Out_ PULONGLONG MsrValue)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return STATUS_UNSUCCESSFUL;
|
||||
|
@ -47,7 +47,7 @@ NTSTATUS
|
|||
NTAPI
|
||||
KdpSysWriteMsr(
|
||||
_In_ ULONG Msr,
|
||||
_In_ PLARGE_INTEGER MsrValue)
|
||||
_In_ PULONGLONG MsrValue)
|
||||
{
|
||||
UNIMPLEMENTED;
|
||||
return STATUS_UNSUCCESSFUL;
|
||||
|
|
|
@ -93,22 +93,19 @@ NTSTATUS
|
|||
NTAPI
|
||||
KdpSysReadMsr(
|
||||
_In_ ULONG Msr,
|
||||
_Out_ PLARGE_INTEGER MsrValue)
|
||||
_Out_ PULONGLONG MsrValue)
|
||||
{
|
||||
/* Wrap this in SEH in case the MSR doesn't exist */
|
||||
/* Use SEH to protect from invalid MSRs */
|
||||
_SEH2_TRY
|
||||
{
|
||||
/* Read from the MSR */
|
||||
MsrValue->QuadPart = __readmsr(Msr);
|
||||
*MsrValue = __readmsr(Msr);
|
||||
}
|
||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
/* Invalid MSR */
|
||||
_SEH2_YIELD(return STATUS_NO_SUCH_DEVICE);
|
||||
}
|
||||
_SEH2_END;
|
||||
|
||||
/* Success */
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -116,22 +113,19 @@ NTSTATUS
|
|||
NTAPI
|
||||
KdpSysWriteMsr(
|
||||
_In_ ULONG Msr,
|
||||
_In_ PLARGE_INTEGER MsrValue)
|
||||
_In_ PULONGLONG MsrValue)
|
||||
{
|
||||
/* Wrap this in SEH in case the MSR doesn't exist */
|
||||
/* Use SEH to protect from invalid MSRs */
|
||||
_SEH2_TRY
|
||||
{
|
||||
/* Write to the MSR */
|
||||
__writemsr(Msr, MsrValue->QuadPart);
|
||||
__writemsr(Msr, *MsrValue);
|
||||
}
|
||||
_SEH2_EXCEPT(EXCEPTION_EXECUTE_HANDLER)
|
||||
{
|
||||
/* Invalid MSR */
|
||||
_SEH2_YIELD(return STATUS_NO_SUCH_DEVICE);
|
||||
}
|
||||
_SEH2_END;
|
||||
|
||||
/* Success */
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
@ -155,7 +149,7 @@ KdpSysReadBusData(
|
|||
Length);
|
||||
|
||||
/* Return status */
|
||||
return *ActualLength != 0 ? STATUS_SUCCESS : STATUS_UNSUCCESSFUL;
|
||||
return (*ActualLength != 0 ? STATUS_SUCCESS : STATUS_UNSUCCESSFUL);
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
|
@ -178,7 +172,7 @@ KdpSysWriteBusData(
|
|||
Length);
|
||||
|
||||
/* Return status */
|
||||
return *ActualLength != 0 ? STATUS_SUCCESS : STATUS_UNSUCCESSFUL;
|
||||
return (*ActualLength != 0 ? STATUS_SUCCESS : STATUS_UNSUCCESSFUL);
|
||||
}
|
||||
|
||||
NTSTATUS
|
||||
|
@ -272,9 +266,7 @@ KdpSysReadIoSpace(
|
|||
NTSTATUS Status;
|
||||
|
||||
/* Verify parameters */
|
||||
if ((InterfaceType != Isa) ||
|
||||
(BusNumber != 0) ||
|
||||
(AddressSpace != 1))
|
||||
if ((InterfaceType != Isa) || (BusNumber != 0) || (AddressSpace != 1))
|
||||
{
|
||||
/* Fail, we don't support this */
|
||||
*ActualDataSize = 0;
|
||||
|
@ -285,16 +277,17 @@ KdpSysReadIoSpace(
|
|||
switch (DataSize)
|
||||
{
|
||||
case sizeof(UCHAR):
|
||||
|
||||
{
|
||||
/* Read 1 byte */
|
||||
*(PUCHAR)DataValue =
|
||||
READ_PORT_UCHAR((PUCHAR)(ULONG_PTR)IoAddress);
|
||||
*ActualDataSize = sizeof(UCHAR);
|
||||
Status = STATUS_SUCCESS;
|
||||
break;
|
||||
}
|
||||
|
||||
case sizeof(USHORT):
|
||||
|
||||
{
|
||||
/* Make sure the address is aligned */
|
||||
if ((IoAddress & (sizeof(USHORT) - 1)) != 0)
|
||||
{
|
||||
|
@ -310,9 +303,10 @@ KdpSysReadIoSpace(
|
|||
*ActualDataSize = sizeof(USHORT);
|
||||
Status = STATUS_SUCCESS;
|
||||
break;
|
||||
}
|
||||
|
||||
case sizeof(ULONG):
|
||||
|
||||
{
|
||||
/* Make sure the address is aligned */
|
||||
if ((IoAddress & (sizeof(ULONG) - 1)) != 0)
|
||||
{
|
||||
|
@ -328,9 +322,9 @@ KdpSysReadIoSpace(
|
|||
*ActualDataSize = sizeof(ULONG);
|
||||
Status = STATUS_SUCCESS;
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
|
||||
/* Invalid size, fail */
|
||||
*ActualDataSize = 0;
|
||||
Status = STATUS_INVALID_PARAMETER;
|
||||
|
@ -354,9 +348,7 @@ KdpSysWriteIoSpace(
|
|||
NTSTATUS Status;
|
||||
|
||||
/* Verify parameters */
|
||||
if ((InterfaceType != Isa) ||
|
||||
(BusNumber != 0) ||
|
||||
(AddressSpace != 1))
|
||||
if ((InterfaceType != Isa) || (BusNumber != 0) || (AddressSpace != 1))
|
||||
{
|
||||
/* Fail, we don't support this */
|
||||
*ActualDataSize = 0;
|
||||
|
@ -367,16 +359,17 @@ KdpSysWriteIoSpace(
|
|||
switch (DataSize)
|
||||
{
|
||||
case sizeof(UCHAR):
|
||||
|
||||
{
|
||||
/* Write 1 byte */
|
||||
WRITE_PORT_UCHAR((PUCHAR)(ULONG_PTR)IoAddress,
|
||||
*(PUCHAR)DataValue);
|
||||
*ActualDataSize = sizeof(UCHAR);
|
||||
Status = STATUS_SUCCESS;
|
||||
break;
|
||||
}
|
||||
|
||||
case sizeof(USHORT):
|
||||
|
||||
{
|
||||
/* Make sure the address is aligned */
|
||||
if ((IoAddress & (sizeof(USHORT) - 1)) != 0)
|
||||
{
|
||||
|
@ -392,9 +385,10 @@ KdpSysWriteIoSpace(
|
|||
*ActualDataSize = sizeof(USHORT);
|
||||
Status = STATUS_SUCCESS;
|
||||
break;
|
||||
}
|
||||
|
||||
case sizeof(ULONG):
|
||||
|
||||
{
|
||||
/* Make sure the address is aligned */
|
||||
if ((IoAddress & (sizeof(ULONG) - 1)) != 0)
|
||||
{
|
||||
|
@ -410,9 +404,9 @@ KdpSysWriteIoSpace(
|
|||
*ActualDataSize = sizeof(ULONG);
|
||||
Status = STATUS_SUCCESS;
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
|
||||
/* Invalid size, fail */
|
||||
*ActualDataSize = 0;
|
||||
Status = STATUS_INVALID_PARAMETER;
|
||||
|
|
|
@ -961,7 +961,7 @@ KdpReadMachineSpecificRegister(IN PDBGKD_MANIPULATE_STATE64 State,
|
|||
{
|
||||
STRING Header;
|
||||
PDBGKD_READ_WRITE_MSR ReadMsr = &State->u.ReadWriteMsr;
|
||||
LARGE_INTEGER MsrValue;
|
||||
ULARGE_INTEGER MsrValue;
|
||||
|
||||
/* Setup the header */
|
||||
Header.Length = sizeof(DBGKD_MANIPULATE_STATE64);
|
||||
|
@ -969,8 +969,7 @@ KdpReadMachineSpecificRegister(IN PDBGKD_MANIPULATE_STATE64 State,
|
|||
ASSERT(Data->Length == 0);
|
||||
|
||||
/* Call the internal routine */
|
||||
State->ReturnStatus = KdpSysReadMsr(ReadMsr->Msr,
|
||||
&MsrValue);
|
||||
State->ReturnStatus = KdpSysReadMsr(ReadMsr->Msr, &MsrValue.QuadPart);
|
||||
|
||||
/* Return the data */
|
||||
ReadMsr->DataValueLow = MsrValue.LowPart;
|
||||
|
@ -991,7 +990,7 @@ KdpWriteMachineSpecificRegister(IN PDBGKD_MANIPULATE_STATE64 State,
|
|||
{
|
||||
STRING Header;
|
||||
PDBGKD_READ_WRITE_MSR WriteMsr = &State->u.ReadWriteMsr;
|
||||
LARGE_INTEGER MsrValue;
|
||||
ULARGE_INTEGER MsrValue;
|
||||
|
||||
/* Setup the header */
|
||||
Header.Length = sizeof(DBGKD_MANIPULATE_STATE64);
|
||||
|
@ -1001,8 +1000,7 @@ KdpWriteMachineSpecificRegister(IN PDBGKD_MANIPULATE_STATE64 State,
|
|||
/* Call the internal routine */
|
||||
MsrValue.LowPart = WriteMsr->DataValueLow;
|
||||
MsrValue.HighPart = WriteMsr->DataValueHigh;
|
||||
State->ReturnStatus = KdpSysWriteMsr(WriteMsr->Msr,
|
||||
&MsrValue);
|
||||
State->ReturnStatus = KdpSysWriteMsr(WriteMsr->Msr, &MsrValue.QuadPart);
|
||||
|
||||
/* Send the reply */
|
||||
KdSendPacket(PACKET_TYPE_KD_STATE_MANIPULATE,
|
||||
|
@ -1062,7 +1060,6 @@ KdpSetBusData(IN PDBGKD_MANIPULATE_STATE64 State,
|
|||
{
|
||||
STRING Header;
|
||||
PDBGKD_GET_SET_BUS_DATA SetBusData = &State->u.GetSetBusData;
|
||||
ULONG Length;
|
||||
|
||||
/* Setup the header */
|
||||
Header.Length = sizeof(DBGKD_MANIPULATE_STATE64);
|
||||
|
@ -1075,10 +1072,7 @@ KdpSetBusData(IN PDBGKD_MANIPULATE_STATE64 State,
|
|||
SetBusData->Offset,
|
||||
Data->Buffer,
|
||||
SetBusData->Length,
|
||||
&Length);
|
||||
|
||||
/* Return the actual length written */
|
||||
SetBusData->Length = Length;
|
||||
&SetBusData->Length);
|
||||
|
||||
/* Send the reply */
|
||||
KdSendPacket(PACKET_TYPE_KD_STATE_MANIPULATE,
|
||||
|
@ -1926,7 +1920,7 @@ KdEnterDebugger(IN PKTRAP_FRAME TrapFrame,
|
|||
/* Freeze all CPUs, raising also the IRQL to HIGH_LEVEL */
|
||||
Enable = KeFreezeExecution(TrapFrame, ExceptionFrame);
|
||||
|
||||
/* Lock the port, save the state and set debugger entered */
|
||||
/* Lock the port, save its state and set the debugger entered flag */
|
||||
KdpPortLocked = KeTryToAcquireSpinLockAtDpcLevel(&KdpDebuggerLock);
|
||||
KdSave(FALSE);
|
||||
KdEnteredDebugger = TRUE;
|
||||
|
|
Loading…
Reference in a new issue