Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

Prevent 64-bit constants from being cropped to 32 bits when used in C code.

Signed-off-by: Ralf Baechle <ralf@linux-mips.org>

authored by

Maciej W. Rozycki and committed by
Ralf Baechle
7d7ee221 2c93e12c

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