[v2,6/8] aarch64: Add hp-timing.h

Message ID 1404363026-23526-7-git-send-email-rth@twiddle.net
State Committed
Headers

Commit Message

Richard Henderson July 3, 2014, 4:50 a.m. UTC
  * sysdeps/aarch64/hp-timing.h: New file.
---
 sysdeps/aarch64/hp-timing.h | 38 ++++++++++++++++++++++++++++++++++++++
 1 file changed, 38 insertions(+)
 create mode 100644 sysdeps/aarch64/hp-timing.h
  

Comments

Andrew Pinski July 3, 2014, 6:43 a.m. UTC | #1
On Wed, Jul 2, 2014 at 9:50 PM, Richard Henderson <rth@twiddle.net> wrote:
> * sysdeps/aarch64/hp-timing.h: New file.
> ---
>  sysdeps/aarch64/hp-timing.h | 38 ++++++++++++++++++++++++++++++++++++++
>  1 file changed, 38 insertions(+)
>  create mode 100644 sysdeps/aarch64/hp-timing.h
>
> diff --git a/sysdeps/aarch64/hp-timing.h b/sysdeps/aarch64/hp-timing.h
> new file mode 100644
> index 0000000..18cb54f
> --- /dev/null
> +++ b/sysdeps/aarch64/hp-timing.h
> @@ -0,0 +1,38 @@
> +/* High precision, low overhead timing functions.  AArch64 version.
> +   Copyright (C) 2014 Free Software Foundation, Inc.
> +   This file is part of the GNU C Library.
> +   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.

Is this true?

Thanks,
Andrew


> +
> +   The GNU C Library is free software; you can redistribute it and/or
> +   modify it under the terms of the GNU Lesser General Public
> +   License as published by the Free Software Foundation; either
> +   version 2.1 of the License, or (at your option) any later version.
> +
> +   The GNU C Library is distributed in the hope that it will be useful,
> +   but WITHOUT ANY WARRANTY; without even the implied warranty of
> +   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
> +   Lesser General Public License for more details.
> +
> +   You should have received a copy of the GNU Lesser General Public
> +   License along with the GNU C Library; if not, see
> +   <http://www.gnu.org/licenses/>.  */
> +
> +#ifndef _HP_TIMING_H
> +#define _HP_TIMING_H   1
> +
> +/* We always assume having the cycle counter register.  */
> +#define HP_TIMING_AVAIL                (1)
> +
> +/* We indeed have inlined functions.  */
> +#define HP_TIMING_INLINE       (1)
> +
> +/* We use 64bit values for the times.  */
> +typedef unsigned long long int hp_timing_t;
> +
> +/* Sync the instruction stream, and read from the virtual cycle counter.  */
> +#define HP_TIMING_NOW(Var) \
> +  __asm__ __volatile__ ("isb; mrs %0, cntvct_el0" : "=r" (Var))
> +
> +#include <hp-timing-common.h>
> +
> +#endif /* hp-timing.h */
> --
> 1.9.3
>
  
Roland McGrath July 3, 2014, 7:42 a.m. UTC | #2
> > +   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
> 
> Is this true?

It probably is true of the boilerplate he copied, though obviously not of
the one interesting line in the file.  But moreover, we do not use
"Contributed by" lines any more in new files.
  
Marcus Shawcroft July 3, 2014, 7:43 a.m. UTC | #3
On 3 July 2014 05:50, Richard Henderson <rth@twiddle.net> wrote:
> * sysdeps/aarch64/hp-timing.h: New file.
> ---
>  sysdeps/aarch64/hp-timing.h | 38

This is OK with the contributed line dropped. /Marcus
  

Patch

diff --git a/sysdeps/aarch64/hp-timing.h b/sysdeps/aarch64/hp-timing.h
new file mode 100644
index 0000000..18cb54f
--- /dev/null
+++ b/sysdeps/aarch64/hp-timing.h
@@ -0,0 +1,38 @@ 
+/* High precision, low overhead timing functions.  AArch64 version.
+   Copyright (C) 2014 Free Software Foundation, Inc.
+   This file is part of the GNU C Library.
+   Contributed by Ulrich Drepper <drepper@cygnus.com>, 1998.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _HP_TIMING_H
+#define _HP_TIMING_H	1
+
+/* We always assume having the cycle counter register.  */
+#define HP_TIMING_AVAIL		(1)
+
+/* We indeed have inlined functions.  */
+#define HP_TIMING_INLINE	(1)
+
+/* We use 64bit values for the times.  */
+typedef unsigned long long int hp_timing_t;
+
+/* Sync the instruction stream, and read from the virtual cycle counter.  */
+#define HP_TIMING_NOW(Var) \
+  __asm__ __volatile__ ("isb; mrs %0, cntvct_el0" : "=r" (Var))
+
+#include <hp-timing-common.h>
+
+#endif	/* hp-timing.h */