Implement differential reading of PMU counter

This avoids incorrect readings when resetting the counter
at a high frequency via ioctl.
diff --git a/vendor/arm/pmu/pmu_profiler.cpp b/vendor/arm/pmu/pmu_profiler.cpp
index 0ab13f0..76a0fc8 100644
--- a/vendor/arm/pmu/pmu_profiler.cpp
+++ b/vendor/arm/pmu/pmu_profiler.cpp
@@ -93,8 +93,12 @@
 
 		try
 		{
-			measurements_[pmu_counter->first] = pmu_counter->second.get_value<long long>();
-			pmu_counter->second.reset();
+			auto value = pmu_counter->second.get_value<long long>();
+
+			// Resetting the PMU counter every frame seems to alter the data,
+			// so we make a differential reading.
+			measurements_[pmu_counter->first]      = value - prev_measurements_[pmu_counter->first].get<long long>();
+			prev_measurements_[pmu_counter->first] = value;
 		}
 		catch (const std::runtime_error &e)
 		{