#define _URCU_ARCH_TILE_H
/*
- * arch_tile.h: trivial definitions for the Tile architecture
+ * arch/tile.h: definitions for tile architecture
*
- * Copyright (c) 2013 Simon Marchi <simon.marchi@polymtl.ca>
+ * Copyright (c) 2010 Paul E. McKenney, IBM Corporation.
+ * Copyright (c) 2009-2015 Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
-#ifdef __tilegx__
-#include <urcu/arch/gcc.h>
-#else
-#error "URCU has only been tested on the TileGx architecture. For other Tile* architectures, please run the tests first and report the results to the maintainer so that proper support can be added."
+#include <urcu/compiler.h>
+#include <urcu/config.h>
+#include <urcu/syscall-compat.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdlib.h>
+#include <sys/time.h>
+
+typedef unsigned long long cycles_t;
+
+static inline cycles_t caa_get_cycles (void)
+{
+ cycles_t thetime;
+ struct timeval tv;
+
+ if (gettimeofday(&tv, NULL) != 0)
+ return 0;
+ thetime = ((cycles_t)tv.tv_sec) * 1000000ULL + ((cycles_t)tv.tv_usec);
+ return (cycles_t)thetime;
+}
+
+/*
+ * Define the membarrier system call number if not yet available in the
+ * system headers. tile implements asm-generic/unistd.h system call
+ * numbers.
+ */
+#ifndef __NR_membarrier
+#define __NR_membarrier 283
#endif
+#ifdef __cplusplus
+}
+#endif
+
+#include <urcu/arch/generic.h>
+
#endif /* _URCU_ARCH_TILE_H */