1/* -*-  Mode:C; c-basic-offset:4; tab-width:4 -*-
2 ****************************************************************************
3 * (C) 2003 - Rolf Neugebauer - Intel Research Cambridge
4 ****************************************************************************
5 *
6 *        File: types.h
7 *      Author: Rolf Neugebauer (neugebar@dcs.gla.ac.uk)
8 *     Changes:
9 *
10 *        Date: May 2003
11 *
12 * Environment: Xen Minimal OS
13 * Description: a random collection of type definitions
14 *
15 ****************************************************************************
16 * $Id: h-insert.h,v 1.4 2002/11/08 16:03:55 rn Exp $
17 ****************************************************************************
18 */
19
20#ifndef _MINIOS_TYPES_H_
21#define _MINIOS_TYPES_H_
22
23/* XXX: fix the kernelside Xen driver #include abuse */
24#ifndef __RUMP_KERNEL__
25#include <bmk-core/types.h>
26
27#ifndef _BSD_SIZE_T_
28typedef unsigned int		u_int;
29typedef unsigned long		u_long;
30typedef unsigned long		size_t;
31#endif
32
33#ifndef offsetof
34#define offsetof(_t_,_e_) __builtin_offsetof(_t_,_e_)
35#endif
36#endif
37
38#ifdef __i386__
39typedef struct { unsigned long pte_low, pte_high; } pte_t;
40
41#elif defined(__x86_64__)
42
43typedef struct { unsigned long pte; } pte_t;
44#endif /* __i386__ || __x86_64__ */
45
46#ifdef __x86_64__
47#define __pte(x) ((pte_t) { (x) } )
48#else
49#define __pte(x) ({ unsigned long long _x = (x);        \
50    ((pte_t) {(unsigned long)(_x), (unsigned long)(_x>>32)}); })
51#endif
52
53#endif /* _MINIOS_TYPES_H_ */
54