From ae87f50ce3be5013f5d9fc88c35c394a4f17f838 Mon Sep 17 00:00:00 2001 From: Stefan Kalkowski Date: Tue, 20 Aug 2013 15:35:47 +0200 Subject: [PATCH] Implement timestamp function for tracing for ARM Use Armv7 performace counters for this. Fixes #850 --- os/include/arm/trace/timestamp.h | 33 ++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 os/include/arm/trace/timestamp.h diff --git a/os/include/arm/trace/timestamp.h b/os/include/arm/trace/timestamp.h new file mode 100644 index 0000000000..2ad58107e4 --- /dev/null +++ b/os/include/arm/trace/timestamp.h @@ -0,0 +1,33 @@ +/* + * \brief Trace timestamp + * \author Stefan Kalkowski + * \date 2013-08-20 + * + * Serialized reading of performance counter on ARM. + */ + +/* + * Copyright (C) 2013 Genode Labs GmbH + * + * This file is part of the Genode OS framework, which is distributed + * under the terms of the GNU General Public License version 2. + */ + +#ifndef _INCLUDE__TRACE_TIMESTAMP_H_ +#define _INCLUDE__TRACE_TIMESTAMP_H_ + +#include + +namespace Genode { namespace Trace { + + typedef uint32_t Timestamp; + + inline Timestamp timestamp() + { + uint32_t t; + asm volatile("mrc p15, 0, %0, c9, c13, 0" : "=r"(t)); + return t; + } +} } + +#endif /* _INCLUDE__TRACE_TIMESTAMP_H_ */