diff options
Diffstat (limited to 'arch/ia64/sn/sn1/llsc4.h')
-rw-r--r-- | arch/ia64/sn/sn1/llsc4.h | 104 |
1 files changed, 104 insertions, 0 deletions
diff --git a/arch/ia64/sn/sn1/llsc4.h b/arch/ia64/sn/sn1/llsc4.h new file mode 100644 index 000000000..b305caf2b --- /dev/null +++ b/arch/ia64/sn/sn1/llsc4.h @@ -0,0 +1,104 @@ +/* + * + * This file is subject to the terms and conditions of the GNU General Public + * License. See the file "COPYING" in the main directory of this archive + * for more details. + * + * Copyright (C) 2000 Silicon Graphics, Inc. + * Copyright (C) 2000 by Jack Steiner (steiner@sgi.com) + */ + +#ifdef STANDALONE +#include "lock.h" +#endif + + +#define DEF_NAPTICKS 0 +#define DEF_PASSES 0 +#define DEF_AUTO_PASSES 1000000 +#define DEF_STOP_ON_ERROR 1 +#define DEF_VERBOSE 0 +#define DEF_LINECOUNT 2 +#define DEF_ITER_MSG 0 +#define DEF_VV 0xffffffff +#define DEF_LINEPAD 0x234 + + + +#define MAXCPUS 16 +#define CACHELINE 64 +#define MAX_LINECOUNT 1024 +#define K 1024 +#define MB (K*K) + + +#define uint unsigned int +#define ushort unsigned short +#define vint volatile int +#define vlong volatile long + +#define LOCKADDR(i) &linep->lock[(i)] +#define LOCK(i) set_lock(LOCKADDR(i), lockpat) +#define UNLOCK(i) clr_lock(LOCKADDR(i), lockpat) +#define GETLOCK(i) *LOCKADDR(i) +#define ZEROLOCK(i) zero_lock(LOCKADDR(i)) + +#define CACHEALIGN(a) ((void*)((long)(a) & ~127L)) + +typedef uint lock_t; +typedef uint share_t; +typedef uint private_t; + +typedef struct { + lock_t lock[2]; + share_t share[2]; + private_t private[MAXCPUS]; + share_t share0; + share_t share1; +} dataline_t ; + + +#define LINEPAD k_linepad +#define LINESTRIDE (((sizeof(dataline_t)+CACHELINE-1)/CACHELINE)*CACHELINE + LINEPAD) + + +typedef struct { + vint threadstate; + uint threadpasses; + private_t private[MAX_LINECOUNT]; +} threadprivate_t; + +typedef struct { + vlong sk_go; /* 0=idle, 1=init, 2=run */ + long sk_linecount; + long sk_passes; + long sk_napticks; + long sk_stop_on_error; + long sk_verbose; + long sk_iter_msg; + long sk_vv; + long sk_linepad; + long sk_options; + long sk_testnumber; + vlong sk_currentpass; + void *sk_blocks; + threadprivate_t *sk_threadprivate[MAXCPUS]; +} control_t; + +/* Run state (k_go) constants */ +#define ST_IDLE 0 +#define ST_INIT 1 +#define ST_RUN 2 +#define ST_STOP 3 +#define ST_ERRSTOP 4 + + +/* Threadstate constants */ +#define TS_STOPPED 0 +#define TS_RUNNING 1 +#define TS_KILLED 2 + + + +int llsc_main (int cpuid, long mbasex); + |