sgi.h
上传用户:lgb322
上传日期:2013-02-24
资源大小:30529k
文件大小:6k
源码类别:

嵌入式Linux

开发平台:

Unix_Linux

  1. /*
  2.  *
  3.  * This file is subject to the terms and conditions of the GNU General Public
  4.  * License.  See the file "COPYING" in the main directory of this archive
  5.  * for more details.
  6.  *
  7.  * Copyright (C) 2000 Silicon Graphics, Inc.
  8.  * Copyright (C) 2000 by Jack Steiner (steiner@sgi.com)
  9.  */
  10. #ifndef _ASM_SN_SGI_H
  11. #define _ASM_SN_SGI_H
  12. #include <linux/config.h>
  13. #include <asm/sn/types.h>
  14. #include <asm/uaccess.h> /* for copy_??_user */
  15. #include <linux/mm.h>
  16. #include <linux/devfs_fs_kernel.h>
  17. // This devfs stuff needs a better home .....
  18. struct directory_type
  19. {
  20.     struct devfs_entry *first;
  21.     struct devfs_entry *last;
  22.     unsigned int num_removable;
  23. };
  24. struct file_type
  25. {
  26.     unsigned long size;
  27. };
  28. struct device_type
  29. {
  30.     unsigned short major;
  31.     unsigned short minor;
  32. };
  33. struct fcb_type  /*  File, char, block type  */
  34. {
  35.     uid_t default_uid;
  36.     gid_t default_gid;
  37.     void *ops;
  38.     union 
  39.     {
  40. struct file_type file;
  41. struct device_type device;
  42.     }
  43.     u;
  44.     unsigned char auto_owner:1;
  45.     unsigned char aopen_notify:1;
  46.     unsigned char removable:1;  /*  Belongs in device_type, but save space   */
  47.     unsigned char open:1;       /*  Not entirely correct                     */
  48. };
  49. struct symlink_type
  50. {
  51.     unsigned int length;  /*  Not including the NULL-termimator  */
  52.     char *linkname;       /*  This is NULL-terminated            */
  53. };
  54. struct fifo_type
  55. {
  56.     uid_t uid;
  57.     gid_t gid;
  58. };
  59. struct devfs_entry
  60. {
  61.     void *info;
  62.     union 
  63.     {
  64. struct directory_type dir;
  65. struct fcb_type fcb;
  66. struct symlink_type symlink;
  67. struct fifo_type fifo;
  68.     }
  69.     u;
  70.     struct devfs_entry *prev;    /*  Previous entry in the parent directory  */
  71.     struct devfs_entry *next;    /*  Next entry in the parent directory      */
  72.     struct devfs_entry *parent;  /*  The parent directory                    */
  73.     struct devfs_entry *slave;   /*  Another entry to unregister             */
  74.     struct devfs_inode *first_inode;
  75.     struct devfs_inode *last_inode;
  76.     umode_t mode;
  77.     unsigned short namelen;  /*  I think 64k+ filenames are a way off...  */
  78.     unsigned char registered:1;
  79.     unsigned char show_unreg:1;
  80.     unsigned char hide:1;
  81.     unsigned char no_persistence /*:1*/;
  82.     char name[1];            /*  This is just a dummy: the allocated array is
  83.  bigger. This is NULL-terminated  */
  84. };
  85. #define MIN(_a,_b) ((_a)<(_b)?(_a):(_b))
  86. typedef uint32_t app32_ptr_t; /* needed by edt.h */
  87. typedef int64_t  __psint_t; /* needed by klgraph.c */
  88. typedef enum { B_FALSE, B_TRUE } boolean_t;
  89. #define ctob(x) ((uint64_t)(x)*NBPC)
  90. #define btoc(x) (((uint64_t)(x)+(NBPC-1))/NBPC)
  91. typedef __psunsigned_t nic_data_t;
  92. /*
  93. ** Possible return values from graph routines.
  94. */
  95. typedef enum graph_error_e {
  96. GRAPH_SUCCESS, /* 0 */
  97. GRAPH_DUP, /* 1 */
  98. GRAPH_NOT_FOUND, /* 2 */
  99. GRAPH_BAD_PARAM, /* 3 */
  100. GRAPH_HIT_LIMIT, /* 4 */
  101. GRAPH_CANNOT_ALLOC, /* 5 */
  102. GRAPH_ILLEGAL_REQUEST, /* 6 */
  103. GRAPH_IN_USE /* 7 */
  104. } graph_error_t;
  105. #define KM_SLEEP   0x0000
  106. #define KM_NOSLEEP 0x0001 /* needed by kmem_alloc_node(), kmem_zalloc()
  107.  * calls */
  108. #define VM_NOSLEEP 0x0001 /* needed kmem_alloc_node(), kmem_zalloc_node
  109.  * calls */
  110. #define XG_WIDGET_PART_NUM      0xC102          /* KONA/xt_regs.h     XG_XT_PART_NUM_VALUE */
  111. #ifndef TO_PHYS_MASK
  112. #define TO_PHYS_MASK 0x0000000fffffffff
  113. #endif
  114. typedef uint64_t vhandl_t;
  115. #ifndef NBPP
  116. #define NBPP 4096
  117. #endif
  118. #ifndef D_MP
  119. #define D_MP 1
  120. #endif
  121. #ifndef MAXDEVNAME
  122. #define MAXDEVNAME 256
  123. #endif
  124. #ifndef NBPC
  125. #define NBPC 0
  126. #endif
  127. #ifndef _PAGESZ
  128. #define _PAGESZ 4096
  129. #endif
  130. typedef uint64_t mrlock_t; /* needed by devsupport.c */
  131. #define HUB_PIO_CONVEYOR 0x1
  132. #define CNODEID_NONE (cnodeid_t)-1
  133. #define XTALK_PCI_PART_NUM "030-1275-"
  134. #define kdebug 0
  135. #define COPYIN(a, b, c) copy_from_user(b,a,c)
  136. #define COPYOUT(a, b, c) copy_to_user(b,a,c)
  137. #define kvtophys(x) (alenaddr_t) (x)
  138. #define POFFMASK (NBPP - 1)
  139. #define poff(X) ((__psunsigned_t)(X) & POFFMASK)
  140. #define BZERO(a,b) memset(a, 0, b)
  141. #define kern_malloc(x) kmalloc(x, GFP_KERNEL)
  142. #define kern_free(x) kfree(x)
  143. typedef cpuid_t cpu_cookie_t;
  144. #define CPU_NONE -1
  145. /*
  146.  * mutext support mapping
  147.  */
  148. #define mutex_spinlock_init(s) spin_lock_init(s)
  149. inline static unsigned long
  150. mutex_spinlock(spinlock_t *sem) {
  151. unsigned long flags = 0;
  152. // spin_lock_irqsave(sem, flags);
  153. spin_lock(sem);
  154. return(flags);
  155. }
  156. // #define mutex_spinunlock(s,t) spin_unlock_irqrestore(s,t)
  157. #define mutex_spinunlock(s,t) spin_unlock(s)
  158. #define mutex_t struct semaphore
  159. #define mutex_init(s) init_MUTEX(s)
  160. #define mutex_init_locked(s) init_MUTEX_LOCKED(s)
  161. #define mutex_lock(s) down(s)
  162. #define mutex_unlock(s) up(s)
  163. #define io_splock(s) mutex_spinlock(s)
  164. #define io_spunlock(s,t) spin_unlock(s)
  165. #define spin_lock_destroy(s)
  166. #if defined(DISABLE_ASSERT)
  167. #define ASSERT(expr)
  168. #define ASSERT_ALWAYS(expr)
  169. #else
  170. #define ASSERT(expr)  do {
  171.         if(!(expr)) { 
  172. printk( "Assertion [%s] failed! %s:%s(line=%d)n",
  173. #expr,__FILE__,__FUNCTION__,__LINE__); 
  174. panic("Assertion panicn"); 
  175.         } } while(0)
  176. #define ASSERT_ALWAYS(expr) do {
  177.         if(!(expr)) { 
  178. printk( "Assertion [%s] failed! %s:%s(line=%d)n",
  179. #expr,__FILE__,__FUNCTION__,__LINE__); 
  180. panic("Assertion always panicn"); 
  181.         } } while(0)
  182. #endif /* DISABLE_ASSERT */
  183. #define PRINT_WARNING(x...) do { printk("WARNING : "); printk(x); } while(0)
  184. #define PRINT_NOTICE(x...) do { printk("NOTICE : "); printk(x); } while(0)
  185. #define PRINT_ALERT(x...) do { printk("ALERT : "); printk(x); } while(0)
  186. #define PRINT_PANIC panic
  187. #ifdef CONFIG_SMP
  188. #define cpu_enabled(cpu)        (test_bit(cpu, &cpu_online_map))
  189. #else
  190. #define cpu_enabled(cpu) (1)
  191. #endif
  192. #include <asm/sn/hack.h> /* for now */
  193. #endif /* _ASM_SN_SGI_H */