From 374db5d1748fe23d8203479c29ecff2b22fca95c Mon Sep 17 00:00:00 2001 From: Vineet Gupta Date: Fri, 13 Dec 2013 14:49:23 +0530 Subject: LT.old: Add ARC support Signed-off-by: Vineet Gupta Signed-off-by: Bernhard Reutner-Fischer --- .../linuxthreads.old/sysdeps/arc/pt-machine.h | 42 ++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 libpthread/linuxthreads.old/sysdeps/arc/pt-machine.h (limited to 'libpthread/linuxthreads.old/sysdeps') diff --git a/libpthread/linuxthreads.old/sysdeps/arc/pt-machine.h b/libpthread/linuxthreads.old/sysdeps/arc/pt-machine.h new file mode 100644 index 000000000..8df1e77e3 --- /dev/null +++ b/libpthread/linuxthreads.old/sysdeps/arc/pt-machine.h @@ -0,0 +1,42 @@ +/* + * Copyright (C) 2013 Synopsys, Inc. (www.synopsys.com) + * + * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball. + */ + +#ifndef _PT_MACHINE_H +#define _PT_MACHINE_H 1 +#include + +#ifndef PT_EI +# define PT_EI __extern_always_inline +#endif + +extern long int testandset (int *spinlock); +extern int __compare_and_swap (long int *p, long int oldval, long int newval); + +PT_EI long int +testandset (int *spinlock) +{ + unsigned int old = 1; + + /* Atomically exchange @spinlock with 1 */ + __asm__ __volatile__( + "ex %0, [%1]" + : "+r" (old) + : "r" (spinlock) + : "memory"); + + return old; + +} + +/* Get some notion of the current stack. Need not be exactly the top + of the stack, just something somewhere in the current frame. + I don't trust register variables, so let's do this the safe way. */ +#define CURRENT_STACK_FRAME \ +__extension__ ({ char *__sp; __asm__ ("mov %0,sp" : "=r" (__sp)); __sp; }) + +#else +#error PT_MACHINE already defined +#endif /* pt-machine.h */ -- cgit v1.2.3