-#ifdef powerpc
-#define __KERNEL__ /* Ugly hack : atomic.h is broken */
+#include <sys/types.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+
+#define inline inline __attribute__((always_inline))
+
+#if defined(__powerpc__) || defined(__powerpc64__)
+#ifdef __powerpc64__
+#include <ltt/atomic-ppc64.h>
+#include <ltt/system-ppc64.h>
+#include <asm/timex.h>
+#else
+#include <ltt/ppc_asm-ppc.h>
+#include <ltt/atomic-ppc.h>
+#include <ltt/system-ppc.h>
+#include <ltt/timex-ppc.h>
-#include <asm/atomic.h>
-#include "ltt/ltt-usertrace-ppc.h"
-#ifdef powerpc
-#undef __KERNEL__ /* Ugly hack : atomic.h is broken */
+#elif defined(__x86_64__)
+#include <ltt/kernelutils-x86_64.h>
+#elif defined(__i386__)
+#include <ltt/kernelutils-i386.h>
+#else
+#error "Unsupported architecture"
-#define __NR_ltt_trace_generic 311
-#define __NR_ltt_register_generic 312
+#define __NR_ltt_trace_generic 317
+#define __NR_ltt_register_generic 318
+#undef NR_syscalls
+#define NR_syscalls 319
+#endif
+
+#ifdef __x86_64__
+#define __NR_ltt_trace_generic 279
+#define __NR_ltt_register_generic 280
static inline __attribute__((no_instrument_function))
_syscall5(int, ltt_trace_generic, unsigned int, facility_id,
unsigned int, event_id, void *, data, size_t, data_size, int, blocking)
static inline __attribute__((no_instrument_function))
_syscall2(int, ltt_register_generic, unsigned int *, facility_id,
const struct user_facility_info *, info)
static inline __attribute__((no_instrument_function))
_syscall5(int, ltt_trace_generic, unsigned int, facility_id,
unsigned int, event_id, void *, data, size_t, data_size, int, blocking)
static inline __attribute__((no_instrument_function))
_syscall2(int, ltt_register_generic, unsigned int *, facility_id,
const struct user_facility_info *, info)
+#endif //0
+
+#define ltt_register_generic(...) syscall(__NR_ltt_register_generic, __VA_ARGS__)
+#define ltt_trace_generic(...) syscall(__NR_ltt_trace_generic, __VA_ARGS__)
+
+static inline unsigned int __attribute__((no_instrument_function))
+ ltt_align(size_t align_drift, size_t size_of_type);
-static inline unsigned int __attribute__((no_instrument_function))
- ltt_align(size_t align_drift,
- size_t size_of_type)
+static inline unsigned int
+ ltt_align(size_t align_drift, size_t size_of_type)