diff options
Diffstat (limited to 'arch/mips/include')
| -rw-r--r-- | arch/mips/include/asm/dma-mapping.h | 11 | ||||
| -rw-r--r-- | arch/mips/include/asm/fixmap.h | 4 | ||||
| -rw-r--r-- | arch/mips/include/asm/gcmpregs.h | 18 | ||||
| -rw-r--r-- | arch/mips/include/asm/gic.h | 188 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-ar7/ar7.h | 3 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-au1x00/gpio-au1000.h | 2 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_uart.h | 6 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-ip27/topology.h | 4 | ||||
| -rw-r--r-- | arch/mips/include/asm/mach-loongson/cpu-feature-overrides.h | 3 | ||||
| -rw-r--r-- | arch/mips/include/asm/mman.h | 1 | ||||
| -rw-r--r-- | arch/mips/include/asm/mmu_context.h | 13 | ||||
| -rw-r--r-- | arch/mips/include/asm/setup.h | 2 | ||||
| -rw-r--r-- | arch/mips/include/asm/smtc_ipi.h | 1 | ||||
| -rw-r--r-- | arch/mips/include/asm/spram.h | 10 | ||||
| -rw-r--r-- | arch/mips/include/asm/system.h | 15 | ||||
| -rw-r--r-- | arch/mips/include/asm/thread_info.h | 9 |
16 files changed, 72 insertions, 218 deletions
diff --git a/arch/mips/include/asm/dma-mapping.h b/arch/mips/include/asm/dma-mapping.h index d16afddb09a9..664ba53dc32a 100644 --- a/arch/mips/include/asm/dma-mapping.h +++ b/arch/mips/include/asm/dma-mapping.h | |||
| @@ -3,6 +3,7 @@ | |||
| 3 | 3 | ||
| 4 | #include <asm/scatterlist.h> | 4 | #include <asm/scatterlist.h> |
| 5 | #include <asm/cache.h> | 5 | #include <asm/cache.h> |
| 6 | #include <asm-generic/dma-coherent.h> | ||
| 6 | 7 | ||
| 7 | void *dma_alloc_noncoherent(struct device *dev, size_t size, | 8 | void *dma_alloc_noncoherent(struct device *dev, size_t size, |
| 8 | dma_addr_t *dma_handle, gfp_t flag); | 9 | dma_addr_t *dma_handle, gfp_t flag); |
| @@ -73,14 +74,4 @@ extern int dma_is_consistent(struct device *dev, dma_addr_t dma_addr); | |||
| 73 | extern void dma_cache_sync(struct device *dev, void *vaddr, size_t size, | 74 | extern void dma_cache_sync(struct device *dev, void *vaddr, size_t size, |
| 74 | enum dma_data_direction direction); | 75 | enum dma_data_direction direction); |
| 75 | 76 | ||
| 76 | #if 0 | ||
| 77 | #define ARCH_HAS_DMA_DECLARE_COHERENT_MEMORY | ||
| 78 | |||
| 79 | extern int dma_declare_coherent_memory(struct device *dev, dma_addr_t bus_addr, | ||
| 80 | dma_addr_t device_addr, size_t size, int flags); | ||
| 81 | extern void dma_release_declared_memory(struct device *dev); | ||
| 82 | extern void * dma_mark_declared_memory_occupied(struct device *dev, | ||
| 83 | dma_addr_t device_addr, size_t size); | ||
| 84 | #endif | ||
| 85 | |||
| 86 | #endif /* _ASM_DMA_MAPPING_H */ | 77 | #endif /* _ASM_DMA_MAPPING_H */ |
diff --git a/arch/mips/include/asm/fixmap.h b/arch/mips/include/asm/fixmap.h index efeddc8db8b1..0b89b83e2055 100644 --- a/arch/mips/include/asm/fixmap.h +++ b/arch/mips/include/asm/fixmap.h | |||
| @@ -48,9 +48,9 @@ enum fixed_addresses { | |||
| 48 | #define FIX_N_COLOURS 8 | 48 | #define FIX_N_COLOURS 8 |
| 49 | FIX_CMAP_BEGIN, | 49 | FIX_CMAP_BEGIN, |
| 50 | #ifdef CONFIG_MIPS_MT_SMTC | 50 | #ifdef CONFIG_MIPS_MT_SMTC |
| 51 | FIX_CMAP_END = FIX_CMAP_BEGIN + (FIX_N_COLOURS * NR_CPUS), | 51 | FIX_CMAP_END = FIX_CMAP_BEGIN + (FIX_N_COLOURS * NR_CPUS * 2), |
| 52 | #else | 52 | #else |
| 53 | FIX_CMAP_END = FIX_CMAP_BEGIN + FIX_N_COLOURS, | 53 | FIX_CMAP_END = FIX_CMAP_BEGIN + (FIX_N_COLOURS * 2), |
| 54 | #endif | 54 | #endif |
| 55 | #ifdef CONFIG_HIGHMEM | 55 | #ifdef CONFIG_HIGHMEM |
| 56 | /* reserved pte's for temporary kernel mappings */ | 56 | /* reserved pte's for temporary kernel mappings */ |
diff --git a/arch/mips/include/asm/gcmpregs.h b/arch/mips/include/asm/gcmpregs.h index 36fd969d64d6..c0cf76a2ca89 100644 --- a/arch/mips/include/asm/gcmpregs.h +++ b/arch/mips/include/asm/gcmpregs.h | |||
| @@ -19,15 +19,20 @@ | |||
| 19 | #define GCMP_GDB_OFS 0x8000 /* Global Debug Block */ | 19 | #define GCMP_GDB_OFS 0x8000 /* Global Debug Block */ |
| 20 | 20 | ||
| 21 | /* Offsets to individual GCMP registers from GCMP base */ | 21 | /* Offsets to individual GCMP registers from GCMP base */ |
| 22 | #define GCMPOFS(block, tag, reg) (GCMP_##block##_OFS + GCMP_##tag##_##reg##_OFS) | 22 | #define GCMPOFS(block, tag, reg) \ |
| 23 | (GCMP_##block##_OFS + GCMP_##tag##_##reg##_OFS) | ||
| 24 | #define GCMPOFSn(block, tag, reg, n) \ | ||
| 25 | (GCMP_##block##_OFS + GCMP_##tag##_##reg##_OFS(n)) | ||
| 23 | 26 | ||
| 24 | #define GCMPGCBOFS(reg) GCMPOFS(GCB, GCB, reg) | 27 | #define GCMPGCBOFS(reg) GCMPOFS(GCB, GCB, reg) |
| 28 | #define GCMPGCBOFSn(reg, n) GCMPOFSn(GCB, GCB, reg, n) | ||
| 25 | #define GCMPCLCBOFS(reg) GCMPOFS(CLCB, CCB, reg) | 29 | #define GCMPCLCBOFS(reg) GCMPOFS(CLCB, CCB, reg) |
| 26 | #define GCMPCOCBOFS(reg) GCMPOFS(COCB, CCB, reg) | 30 | #define GCMPCOCBOFS(reg) GCMPOFS(COCB, CCB, reg) |
| 27 | #define GCMPGDBOFS(reg) GCMPOFS(GDB, GDB, reg) | 31 | #define GCMPGDBOFS(reg) GCMPOFS(GDB, GDB, reg) |
| 28 | 32 | ||
| 29 | /* GCMP register access */ | 33 | /* GCMP register access */ |
| 30 | #define GCMPGCB(reg) REGP(_gcmp_base, GCMPGCBOFS(reg)) | 34 | #define GCMPGCB(reg) REGP(_gcmp_base, GCMPGCBOFS(reg)) |
| 35 | #define GCMPGCBn(reg, n) REGP(_gcmp_base, GCMPGCBOFSn(reg, n)) | ||
| 31 | #define GCMPCLCB(reg) REGP(_gcmp_base, GCMPCLCBOFS(reg)) | 36 | #define GCMPCLCB(reg) REGP(_gcmp_base, GCMPCLCBOFS(reg)) |
| 32 | #define GCMPCOCB(reg) REGP(_gcmp_base, GCMPCOCBOFS(reg)) | 37 | #define GCMPCOCB(reg) REGP(_gcmp_base, GCMPCOCBOFS(reg)) |
| 33 | #define GCMPGDB(reg) REGP(_gcmp_base, GCMPGDBOFS(reg)) | 38 | #define GCMPGDB(reg) REGP(_gcmp_base, GCMPGDBOFS(reg)) |
| @@ -49,10 +54,10 @@ | |||
| 49 | #define GCMP_GCB_GCMPB_GCMPBASE_MSK GCMPGCBMSK(GCMPB_GCMPBASE, 17) | 54 | #define GCMP_GCB_GCMPB_GCMPBASE_MSK GCMPGCBMSK(GCMPB_GCMPBASE, 17) |
| 50 | #define GCMP_GCB_GCMPB_CMDEFTGT_SHF 0 | 55 | #define GCMP_GCB_GCMPB_CMDEFTGT_SHF 0 |
| 51 | #define GCMP_GCB_GCMPB_CMDEFTGT_MSK GCMPGCBMSK(GCMPB_CMDEFTGT, 2) | 56 | #define GCMP_GCB_GCMPB_CMDEFTGT_MSK GCMPGCBMSK(GCMPB_CMDEFTGT, 2) |
| 52 | #define GCMP_GCB_GCMPB_CMDEFTGT_MEM 0 | 57 | #define GCMP_GCB_GCMPB_CMDEFTGT_DISABLED 0 |
| 53 | #define GCMP_GCB_GCMPB_CMDEFTGT_MEM1 1 | 58 | #define GCMP_GCB_GCMPB_CMDEFTGT_MEM 1 |
| 54 | #define GCMP_GCB_GCMPB_CMDEFTGT_IOCU1 2 | 59 | #define GCMP_GCB_GCMPB_CMDEFTGT_IOCU1 2 |
| 55 | #define GCMP_GCB_GCMPB_CMDEFTGT_IOCU2 3 | 60 | #define GCMP_GCB_GCMPB_CMDEFTGT_IOCU2 3 |
| 56 | #define GCMP_GCB_CCMC_OFS 0x0010 /* Global CM Control */ | 61 | #define GCMP_GCB_CCMC_OFS 0x0010 /* Global CM Control */ |
| 57 | #define GCMP_GCB_GCSRAP_OFS 0x0020 /* Global CSR Access Privilege */ | 62 | #define GCMP_GCB_GCSRAP_OFS 0x0020 /* Global CSR Access Privilege */ |
| 58 | #define GCMP_GCB_GCSRAP_CMACCESS_SHF 0 | 63 | #define GCMP_GCB_GCSRAP_CMACCESS_SHF 0 |
| @@ -115,5 +120,6 @@ | |||
| 115 | #define GCMP_CCB_DBGGROUP_OFS 0x0100 /* DebugBreak Group */ | 120 | #define GCMP_CCB_DBGGROUP_OFS 0x0100 /* DebugBreak Group */ |
| 116 | 121 | ||
| 117 | extern int __init gcmp_probe(unsigned long, unsigned long); | 122 | extern int __init gcmp_probe(unsigned long, unsigned long); |
| 118 | 123 | extern int __init gcmp_niocu(void); | |
| 124 | extern void __init gcmp_setregion(int, unsigned long, unsigned long, int); | ||
| 119 | #endif /* _ASM_GCMPREGS_H */ | 125 | #endif /* _ASM_GCMPREGS_H */ |
diff --git a/arch/mips/include/asm/gic.h b/arch/mips/include/asm/gic.h index a8f57341f123..9b9436a4d816 100644 --- a/arch/mips/include/asm/gic.h +++ b/arch/mips/include/asm/gic.h | |||
| @@ -12,7 +12,6 @@ | |||
| 12 | #define _ASM_GICREGS_H | 12 | #define _ASM_GICREGS_H |
| 13 | 13 | ||
| 14 | #undef GICISBYTELITTLEENDIAN | 14 | #undef GICISBYTELITTLEENDIAN |
| 15 | #define GICISWORDLITTLEENDIAN | ||
| 16 | 15 | ||
| 17 | /* Constants */ | 16 | /* Constants */ |
| 18 | #define GIC_POL_POS 1 | 17 | #define GIC_POL_POS 1 |
| @@ -20,11 +19,7 @@ | |||
| 20 | #define GIC_TRIG_EDGE 1 | 19 | #define GIC_TRIG_EDGE 1 |
| 21 | #define GIC_TRIG_LEVEL 0 | 20 | #define GIC_TRIG_LEVEL 0 |
| 22 | 21 | ||
| 23 | #ifdef CONFIG_SMP | ||
| 24 | #define GIC_NUM_INTRS (24 + NR_CPUS * 2) | 22 | #define GIC_NUM_INTRS (24 + NR_CPUS * 2) |
| 25 | #else | ||
| 26 | #define GIC_NUM_INTRS 32 | ||
| 27 | #endif | ||
| 28 | 23 | ||
| 29 | #define MSK(n) ((1 << (n)) - 1) | 24 | #define MSK(n) ((1 << (n)) - 1) |
| 30 | #define REG32(addr) (*(volatile unsigned int *) (addr)) | 25 | #define REG32(addr) (*(volatile unsigned int *) (addr)) |
| @@ -70,13 +65,13 @@ | |||
| 70 | #define USM_VISIBLE_SECTION_SIZE 0x10000 | 65 | #define USM_VISIBLE_SECTION_SIZE 0x10000 |
| 71 | 66 | ||
| 72 | /* Register Map for Shared Section */ | 67 | /* Register Map for Shared Section */ |
| 73 | #if defined(CONFIG_CPU_LITTLE_ENDIAN) || defined(GICISWORDLITTLEENDIAN) | ||
| 74 | 68 | ||
| 75 | #define GIC_SH_CONFIG_OFS 0x0000 | 69 | #define GIC_SH_CONFIG_OFS 0x0000 |
| 76 | 70 | ||
| 77 | /* Shared Global Counter */ | 71 | /* Shared Global Counter */ |
| 78 | #define GIC_SH_COUNTER_31_00_OFS 0x0010 | 72 | #define GIC_SH_COUNTER_31_00_OFS 0x0010 |
| 79 | #define GIC_SH_COUNTER_63_32_OFS 0x0014 | 73 | #define GIC_SH_COUNTER_63_32_OFS 0x0014 |
| 74 | #define GIC_SH_REVISIONID_OFS 0x0020 | ||
| 80 | 75 | ||
| 81 | /* Interrupt Polarity */ | 76 | /* Interrupt Polarity */ |
| 82 | #define GIC_SH_POL_31_0_OFS 0x0100 | 77 | #define GIC_SH_POL_31_0_OFS 0x0100 |
| @@ -164,24 +159,31 @@ | |||
| 164 | (GIC_SH_INTR_MAP_TO_VPE_BASE_OFS + (32 * (intr)) + (((vpe) / 32) * 4)) | 159 | (GIC_SH_INTR_MAP_TO_VPE_BASE_OFS + (32 * (intr)) + (((vpe) / 32) * 4)) |
| 165 | #define GIC_SH_MAP_TO_VPE_REG_BIT(vpe) (1 << ((vpe) % 32)) | 160 | #define GIC_SH_MAP_TO_VPE_REG_BIT(vpe) (1 << ((vpe) % 32)) |
| 166 | 161 | ||
| 162 | /* Convert an interrupt number to a byte offset/bit for multi-word registers */ | ||
| 163 | #define GIC_INTR_OFS(intr) (((intr) / 32)*4) | ||
| 164 | #define GIC_INTR_BIT(intr) ((intr) % 32) | ||
| 165 | |||
| 167 | /* Polarity : Reset Value is always 0 */ | 166 | /* Polarity : Reset Value is always 0 */ |
| 168 | #define GIC_SH_SET_POLARITY_OFS 0x0100 | 167 | #define GIC_SH_SET_POLARITY_OFS 0x0100 |
| 169 | #define GIC_SET_POLARITY(intr, pol) \ | 168 | #define GIC_SET_POLARITY(intr, pol) \ |
| 170 | GICBIS(GIC_REG_ADDR(SHARED, GIC_SH_SET_POLARITY_OFS + (((intr) / 32) * 4)), (pol) << ((intr) % 32)) | 169 | GICBIS(GIC_REG_ADDR(SHARED, GIC_SH_SET_POLARITY_OFS + \ |
| 170 | GIC_INTR_OFS(intr)), (pol) << GIC_INTR_BIT(intr)) | ||
| 171 | 171 | ||
| 172 | /* Triggering : Reset Value is always 0 */ | 172 | /* Triggering : Reset Value is always 0 */ |
| 173 | #define GIC_SH_SET_TRIGGER_OFS 0x0180 | 173 | #define GIC_SH_SET_TRIGGER_OFS 0x0180 |
| 174 | #define GIC_SET_TRIGGER(intr, trig) \ | 174 | #define GIC_SET_TRIGGER(intr, trig) \ |
| 175 | GICBIS(GIC_REG_ADDR(SHARED, GIC_SH_SET_TRIGGER_OFS + (((intr) / 32) * 4)), (trig) << ((intr) % 32)) | 175 | GICBIS(GIC_REG_ADDR(SHARED, GIC_SH_SET_TRIGGER_OFS + \ |
| 176 | GIC_INTR_OFS(intr)), (trig) << GIC_INTR_BIT(intr)) | ||
| 176 | 177 | ||
| 177 | /* Mask manipulation */ | 178 | /* Mask manipulation */ |
| 178 | #define GIC_SH_SMASK_OFS 0x0380 | 179 | #define GIC_SH_SMASK_OFS 0x0380 |
| 179 | #define GIC_SET_INTR_MASK(intr, val) \ | 180 | #define GIC_SET_INTR_MASK(intr) \ |
| 180 | GICWRITE(GIC_REG_ADDR(SHARED, GIC_SH_SMASK_OFS + (((intr) / 32) * 4)), ((val) << ((intr) % 32))) | 181 | GICWRITE(GIC_REG_ADDR(SHARED, GIC_SH_SMASK_OFS + \ |
| 181 | 182 | GIC_INTR_OFS(intr)), 1 << GIC_INTR_BIT(intr)) | |
| 182 | #define GIC_SH_RMASK_OFS 0x0300 | 183 | #define GIC_SH_RMASK_OFS 0x0300 |
| 183 | #define GIC_CLR_INTR_MASK(intr, val) \ | 184 | #define GIC_CLR_INTR_MASK(intr) \ |
| 184 | GICWRITE(GIC_REG_ADDR(SHARED, GIC_SH_RMASK_OFS + (((intr) / 32) * 4)), ((val) << ((intr) % 32))) | 185 | GICWRITE(GIC_REG_ADDR(SHARED, GIC_SH_RMASK_OFS + \ |
| 186 | GIC_INTR_OFS(intr)), 1 << GIC_INTR_BIT(intr)) | ||
| 185 | 187 | ||
| 186 | /* Register Map for Local Section */ | 188 | /* Register Map for Local Section */ |
| 187 | #define GIC_VPE_CTL_OFS 0x0000 | 189 | #define GIC_VPE_CTL_OFS 0x0000 |
| @@ -219,161 +221,6 @@ | |||
| 219 | #define GIC_UMV_SH_COUNTER_31_00_OFS 0x0000 | 221 | #define GIC_UMV_SH_COUNTER_31_00_OFS 0x0000 |
| 220 | #define GIC_UMV_SH_COUNTER_63_32_OFS 0x0004 | 222 | #define GIC_UMV_SH_COUNTER_63_32_OFS 0x0004 |
| 221 | 223 | ||
| 222 | #else /* CONFIG_CPU_BIG_ENDIAN */ | ||
| 223 | |||
| 224 | #define GIC_SH_CONFIG_OFS 0x0000 | ||
| 225 | |||
| 226 | /* Shared Global Counter */ | ||
| 227 | #define GIC_SH_COUNTER_31_00_OFS 0x0014 | ||
| 228 | #define GIC_SH_COUNTER_63_32_OFS 0x0010 | ||
| 229 | |||
| 230 | /* Interrupt Polarity */ | ||
| 231 | #define GIC_SH_POL_31_0_OFS 0x0104 | ||
| 232 | #define GIC_SH_POL_63_32_OFS 0x0100 | ||
| 233 | #define GIC_SH_POL_95_64_OFS 0x010c | ||
| 234 | #define GIC_SH_POL_127_96_OFS 0x0108 | ||
| 235 | #define GIC_SH_POL_159_128_OFS 0x0114 | ||
| 236 | #define GIC_SH_POL_191_160_OFS 0x0110 | ||
| 237 | #define GIC_SH_POL_223_192_OFS 0x011c | ||
| 238 | #define GIC_SH_POL_255_224_OFS 0x0118 | ||
| 239 | |||
| 240 | /* Edge/Level Triggering */ | ||
| 241 | #define GIC_SH_TRIG_31_0_OFS 0x0184 | ||
| 242 | #define GIC_SH_TRIG_63_32_OFS 0x0180 | ||
| 243 | #define GIC_SH_TRIG_95_64_OFS 0x018c | ||
| 244 | #define GIC_SH_TRIG_127_96_OFS 0x0188 | ||
| 245 | #define GIC_SH_TRIG_159_128_OFS 0x0194 | ||
| 246 | #define GIC_SH_TRIG_191_160_OFS 0x0190 | ||
| 247 | #define GIC_SH_TRIG_223_192_OFS 0x019c | ||
| 248 | #define GIC_SH_TRIG_255_224_OFS 0x0198 | ||
| 249 | |||
| 250 | /* Dual Edge Triggering */ | ||
| 251 | #define GIC_SH_DUAL_31_0_OFS 0x0204 | ||
| 252 | #define GIC_SH_DUAL_63_32_OFS 0x0200 | ||
| 253 | #define GIC_SH_DUAL_95_64_OFS 0x020c | ||
| 254 | #define GIC_SH_DUAL_127_96_OFS 0x0208 | ||
| 255 | #define GIC_SH_DUAL_159_128_OFS 0x0214 | ||
| 256 | #define GIC_SH_DUAL_191_160_OFS 0x0210 | ||
| 257 | #define GIC_SH_DUAL_223_192_OFS 0x021c | ||
| 258 | #define GIC_SH_DUAL_255_224_OFS 0x0218 | ||
| 259 | |||
| 260 | /* Set/Clear corresponding bit in Edge Detect Register */ | ||
| 261 | #define GIC_SH_WEDGE_OFS 0x0280 | ||
| 262 | |||
| 263 | /* Reset Mask - Disables Interrupt */ | ||
| 264 | #define GIC_SH_RMASK_31_0_OFS 0x0304 | ||
| 265 | #define GIC_SH_RMASK_63_32_OFS 0x0300 | ||
| 266 | #define GIC_SH_RMASK_95_64_OFS 0x030c | ||
| 267 | #define GIC_SH_RMASK_127_96_OFS 0x0308 | ||
| 268 | #define GIC_SH_RMASK_159_128_OFS 0x0314 | ||
| 269 | #define GIC_SH_RMASK_191_160_OFS 0x0310 | ||
| 270 | #define GIC_SH_RMASK_223_192_OFS 0x031c | ||
| 271 | #define GIC_SH_RMASK_255_224_OFS 0x0318 | ||
| 272 | |||
| 273 | /* Set Mask (WO) - Enables Interrupt */ | ||
| 274 | #define GIC_SH_SMASK_31_0_OFS 0x0384 | ||
| 275 | #define GIC_SH_SMASK_63_32_OFS 0x0380 | ||
| 276 | #define GIC_SH_SMASK_95_64_OFS 0x038c | ||
| 277 | #define GIC_SH_SMASK_127_96_OFS 0x0388 | ||
| 278 | #define GIC_SH_SMASK_159_128_OFS 0x0394 | ||
| 279 | #define GIC_SH_SMASK_191_160_OFS 0x0390 | ||
| 280 | #define GIC_SH_SMASK_223_192_OFS 0x039c | ||
| 281 | #define GIC_SH_SMASK_255_224_OFS 0x0398 | ||
| 282 | |||
| 283 | /* Global Interrupt Mask Register (RO) - Bit Set == Interrupt enabled */ | ||
| 284 | #define GIC_SH_MASK_31_0_OFS 0x0404 | ||
| 285 | #define GIC_SH_MASK_63_32_OFS 0x0400 | ||
| 286 | #define GIC_SH_MASK_95_64_OFS 0x040c | ||
| 287 | #define GIC_SH_MASK_127_96_OFS 0x0408 | ||
| 288 | #define GIC_SH_MASK_159_128_OFS 0x0414 | ||
| 289 | #define GIC_SH_MASK_191_160_OFS 0x0410 | ||
| 290 | #define GIC_SH_MASK_223_192_OFS 0x041c | ||
| 291 | #define GIC_SH_MASK_255_224_OFS 0x0418 | ||
| 292 | |||
| 293 | /* Pending Global Interrupts (RO) */ | ||
| 294 | #define GIC_SH_PEND_31_0_OFS 0x0484 | ||
| 295 | #define GIC_SH_PEND_63_32_OFS 0x0480 | ||
| 296 | #define GIC_SH_PEND_95_64_OFS 0x048c | ||
| 297 | #define GIC_SH_PEND_127_96_OFS 0x0488 | ||
| 298 | #define GIC_SH_PEND_159_128_OFS 0x0494 | ||
| 299 | #define GIC_SH_PEND_191_160_OFS 0x0490 | ||
| 300 | #define GIC_SH_PEND_223_192_OFS 0x049c | ||
| 301 | #define GIC_SH_PEND_255_224_OFS 0x0498 | ||
| 302 | |||
| 303 | #define GIC_SH_INTR_MAP_TO_PIN_BASE_OFS 0x0500 | ||
| 304 | |||
| 305 | /* Maps Interrupt X to a Pin */ | ||
| 306 | #define GIC_SH_MAP_TO_PIN(intr) \ | ||
| 307 | (GIC_SH_INTR_MAP_TO_PIN_BASE_OFS + (4 * intr)) | ||
| 308 | |||
| 309 | #define GIC_SH_INTR_MAP_TO_VPE_BASE_OFS 0x2004 | ||
| 310 | |||
| 311 | /* | ||
| 312 | * Maps Interrupt X to a VPE. This is more complex than the LE case, as | ||
| 313 | * odd and even registers need to be transposed. It does work - trust me! | ||
| 314 | */ | ||
| 315 | #define GIC_SH_MAP_TO_VPE_REG_OFF(intr, vpe) \ | ||
| 316 | (GIC_SH_INTR_MAP_TO_VPE_BASE_OFS + (32 * (intr)) + \ | ||
| 317 | (((((vpe) / 32) ^ 1) - 1) * 4)) | ||
| 318 | #define GIC_SH_MAP_TO_VPE_REG_BIT(vpe) (1 << ((vpe) % 32)) | ||
| 319 | |||
| 320 | /* Polarity */ | ||
| 321 | #define GIC_SH_SET_POLARITY_OFS 0x0100 | ||
| 322 | #define GIC_SET_POLARITY(intr, pol) \ | ||
| 323 | GICBIS(GIC_REG_ADDR(SHARED, GIC_SH_SET_POLARITY_OFS + 4 + (((((intr) / 32) ^ 1) - 1) * 4)), (pol) << ((intr) % 32)) | ||
| 324 | |||
| 325 | /* Triggering */ | ||
| 326 | #define GIC_SH_SET_TRIGGER_OFS 0x0180 | ||
| 327 | #define GIC_SET_TRIGGER(intr, trig) \ | ||
| 328 | GICBIS(GIC_REG_ADDR(SHARED, GIC_SH_SET_TRIGGER_OFS + 4 + (((((intr) / 32) ^ 1) - 1) * 4)), (trig) << ((intr) % 32)) | ||
| 329 | |||
| 330 | /* Mask manipulation */ | ||
| 331 | #define GIC_SH_SMASK_OFS 0x0380 | ||
| 332 | #define GIC_SET_INTR_MASK(intr, val) \ | ||
| 333 | GICWRITE(GIC_REG_ADDR(SHARED, GIC_SH_SMASK_OFS + 4 + (((((intr) / 32) ^ 1) - 1) * 4)), ((val) << ((intr) % 32))) | ||
| 334 | |||
| 335 | #define GIC_SH_RMASK_OFS 0x0300 | ||
| 336 | #define GIC_CLR_INTR_MASK(intr, val) \ | ||
| 337 | GICWRITE(GIC_REG_ADDR(SHARED, GIC_SH_RMASK_OFS + 4 + (((((intr) / 32) ^ 1) - 1) * 4)), ((val) << ((intr) % 32))) | ||
| 338 | |||
| 339 | /* Register Map for Local Section */ | ||
| 340 | #define GIC_VPE_CTL_OFS 0x0000 | ||
| 341 | #define GIC_VPE_PEND_OFS 0x0004 | ||
| 342 | #define GIC_VPE_MASK_OFS 0x0008 | ||
| 343 | #define GIC_VPE_RMASK_OFS 0x000c | ||
| 344 | #define GIC_VPE_SMASK_OFS 0x0010 | ||
| 345 | #define GIC_VPE_WD_MAP_OFS 0x0040 | ||
| 346 | #define GIC_VPE_COMPARE_MAP_OFS 0x0044 | ||
| 347 | #define GIC_VPE_TIMER_MAP_OFS 0x0048 | ||
| 348 | #define GIC_VPE_PERFCTR_MAP_OFS 0x0050 | ||
| 349 | #define GIC_VPE_SWINT0_MAP_OFS 0x0054 | ||
| 350 | #define GIC_VPE_SWINT1_MAP_OFS 0x0058 | ||
| 351 | #define GIC_VPE_OTHER_ADDR_OFS 0x0080 | ||
| 352 | #define GIC_VPE_WD_CONFIG0_OFS 0x0090 | ||
| 353 | #define GIC_VPE_WD_COUNT0_OFS 0x0094 | ||
| 354 | #define GIC_VPE_WD_INITIAL0_OFS 0x0098 | ||
| 355 | #define GIC_VPE_COMPARE_LO_OFS 0x00a4 | ||
| 356 | #define GIC_VPE_COMPARE_HI_OFS 0x00a0 | ||
| 357 | |||
| 358 | #define GIC_VPE_EIC_SHADOW_SET_BASE 0x0100 | ||
| 359 | #define GIC_VPE_EIC_SS(intr) \ | ||
| 360 | (GIC_EIC_SHADOW_SET_BASE + (4 * intr)) | ||
| 361 | |||
| 362 | #define GIC_VPE_EIC_VEC_BASE 0x0800 | ||
| 363 | #define GIC_VPE_EIC_VEC(intr) \ | ||
| 364 | (GIC_VPE_EIC_VEC_BASE + (4 * intr)) | ||
| 365 | |||
| 366 | #define GIC_VPE_TENABLE_NMI_OFS 0x1000 | ||
| 367 | #define GIC_VPE_TENABLE_YQ_OFS 0x1004 | ||
| 368 | #define GIC_VPE_TENABLE_INT_31_0_OFS 0x1080 | ||
| 369 | #define GIC_VPE_TENABLE_INT_63_32_OFS 0x1084 | ||
| 370 | |||
| 371 | /* User Mode Visible Section Register Map */ | ||
| 372 | #define GIC_UMV_SH_COUNTER_31_00_OFS 0x0004 | ||
| 373 | #define GIC_UMV_SH_COUNTER_63_32_OFS 0x0000 | ||
| 374 | |||
| 375 | #endif /* !LE */ | ||
| 376 | |||
| 377 | /* Masks */ | 224 | /* Masks */ |
| 378 | #define GIC_SH_CONFIG_COUNTSTOP_SHF 28 | 225 | #define GIC_SH_CONFIG_COUNTSTOP_SHF 28 |
| 379 | #define GIC_SH_CONFIG_COUNTSTOP_MSK (MSK(1) << GIC_SH_CONFIG_COUNTSTOP_SHF) | 226 | #define GIC_SH_CONFIG_COUNTSTOP_MSK (MSK(1) << GIC_SH_CONFIG_COUNTSTOP_SHF) |
| @@ -473,12 +320,13 @@ struct gic_intrmask_regs { | |||
| 473 | * in building ipi_map. | 320 | * in building ipi_map. |
| 474 | */ | 321 | */ |
| 475 | struct gic_intr_map { | 322 | struct gic_intr_map { |
| 476 | unsigned int intrnum; /* Ext Intr Num */ | ||
| 477 | unsigned int cpunum; /* Directed to this CPU */ | 323 | unsigned int cpunum; /* Directed to this CPU */ |
| 478 | unsigned int pin; /* Directed to this Pin */ | 324 | unsigned int pin; /* Directed to this Pin */ |
| 479 | unsigned int polarity; /* Polarity : +/- */ | 325 | unsigned int polarity; /* Polarity : +/- */ |
| 480 | unsigned int trigtype; /* Trigger : Edge/Levl */ | 326 | unsigned int trigtype; /* Trigger : Edge/Levl */ |
| 481 | unsigned int ipiflag; /* Is used for IPI ? */ | 327 | unsigned int flags; /* Misc flags */ |
| 328 | #define GIC_FLAG_IPI 0x01 | ||
| 329 | #define GIC_FLAG_TRANSPARENT 0x02 | ||
| 482 | }; | 330 | }; |
| 483 | 331 | ||
| 484 | extern void gic_init(unsigned long gic_base_addr, | 332 | extern void gic_init(unsigned long gic_base_addr, |
diff --git a/arch/mips/include/asm/mach-ar7/ar7.h b/arch/mips/include/asm/mach-ar7/ar7.h index de71694614de..21cbbc706448 100644 --- a/arch/mips/include/asm/mach-ar7/ar7.h +++ b/arch/mips/include/asm/mach-ar7/ar7.h | |||
| @@ -78,6 +78,9 @@ | |||
| 78 | #define AR7_REF_CLOCK 25000000 | 78 | #define AR7_REF_CLOCK 25000000 |
| 79 | #define AR7_XTAL_CLOCK 24000000 | 79 | #define AR7_XTAL_CLOCK 24000000 |
| 80 | 80 | ||
| 81 | /* DCL */ | ||
| 82 | #define AR7_WDT_HW_ENA 0x10 | ||
| 83 | |||
| 81 | struct plat_cpmac_data { | 84 | struct plat_cpmac_data { |
| 82 | int reset_bit; | 85 | int reset_bit; |
| 83 | int power_bit; | 86 | int power_bit; |
diff --git a/arch/mips/include/asm/mach-au1x00/gpio-au1000.h b/arch/mips/include/asm/mach-au1x00/gpio-au1000.h index feea00148b5d..91595fa89034 100644 --- a/arch/mips/include/asm/mach-au1x00/gpio-au1000.h +++ b/arch/mips/include/asm/mach-au1x00/gpio-au1000.h | |||
| @@ -104,6 +104,8 @@ static inline int au1100_gpio2_to_irq(int gpio) | |||
| 104 | 104 | ||
| 105 | if ((gpio >= 8) && (gpio <= 15)) | 105 | if ((gpio >= 8) && (gpio <= 15)) |
| 106 | return MAKE_IRQ(0, 29); /* shared GPIO208_215 */ | 106 | return MAKE_IRQ(0, 29); /* shared GPIO208_215 */ |
| 107 | |||
| 108 | return -ENXIO; | ||
| 107 | } | 109 | } |
| 108 | 110 | ||
| 109 | #ifdef CONFIG_SOC_AU1100 | 111 | #ifdef CONFIG_SOC_AU1100 |
diff --git a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_uart.h b/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_uart.h deleted file mode 100644 index bf348f573bbc..000000000000 --- a/arch/mips/include/asm/mach-bcm63xx/bcm63xx_dev_uart.h +++ /dev/null | |||
| @@ -1,6 +0,0 @@ | |||
| 1 | #ifndef BCM63XX_DEV_UART_H_ | ||
| 2 | #define BCM63XX_DEV_UART_H_ | ||
| 3 | |||
| 4 | int bcm63xx_uart_register(void); | ||
| 5 | |||
| 6 | #endif /* BCM63XX_DEV_UART_H_ */ | ||
diff --git a/arch/mips/include/asm/mach-ip27/topology.h b/arch/mips/include/asm/mach-ip27/topology.h index f6837422fe65..09a59bcc1b07 100644 --- a/arch/mips/include/asm/mach-ip27/topology.h +++ b/arch/mips/include/asm/mach-ip27/topology.h | |||
| @@ -44,8 +44,8 @@ extern unsigned char __node_distances[MAX_COMPACT_NODES][MAX_COMPACT_NODES]; | |||
| 44 | .busy_factor = 32, \ | 44 | .busy_factor = 32, \ |
| 45 | .imbalance_pct = 125, \ | 45 | .imbalance_pct = 125, \ |
| 46 | .cache_nice_tries = 1, \ | 46 | .cache_nice_tries = 1, \ |
| 47 | .flags = SD_LOAD_BALANCE \ | 47 | .flags = SD_LOAD_BALANCE | \ |
| 48 | | SD_BALANCE_EXEC \ | 48 | SD_BALANCE_EXEC, \ |
| 49 | .last_balance = jiffies, \ | 49 | .last_balance = jiffies, \ |
| 50 | .balance_interval = 1, \ | 50 | .balance_interval = 1, \ |
| 51 | .nr_balance_failed = 0, \ | 51 | .nr_balance_failed = 0, \ |
diff --git a/arch/mips/include/asm/mach-loongson/cpu-feature-overrides.h b/arch/mips/include/asm/mach-loongson/cpu-feature-overrides.h index ce5b6e270e3f..9947e57c91de 100644 --- a/arch/mips/include/asm/mach-loongson/cpu-feature-overrides.h +++ b/arch/mips/include/asm/mach-loongson/cpu-feature-overrides.h | |||
| @@ -29,7 +29,7 @@ | |||
| 29 | #define cpu_has_cache_cdex_p 0 | 29 | #define cpu_has_cache_cdex_p 0 |
| 30 | #define cpu_has_cache_cdex_s 0 | 30 | #define cpu_has_cache_cdex_s 0 |
| 31 | #define cpu_has_counter 1 | 31 | #define cpu_has_counter 1 |
| 32 | #define cpu_has_dc_aliases 1 | 32 | #define cpu_has_dc_aliases (PAGE_SIZE < 0x4000) |
| 33 | #define cpu_has_divec 0 | 33 | #define cpu_has_divec 0 |
| 34 | #define cpu_has_dsp 0 | 34 | #define cpu_has_dsp 0 |
| 35 | #define cpu_has_ejtag 0 | 35 | #define cpu_has_ejtag 0 |
| @@ -54,6 +54,5 @@ | |||
| 54 | #define cpu_has_vce 0 | 54 | #define cpu_has_vce 0 |
| 55 | #define cpu_has_vtag_icache 0 | 55 | #define cpu_has_vtag_icache 0 |
| 56 | #define cpu_has_watch 1 | 56 | #define cpu_has_watch 1 |
| 57 | #define cpu_icache_snoops_remote_store 1 | ||
| 58 | 57 | ||
| 59 | #endif /* __ASM_MACH_LOONGSON_CPU_FEATURE_OVERRIDES_H */ | 58 | #endif /* __ASM_MACH_LOONGSON_CPU_FEATURE_OVERRIDES_H */ |
diff --git a/arch/mips/include/asm/mman.h b/arch/mips/include/asm/mman.h index a2250f390a29..c892bfb3e2c1 100644 --- a/arch/mips/include/asm/mman.h +++ b/arch/mips/include/asm/mman.h | |||
| @@ -75,6 +75,7 @@ | |||
| 75 | 75 | ||
| 76 | #define MADV_MERGEABLE 12 /* KSM may merge identical pages */ | 76 | #define MADV_MERGEABLE 12 /* KSM may merge identical pages */ |
| 77 | #define MADV_UNMERGEABLE 13 /* KSM may not merge identical pages */ | 77 | #define MADV_UNMERGEABLE 13 /* KSM may not merge identical pages */ |
| 78 | #define MADV_HWPOISON 100 /* poison a page for testing */ | ||
| 78 | 79 | ||
| 79 | /* compatibility flags */ | 80 | /* compatibility flags */ |
| 80 | #define MAP_FILE 0 | 81 | #define MAP_FILE 0 |
diff --git a/arch/mips/include/asm/mmu_context.h b/arch/mips/include/asm/mmu_context.h index d9743536a621..6083db586500 100644 --- a/arch/mips/include/asm/mmu_context.h +++ b/arch/mips/include/asm/mmu_context.h | |||
| @@ -16,6 +16,7 @@ | |||
| 16 | #include <linux/smp.h> | 16 | #include <linux/smp.h> |
| 17 | #include <linux/slab.h> | 17 | #include <linux/slab.h> |
| 18 | #include <asm/cacheflush.h> | 18 | #include <asm/cacheflush.h> |
| 19 | #include <asm/hazards.h> | ||
| 19 | #include <asm/tlbflush.h> | 20 | #include <asm/tlbflush.h> |
| 20 | #ifdef CONFIG_MIPS_MT_SMTC | 21 | #ifdef CONFIG_MIPS_MT_SMTC |
| 21 | #include <asm/mipsmtregs.h> | 22 | #include <asm/mipsmtregs.h> |
| @@ -36,11 +37,13 @@ extern unsigned long pgd_current[]; | |||
| 36 | #ifdef CONFIG_32BIT | 37 | #ifdef CONFIG_32BIT |
| 37 | #define TLBMISS_HANDLER_SETUP() \ | 38 | #define TLBMISS_HANDLER_SETUP() \ |
| 38 | write_c0_context((unsigned long) smp_processor_id() << 25); \ | 39 | write_c0_context((unsigned long) smp_processor_id() << 25); \ |
| 40 | back_to_back_c0_hazard(); \ | ||
| 39 | TLBMISS_HANDLER_SETUP_PGD(swapper_pg_dir) | 41 | TLBMISS_HANDLER_SETUP_PGD(swapper_pg_dir) |
| 40 | #endif | 42 | #endif |
| 41 | #ifdef CONFIG_64BIT | 43 | #ifdef CONFIG_64BIT |
| 42 | #define TLBMISS_HANDLER_SETUP() \ | 44 | #define TLBMISS_HANDLER_SETUP() \ |
| 43 | write_c0_context((unsigned long) smp_processor_id() << 26); \ | 45 | write_c0_context((unsigned long) smp_processor_id() << 26); \ |
| 46 | back_to_back_c0_hazard(); \ | ||
| 44 | TLBMISS_HANDLER_SETUP_PGD(swapper_pg_dir) | 47 | TLBMISS_HANDLER_SETUP_PGD(swapper_pg_dir) |
| 45 | #endif | 48 | #endif |
| 46 | 49 | ||
| @@ -165,12 +168,12 @@ static inline void switch_mm(struct mm_struct *prev, struct mm_struct *next, | |||
| 165 | * having ASID_MASK smaller than the hardware maximum, | 168 | * having ASID_MASK smaller than the hardware maximum, |
| 166 | * make sure no "soft" bits become "hard"... | 169 | * make sure no "soft" bits become "hard"... |
| 167 | */ | 170 | */ |
| 168 | write_c0_entryhi((read_c0_entryhi() & ~HW_ASID_MASK) | 171 | write_c0_entryhi((read_c0_entryhi() & ~HW_ASID_MASK) | |
| 169 | | (cpu_context(cpu, next) & ASID_MASK)); | 172 | cpu_asid(cpu, next)); |
| 170 | ehb(); /* Make sure it propagates to TCStatus */ | 173 | ehb(); /* Make sure it propagates to TCStatus */ |
| 171 | evpe(mtflags); | 174 | evpe(mtflags); |
| 172 | #else | 175 | #else |
| 173 | write_c0_entryhi(cpu_context(cpu, next)); | 176 | write_c0_entryhi(cpu_asid(cpu, next)); |
| 174 | #endif /* CONFIG_MIPS_MT_SMTC */ | 177 | #endif /* CONFIG_MIPS_MT_SMTC */ |
| 175 | TLBMISS_HANDLER_SETUP_PGD(next->pgd); | 178 | TLBMISS_HANDLER_SETUP_PGD(next->pgd); |
| 176 | 179 | ||
| @@ -226,11 +229,11 @@ activate_mm(struct mm_struct *prev, struct mm_struct *next) | |||
| 226 | } | 229 | } |
| 227 | /* See comments for similar code above */ | 230 | /* See comments for similar code above */ |
| 228 | write_c0_entryhi((read_c0_entryhi() & ~HW_ASID_MASK) | | 231 | write_c0_entryhi((read_c0_entryhi() & ~HW_ASID_MASK) | |
| 229 | (cpu_context(cpu, next) & ASID_MASK)); | 232 | cpu_asid(cpu, next)); |
| 230 | ehb(); /* Make sure it propagates to TCStatus */ | 233 | ehb(); /* Make sure it propagates to TCStatus */ |
| 231 | evpe(mtflags); | 234 | evpe(mtflags); |
| 232 | #else | 235 | #else |
| 233 | write_c0_entryhi(cpu_context(cpu, next)); | 236 | write_c0_entryhi(cpu_asid(cpu, next)); |
| 234 | #endif /* CONFIG_MIPS_MT_SMTC */ | 237 | #endif /* CONFIG_MIPS_MT_SMTC */ |
| 235 | TLBMISS_HANDLER_SETUP_PGD(next->pgd); | 238 | TLBMISS_HANDLER_SETUP_PGD(next->pgd); |
| 236 | 239 | ||
diff --git a/arch/mips/include/asm/setup.h b/arch/mips/include/asm/setup.h index e600cedda976..50511aac04e9 100644 --- a/arch/mips/include/asm/setup.h +++ b/arch/mips/include/asm/setup.h | |||
| @@ -1,7 +1,7 @@ | |||
| 1 | #ifndef _MIPS_SETUP_H | 1 | #ifndef _MIPS_SETUP_H |
| 2 | #define _MIPS_SETUP_H | 2 | #define _MIPS_SETUP_H |
| 3 | 3 | ||
| 4 | #define COMMAND_LINE_SIZE 256 | 4 | #define COMMAND_LINE_SIZE 4096 |
| 5 | 5 | ||
| 6 | #ifdef __KERNEL__ | 6 | #ifdef __KERNEL__ |
| 7 | extern void setup_early_printk(void); | 7 | extern void setup_early_printk(void); |
diff --git a/arch/mips/include/asm/smtc_ipi.h b/arch/mips/include/asm/smtc_ipi.h index 8ce517574340..15278dbd7e79 100644 --- a/arch/mips/include/asm/smtc_ipi.h +++ b/arch/mips/include/asm/smtc_ipi.h | |||
| @@ -45,6 +45,7 @@ struct smtc_ipi_q { | |||
| 45 | spinlock_t lock; | 45 | spinlock_t lock; |
| 46 | struct smtc_ipi *tail; | 46 | struct smtc_ipi *tail; |
| 47 | int depth; | 47 | int depth; |
| 48 | int resched_flag; /* reschedule already queued */ | ||
| 48 | }; | 49 | }; |
| 49 | 50 | ||
| 50 | static inline void smtc_ipi_nq(struct smtc_ipi_q *q, struct smtc_ipi *p) | 51 | static inline void smtc_ipi_nq(struct smtc_ipi_q *q, struct smtc_ipi *p) |
diff --git a/arch/mips/include/asm/spram.h b/arch/mips/include/asm/spram.h new file mode 100644 index 000000000000..0b89006e4907 --- /dev/null +++ b/arch/mips/include/asm/spram.h | |||
| @@ -0,0 +1,10 @@ | |||
| 1 | #ifndef _MIPS_SPRAM_H | ||
| 2 | #define _MIPS_SPRAM_H | ||
| 3 | |||
| 4 | #ifdef CONFIG_CPU_MIPSR2 | ||
| 5 | extern __init void spram_config(void); | ||
| 6 | #else | ||
| 7 | static inline void spram_config(void) { }; | ||
| 8 | #endif /* CONFIG_CPU_MIPSR2 */ | ||
| 9 | |||
| 10 | #endif /* _MIPS_SPRAM_H */ | ||
diff --git a/arch/mips/include/asm/system.h b/arch/mips/include/asm/system.h index fcf5f98d90cc..83b5509e09e8 100644 --- a/arch/mips/include/asm/system.h +++ b/arch/mips/include/asm/system.h | |||
| @@ -12,6 +12,7 @@ | |||
| 12 | #ifndef _ASM_SYSTEM_H | 12 | #ifndef _ASM_SYSTEM_H |
| 13 | #define _ASM_SYSTEM_H | 13 | #define _ASM_SYSTEM_H |
| 14 | 14 | ||
| 15 | #include <linux/kernel.h> | ||
| 15 | #include <linux/types.h> | 16 | #include <linux/types.h> |
| 16 | #include <linux/irqflags.h> | 17 | #include <linux/irqflags.h> |
| 17 | 18 | ||
| @@ -193,10 +194,6 @@ extern __u64 __xchg_u64_unsupported_on_32bit_kernels(volatile __u64 * m, __u64 v | |||
| 193 | #define __xchg_u64 __xchg_u64_unsupported_on_32bit_kernels | 194 | #define __xchg_u64 __xchg_u64_unsupported_on_32bit_kernels |
| 194 | #endif | 195 | #endif |
| 195 | 196 | ||
| 196 | /* This function doesn't exist, so you'll get a linker error | ||
| 197 | if something tries to do an invalid xchg(). */ | ||
| 198 | extern void __xchg_called_with_bad_pointer(void); | ||
| 199 | |||
| 200 | static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int size) | 197 | static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int size) |
| 201 | { | 198 | { |
| 202 | switch (size) { | 199 | switch (size) { |
| @@ -205,11 +202,17 @@ static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int siz | |||
| 205 | case 8: | 202 | case 8: |
| 206 | return __xchg_u64(ptr, x); | 203 | return __xchg_u64(ptr, x); |
| 207 | } | 204 | } |
| 208 | __xchg_called_with_bad_pointer(); | 205 | |
| 209 | return x; | 206 | return x; |
| 210 | } | 207 | } |
| 211 | 208 | ||
| 212 | #define xchg(ptr, x) ((__typeof__(*(ptr)))__xchg((unsigned long)(x), (ptr), sizeof(*(ptr)))) | 209 | #define xchg(ptr, x) \ |
| 210 | ({ \ | ||
| 211 | BUILD_BUG_ON(sizeof(*(ptr)) & ~0xc); \ | ||
| 212 | \ | ||
| 213 | ((__typeof__(*(ptr))) \ | ||
| 214 | __xchg((unsigned long)(x), (ptr), sizeof(*(ptr)))); \ | ||
| 215 | }) | ||
| 213 | 216 | ||
| 214 | extern void set_handler(unsigned long offset, void *addr, unsigned long len); | 217 | extern void set_handler(unsigned long offset, void *addr, unsigned long len); |
| 215 | extern void set_uncached_handler(unsigned long offset, void *addr, unsigned long len); | 218 | extern void set_uncached_handler(unsigned long offset, void *addr, unsigned long len); |
diff --git a/arch/mips/include/asm/thread_info.h b/arch/mips/include/asm/thread_info.h index 01cc1630b66c..845da2107ed1 100644 --- a/arch/mips/include/asm/thread_info.h +++ b/arch/mips/include/asm/thread_info.h | |||
| @@ -86,14 +86,7 @@ register struct thread_info *__current_thread_info __asm__("$28"); | |||
| 86 | #define __HAVE_ARCH_THREAD_INFO_ALLOCATOR | 86 | #define __HAVE_ARCH_THREAD_INFO_ALLOCATOR |
| 87 | 87 | ||
| 88 | #ifdef CONFIG_DEBUG_STACK_USAGE | 88 | #ifdef CONFIG_DEBUG_STACK_USAGE |
| 89 | #define alloc_thread_info(tsk) \ | 89 | #define alloc_thread_info(tsk) kzalloc(THREAD_SIZE, GFP_KERNEL) |
| 90 | ({ \ | ||
| 91 | struct thread_info *ret; \ | ||
| 92 | \ | ||
| 93 | ret = kzalloc(THREAD_SIZE, GFP_KERNEL); \ | ||
| 94 | \ | ||
| 95 | ret; \ | ||
| 96 | }) | ||
| 97 | #else | 90 | #else |
| 98 | #define alloc_thread_info(tsk) kmalloc(THREAD_SIZE, GFP_KERNEL) | 91 | #define alloc_thread_info(tsk) kmalloc(THREAD_SIZE, GFP_KERNEL) |
| 99 | #endif | 92 | #endif |
