diff options
Diffstat (limited to 'include/asm-mips')
| -rw-r--r-- | include/asm-mips/addrspace.h | 80 |
1 files changed, 42 insertions, 38 deletions
diff --git a/include/asm-mips/addrspace.h b/include/asm-mips/addrspace.h index 7dc2619f5006..c806eef41e7f 100644 --- a/include/asm-mips/addrspace.h +++ b/include/asm-mips/addrspace.h | |||
| @@ -20,10 +20,12 @@ | |||
| 20 | #define _ATYPE_ | 20 | #define _ATYPE_ |
| 21 | #define _ATYPE32_ | 21 | #define _ATYPE32_ |
| 22 | #define _ATYPE64_ | 22 | #define _ATYPE64_ |
| 23 | #define _LLCONST_(x) x | ||
| 23 | #else | 24 | #else |
| 24 | #define _ATYPE_ __PTRDIFF_TYPE__ | 25 | #define _ATYPE_ __PTRDIFF_TYPE__ |
| 25 | #define _ATYPE32_ int | 26 | #define _ATYPE32_ int |
| 26 | #define _ATYPE64_ long long | 27 | #define _ATYPE64_ long long |
| 28 | #define _LLCONST_(x) x ## LL | ||
| 27 | #endif | 29 | #endif |
| 28 | 30 | ||
| 29 | /* | 31 | /* |
| @@ -45,8 +47,9 @@ | |||
| 45 | /* | 47 | /* |
| 46 | * Returns the physical address of a CKSEGx / XKPHYS address | 48 | * Returns the physical address of a CKSEGx / XKPHYS address |
| 47 | */ | 49 | */ |
| 48 | #define CPHYSADDR(a) ((_ACAST32_ (a)) & 0x1fffffff) | 50 | #define CPHYSADDR(a) ((_ACAST32_(a)) & 0x1fffffff) |
| 49 | #define XPHYSADDR(a) ((_ACAST64_ (a)) & 0x000000ffffffffff) | 51 | #define XPHYSADDR(a) ((_ACAST64_(a)) & \ |
| 52 | _LLCONST_(0x000000ffffffffff)) | ||
| 50 | 53 | ||
| 51 | #ifdef CONFIG_64BIT | 54 | #ifdef CONFIG_64BIT |
| 52 | 55 | ||
| @@ -55,14 +58,14 @@ | |||
| 55 | * The compatibility segments use the full 64-bit sign extended value. Note | 58 | * The compatibility segments use the full 64-bit sign extended value. Note |
| 56 | * the R8000 doesn't have them so don't reference these in generic MIPS code. | 59 | * the R8000 doesn't have them so don't reference these in generic MIPS code. |
| 57 | */ | 60 | */ |
| 58 | #define XKUSEG 0x0000000000000000 | 61 | #define XKUSEG _LLCONST_(0x0000000000000000) |
| 59 | #define XKSSEG 0x4000000000000000 | 62 | #define XKSSEG _LLCONST_(0x4000000000000000) |
| 60 | #define XKPHYS 0x8000000000000000 | 63 | #define XKPHYS _LLCONST_(0x8000000000000000) |
| 61 | #define XKSEG 0xc000000000000000 | 64 | #define XKSEG _LLCONST_(0xc000000000000000) |
| 62 | #define CKSEG0 0xffffffff80000000 | 65 | #define CKSEG0 _LLCONST_(0xffffffff80000000) |
| 63 | #define CKSEG1 0xffffffffa0000000 | 66 | #define CKSEG1 _LLCONST_(0xffffffffa0000000) |
| 64 | #define CKSSEG 0xffffffffc0000000 | 67 | #define CKSSEG _LLCONST_(0xffffffffc0000000) |
| 65 | #define CKSEG3 0xffffffffe0000000 | 68 | #define CKSEG3 _LLCONST_(0xffffffffe0000000) |
| 66 | 69 | ||
| 67 | #define CKSEG0ADDR(a) (CPHYSADDR(a) | CKSEG0) | 70 | #define CKSEG0ADDR(a) (CPHYSADDR(a) | CKSEG0) |
| 68 | #define CKSEG1ADDR(a) (CPHYSADDR(a) | CKSEG1) | 71 | #define CKSEG1ADDR(a) (CPHYSADDR(a) | CKSEG1) |
| @@ -120,7 +123,8 @@ | |||
| 120 | #define PHYS_TO_XKSEG_UNCACHED(p) PHYS_TO_XKPHYS(K_CALG_UNCACHED,(p)) | 123 | #define PHYS_TO_XKSEG_UNCACHED(p) PHYS_TO_XKPHYS(K_CALG_UNCACHED,(p)) |
| 121 | #define PHYS_TO_XKSEG_CACHED(p) PHYS_TO_XKPHYS(K_CALG_COH_SHAREABLE,(p)) | 124 | #define PHYS_TO_XKSEG_CACHED(p) PHYS_TO_XKPHYS(K_CALG_COH_SHAREABLE,(p)) |
| 122 | #define XKPHYS_TO_PHYS(p) ((p) & TO_PHYS_MASK) | 125 | #define XKPHYS_TO_PHYS(p) ((p) & TO_PHYS_MASK) |
| 123 | #define PHYS_TO_XKPHYS(cm,a) (0x8000000000000000 | ((cm)<<59) | (a)) | 126 | #define PHYS_TO_XKPHYS(cm,a) (_LLCONST_(0x8000000000000000) | \ |
| 127 | ((cm)<<59) | (a)) | ||
| 124 | 128 | ||
| 125 | #if defined (CONFIG_CPU_R4300) \ | 129 | #if defined (CONFIG_CPU_R4300) \ |
| 126 | || defined (CONFIG_CPU_R4X00) \ | 130 | || defined (CONFIG_CPU_R4X00) \ |
| @@ -128,46 +132,46 @@ | |||
| 128 | || defined (CONFIG_CPU_NEVADA) \ | 132 | || defined (CONFIG_CPU_NEVADA) \ |
| 129 | || defined (CONFIG_CPU_TX49XX) \ | 133 | || defined (CONFIG_CPU_TX49XX) \ |
| 130 | || defined (CONFIG_CPU_MIPS64) | 134 | || defined (CONFIG_CPU_MIPS64) |
| 131 | #define KUSIZE 0x0000010000000000 /* 2^^40 */ | 135 | #define KUSIZE _LLCONST_(0x0000010000000000) /* 2^^40 */ |
| 132 | #define KUSIZE_64 0x0000010000000000 /* 2^^40 */ | 136 | #define KUSIZE_64 _LLCONST_(0x0000010000000000) /* 2^^40 */ |
| 133 | #define K0SIZE 0x0000001000000000 /* 2^^36 */ | 137 | #define K0SIZE _LLCONST_(0x0000001000000000) /* 2^^36 */ |
| 134 | #define K1SIZE 0x0000001000000000 /* 2^^36 */ | 138 | #define K1SIZE _LLCONST_(0x0000001000000000) /* 2^^36 */ |
| 135 | #define K2SIZE 0x000000ff80000000 | 139 | #define K2SIZE _LLCONST_(0x000000ff80000000) |
| 136 | #define KSEGSIZE 0x000000ff80000000 /* max syssegsz */ | 140 | #define KSEGSIZE _LLCONST_(0x000000ff80000000) /* max syssegsz */ |
| 137 | #define TO_PHYS_MASK 0x0000000fffffffff /* 2^^36 - 1 */ | 141 | #define TO_PHYS_MASK _LLCONST_(0x0000000fffffffff) /* 2^^36 - 1 */ |
| 138 | #endif | 142 | #endif |
| 139 | 143 | ||
| 140 | #if defined (CONFIG_CPU_R8000) | 144 | #if defined (CONFIG_CPU_R8000) |
| 141 | /* We keep KUSIZE consistent with R4000 for now (2^^40) instead of (2^^48) */ | 145 | /* We keep KUSIZE consistent with R4000 for now (2^^40) instead of (2^^48) */ |
| 142 | #define KUSIZE 0x0000010000000000 /* 2^^40 */ | 146 | #define KUSIZE _LLCONST_(0x0000010000000000) /* 2^^40 */ |
| 143 | #define KUSIZE_64 0x0000010000000000 /* 2^^40 */ | 147 | #define KUSIZE_64 _LLCONST_(0x0000010000000000) /* 2^^40 */ |
| 144 | #define K0SIZE 0x0000010000000000 /* 2^^40 */ | 148 | #define K0SIZE _LLCONST_(0x0000010000000000) /* 2^^40 */ |
| 145 | #define K1SIZE 0x0000010000000000 /* 2^^40 */ | 149 | #define K1SIZE _LLCONST_(0x0000010000000000) /* 2^^40 */ |
| 146 | #define K2SIZE 0x0001000000000000 | 150 | #define K2SIZE _LLCONST_(0x0001000000000000) |
| 147 | #define KSEGSIZE 0x0000010000000000 /* max syssegsz */ | 151 | #define KSEGSIZE _LLCONST_(0x0000010000000000) /* max syssegsz */ |
| 148 | #define TO_PHYS_MASK 0x000000ffffffffff /* 2^^40 - 1 */ | 152 | #define TO_PHYS_MASK _LLCONST_(0x000000ffffffffff) /* 2^^40 - 1 */ |
| 149 | #endif | 153 | #endif |
| 150 | 154 | ||
| 151 | #if defined (CONFIG_CPU_R10000) | 155 | #if defined (CONFIG_CPU_R10000) |
| 152 | #define KUSIZE 0x0000010000000000 /* 2^^40 */ | 156 | #define KUSIZE _LLCONST_(0x0000010000000000) /* 2^^40 */ |
| 153 | #define KUSIZE_64 0x0000010000000000 /* 2^^40 */ | 157 | #define KUSIZE_64 _LLCONST_(0x0000010000000000) /* 2^^40 */ |
| 154 | #define K0SIZE 0x0000010000000000 /* 2^^40 */ | 158 | #define K0SIZE _LLCONST_(0x0000010000000000) /* 2^^40 */ |
| 155 | #define K1SIZE 0x0000010000000000 /* 2^^40 */ | 159 | #define K1SIZE _LLCONST_(0x0000010000000000) /* 2^^40 */ |
| 156 | #define K2SIZE 0x00000fff80000000 | 160 | #define K2SIZE _LLCONST_(0x00000fff80000000) |
| 157 | #define KSEGSIZE 0x00000fff80000000 /* max syssegsz */ | 161 | #define KSEGSIZE _LLCONST_(0x00000fff80000000) /* max syssegsz */ |
| 158 | #define TO_PHYS_MASK 0x000000ffffffffff /* 2^^40 - 1 */ | 162 | #define TO_PHYS_MASK _LLCONST_(0x000000ffffffffff) /* 2^^40 - 1 */ |
| 159 | #endif | 163 | #endif |
| 160 | 164 | ||
| 161 | /* | 165 | /* |
| 162 | * Further names for SGI source compatibility. These are stolen from | 166 | * Further names for SGI source compatibility. These are stolen from |
| 163 | * IRIX's <sys/mips_addrspace.h>. | 167 | * IRIX's <sys/mips_addrspace.h>. |
| 164 | */ | 168 | */ |
| 165 | #define KUBASE 0 | 169 | #define KUBASE _LLCONST_(0) |
| 166 | #define KUSIZE_32 0x0000000080000000 /* KUSIZE | 170 | #define KUSIZE_32 _LLCONST_(0x0000000080000000) /* KUSIZE |
| 167 | for a 32 bit proc */ | 171 | for a 32 bit proc */ |
| 168 | #define K0BASE_EXL_WR 0xa800000000000000 /* exclusive on write */ | 172 | #define K0BASE_EXL_WR _LLCONST_(0xa800000000000000) /* exclusive on write */ |
| 169 | #define K0BASE_NONCOH 0x9800000000000000 /* noncoherent */ | 173 | #define K0BASE_NONCOH _LLCONST_(0x9800000000000000) /* noncoherent */ |
| 170 | #define K0BASE_EXL 0xa000000000000000 /* exclusive */ | 174 | #define K0BASE_EXL _LLCONST_(0xa000000000000000) /* exclusive */ |
| 171 | 175 | ||
| 172 | #ifndef CONFIG_CPU_R8000 | 176 | #ifndef CONFIG_CPU_R8000 |
| 173 | 177 | ||
| @@ -176,7 +180,7 @@ | |||
| 176 | * in order to catch bugs in the source code. | 180 | * in order to catch bugs in the source code. |
| 177 | */ | 181 | */ |
| 178 | 182 | ||
| 179 | #define COMPAT_K1BASE32 0xffffffffa0000000 | 183 | #define COMPAT_K1BASE32 _LLCONST_(0xffffffffa0000000) |
| 180 | #define PHYS_TO_COMPATK1(x) ((x) | COMPAT_K1BASE32) /* 32-bit compat k1 */ | 184 | #define PHYS_TO_COMPATK1(x) ((x) | COMPAT_K1BASE32) /* 32-bit compat k1 */ |
| 181 | 185 | ||
| 182 | #endif | 186 | #endif |
