linux 2.6.16.38 w/ vs2.0.3-rc1
[linux-2.6.git] / include / asm-mips / sn / addrs.h
index 8fa0af6..2b5cef1 100644 (file)
@@ -9,6 +9,7 @@
 #ifndef _ASM_SN_ADDRS_H
 #define _ASM_SN_ADDRS_H
 
+#include <linux/config.h>
 
 #ifndef __ASSEMBLY__
 #include <linux/types.h>
 
 #ifndef __ASSEMBLY__
 
+#if defined(CONFIG_SGI_IO)     /* FIXME */
+#define PS_UINT_CAST           (__psunsigned_t)
+#define UINT64_CAST            (__uint64_t)
+#else  /* CONFIG_SGI_IO */
 #define PS_UINT_CAST           (unsigned long)
 #define UINT64_CAST            (unsigned long)
+#endif /* CONFIG_SGI_IO */
 
 #define HUBREG_CAST            (volatile hubreg_t *)
 
  * for _x.
  */
 
+#ifdef _STANDALONE
+
+/* DO NOT USE THESE DIRECTLY IN THE KERNEL. SEE BELOW. */
+#define LOCAL_HUB(_x)          (HUBREG_CAST (IALIAS_BASE + (_x)))
+#define REMOTE_HUB(_n, _x)     (HUBREG_CAST (NODE_SWIN_BASE(_n, 1) +   \
+                                             0x800000 + (_x)))
+#endif /* _STANDALONE */
+
 /*
  * WARNING:
  *     When certain Hub chip workaround are defined, it's not sufficient
        PHYS_TO_K0(NODE_OFFSET(nasid) | ARCS_SPB_OFFSET)
 #define ARCS_SPB_SIZE          0x0400
 
+#ifdef _STANDALONE
+
+#define ARCS_TVECTOR_OFFSET    0x2800
+#define ARCS_PVECTOR_OFFSET    0x2c00
+
+/*
+ * These addresses are used by the master CPU to install the transfer
+ * and private vectors.  All others use the SPB to find them.
+ */
+#define TVADDR (NODE_CAC_BASE(get_nasid()) + ARCS_TVECTOR_OFFSET)
+#define PVADDR (NODE_CAC_BASE(get_nasid()) + ARCS_PVECTOR_OFFSET)
+
+#endif /* _STANDALONE */
+
 #define KLDIR_OFFSET           0x2000
 #define KLDIR_ADDR(nasid)                                              \
        TO_NODE_UNCAC((nasid), KLDIR_OFFSET)