1#ifndef _ASM_IA64_SN_ATE_UTILS_H
2#define _ASM_IA64_SN_ATE_UTILS_H
3
4/* $Id: ate_utils.h,v 1.1.1.1 2008/10/15 03:29:03 james26_jang Exp $
5 *
6 * This file is subject to the terms and conditions of the GNU General Public
7 * License.  See the file "COPYING" in the main directory of this archive
8 * for more details.
9 *
10 * Copyright (C) 1992 - 1997, 2000-2002 Silicon Graphics, Inc. All rights reserved.
11 */
12
13/*
14 *	struct map	X[]	.m_size		.m_addr
15 *			---	------------	-----------
16 *			[0]	mapsize(X)	unused
17 *				# X[] unused
18 *			[1]	map lock *	mapwant sv_t *
19 *				map access	wait for free map space
20 *
21 *	  mapstart(X)-> [2]	# units		unit number
22 *			 :	    :		  :
23 *			[ ]	    0
24 */
25
26#include <linux/types.h>
27
28#define ulong_t uint64_t
29
30struct map
31{
32	unsigned long m_size;	/* number of units available */
33	unsigned long m_addr;	/* address of first available unit */
34};
35
36#define mapstart(X)		&X[2]		/* start of map array */
37
38#define mapsize(X)		X[0].m_size	/* number of empty slots */
39						/* remaining in map array */
40#define maplock(X)		(((spinlock_t *) X[1].m_size))
41
42#define mapout(X)		((sv_t *) X[1].m_addr)
43
44
45extern ulong_t atealloc(struct map *, size_t);
46extern struct map *atemapalloc(ulong_t);
47extern void atefree(struct map *, size_t, ulong_t);
48extern void atemapfree(struct map *);
49
50#endif /* _ASM_IA64_SN_ATE_UTILS_H  */
51
52