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