)\r
{\r
UINT32 Index;\r
+ UINT32 Index2;\r
UINT32 NumberOfEntries;\r
GAUGE_DATA_ENTRY_EX *GaugeEntryExArray;\r
\r
NumberOfEntries = mGaugeData->NumberOfEntries;\r
GaugeEntryExArray = (GAUGE_DATA_ENTRY_EX *) (mGaugeData + 1);\r
\r
+ Index2 = 0;\r
+\r
for (Index = 0; Index < NumberOfEntries; Index++) {\r
- if ((GaugeEntryExArray[Index].Handle == (EFI_PHYSICAL_ADDRESS) (UINTN) Handle) &&\r
- AsciiStrnCmp (GaugeEntryExArray[Index].Token, Token, SMM_PERFORMANCE_STRING_LENGTH) == 0 &&\r
- AsciiStrnCmp (GaugeEntryExArray[Index].Module, Module, SMM_PERFORMANCE_STRING_LENGTH) == 0 &&\r
- (GaugeEntryExArray[Index].Identifier == Identifier) &&\r
- GaugeEntryExArray[Index].EndTimeStamp == 0) {\r
+ Index2 = NumberOfEntries - 1 - Index;\r
+ if (GaugeEntryExArray[Index2].EndTimeStamp == 0 &&\r
+ (GaugeEntryExArray[Index2].Handle == (EFI_PHYSICAL_ADDRESS) (UINTN) Handle) &&\r
+ AsciiStrnCmp (GaugeEntryExArray[Index2].Token, Token, SMM_PERFORMANCE_STRING_LENGTH) == 0 &&\r
+ AsciiStrnCmp (GaugeEntryExArray[Index2].Module, Module, SMM_PERFORMANCE_STRING_LENGTH) == 0 &&\r
+ (GaugeEntryExArray[Index2].Identifier == Identifier)) {\r
+ Index = Index2;\r
break;\r
}\r
}\r