From 13e0bc720bc9baadf0adc007f0035c180888b1f1 Mon Sep 17 00:00:00 2001 From: Helge Deller Date: Thu, 17 Apr 2014 07:04:05 -0400 Subject: [PATCH] Add support for hppa/PA-RISC architecture Add the missing architecture specific functions to provide support for the hppa/PA-RISC architecture: - the processor internal time stamp counter (Control Register CR16) is used to get high-performance/low-latency cycle counts - gcc provides the necessary built-in atomic functions on hppa (which in turn uses the light-weigth atomic locking syscall-interface of the Linux kernel) Signed-off-by: Helge Deller Signed-off-by: Mathieu Desnoyers --- configure.ac | 1 + urcu/arch/hppa.h | 30 ++++++++++++++++++++++++++++++ urcu/uatomic/hppa.h | 10 ++++++++++ 3 files changed, 41 insertions(+) create mode 100644 urcu/arch/hppa.h create mode 100644 urcu/uatomic/hppa.h diff --git a/configure.ac b/configure.ac index 86f0e2b..008336c 100644 --- a/configure.ac +++ b/configure.ac @@ -82,6 +82,7 @@ AS_CASE([$host_cpu], [aarch64], [ARCHTYPE="gcc"], [mips*], [ARCHTYPE="mips"], [tile*], [ARCHTYPE="gcc"], + [hppa*], [ARCHTYPE="hppa"], [ARCHTYPE="unknown"] ) diff --git a/urcu/arch/hppa.h b/urcu/arch/hppa.h new file mode 100644 index 0000000..b9b9494 --- /dev/null +++ b/urcu/arch/hppa.h @@ -0,0 +1,30 @@ +#ifndef _URCU_ARCH_HPPA_H +#define _URCU_ARCH_HPPA_H + +#include +#include + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +typedef unsigned long cycles_t; + +static inline cycles_t caa_get_cycles(void) +{ + cycles_t cycles; + + asm volatile("mfctl 16, %0" : "=r" (cycles)); + return cycles; +} + +#ifdef __cplusplus +} +#endif + +#include + +#endif /* _URCU_ARCH_HPPA_H */ diff --git a/urcu/uatomic/hppa.h b/urcu/uatomic/hppa.h new file mode 100644 index 0000000..2102153 --- /dev/null +++ b/urcu/uatomic/hppa.h @@ -0,0 +1,10 @@ +#ifndef _URCU_ARCH_UATOMIC_HPPA_H +#define _URCU_ARCH_UATOMIC_HPPA_H + +#include +#include + +#define UATOMIC_HAS_ATOMIC_SHORT +#include + +#endif /* _URCU_ARCH_UATOMIC_HPPA_H */ -- 2.34.1