summaryrefslogtreecommitdiff
path: root/ArmPlatformPkg/Library/EblCmdLib
diff options
context:
space:
mode:
authoroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>2012-09-26 20:24:10 +0000
committeroliviermartin <oliviermartin@6f19259b-4bc3-4df7-8a09-765794883524>2012-09-26 20:24:10 +0000
commit68978a52aedbca80bfa787250b1ad78e303ddc4f (patch)
tree2d442985b144e5120bb29420fdbc50a252502067 /ArmPlatformPkg/Library/EblCmdLib
parentba8bd8ce716982c6e88dd098966026fab44acaa7 (diff)
downloadedk2-68978a52aedbca80bfa787250b1ad78e303ddc4f.tar.gz
ArmPlatformPkg/EblCmdLib: Fixed 'performance' command
Added support for performance counter that counts up or down Signed-off-by: Olivier Martin <olivier.martin@arm.com> git-svn-id: https://edk2.svn.sourceforge.net/svnroot/edk2/trunk/edk2@13747 6f19259b-4bc3-4df7-8a09-765794883524
Diffstat (limited to 'ArmPlatformPkg/Library/EblCmdLib')
-rw-r--r--ArmPlatformPkg/Library/EblCmdLib/EblCmdLib.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/ArmPlatformPkg/Library/EblCmdLib/EblCmdLib.c b/ArmPlatformPkg/Library/EblCmdLib/EblCmdLib.c
index f9e4b40a8..4c298a61c 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);