From 68978a52aedbca80bfa787250b1ad78e303ddc4f Mon Sep 17 00:00:00 2001 From: oliviermartin Date: Wed, 26 Sep 2012 20:24:10 +0000 Subject: [PATCH] ArmPlatformPkg/EblCmdLib: Fixed 'performance' command Added support for performance counter that counts up or down Signed-off-by: Olivier Martin git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13747 6f19259b-4bc3-4df7-8a09-765794883524 --- ArmPlatformPkg/Library/EblCmdLib/EblCmdLib.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/ArmPlatformPkg/Library/EblCmdLib/EblCmdLib.c b/ArmPlatformPkg/Library/EblCmdLib/EblCmdLib.c index f9e4b40a8e..4c298a61cf 100644 --- a/ArmPlatformPkg/Library/EblCmdLib/EblCmdLib.c +++ b/ArmPlatformPkg/Library/EblCmdLib/EblCmdLib.c @@ -223,8 +223,14 @@ EblPerformance ( UINT64 Start, Stop, TimeStamp; UINT64 Delta, TicksPerSecond, Milliseconds, Microseconds; UINTN Index; + BOOLEAN CountUp; - TicksPerSecond = GetPerformanceCounterProperties (NULL, NULL); + TicksPerSecond = GetPerformanceCounterProperties (&Start, &Stop); + if (Start < Stop) { + CountUp = TRUE; + } else { + CountUp = FALSE; + } Key = 0; do { @@ -235,7 +241,7 @@ EblPerformance ( // The entry for EBL is still running so the stop time will be zero. Skip it AsciiPrint (" running %a\n", ImageHandleToPdbFileName ((EFI_HANDLE)Handle)); } else { - Delta = Start - Stop; + Delta = CountUp?(Stop - Start):(Start - Stop); Microseconds = DivU64x64Remainder (MultU64x32 (Delta, 1000000), TicksPerSecond, NULL); AsciiPrint ("%10ld us %a\n", Microseconds, ImageHandleToPdbFileName ((EFI_HANDLE)Handle)); } @@ -252,7 +258,7 @@ EblPerformance ( if (Key != 0) { for (Index = 0; mTokenList[Index] != NULL; Index++) { if (AsciiStriCmp (mTokenList[Index], Token) == 0) { - Delta = Start - Stop; + Delta = CountUp?(Stop - Start):(Start - Stop); TimeStamp += Delta; Milliseconds = DivU64x64Remainder (MultU64x32 (Delta, 1000), TicksPerSecond, NULL); AsciiPrint ("%6a %6ld ms\n", Token, Milliseconds);