commented early_printk patch because of rejects.
[linux-flexiantxendom0-3.2.10.git] / include / asm-mips / addrspace.h
index 797a71c..ec5cb62 100644 (file)
@@ -3,13 +3,14 @@
  * License.  See the file "COPYING" in the main directory of this archive
  * for more details.
  *
- * Copyright (C) 1996 by Ralf Baechle
+ * Copyright (C) 1996, 99 Ralf Baechle
  * Copyright (C) 2000, 2002  Maciej W. Rozycki
- *
- * Definitions for the address spaces of the MIPS CPUs.
+ * Copyright (C) 1990, 1999 by Silicon Graphics, Inc.
  */
-#ifndef __ASM_ADDRSPACE_H
-#define __ASM_ADDRSPACE_H
+#ifndef _ASM_ADDRSPACE_H
+#define _ASM_ADDRSPACE_H
+
+#include <linux/config.h>
 
 /*
  *  Configure language
@@ -37,6 +38,7 @@
 
 /*
  * Memory segments (32bit kernel mode addresses)
+ * These are the traditional names used in the 32-bit universe.
  */
 #define KUSEG                  0x00000000
 #define KSEG0                  0x80000000
@@ -44,7 +46,7 @@
 #define KSEG2                  0xc0000000
 #define KSEG3                  0xe0000000
 
-#define K0BASE                 KSEG0
+//#define K0BASE                       KSEG0
 
 /*
  * Returns the kernel segment base of a given address
 #define KSEGX(a)               ((_ACAST32_ (a)) & 0xe0000000)
 
 /*
- * Returns the physical address of a KSEG0/KSEG1 address
+ * Returns the physical address of a CKSEGx / XKPHYS address
  */
 #define CPHYSADDR(a)           ((_ACAST32_ (a)) & 0x1fffffff)
-
-#define PHYSADDR(a)            CPHYSADDR(a)
+#define XPHYSADDR(a)            ((_ACAST64_ (a)) & 0x000000ffffffffff)
 
 /*
  * Map an address to a certain kernel segment
 #define KSEG2ADDR(a)           (CPHYSADDR(a) | KSEG2)
 #define KSEG3ADDR(a)           (CPHYSADDR(a) | KSEG3)
 
+#define CKSEG0ADDR(a)          (CPHYSADDR(a) | CKSEG0)
+#define CKSEG1ADDR(a)          (CPHYSADDR(a) | CKSEG1)
+#define CKSEG2ADDR(a)          (CPHYSADDR(a) | CKSEG2)
+#define CKSEG3ADDR(a)          (CPHYSADDR(a) | CKSEG3)
+
 /*
  * Memory segments (64bit kernel mode addresses)
+ * The compatibility segments use the full 64-bit sign extended value.  Note
+ * the R8000 doesn't have them so don't reference these in generic MIPS code.
  */
 #define XKUSEG                 0x0000000000000000
 #define XKSSEG                 0x4000000000000000
@@ -90,8 +98,6 @@
 #define K_CALG_NOTUSED         6
 #define K_CALG_UNCACHED_ACCEL  7
 
-#define TO_PHYS_MASK                   0xfffffffffULL          /* 36 bit */
-
 /*
  * 64-bit address conversions
  */
 #define XKPHYS_TO_PHYS(p)              ((p) & TO_PHYS_MASK)
 #define PHYS_TO_XKPHYS(cm,a)           (0x8000000000000000 | ((cm)<<59) | (a))
 
-#endif /* __ASM_ADDRSPACE_H */
+#if defined (CONFIG_CPU_R4300)                                         \
+    || defined (CONFIG_CPU_R4X00)                                      \
+    || defined (CONFIG_CPU_R5000)                                      \
+    || defined (CONFIG_CPU_NEVADA)                                     \
+    || defined (CONFIG_CPU_MIPS64)
+#define        KUSIZE                  0x0000010000000000      /* 2^^40 */
+#define        KUSIZE_64               0x0000010000000000      /* 2^^40 */
+#define        K0SIZE                  0x0000001000000000      /* 2^^36 */
+#define        K1SIZE                  0x0000001000000000      /* 2^^36 */
+#define        K2SIZE                  0x000000ff80000000
+#define        KSEGSIZE                0x000000ff80000000      /* max syssegsz */
+#define TO_PHYS_MASK           0x0000000fffffffff      /* 2^^36 - 1 */
+#endif
+
+#if defined (CONFIG_CPU_R8000)
+/* We keep KUSIZE consistent with R4000 for now (2^^40) instead of (2^^48) */
+#define        KUSIZE                  0x0000010000000000      /* 2^^40 */
+#define        KUSIZE_64               0x0000010000000000      /* 2^^40 */
+#define        K0SIZE                  0x0000010000000000      /* 2^^40 */
+#define        K1SIZE                  0x0000010000000000      /* 2^^40 */
+#define        K2SIZE                  0x0001000000000000
+#define        KSEGSIZE                0x0000010000000000      /* max syssegsz */
+#define TO_PHYS_MASK           0x000000ffffffffff      /* 2^^40 - 1 */
+#endif
+
+#if defined (CONFIG_CPU_R10000)
+#define        KUSIZE                  0x0000010000000000      /* 2^^40 */
+#define        KUSIZE_64               0x0000010000000000      /* 2^^40 */
+#define        K0SIZE                  0x0000010000000000      /* 2^^40 */
+#define        K1SIZE                  0x0000010000000000      /* 2^^40 */
+#define        K2SIZE                  0x00000fff80000000
+#define        KSEGSIZE                0x00000fff80000000      /* max syssegsz */
+#define TO_PHYS_MASK           0x000000ffffffffff      /* 2^^40 - 1 */
+#endif
+
+/*
+ * Further names for SGI source compatibility.  These are stolen from
+ * IRIX's <sys/mips_addrspace.h>.
+ */
+#define KUBASE                 0
+#define KUSIZE_32              0x0000000080000000      /* KUSIZE
+                                                          for a 32 bit proc */
+//#define K0BASE                       0xa800000000000000
+#define K0BASE_EXL_WR          K0BASE                  /* exclusive on write */
+#define K0BASE_NONCOH          0x9800000000000000      /* noncoherent */
+#define K0BASE_EXL             0xa000000000000000      /* exclusive */
+
+#ifdef CONFIG_SGI_IP27
+#define K1BASE                 0x9600000000000000      /* uncached attr 3,
+                                                          uncac */
+#else
+#define K1BASE                 0x9000000000000000
+#endif
+#define K2BASE                 0xc000000000000000
+
+#if !defined (CONFIG_CPU_R8000)
+#define COMPAT_K1BASE32                0xffffffffa0000000
+#define PHYS_TO_COMPATK1(x)    ((x) | COMPAT_K1BASE32) /* 32-bit compat k1 */
+#endif
+
+#define KDM_TO_PHYS(x)         (_ACAST64_ (x) & TO_PHYS_MASK)
+#define PHYS_TO_K0(x)          (_ACAST64_ (x) | K0BASE)
+
+#endif /* _ASM_ADDRSPACE_H */