Home | History | Annotate | Line # | Download | only in arch
      1 // SPDX-FileCopyrightText: 2014 Helge Deller <deller (at) gmx.de>
      2 //
      3 // SPDX-License-Identifier: LGPL-2.1-or-later
      4 
      5 #ifndef _URCU_ARCH_HPPA_H
      6 #define _URCU_ARCH_HPPA_H
      7 
      8 /*
      9  * arch/hppa.h: definitions for hppa architecture
     10  */
     11 
     12 #include <urcu/compiler.h>
     13 #include <urcu/config.h>
     14 #include <urcu/syscall-compat.h>
     15 
     16 #ifdef __cplusplus
     17 extern "C" {
     18 #endif
     19 
     20 #include <stdlib.h>
     21 #include <sys/time.h>
     22 
     23 /*
     24  * On Linux, define the membarrier system call number if not yet available in
     25  * the system headers.
     26  */
     27 #if (defined(__linux__) && !defined(__NR_membarrier))
     28 #define __NR_membarrier		343
     29 #endif
     30 
     31 #define HAS_CAA_GET_CYCLES
     32 typedef unsigned long caa_cycles_t;
     33 
     34 static inline caa_cycles_t caa_get_cycles(void)
     35 {
     36 	caa_cycles_t cycles;
     37 
     38 	asm volatile("mfctl 16, %0" : "=r" (cycles));
     39 	return cycles;
     40 }
     41 
     42 #ifdef __cplusplus
     43 }
     44 #endif
     45 
     46 #include <urcu/arch/generic.h>
     47 
     48 #endif /* _URCU_ARCH_HPPA_H */
     49