diff options
Diffstat (limited to 'arch')
1068 files changed, 6755 insertions, 6427 deletions
diff --git a/arch/alpha/boot/bootp.c b/arch/alpha/boot/bootp.c index be61670d4096..2a542a506557 100644 --- a/arch/alpha/boot/bootp.c +++ b/arch/alpha/boot/bootp.c | |||
@@ -13,7 +13,6 @@ | |||
13 | #include <generated/utsrelease.h> | 13 | #include <generated/utsrelease.h> |
14 | #include <linux/mm.h> | 14 | #include <linux/mm.h> |
15 | 15 | ||
16 | #include <asm/system.h> | ||
17 | #include <asm/console.h> | 16 | #include <asm/console.h> |
18 | #include <asm/hwrpb.h> | 17 | #include <asm/hwrpb.h> |
19 | #include <asm/pgtable.h> | 18 | #include <asm/pgtable.h> |
diff --git a/arch/alpha/boot/bootpz.c b/arch/alpha/boot/bootpz.c index c98865f21423..d6ad191698da 100644 --- a/arch/alpha/boot/bootpz.c +++ b/arch/alpha/boot/bootpz.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <generated/utsrelease.h> | 15 | #include <generated/utsrelease.h> |
16 | #include <linux/mm.h> | 16 | #include <linux/mm.h> |
17 | 17 | ||
18 | #include <asm/system.h> | ||
19 | #include <asm/console.h> | 18 | #include <asm/console.h> |
20 | #include <asm/hwrpb.h> | 19 | #include <asm/hwrpb.h> |
21 | #include <asm/pgtable.h> | 20 | #include <asm/pgtable.h> |
diff --git a/arch/alpha/boot/head.S b/arch/alpha/boot/head.S index f3d98089b3dc..b06812bcac83 100644 --- a/arch/alpha/boot/head.S +++ b/arch/alpha/boot/head.S | |||
@@ -4,7 +4,6 @@ | |||
4 | * initial bootloader stuff.. | 4 | * initial bootloader stuff.. |
5 | */ | 5 | */ |
6 | 6 | ||
7 | #include <asm/system.h> | ||
8 | 7 | ||
9 | .set noreorder | 8 | .set noreorder |
10 | .globl __start | 9 | .globl __start |
diff --git a/arch/alpha/boot/main.c b/arch/alpha/boot/main.c index ded57d9a80e1..3baf2d1e908d 100644 --- a/arch/alpha/boot/main.c +++ b/arch/alpha/boot/main.c | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <generated/utsrelease.h> | 11 | #include <generated/utsrelease.h> |
12 | #include <linux/mm.h> | 12 | #include <linux/mm.h> |
13 | 13 | ||
14 | #include <asm/system.h> | ||
15 | #include <asm/console.h> | 14 | #include <asm/console.h> |
16 | #include <asm/hwrpb.h> | 15 | #include <asm/hwrpb.h> |
17 | #include <asm/pgtable.h> | 16 | #include <asm/pgtable.h> |
diff --git a/arch/alpha/include/asm/atomic.h b/arch/alpha/include/asm/atomic.h index 640f909ddd41..f62251e82ffa 100644 --- a/arch/alpha/include/asm/atomic.h +++ b/arch/alpha/include/asm/atomic.h | |||
@@ -3,7 +3,6 @@ | |||
3 | 3 | ||
4 | #include <linux/types.h> | 4 | #include <linux/types.h> |
5 | #include <asm/barrier.h> | 5 | #include <asm/barrier.h> |
6 | #include <asm/system.h> | ||
7 | 6 | ||
8 | /* | 7 | /* |
9 | * Atomic operations that C can't guarantee us. Useful for | 8 | * Atomic operations that C can't guarantee us. Useful for |
@@ -169,6 +168,73 @@ static __inline__ long atomic64_sub_return(long i, atomic64_t * v) | |||
169 | return result; | 168 | return result; |
170 | } | 169 | } |
171 | 170 | ||
171 | /* | ||
172 | * Atomic exchange routines. | ||
173 | */ | ||
174 | |||
175 | #define __ASM__MB | ||
176 | #define ____xchg(type, args...) __xchg ## type ## _local(args) | ||
177 | #define ____cmpxchg(type, args...) __cmpxchg ## type ## _local(args) | ||
178 | #include <asm/xchg.h> | ||
179 | |||
180 | #define xchg_local(ptr,x) \ | ||
181 | ({ \ | ||
182 | __typeof__(*(ptr)) _x_ = (x); \ | ||
183 | (__typeof__(*(ptr))) __xchg_local((ptr), (unsigned long)_x_, \ | ||
184 | sizeof(*(ptr))); \ | ||
185 | }) | ||
186 | |||
187 | #define cmpxchg_local(ptr, o, n) \ | ||
188 | ({ \ | ||
189 | __typeof__(*(ptr)) _o_ = (o); \ | ||
190 | __typeof__(*(ptr)) _n_ = (n); \ | ||
191 | (__typeof__(*(ptr))) __cmpxchg_local((ptr), (unsigned long)_o_, \ | ||
192 | (unsigned long)_n_, \ | ||
193 | sizeof(*(ptr))); \ | ||
194 | }) | ||
195 | |||
196 | #define cmpxchg64_local(ptr, o, n) \ | ||
197 | ({ \ | ||
198 | BUILD_BUG_ON(sizeof(*(ptr)) != 8); \ | ||
199 | cmpxchg_local((ptr), (o), (n)); \ | ||
200 | }) | ||
201 | |||
202 | #ifdef CONFIG_SMP | ||
203 | #undef __ASM__MB | ||
204 | #define __ASM__MB "\tmb\n" | ||
205 | #endif | ||
206 | #undef ____xchg | ||
207 | #undef ____cmpxchg | ||
208 | #define ____xchg(type, args...) __xchg ##type(args) | ||
209 | #define ____cmpxchg(type, args...) __cmpxchg ##type(args) | ||
210 | #include <asm/xchg.h> | ||
211 | |||
212 | #define xchg(ptr,x) \ | ||
213 | ({ \ | ||
214 | __typeof__(*(ptr)) _x_ = (x); \ | ||
215 | (__typeof__(*(ptr))) __xchg((ptr), (unsigned long)_x_, \ | ||
216 | sizeof(*(ptr))); \ | ||
217 | }) | ||
218 | |||
219 | #define cmpxchg(ptr, o, n) \ | ||
220 | ({ \ | ||
221 | __typeof__(*(ptr)) _o_ = (o); \ | ||
222 | __typeof__(*(ptr)) _n_ = (n); \ | ||
223 | (__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_, \ | ||
224 | (unsigned long)_n_, sizeof(*(ptr)));\ | ||
225 | }) | ||
226 | |||
227 | #define cmpxchg64(ptr, o, n) \ | ||
228 | ({ \ | ||
229 | BUILD_BUG_ON(sizeof(*(ptr)) != 8); \ | ||
230 | cmpxchg((ptr), (o), (n)); \ | ||
231 | }) | ||
232 | |||
233 | #undef __ASM__MB | ||
234 | #undef ____cmpxchg | ||
235 | |||
236 | #define __HAVE_ARCH_CMPXCHG 1 | ||
237 | |||
172 | #define atomic64_cmpxchg(v, old, new) (cmpxchg(&((v)->counter), old, new)) | 238 | #define atomic64_cmpxchg(v, old, new) (cmpxchg(&((v)->counter), old, new)) |
173 | #define atomic64_xchg(v, new) (xchg(&((v)->counter), new)) | 239 | #define atomic64_xchg(v, new) (xchg(&((v)->counter), new)) |
174 | 240 | ||
diff --git a/arch/alpha/include/asm/auxvec.h b/arch/alpha/include/asm/auxvec.h index e96fe880e310..a3a579dfdb4d 100644 --- a/arch/alpha/include/asm/auxvec.h +++ b/arch/alpha/include/asm/auxvec.h | |||
@@ -21,4 +21,6 @@ | |||
21 | #define AT_L2_CACHESHAPE 36 | 21 | #define AT_L2_CACHESHAPE 36 |
22 | #define AT_L3_CACHESHAPE 37 | 22 | #define AT_L3_CACHESHAPE 37 |
23 | 23 | ||
24 | #define AT_VECTOR_SIZE_ARCH 4 /* entries in ARCH_DLINFO */ | ||
25 | |||
24 | #endif /* __ASM_ALPHA_AUXVEC_H */ | 26 | #endif /* __ASM_ALPHA_AUXVEC_H */ |
diff --git a/arch/alpha/include/asm/core_lca.h b/arch/alpha/include/asm/core_lca.h index f7cb4b460954..8ee6c516279c 100644 --- a/arch/alpha/include/asm/core_lca.h +++ b/arch/alpha/include/asm/core_lca.h | |||
@@ -1,8 +1,8 @@ | |||
1 | #ifndef __ALPHA_LCA__H__ | 1 | #ifndef __ALPHA_LCA__H__ |
2 | #define __ALPHA_LCA__H__ | 2 | #define __ALPHA_LCA__H__ |
3 | 3 | ||
4 | #include <asm/system.h> | ||
5 | #include <asm/compiler.h> | 4 | #include <asm/compiler.h> |
5 | #include <asm/mce.h> | ||
6 | 6 | ||
7 | /* | 7 | /* |
8 | * Low Cost Alpha (LCA) definitions (these apply to 21066 and 21068, | 8 | * Low Cost Alpha (LCA) definitions (these apply to 21066 and 21068, |
diff --git a/arch/alpha/include/asm/core_mcpcia.h b/arch/alpha/include/asm/core_mcpcia.h index 9f67a056b461..ad44bef29fba 100644 --- a/arch/alpha/include/asm/core_mcpcia.h +++ b/arch/alpha/include/asm/core_mcpcia.h | |||
@@ -7,6 +7,7 @@ | |||
7 | 7 | ||
8 | #include <linux/types.h> | 8 | #include <linux/types.h> |
9 | #include <asm/compiler.h> | 9 | #include <asm/compiler.h> |
10 | #include <asm/mce.h> | ||
10 | 11 | ||
11 | /* | 12 | /* |
12 | * MCPCIA is the internal name for a core logic chipset which provides | 13 | * MCPCIA is the internal name for a core logic chipset which provides |
diff --git a/arch/alpha/include/asm/core_t2.h b/arch/alpha/include/asm/core_t2.h index 91b46801b290..ade9d92e68b4 100644 --- a/arch/alpha/include/asm/core_t2.h +++ b/arch/alpha/include/asm/core_t2.h | |||
@@ -7,7 +7,6 @@ | |||
7 | #include <linux/types.h> | 7 | #include <linux/types.h> |
8 | #include <linux/spinlock.h> | 8 | #include <linux/spinlock.h> |
9 | #include <asm/compiler.h> | 9 | #include <asm/compiler.h> |
10 | #include <asm/system.h> | ||
11 | 10 | ||
12 | /* | 11 | /* |
13 | * T2 is the internal name for the core logic chipset which provides | 12 | * T2 is the internal name for the core logic chipset which provides |
diff --git a/arch/alpha/include/asm/elf.h b/arch/alpha/include/asm/elf.h index da5449e22175..968d9991f5ee 100644 --- a/arch/alpha/include/asm/elf.h +++ b/arch/alpha/include/asm/elf.h | |||
@@ -2,6 +2,7 @@ | |||
2 | #define __ASM_ALPHA_ELF_H | 2 | #define __ASM_ALPHA_ELF_H |
3 | 3 | ||
4 | #include <asm/auxvec.h> | 4 | #include <asm/auxvec.h> |
5 | #include <asm/special_insns.h> | ||
5 | 6 | ||
6 | /* Special values for the st_other field in the symbol table. */ | 7 | /* Special values for the st_other field in the symbol table. */ |
7 | 8 | ||
diff --git a/arch/alpha/include/asm/exec.h b/arch/alpha/include/asm/exec.h new file mode 100644 index 000000000000..4a5a41f30779 --- /dev/null +++ b/arch/alpha/include/asm/exec.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __ALPHA_EXEC_H | ||
2 | #define __ALPHA_EXEC_H | ||
3 | |||
4 | #define arch_align_stack(x) (x) | ||
5 | |||
6 | #endif /* __ALPHA_EXEC_H */ | ||
diff --git a/arch/alpha/include/asm/fpu.h b/arch/alpha/include/asm/fpu.h index ecb17a72acc3..db00f7885faa 100644 --- a/arch/alpha/include/asm/fpu.h +++ b/arch/alpha/include/asm/fpu.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef __ASM_ALPHA_FPU_H | 1 | #ifndef __ASM_ALPHA_FPU_H |
2 | #define __ASM_ALPHA_FPU_H | 2 | #define __ASM_ALPHA_FPU_H |
3 | 3 | ||
4 | #include <asm/special_insns.h> | ||
5 | |||
4 | /* | 6 | /* |
5 | * Alpha floating-point control register defines: | 7 | * Alpha floating-point control register defines: |
6 | */ | 8 | */ |
diff --git a/arch/alpha/include/asm/io.h b/arch/alpha/include/asm/io.h index 56ff96501350..7a3d38d5ed6b 100644 --- a/arch/alpha/include/asm/io.h +++ b/arch/alpha/include/asm/io.h | |||
@@ -6,7 +6,6 @@ | |||
6 | #include <linux/kernel.h> | 6 | #include <linux/kernel.h> |
7 | #include <linux/mm.h> | 7 | #include <linux/mm.h> |
8 | #include <asm/compiler.h> | 8 | #include <asm/compiler.h> |
9 | #include <asm/system.h> | ||
10 | #include <asm/pgtable.h> | 9 | #include <asm/pgtable.h> |
11 | #include <asm/machvec.h> | 10 | #include <asm/machvec.h> |
12 | #include <asm/hwrpb.h> | 11 | #include <asm/hwrpb.h> |
diff --git a/arch/alpha/include/asm/irqflags.h b/arch/alpha/include/asm/irqflags.h index 299bbc7e9d71..ffb1726484af 100644 --- a/arch/alpha/include/asm/irqflags.h +++ b/arch/alpha/include/asm/irqflags.h | |||
@@ -1,7 +1,7 @@ | |||
1 | #ifndef __ALPHA_IRQFLAGS_H | 1 | #ifndef __ALPHA_IRQFLAGS_H |
2 | #define __ALPHA_IRQFLAGS_H | 2 | #define __ALPHA_IRQFLAGS_H |
3 | 3 | ||
4 | #include <asm/system.h> | 4 | #include <asm/pal.h> |
5 | 5 | ||
6 | #define IPL_MIN 0 | 6 | #define IPL_MIN 0 |
7 | #define IPL_SW0 1 | 7 | #define IPL_SW0 1 |
diff --git a/arch/alpha/include/asm/mce.h b/arch/alpha/include/asm/mce.h new file mode 100644 index 000000000000..660285b9aca8 --- /dev/null +++ b/arch/alpha/include/asm/mce.h | |||
@@ -0,0 +1,83 @@ | |||
1 | #ifndef __ALPHA_MCE_H | ||
2 | #define __ALPHA_MCE_H | ||
3 | |||
4 | /* | ||
5 | * This is the logout header that should be common to all platforms | ||
6 | * (assuming they are running OSF/1 PALcode, I guess). | ||
7 | */ | ||
8 | struct el_common { | ||
9 | unsigned int size; /* size in bytes of logout area */ | ||
10 | unsigned int sbz1 : 30; /* should be zero */ | ||
11 | unsigned int err2 : 1; /* second error */ | ||
12 | unsigned int retry : 1; /* retry flag */ | ||
13 | unsigned int proc_offset; /* processor-specific offset */ | ||
14 | unsigned int sys_offset; /* system-specific offset */ | ||
15 | unsigned int code; /* machine check code */ | ||
16 | unsigned int frame_rev; /* frame revision */ | ||
17 | }; | ||
18 | |||
19 | /* Machine Check Frame for uncorrectable errors (Large format) | ||
20 | * --- This is used to log uncorrectable errors such as | ||
21 | * double bit ECC errors. | ||
22 | * --- These errors are detected by both processor and systems. | ||
23 | */ | ||
24 | struct el_common_EV5_uncorrectable_mcheck { | ||
25 | unsigned long shadow[8]; /* Shadow reg. 8-14, 25 */ | ||
26 | unsigned long paltemp[24]; /* PAL TEMP REGS. */ | ||
27 | unsigned long exc_addr; /* Address of excepting instruction*/ | ||
28 | unsigned long exc_sum; /* Summary of arithmetic traps. */ | ||
29 | unsigned long exc_mask; /* Exception mask (from exc_sum). */ | ||
30 | unsigned long pal_base; /* Base address for PALcode. */ | ||
31 | unsigned long isr; /* Interrupt Status Reg. */ | ||
32 | unsigned long icsr; /* CURRENT SETUP OF EV5 IBOX */ | ||
33 | unsigned long ic_perr_stat; /* I-CACHE Reg. <11> set Data parity | ||
34 | <12> set TAG parity*/ | ||
35 | unsigned long dc_perr_stat; /* D-CACHE error Reg. Bits set to 1: | ||
36 | <2> Data error in bank 0 | ||
37 | <3> Data error in bank 1 | ||
38 | <4> Tag error in bank 0 | ||
39 | <5> Tag error in bank 1 */ | ||
40 | unsigned long va; /* Effective VA of fault or miss. */ | ||
41 | unsigned long mm_stat; /* Holds the reason for D-stream | ||
42 | fault or D-cache parity errors */ | ||
43 | unsigned long sc_addr; /* Address that was being accessed | ||
44 | when EV5 detected Secondary cache | ||
45 | failure. */ | ||
46 | unsigned long sc_stat; /* Helps determine if the error was | ||
47 | TAG/Data parity(Secondary Cache)*/ | ||
48 | unsigned long bc_tag_addr; /* Contents of EV5 BC_TAG_ADDR */ | ||
49 | unsigned long ei_addr; /* Physical address of any transfer | ||
50 | that is logged in EV5 EI_STAT */ | ||
51 | unsigned long fill_syndrome; /* For correcting ECC errors. */ | ||
52 | unsigned long ei_stat; /* Helps identify reason of any | ||
53 | processor uncorrectable error | ||
54 | at its external interface. */ | ||
55 | unsigned long ld_lock; /* Contents of EV5 LD_LOCK register*/ | ||
56 | }; | ||
57 | |||
58 | struct el_common_EV6_mcheck { | ||
59 | unsigned int FrameSize; /* Bytes, including this field */ | ||
60 | unsigned int FrameFlags; /* <31> = Retry, <30> = Second Error */ | ||
61 | unsigned int CpuOffset; /* Offset to CPU-specific info */ | ||
62 | unsigned int SystemOffset; /* Offset to system-specific info */ | ||
63 | unsigned int MCHK_Code; | ||
64 | unsigned int MCHK_Frame_Rev; | ||
65 | unsigned long I_STAT; /* EV6 Internal Processor Registers */ | ||
66 | unsigned long DC_STAT; /* (See the 21264 Spec) */ | ||
67 | unsigned long C_ADDR; | ||
68 | unsigned long DC1_SYNDROME; | ||
69 | unsigned long DC0_SYNDROME; | ||
70 | unsigned long C_STAT; | ||
71 | unsigned long C_STS; | ||
72 | unsigned long MM_STAT; | ||
73 | unsigned long EXC_ADDR; | ||
74 | unsigned long IER_CM; | ||
75 | unsigned long ISUM; | ||
76 | unsigned long RESERVED0; | ||
77 | unsigned long PAL_BASE; | ||
78 | unsigned long I_CTL; | ||
79 | unsigned long PCTX; | ||
80 | }; | ||
81 | |||
82 | |||
83 | #endif /* __ALPHA_MCE_H */ | ||
diff --git a/arch/alpha/include/asm/mmu_context.h b/arch/alpha/include/asm/mmu_context.h index 86c08a02d239..4c51c05333c6 100644 --- a/arch/alpha/include/asm/mmu_context.h +++ b/arch/alpha/include/asm/mmu_context.h | |||
@@ -7,7 +7,6 @@ | |||
7 | * Copyright (C) 1996, Linus Torvalds | 7 | * Copyright (C) 1996, Linus Torvalds |
8 | */ | 8 | */ |
9 | 9 | ||
10 | #include <asm/system.h> | ||
11 | #include <asm/machvec.h> | 10 | #include <asm/machvec.h> |
12 | #include <asm/compiler.h> | 11 | #include <asm/compiler.h> |
13 | #include <asm-generic/mm_hooks.h> | 12 | #include <asm-generic/mm_hooks.h> |
diff --git a/arch/alpha/include/asm/pal.h b/arch/alpha/include/asm/pal.h index 9b4ba0d6f00b..6699ee583429 100644 --- a/arch/alpha/include/asm/pal.h +++ b/arch/alpha/include/asm/pal.h | |||
@@ -48,4 +48,116 @@ | |||
48 | #define PAL_retsys 61 | 48 | #define PAL_retsys 61 |
49 | #define PAL_rti 63 | 49 | #define PAL_rti 63 |
50 | 50 | ||
51 | #ifdef __KERNEL__ | ||
52 | #ifndef __ASSEMBLY__ | ||
53 | |||
54 | extern void halt(void) __attribute__((noreturn)); | ||
55 | #define __halt() __asm__ __volatile__ ("call_pal %0 #halt" : : "i" (PAL_halt)) | ||
56 | |||
57 | #define imb() \ | ||
58 | __asm__ __volatile__ ("call_pal %0 #imb" : : "i" (PAL_imb) : "memory") | ||
59 | |||
60 | #define draina() \ | ||
61 | __asm__ __volatile__ ("call_pal %0 #draina" : : "i" (PAL_draina) : "memory") | ||
62 | |||
63 | #define __CALL_PAL_R0(NAME, TYPE) \ | ||
64 | extern inline TYPE NAME(void) \ | ||
65 | { \ | ||
66 | register TYPE __r0 __asm__("$0"); \ | ||
67 | __asm__ __volatile__( \ | ||
68 | "call_pal %1 # " #NAME \ | ||
69 | :"=r" (__r0) \ | ||
70 | :"i" (PAL_ ## NAME) \ | ||
71 | :"$1", "$16", "$22", "$23", "$24", "$25"); \ | ||
72 | return __r0; \ | ||
73 | } | ||
74 | |||
75 | #define __CALL_PAL_W1(NAME, TYPE0) \ | ||
76 | extern inline void NAME(TYPE0 arg0) \ | ||
77 | { \ | ||
78 | register TYPE0 __r16 __asm__("$16") = arg0; \ | ||
79 | __asm__ __volatile__( \ | ||
80 | "call_pal %1 # "#NAME \ | ||
81 | : "=r"(__r16) \ | ||
82 | : "i"(PAL_ ## NAME), "0"(__r16) \ | ||
83 | : "$1", "$22", "$23", "$24", "$25"); \ | ||
84 | } | ||
85 | |||
86 | #define __CALL_PAL_W2(NAME, TYPE0, TYPE1) \ | ||
87 | extern inline void NAME(TYPE0 arg0, TYPE1 arg1) \ | ||
88 | { \ | ||
89 | register TYPE0 __r16 __asm__("$16") = arg0; \ | ||
90 | register TYPE1 __r17 __asm__("$17") = arg1; \ | ||
91 | __asm__ __volatile__( \ | ||
92 | "call_pal %2 # "#NAME \ | ||
93 | : "=r"(__r16), "=r"(__r17) \ | ||
94 | : "i"(PAL_ ## NAME), "0"(__r16), "1"(__r17) \ | ||
95 | : "$1", "$22", "$23", "$24", "$25"); \ | ||
96 | } | ||
97 | |||
98 | #define __CALL_PAL_RW1(NAME, RTYPE, TYPE0) \ | ||
99 | extern inline RTYPE NAME(TYPE0 arg0) \ | ||
100 | { \ | ||
101 | register RTYPE __r0 __asm__("$0"); \ | ||
102 | register TYPE0 __r16 __asm__("$16") = arg0; \ | ||
103 | __asm__ __volatile__( \ | ||
104 | "call_pal %2 # "#NAME \ | ||
105 | : "=r"(__r16), "=r"(__r0) \ | ||
106 | : "i"(PAL_ ## NAME), "0"(__r16) \ | ||
107 | : "$1", "$22", "$23", "$24", "$25"); \ | ||
108 | return __r0; \ | ||
109 | } | ||
110 | |||
111 | #define __CALL_PAL_RW2(NAME, RTYPE, TYPE0, TYPE1) \ | ||
112 | extern inline RTYPE NAME(TYPE0 arg0, TYPE1 arg1) \ | ||
113 | { \ | ||
114 | register RTYPE __r0 __asm__("$0"); \ | ||
115 | register TYPE0 __r16 __asm__("$16") = arg0; \ | ||
116 | register TYPE1 __r17 __asm__("$17") = arg1; \ | ||
117 | __asm__ __volatile__( \ | ||
118 | "call_pal %3 # "#NAME \ | ||
119 | : "=r"(__r16), "=r"(__r17), "=r"(__r0) \ | ||
120 | : "i"(PAL_ ## NAME), "0"(__r16), "1"(__r17) \ | ||
121 | : "$1", "$22", "$23", "$24", "$25"); \ | ||
122 | return __r0; \ | ||
123 | } | ||
124 | |||
125 | __CALL_PAL_W1(cflush, unsigned long); | ||
126 | __CALL_PAL_R0(rdmces, unsigned long); | ||
127 | __CALL_PAL_R0(rdps, unsigned long); | ||
128 | __CALL_PAL_R0(rdusp, unsigned long); | ||
129 | __CALL_PAL_RW1(swpipl, unsigned long, unsigned long); | ||
130 | __CALL_PAL_R0(whami, unsigned long); | ||
131 | __CALL_PAL_W2(wrent, void*, unsigned long); | ||
132 | __CALL_PAL_W1(wripir, unsigned long); | ||
133 | __CALL_PAL_W1(wrkgp, unsigned long); | ||
134 | __CALL_PAL_W1(wrmces, unsigned long); | ||
135 | __CALL_PAL_RW2(wrperfmon, unsigned long, unsigned long, unsigned long); | ||
136 | __CALL_PAL_W1(wrusp, unsigned long); | ||
137 | __CALL_PAL_W1(wrvptptr, unsigned long); | ||
138 | |||
139 | /* | ||
140 | * TB routines.. | ||
141 | */ | ||
142 | #define __tbi(nr,arg,arg1...) \ | ||
143 | ({ \ | ||
144 | register unsigned long __r16 __asm__("$16") = (nr); \ | ||
145 | register unsigned long __r17 __asm__("$17"); arg; \ | ||
146 | __asm__ __volatile__( \ | ||
147 | "call_pal %3 #__tbi" \ | ||
148 | :"=r" (__r16),"=r" (__r17) \ | ||
149 | :"0" (__r16),"i" (PAL_tbi) ,##arg1 \ | ||
150 | :"$0", "$1", "$22", "$23", "$24", "$25"); \ | ||
151 | }) | ||
152 | |||
153 | #define tbi(x,y) __tbi(x,__r17=(y),"1" (__r17)) | ||
154 | #define tbisi(x) __tbi(1,__r17=(x),"1" (__r17)) | ||
155 | #define tbisd(x) __tbi(2,__r17=(x),"1" (__r17)) | ||
156 | #define tbis(x) __tbi(3,__r17=(x),"1" (__r17)) | ||
157 | #define tbiap() __tbi(-1, /* no second argument */) | ||
158 | #define tbia() __tbi(-2, /* no second argument */) | ||
159 | |||
160 | #endif /* !__ASSEMBLY__ */ | ||
161 | #endif /* __KERNEL__ */ | ||
162 | |||
51 | #endif /* __ALPHA_PAL_H */ | 163 | #endif /* __ALPHA_PAL_H */ |
diff --git a/arch/alpha/include/asm/pgtable.h b/arch/alpha/include/asm/pgtable.h index de98a732683d..81a4342d5a3f 100644 --- a/arch/alpha/include/asm/pgtable.h +++ b/arch/alpha/include/asm/pgtable.h | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <asm/page.h> | 15 | #include <asm/page.h> |
16 | #include <asm/processor.h> /* For TASK_SIZE */ | 16 | #include <asm/processor.h> /* For TASK_SIZE */ |
17 | #include <asm/machvec.h> | 17 | #include <asm/machvec.h> |
18 | #include <asm/setup.h> | ||
18 | 19 | ||
19 | struct mm_struct; | 20 | struct mm_struct; |
20 | struct vm_area_struct; | 21 | struct vm_area_struct; |
diff --git a/arch/alpha/include/asm/setup.h b/arch/alpha/include/asm/setup.h index 2e023a4aa317..b50014b30909 100644 --- a/arch/alpha/include/asm/setup.h +++ b/arch/alpha/include/asm/setup.h | |||
@@ -3,4 +3,40 @@ | |||
3 | 3 | ||
4 | #define COMMAND_LINE_SIZE 256 | 4 | #define COMMAND_LINE_SIZE 256 |
5 | 5 | ||
6 | /* | ||
7 | * We leave one page for the initial stack page, and one page for | ||
8 | * the initial process structure. Also, the console eats 3 MB for | ||
9 | * the initial bootloader (one of which we can reclaim later). | ||
10 | */ | ||
11 | #define BOOT_PCB 0x20000000 | ||
12 | #define BOOT_ADDR 0x20000000 | ||
13 | /* Remove when official MILO sources have ELF support: */ | ||
14 | #define BOOT_SIZE (16*1024) | ||
15 | |||
16 | #ifdef CONFIG_ALPHA_LEGACY_START_ADDRESS | ||
17 | #define KERNEL_START_PHYS 0x300000 /* Old bootloaders hardcoded this. */ | ||
18 | #else | ||
19 | #define KERNEL_START_PHYS 0x1000000 /* required: Wildfire/Titan/Marvel */ | ||
20 | #endif | ||
21 | |||
22 | #define KERNEL_START (PAGE_OFFSET+KERNEL_START_PHYS) | ||
23 | #define SWAPPER_PGD KERNEL_START | ||
24 | #define INIT_STACK (PAGE_OFFSET+KERNEL_START_PHYS+0x02000) | ||
25 | #define EMPTY_PGT (PAGE_OFFSET+KERNEL_START_PHYS+0x04000) | ||
26 | #define EMPTY_PGE (PAGE_OFFSET+KERNEL_START_PHYS+0x08000) | ||
27 | #define ZERO_PGE (PAGE_OFFSET+KERNEL_START_PHYS+0x0A000) | ||
28 | |||
29 | #define START_ADDR (PAGE_OFFSET+KERNEL_START_PHYS+0x10000) | ||
30 | |||
31 | /* | ||
32 | * This is setup by the secondary bootstrap loader. Because | ||
33 | * the zero page is zeroed out as soon as the vm system is | ||
34 | * initialized, we need to copy things out into a more permanent | ||
35 | * place. | ||
36 | */ | ||
37 | #define PARAM ZERO_PGE | ||
38 | #define COMMAND_LINE ((char*)(PARAM + 0x0000)) | ||
39 | #define INITRD_START (*(unsigned long *) (PARAM+0x100)) | ||
40 | #define INITRD_SIZE (*(unsigned long *) (PARAM+0x108)) | ||
41 | |||
6 | #endif | 42 | #endif |
diff --git a/arch/alpha/include/asm/special_insns.h b/arch/alpha/include/asm/special_insns.h new file mode 100644 index 000000000000..88d3452b21f0 --- /dev/null +++ b/arch/alpha/include/asm/special_insns.h | |||
@@ -0,0 +1,41 @@ | |||
1 | #ifndef __ALPHA_SPECIAL_INSNS_H | ||
2 | #define __ALPHA_SPECIAL_INSNS_H | ||
3 | |||
4 | enum implver_enum { | ||
5 | IMPLVER_EV4, | ||
6 | IMPLVER_EV5, | ||
7 | IMPLVER_EV6 | ||
8 | }; | ||
9 | |||
10 | #ifdef CONFIG_ALPHA_GENERIC | ||
11 | #define implver() \ | ||
12 | ({ unsigned long __implver; \ | ||
13 | __asm__ ("implver %0" : "=r"(__implver)); \ | ||
14 | (enum implver_enum) __implver; }) | ||
15 | #else | ||
16 | /* Try to eliminate some dead code. */ | ||
17 | #ifdef CONFIG_ALPHA_EV4 | ||
18 | #define implver() IMPLVER_EV4 | ||
19 | #endif | ||
20 | #ifdef CONFIG_ALPHA_EV5 | ||
21 | #define implver() IMPLVER_EV5 | ||
22 | #endif | ||
23 | #if defined(CONFIG_ALPHA_EV6) | ||
24 | #define implver() IMPLVER_EV6 | ||
25 | #endif | ||
26 | #endif | ||
27 | |||
28 | enum amask_enum { | ||
29 | AMASK_BWX = (1UL << 0), | ||
30 | AMASK_FIX = (1UL << 1), | ||
31 | AMASK_CIX = (1UL << 2), | ||
32 | AMASK_MAX = (1UL << 8), | ||
33 | AMASK_PRECISE_TRAP = (1UL << 9), | ||
34 | }; | ||
35 | |||
36 | #define amask(mask) \ | ||
37 | ({ unsigned long __amask, __input = (mask); \ | ||
38 | __asm__ ("amask %1,%0" : "=r"(__amask) : "rI"(__input)); \ | ||
39 | __amask; }) | ||
40 | |||
41 | #endif /* __ALPHA_SPECIAL_INSNS_H */ | ||
diff --git a/arch/alpha/include/asm/spinlock.h b/arch/alpha/include/asm/spinlock.h index d0faca1e992d..3bba21e41b81 100644 --- a/arch/alpha/include/asm/spinlock.h +++ b/arch/alpha/include/asm/spinlock.h | |||
@@ -1,7 +1,6 @@ | |||
1 | #ifndef _ALPHA_SPINLOCK_H | 1 | #ifndef _ALPHA_SPINLOCK_H |
2 | #define _ALPHA_SPINLOCK_H | 2 | #define _ALPHA_SPINLOCK_H |
3 | 3 | ||
4 | #include <asm/system.h> | ||
5 | #include <linux/kernel.h> | 4 | #include <linux/kernel.h> |
6 | #include <asm/current.h> | 5 | #include <asm/current.h> |
7 | 6 | ||
diff --git a/arch/alpha/include/asm/switch_to.h b/arch/alpha/include/asm/switch_to.h new file mode 100644 index 000000000000..44c0d4f2c0b2 --- /dev/null +++ b/arch/alpha/include/asm/switch_to.h | |||
@@ -0,0 +1,14 @@ | |||
1 | #ifndef __ALPHA_SWITCH_TO_H | ||
2 | #define __ALPHA_SWITCH_TO_H | ||
3 | |||
4 | |||
5 | struct task_struct; | ||
6 | extern struct task_struct *alpha_switch_to(unsigned long, struct task_struct *); | ||
7 | |||
8 | #define switch_to(P,N,L) \ | ||
9 | do { \ | ||
10 | (L) = alpha_switch_to(virt_to_phys(&task_thread_info(N)->pcb), (P)); \ | ||
11 | check_mmu_context(); \ | ||
12 | } while (0) | ||
13 | |||
14 | #endif /* __ALPHA_SWITCH_TO_H */ | ||
diff --git a/arch/alpha/include/asm/system.h b/arch/alpha/include/asm/system.h deleted file mode 100644 index 9f78e6934637..000000000000 --- a/arch/alpha/include/asm/system.h +++ /dev/null | |||
@@ -1,354 +0,0 @@ | |||
1 | #ifndef __ALPHA_SYSTEM_H | ||
2 | #define __ALPHA_SYSTEM_H | ||
3 | |||
4 | #include <asm/pal.h> | ||
5 | #include <asm/page.h> | ||
6 | #include <asm/barrier.h> | ||
7 | |||
8 | /* | ||
9 | * System defines.. Note that this is included both from .c and .S | ||
10 | * files, so it does only defines, not any C code. | ||
11 | */ | ||
12 | |||
13 | /* | ||
14 | * We leave one page for the initial stack page, and one page for | ||
15 | * the initial process structure. Also, the console eats 3 MB for | ||
16 | * the initial bootloader (one of which we can reclaim later). | ||
17 | */ | ||
18 | #define BOOT_PCB 0x20000000 | ||
19 | #define BOOT_ADDR 0x20000000 | ||
20 | /* Remove when official MILO sources have ELF support: */ | ||
21 | #define BOOT_SIZE (16*1024) | ||
22 | |||
23 | #ifdef CONFIG_ALPHA_LEGACY_START_ADDRESS | ||
24 | #define KERNEL_START_PHYS 0x300000 /* Old bootloaders hardcoded this. */ | ||
25 | #else | ||
26 | #define KERNEL_START_PHYS 0x1000000 /* required: Wildfire/Titan/Marvel */ | ||
27 | #endif | ||
28 | |||
29 | #define KERNEL_START (PAGE_OFFSET+KERNEL_START_PHYS) | ||
30 | #define SWAPPER_PGD KERNEL_START | ||
31 | #define INIT_STACK (PAGE_OFFSET+KERNEL_START_PHYS+0x02000) | ||
32 | #define EMPTY_PGT (PAGE_OFFSET+KERNEL_START_PHYS+0x04000) | ||
33 | #define EMPTY_PGE (PAGE_OFFSET+KERNEL_START_PHYS+0x08000) | ||
34 | #define ZERO_PGE (PAGE_OFFSET+KERNEL_START_PHYS+0x0A000) | ||
35 | |||
36 | #define START_ADDR (PAGE_OFFSET+KERNEL_START_PHYS+0x10000) | ||
37 | |||
38 | /* | ||
39 | * This is setup by the secondary bootstrap loader. Because | ||
40 | * the zero page is zeroed out as soon as the vm system is | ||
41 | * initialized, we need to copy things out into a more permanent | ||
42 | * place. | ||
43 | */ | ||
44 | #define PARAM ZERO_PGE | ||
45 | #define COMMAND_LINE ((char*)(PARAM + 0x0000)) | ||
46 | #define INITRD_START (*(unsigned long *) (PARAM+0x100)) | ||
47 | #define INITRD_SIZE (*(unsigned long *) (PARAM+0x108)) | ||
48 | |||
49 | #ifndef __ASSEMBLY__ | ||
50 | #include <linux/kernel.h> | ||
51 | #define AT_VECTOR_SIZE_ARCH 4 /* entries in ARCH_DLINFO */ | ||
52 | |||
53 | /* | ||
54 | * This is the logout header that should be common to all platforms | ||
55 | * (assuming they are running OSF/1 PALcode, I guess). | ||
56 | */ | ||
57 | struct el_common { | ||
58 | unsigned int size; /* size in bytes of logout area */ | ||
59 | unsigned int sbz1 : 30; /* should be zero */ | ||
60 | unsigned int err2 : 1; /* second error */ | ||
61 | unsigned int retry : 1; /* retry flag */ | ||
62 | unsigned int proc_offset; /* processor-specific offset */ | ||
63 | unsigned int sys_offset; /* system-specific offset */ | ||
64 | unsigned int code; /* machine check code */ | ||
65 | unsigned int frame_rev; /* frame revision */ | ||
66 | }; | ||
67 | |||
68 | /* Machine Check Frame for uncorrectable errors (Large format) | ||
69 | * --- This is used to log uncorrectable errors such as | ||
70 | * double bit ECC errors. | ||
71 | * --- These errors are detected by both processor and systems. | ||
72 | */ | ||
73 | struct el_common_EV5_uncorrectable_mcheck { | ||
74 | unsigned long shadow[8]; /* Shadow reg. 8-14, 25 */ | ||
75 | unsigned long paltemp[24]; /* PAL TEMP REGS. */ | ||
76 | unsigned long exc_addr; /* Address of excepting instruction*/ | ||
77 | unsigned long exc_sum; /* Summary of arithmetic traps. */ | ||
78 | unsigned long exc_mask; /* Exception mask (from exc_sum). */ | ||
79 | unsigned long pal_base; /* Base address for PALcode. */ | ||
80 | unsigned long isr; /* Interrupt Status Reg. */ | ||
81 | unsigned long icsr; /* CURRENT SETUP OF EV5 IBOX */ | ||
82 | unsigned long ic_perr_stat; /* I-CACHE Reg. <11> set Data parity | ||
83 | <12> set TAG parity*/ | ||
84 | unsigned long dc_perr_stat; /* D-CACHE error Reg. Bits set to 1: | ||
85 | <2> Data error in bank 0 | ||
86 | <3> Data error in bank 1 | ||
87 | <4> Tag error in bank 0 | ||
88 | <5> Tag error in bank 1 */ | ||
89 | unsigned long va; /* Effective VA of fault or miss. */ | ||
90 | unsigned long mm_stat; /* Holds the reason for D-stream | ||
91 | fault or D-cache parity errors */ | ||
92 | unsigned long sc_addr; /* Address that was being accessed | ||
93 | when EV5 detected Secondary cache | ||
94 | failure. */ | ||
95 | unsigned long sc_stat; /* Helps determine if the error was | ||
96 | TAG/Data parity(Secondary Cache)*/ | ||
97 | unsigned long bc_tag_addr; /* Contents of EV5 BC_TAG_ADDR */ | ||
98 | unsigned long ei_addr; /* Physical address of any transfer | ||
99 | that is logged in EV5 EI_STAT */ | ||
100 | unsigned long fill_syndrome; /* For correcting ECC errors. */ | ||
101 | unsigned long ei_stat; /* Helps identify reason of any | ||
102 | processor uncorrectable error | ||
103 | at its external interface. */ | ||
104 | unsigned long ld_lock; /* Contents of EV5 LD_LOCK register*/ | ||
105 | }; | ||
106 | |||
107 | struct el_common_EV6_mcheck { | ||
108 | unsigned int FrameSize; /* Bytes, including this field */ | ||
109 | unsigned int FrameFlags; /* <31> = Retry, <30> = Second Error */ | ||
110 | unsigned int CpuOffset; /* Offset to CPU-specific info */ | ||
111 | unsigned int SystemOffset; /* Offset to system-specific info */ | ||
112 | unsigned int MCHK_Code; | ||
113 | unsigned int MCHK_Frame_Rev; | ||
114 | unsigned long I_STAT; /* EV6 Internal Processor Registers */ | ||
115 | unsigned long DC_STAT; /* (See the 21264 Spec) */ | ||
116 | unsigned long C_ADDR; | ||
117 | unsigned long DC1_SYNDROME; | ||
118 | unsigned long DC0_SYNDROME; | ||
119 | unsigned long C_STAT; | ||
120 | unsigned long C_STS; | ||
121 | unsigned long MM_STAT; | ||
122 | unsigned long EXC_ADDR; | ||
123 | unsigned long IER_CM; | ||
124 | unsigned long ISUM; | ||
125 | unsigned long RESERVED0; | ||
126 | unsigned long PAL_BASE; | ||
127 | unsigned long I_CTL; | ||
128 | unsigned long PCTX; | ||
129 | }; | ||
130 | |||
131 | extern void halt(void) __attribute__((noreturn)); | ||
132 | #define __halt() __asm__ __volatile__ ("call_pal %0 #halt" : : "i" (PAL_halt)) | ||
133 | |||
134 | #define switch_to(P,N,L) \ | ||
135 | do { \ | ||
136 | (L) = alpha_switch_to(virt_to_phys(&task_thread_info(N)->pcb), (P)); \ | ||
137 | check_mmu_context(); \ | ||
138 | } while (0) | ||
139 | |||
140 | struct task_struct; | ||
141 | extern struct task_struct *alpha_switch_to(unsigned long, struct task_struct*); | ||
142 | |||
143 | #define imb() \ | ||
144 | __asm__ __volatile__ ("call_pal %0 #imb" : : "i" (PAL_imb) : "memory") | ||
145 | |||
146 | #define draina() \ | ||
147 | __asm__ __volatile__ ("call_pal %0 #draina" : : "i" (PAL_draina) : "memory") | ||
148 | |||
149 | enum implver_enum { | ||
150 | IMPLVER_EV4, | ||
151 | IMPLVER_EV5, | ||
152 | IMPLVER_EV6 | ||
153 | }; | ||
154 | |||
155 | #ifdef CONFIG_ALPHA_GENERIC | ||
156 | #define implver() \ | ||
157 | ({ unsigned long __implver; \ | ||
158 | __asm__ ("implver %0" : "=r"(__implver)); \ | ||
159 | (enum implver_enum) __implver; }) | ||
160 | #else | ||
161 | /* Try to eliminate some dead code. */ | ||
162 | #ifdef CONFIG_ALPHA_EV4 | ||
163 | #define implver() IMPLVER_EV4 | ||
164 | #endif | ||
165 | #ifdef CONFIG_ALPHA_EV5 | ||
166 | #define implver() IMPLVER_EV5 | ||
167 | #endif | ||
168 | #if defined(CONFIG_ALPHA_EV6) | ||
169 | #define implver() IMPLVER_EV6 | ||
170 | #endif | ||
171 | #endif | ||
172 | |||
173 | enum amask_enum { | ||
174 | AMASK_BWX = (1UL << 0), | ||
175 | AMASK_FIX = (1UL << 1), | ||
176 | AMASK_CIX = (1UL << 2), | ||
177 | AMASK_MAX = (1UL << 8), | ||
178 | AMASK_PRECISE_TRAP = (1UL << 9), | ||
179 | }; | ||
180 | |||
181 | #define amask(mask) \ | ||
182 | ({ unsigned long __amask, __input = (mask); \ | ||
183 | __asm__ ("amask %1,%0" : "=r"(__amask) : "rI"(__input)); \ | ||
184 | __amask; }) | ||
185 | |||
186 | #define __CALL_PAL_R0(NAME, TYPE) \ | ||
187 | extern inline TYPE NAME(void) \ | ||
188 | { \ | ||
189 | register TYPE __r0 __asm__("$0"); \ | ||
190 | __asm__ __volatile__( \ | ||
191 | "call_pal %1 # " #NAME \ | ||
192 | :"=r" (__r0) \ | ||
193 | :"i" (PAL_ ## NAME) \ | ||
194 | :"$1", "$16", "$22", "$23", "$24", "$25"); \ | ||
195 | return __r0; \ | ||
196 | } | ||
197 | |||
198 | #define __CALL_PAL_W1(NAME, TYPE0) \ | ||
199 | extern inline void NAME(TYPE0 arg0) \ | ||
200 | { \ | ||
201 | register TYPE0 __r16 __asm__("$16") = arg0; \ | ||
202 | __asm__ __volatile__( \ | ||
203 | "call_pal %1 # "#NAME \ | ||
204 | : "=r"(__r16) \ | ||
205 | : "i"(PAL_ ## NAME), "0"(__r16) \ | ||
206 | : "$1", "$22", "$23", "$24", "$25"); \ | ||
207 | } | ||
208 | |||
209 | #define __CALL_PAL_W2(NAME, TYPE0, TYPE1) \ | ||
210 | extern inline void NAME(TYPE0 arg0, TYPE1 arg1) \ | ||
211 | { \ | ||
212 | register TYPE0 __r16 __asm__("$16") = arg0; \ | ||
213 | register TYPE1 __r17 __asm__("$17") = arg1; \ | ||
214 | __asm__ __volatile__( \ | ||
215 | "call_pal %2 # "#NAME \ | ||
216 | : "=r"(__r16), "=r"(__r17) \ | ||
217 | : "i"(PAL_ ## NAME), "0"(__r16), "1"(__r17) \ | ||
218 | : "$1", "$22", "$23", "$24", "$25"); \ | ||
219 | } | ||
220 | |||
221 | #define __CALL_PAL_RW1(NAME, RTYPE, TYPE0) \ | ||
222 | extern inline RTYPE NAME(TYPE0 arg0) \ | ||
223 | { \ | ||
224 | register RTYPE __r0 __asm__("$0"); \ | ||
225 | register TYPE0 __r16 __asm__("$16") = arg0; \ | ||
226 | __asm__ __volatile__( \ | ||
227 | "call_pal %2 # "#NAME \ | ||
228 | : "=r"(__r16), "=r"(__r0) \ | ||
229 | : "i"(PAL_ ## NAME), "0"(__r16) \ | ||
230 | : "$1", "$22", "$23", "$24", "$25"); \ | ||
231 | return __r0; \ | ||
232 | } | ||
233 | |||
234 | #define __CALL_PAL_RW2(NAME, RTYPE, TYPE0, TYPE1) \ | ||
235 | extern inline RTYPE NAME(TYPE0 arg0, TYPE1 arg1) \ | ||
236 | { \ | ||
237 | register RTYPE __r0 __asm__("$0"); \ | ||
238 | register TYPE0 __r16 __asm__("$16") = arg0; \ | ||
239 | register TYPE1 __r17 __asm__("$17") = arg1; \ | ||
240 | __asm__ __volatile__( \ | ||
241 | "call_pal %3 # "#NAME \ | ||
242 | : "=r"(__r16), "=r"(__r17), "=r"(__r0) \ | ||
243 | : "i"(PAL_ ## NAME), "0"(__r16), "1"(__r17) \ | ||
244 | : "$1", "$22", "$23", "$24", "$25"); \ | ||
245 | return __r0; \ | ||
246 | } | ||
247 | |||
248 | __CALL_PAL_W1(cflush, unsigned long); | ||
249 | __CALL_PAL_R0(rdmces, unsigned long); | ||
250 | __CALL_PAL_R0(rdps, unsigned long); | ||
251 | __CALL_PAL_R0(rdusp, unsigned long); | ||
252 | __CALL_PAL_RW1(swpipl, unsigned long, unsigned long); | ||
253 | __CALL_PAL_R0(whami, unsigned long); | ||
254 | __CALL_PAL_W2(wrent, void*, unsigned long); | ||
255 | __CALL_PAL_W1(wripir, unsigned long); | ||
256 | __CALL_PAL_W1(wrkgp, unsigned long); | ||
257 | __CALL_PAL_W1(wrmces, unsigned long); | ||
258 | __CALL_PAL_RW2(wrperfmon, unsigned long, unsigned long, unsigned long); | ||
259 | __CALL_PAL_W1(wrusp, unsigned long); | ||
260 | __CALL_PAL_W1(wrvptptr, unsigned long); | ||
261 | |||
262 | /* | ||
263 | * TB routines.. | ||
264 | */ | ||
265 | #define __tbi(nr,arg,arg1...) \ | ||
266 | ({ \ | ||
267 | register unsigned long __r16 __asm__("$16") = (nr); \ | ||
268 | register unsigned long __r17 __asm__("$17"); arg; \ | ||
269 | __asm__ __volatile__( \ | ||
270 | "call_pal %3 #__tbi" \ | ||
271 | :"=r" (__r16),"=r" (__r17) \ | ||
272 | :"0" (__r16),"i" (PAL_tbi) ,##arg1 \ | ||
273 | :"$0", "$1", "$22", "$23", "$24", "$25"); \ | ||
274 | }) | ||
275 | |||
276 | #define tbi(x,y) __tbi(x,__r17=(y),"1" (__r17)) | ||
277 | #define tbisi(x) __tbi(1,__r17=(x),"1" (__r17)) | ||
278 | #define tbisd(x) __tbi(2,__r17=(x),"1" (__r17)) | ||
279 | #define tbis(x) __tbi(3,__r17=(x),"1" (__r17)) | ||
280 | #define tbiap() __tbi(-1, /* no second argument */) | ||
281 | #define tbia() __tbi(-2, /* no second argument */) | ||
282 | |||
283 | /* | ||
284 | * Atomic exchange routines. | ||
285 | */ | ||
286 | |||
287 | #define __ASM__MB | ||
288 | #define ____xchg(type, args...) __xchg ## type ## _local(args) | ||
289 | #define ____cmpxchg(type, args...) __cmpxchg ## type ## _local(args) | ||
290 | #include <asm/xchg.h> | ||
291 | |||
292 | #define xchg_local(ptr,x) \ | ||
293 | ({ \ | ||
294 | __typeof__(*(ptr)) _x_ = (x); \ | ||
295 | (__typeof__(*(ptr))) __xchg_local((ptr), (unsigned long)_x_, \ | ||
296 | sizeof(*(ptr))); \ | ||
297 | }) | ||
298 | |||
299 | #define cmpxchg_local(ptr, o, n) \ | ||
300 | ({ \ | ||
301 | __typeof__(*(ptr)) _o_ = (o); \ | ||
302 | __typeof__(*(ptr)) _n_ = (n); \ | ||
303 | (__typeof__(*(ptr))) __cmpxchg_local((ptr), (unsigned long)_o_, \ | ||
304 | (unsigned long)_n_, \ | ||
305 | sizeof(*(ptr))); \ | ||
306 | }) | ||
307 | |||
308 | #define cmpxchg64_local(ptr, o, n) \ | ||
309 | ({ \ | ||
310 | BUILD_BUG_ON(sizeof(*(ptr)) != 8); \ | ||
311 | cmpxchg_local((ptr), (o), (n)); \ | ||
312 | }) | ||
313 | |||
314 | #ifdef CONFIG_SMP | ||
315 | #undef __ASM__MB | ||
316 | #define __ASM__MB "\tmb\n" | ||
317 | #endif | ||
318 | #undef ____xchg | ||
319 | #undef ____cmpxchg | ||
320 | #define ____xchg(type, args...) __xchg ##type(args) | ||
321 | #define ____cmpxchg(type, args...) __cmpxchg ##type(args) | ||
322 | #include <asm/xchg.h> | ||
323 | |||
324 | #define xchg(ptr,x) \ | ||
325 | ({ \ | ||
326 | __typeof__(*(ptr)) _x_ = (x); \ | ||
327 | (__typeof__(*(ptr))) __xchg((ptr), (unsigned long)_x_, \ | ||
328 | sizeof(*(ptr))); \ | ||
329 | }) | ||
330 | |||
331 | #define cmpxchg(ptr, o, n) \ | ||
332 | ({ \ | ||
333 | __typeof__(*(ptr)) _o_ = (o); \ | ||
334 | __typeof__(*(ptr)) _n_ = (n); \ | ||
335 | (__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_, \ | ||
336 | (unsigned long)_n_, sizeof(*(ptr)));\ | ||
337 | }) | ||
338 | |||
339 | #define cmpxchg64(ptr, o, n) \ | ||
340 | ({ \ | ||
341 | BUILD_BUG_ON(sizeof(*(ptr)) != 8); \ | ||
342 | cmpxchg((ptr), (o), (n)); \ | ||
343 | }) | ||
344 | |||
345 | #undef __ASM__MB | ||
346 | #undef ____cmpxchg | ||
347 | |||
348 | #define __HAVE_ARCH_CMPXCHG 1 | ||
349 | |||
350 | #endif /* __ASSEMBLY__ */ | ||
351 | |||
352 | #define arch_align_stack(x) (x) | ||
353 | |||
354 | #endif | ||
diff --git a/arch/alpha/include/asm/xchg.h b/arch/alpha/include/asm/xchg.h index beba1b803e0d..1d1b436fbff2 100644 --- a/arch/alpha/include/asm/xchg.h +++ b/arch/alpha/include/asm/xchg.h | |||
@@ -1,4 +1,4 @@ | |||
1 | #ifndef __ALPHA_SYSTEM_H | 1 | #ifndef _ALPHA_ATOMIC_H |
2 | #error Do not include xchg.h directly! | 2 | #error Do not include xchg.h directly! |
3 | #else | 3 | #else |
4 | /* | 4 | /* |
diff --git a/arch/alpha/kernel/core_apecs.c b/arch/alpha/kernel/core_apecs.c index ca46b2c24457..708c831efa76 100644 --- a/arch/alpha/kernel/core_apecs.c +++ b/arch/alpha/kernel/core_apecs.c | |||
@@ -21,6 +21,7 @@ | |||
21 | 21 | ||
22 | #include <asm/ptrace.h> | 22 | #include <asm/ptrace.h> |
23 | #include <asm/smp.h> | 23 | #include <asm/smp.h> |
24 | #include <asm/mce.h> | ||
24 | 25 | ||
25 | #include "proto.h" | 26 | #include "proto.h" |
26 | #include "pci_impl.h" | 27 | #include "pci_impl.h" |
diff --git a/arch/alpha/kernel/core_cia.c b/arch/alpha/kernel/core_cia.c index 1d6ee6c985f9..c44339e176c1 100644 --- a/arch/alpha/kernel/core_cia.c +++ b/arch/alpha/kernel/core_cia.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <linux/bootmem.h> | 23 | #include <linux/bootmem.h> |
24 | 24 | ||
25 | #include <asm/ptrace.h> | 25 | #include <asm/ptrace.h> |
26 | #include <asm/mce.h> | ||
26 | 27 | ||
27 | #include "proto.h" | 28 | #include "proto.h" |
28 | #include "pci_impl.h" | 29 | #include "pci_impl.h" |
diff --git a/arch/alpha/kernel/core_t2.c b/arch/alpha/kernel/core_t2.c index 2f770e994289..3ada4f7b085d 100644 --- a/arch/alpha/kernel/core_t2.c +++ b/arch/alpha/kernel/core_t2.c | |||
@@ -21,6 +21,7 @@ | |||
21 | 21 | ||
22 | #include <asm/ptrace.h> | 22 | #include <asm/ptrace.h> |
23 | #include <asm/delay.h> | 23 | #include <asm/delay.h> |
24 | #include <asm/mce.h> | ||
24 | 25 | ||
25 | #include "proto.h" | 26 | #include "proto.h" |
26 | #include "pci_impl.h" | 27 | #include "pci_impl.h" |
diff --git a/arch/alpha/kernel/err_impl.h b/arch/alpha/kernel/err_impl.h index 0c010ca4611e..ae529c416037 100644 --- a/arch/alpha/kernel/err_impl.h +++ b/arch/alpha/kernel/err_impl.h | |||
@@ -7,6 +7,8 @@ | |||
7 | * implementations. | 7 | * implementations. |
8 | */ | 8 | */ |
9 | 9 | ||
10 | #include <asm/mce.h> | ||
11 | |||
10 | union el_timestamp; | 12 | union el_timestamp; |
11 | struct el_subpacket; | 13 | struct el_subpacket; |
12 | struct ev7_lf_subpackets; | 14 | struct ev7_lf_subpackets; |
diff --git a/arch/alpha/kernel/head.S b/arch/alpha/kernel/head.S index 4bdd1d2ff353..c352499ab9f8 100644 --- a/arch/alpha/kernel/head.S +++ b/arch/alpha/kernel/head.S | |||
@@ -8,14 +8,12 @@ | |||
8 | */ | 8 | */ |
9 | 9 | ||
10 | #include <linux/init.h> | 10 | #include <linux/init.h> |
11 | #include <asm/system.h> | ||
12 | #include <asm/asm-offsets.h> | 11 | #include <asm/asm-offsets.h> |
12 | #include <asm/pal.h> | ||
13 | #include <asm/setup.h> | ||
13 | 14 | ||
14 | __HEAD | 15 | __HEAD |
15 | .globl swapper_pg_dir | ||
16 | .globl _stext | 16 | .globl _stext |
17 | swapper_pg_dir=SWAPPER_PGD | ||
18 | |||
19 | .set noreorder | 17 | .set noreorder |
20 | .globl __start | 18 | .globl __start |
21 | .ent __start | 19 | .ent __start |
diff --git a/arch/alpha/kernel/irq.c b/arch/alpha/kernel/irq.c index 381431a2d6d9..2872accd2215 100644 --- a/arch/alpha/kernel/irq.c +++ b/arch/alpha/kernel/irq.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include <linux/profile.h> | 26 | #include <linux/profile.h> |
27 | #include <linux/bitops.h> | 27 | #include <linux/bitops.h> |
28 | 28 | ||
29 | #include <asm/system.h> | ||
30 | #include <asm/io.h> | 29 | #include <asm/io.h> |
31 | #include <asm/uaccess.h> | 30 | #include <asm/uaccess.h> |
32 | 31 | ||
diff --git a/arch/alpha/kernel/irq_alpha.c b/arch/alpha/kernel/irq_alpha.c index 51b7fbd9e4c1..772ddfdb71a8 100644 --- a/arch/alpha/kernel/irq_alpha.c +++ b/arch/alpha/kernel/irq_alpha.c | |||
@@ -11,6 +11,7 @@ | |||
11 | #include <asm/machvec.h> | 11 | #include <asm/machvec.h> |
12 | #include <asm/dma.h> | 12 | #include <asm/dma.h> |
13 | #include <asm/perf_event.h> | 13 | #include <asm/perf_event.h> |
14 | #include <asm/mce.h> | ||
14 | 15 | ||
15 | #include "proto.h" | 16 | #include "proto.h" |
16 | #include "irq_impl.h" | 17 | #include "irq_impl.h" |
diff --git a/arch/alpha/kernel/osf_sys.c b/arch/alpha/kernel/osf_sys.c index 01e8715e26d9..49ee3193477a 100644 --- a/arch/alpha/kernel/osf_sys.c +++ b/arch/alpha/kernel/osf_sys.c | |||
@@ -40,7 +40,6 @@ | |||
40 | #include <asm/fpu.h> | 40 | #include <asm/fpu.h> |
41 | #include <asm/io.h> | 41 | #include <asm/io.h> |
42 | #include <asm/uaccess.h> | 42 | #include <asm/uaccess.h> |
43 | #include <asm/system.h> | ||
44 | #include <asm/sysinfo.h> | 43 | #include <asm/sysinfo.h> |
45 | #include <asm/thread_info.h> | 44 | #include <asm/thread_info.h> |
46 | #include <asm/hwrpb.h> | 45 | #include <asm/hwrpb.h> |
diff --git a/arch/alpha/kernel/process.c b/arch/alpha/kernel/process.c index 89bbe5b41145..153d3fce3e8e 100644 --- a/arch/alpha/kernel/process.c +++ b/arch/alpha/kernel/process.c | |||
@@ -31,7 +31,6 @@ | |||
31 | 31 | ||
32 | #include <asm/reg.h> | 32 | #include <asm/reg.h> |
33 | #include <asm/uaccess.h> | 33 | #include <asm/uaccess.h> |
34 | #include <asm/system.h> | ||
35 | #include <asm/io.h> | 34 | #include <asm/io.h> |
36 | #include <asm/pgtable.h> | 35 | #include <asm/pgtable.h> |
37 | #include <asm/hwrpb.h> | 36 | #include <asm/hwrpb.h> |
diff --git a/arch/alpha/kernel/ptrace.c b/arch/alpha/kernel/ptrace.c index e2af5eb59bb4..54616f496aed 100644 --- a/arch/alpha/kernel/ptrace.c +++ b/arch/alpha/kernel/ptrace.c | |||
@@ -16,7 +16,6 @@ | |||
16 | 16 | ||
17 | #include <asm/uaccess.h> | 17 | #include <asm/uaccess.h> |
18 | #include <asm/pgtable.h> | 18 | #include <asm/pgtable.h> |
19 | #include <asm/system.h> | ||
20 | #include <asm/fpu.h> | 19 | #include <asm/fpu.h> |
21 | 20 | ||
22 | #include "proto.h" | 21 | #include "proto.h" |
diff --git a/arch/alpha/kernel/setup.c b/arch/alpha/kernel/setup.c index 32de56067e63..9e3107cc5ebb 100644 --- a/arch/alpha/kernel/setup.c +++ b/arch/alpha/kernel/setup.c | |||
@@ -55,7 +55,6 @@ static struct notifier_block alpha_panic_block = { | |||
55 | 55 | ||
56 | #include <asm/uaccess.h> | 56 | #include <asm/uaccess.h> |
57 | #include <asm/pgtable.h> | 57 | #include <asm/pgtable.h> |
58 | #include <asm/system.h> | ||
59 | #include <asm/hwrpb.h> | 58 | #include <asm/hwrpb.h> |
60 | #include <asm/dma.h> | 59 | #include <asm/dma.h> |
61 | #include <asm/mmu_context.h> | 60 | #include <asm/mmu_context.h> |
diff --git a/arch/alpha/kernel/sys_alcor.c b/arch/alpha/kernel/sys_alcor.c index 8606d77e5163..118dc6af1805 100644 --- a/arch/alpha/kernel/sys_alcor.c +++ b/arch/alpha/kernel/sys_alcor.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <linux/bitops.h> | 18 | #include <linux/bitops.h> |
19 | 19 | ||
20 | #include <asm/ptrace.h> | 20 | #include <asm/ptrace.h> |
21 | #include <asm/system.h> | ||
22 | #include <asm/io.h> | 21 | #include <asm/io.h> |
23 | #include <asm/dma.h> | 22 | #include <asm/dma.h> |
24 | #include <asm/mmu_context.h> | 23 | #include <asm/mmu_context.h> |
diff --git a/arch/alpha/kernel/sys_cabriolet.c b/arch/alpha/kernel/sys_cabriolet.c index 1029619fb6c0..4c50f8f40cbb 100644 --- a/arch/alpha/kernel/sys_cabriolet.c +++ b/arch/alpha/kernel/sys_cabriolet.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <linux/bitops.h> | 18 | #include <linux/bitops.h> |
19 | 19 | ||
20 | #include <asm/ptrace.h> | 20 | #include <asm/ptrace.h> |
21 | #include <asm/system.h> | ||
22 | #include <asm/dma.h> | 21 | #include <asm/dma.h> |
23 | #include <asm/irq.h> | 22 | #include <asm/irq.h> |
24 | #include <asm/mmu_context.h> | 23 | #include <asm/mmu_context.h> |
diff --git a/arch/alpha/kernel/sys_dp264.c b/arch/alpha/kernel/sys_dp264.c index 13f0717fc7fe..5bf401f7ea97 100644 --- a/arch/alpha/kernel/sys_dp264.c +++ b/arch/alpha/kernel/sys_dp264.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <linux/bitops.h> | 21 | #include <linux/bitops.h> |
22 | 22 | ||
23 | #include <asm/ptrace.h> | 23 | #include <asm/ptrace.h> |
24 | #include <asm/system.h> | ||
25 | #include <asm/dma.h> | 24 | #include <asm/dma.h> |
26 | #include <asm/irq.h> | 25 | #include <asm/irq.h> |
27 | #include <asm/mmu_context.h> | 26 | #include <asm/mmu_context.h> |
diff --git a/arch/alpha/kernel/sys_eb64p.c b/arch/alpha/kernel/sys_eb64p.c index 3c6c13cd8b19..ad40a425e841 100644 --- a/arch/alpha/kernel/sys_eb64p.c +++ b/arch/alpha/kernel/sys_eb64p.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <linux/bitops.h> | 17 | #include <linux/bitops.h> |
18 | 18 | ||
19 | #include <asm/ptrace.h> | 19 | #include <asm/ptrace.h> |
20 | #include <asm/system.h> | ||
21 | #include <asm/dma.h> | 20 | #include <asm/dma.h> |
22 | #include <asm/irq.h> | 21 | #include <asm/irq.h> |
23 | #include <asm/mmu_context.h> | 22 | #include <asm/mmu_context.h> |
diff --git a/arch/alpha/kernel/sys_eiger.c b/arch/alpha/kernel/sys_eiger.c index 35f480db7719..79d69d7f63f8 100644 --- a/arch/alpha/kernel/sys_eiger.c +++ b/arch/alpha/kernel/sys_eiger.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <linux/bitops.h> | 18 | #include <linux/bitops.h> |
19 | 19 | ||
20 | #include <asm/ptrace.h> | 20 | #include <asm/ptrace.h> |
21 | #include <asm/system.h> | ||
22 | #include <asm/dma.h> | 21 | #include <asm/dma.h> |
23 | #include <asm/irq.h> | 22 | #include <asm/irq.h> |
24 | #include <asm/mmu_context.h> | 23 | #include <asm/mmu_context.h> |
diff --git a/arch/alpha/kernel/sys_jensen.c b/arch/alpha/kernel/sys_jensen.c index 7f1a87f176e2..5a0af11b3a61 100644 --- a/arch/alpha/kernel/sys_jensen.c +++ b/arch/alpha/kernel/sys_jensen.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
16 | 16 | ||
17 | #include <asm/ptrace.h> | 17 | #include <asm/ptrace.h> |
18 | #include <asm/system.h> | ||
19 | 18 | ||
20 | #define __EXTERN_INLINE inline | 19 | #define __EXTERN_INLINE inline |
21 | #include <asm/io.h> | 20 | #include <asm/io.h> |
diff --git a/arch/alpha/kernel/sys_marvel.c b/arch/alpha/kernel/sys_marvel.c index fc8b12508611..14a4b6a7cf59 100644 --- a/arch/alpha/kernel/sys_marvel.c +++ b/arch/alpha/kernel/sys_marvel.c | |||
@@ -13,7 +13,6 @@ | |||
13 | #include <linux/bitops.h> | 13 | #include <linux/bitops.h> |
14 | 14 | ||
15 | #include <asm/ptrace.h> | 15 | #include <asm/ptrace.h> |
16 | #include <asm/system.h> | ||
17 | #include <asm/dma.h> | 16 | #include <asm/dma.h> |
18 | #include <asm/irq.h> | 17 | #include <asm/irq.h> |
19 | #include <asm/mmu_context.h> | 18 | #include <asm/mmu_context.h> |
diff --git a/arch/alpha/kernel/sys_miata.c b/arch/alpha/kernel/sys_miata.c index 258da684670b..d5b9776a608d 100644 --- a/arch/alpha/kernel/sys_miata.c +++ b/arch/alpha/kernel/sys_miata.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <linux/reboot.h> | 17 | #include <linux/reboot.h> |
18 | 18 | ||
19 | #include <asm/ptrace.h> | 19 | #include <asm/ptrace.h> |
20 | #include <asm/system.h> | ||
21 | #include <asm/dma.h> | 20 | #include <asm/dma.h> |
22 | #include <asm/irq.h> | 21 | #include <asm/irq.h> |
23 | #include <asm/mmu_context.h> | 22 | #include <asm/mmu_context.h> |
diff --git a/arch/alpha/kernel/sys_mikasa.c b/arch/alpha/kernel/sys_mikasa.c index c0fd7284dec3..5e82dc1ad6f2 100644 --- a/arch/alpha/kernel/sys_mikasa.c +++ b/arch/alpha/kernel/sys_mikasa.c | |||
@@ -17,7 +17,7 @@ | |||
17 | #include <linux/bitops.h> | 17 | #include <linux/bitops.h> |
18 | 18 | ||
19 | #include <asm/ptrace.h> | 19 | #include <asm/ptrace.h> |
20 | #include <asm/system.h> | 20 | #include <asm/mce.h> |
21 | #include <asm/dma.h> | 21 | #include <asm/dma.h> |
22 | #include <asm/irq.h> | 22 | #include <asm/irq.h> |
23 | #include <asm/mmu_context.h> | 23 | #include <asm/mmu_context.h> |
diff --git a/arch/alpha/kernel/sys_nautilus.c b/arch/alpha/kernel/sys_nautilus.c index 4112200307c7..4d4c046f708d 100644 --- a/arch/alpha/kernel/sys_nautilus.c +++ b/arch/alpha/kernel/sys_nautilus.c | |||
@@ -35,7 +35,6 @@ | |||
35 | #include <linux/bitops.h> | 35 | #include <linux/bitops.h> |
36 | 36 | ||
37 | #include <asm/ptrace.h> | 37 | #include <asm/ptrace.h> |
38 | #include <asm/system.h> | ||
39 | #include <asm/dma.h> | 38 | #include <asm/dma.h> |
40 | #include <asm/irq.h> | 39 | #include <asm/irq.h> |
41 | #include <asm/mmu_context.h> | 40 | #include <asm/mmu_context.h> |
diff --git a/arch/alpha/kernel/sys_noritake.c b/arch/alpha/kernel/sys_noritake.c index 21725283cdd7..063e594fd969 100644 --- a/arch/alpha/kernel/sys_noritake.c +++ b/arch/alpha/kernel/sys_noritake.c | |||
@@ -18,7 +18,7 @@ | |||
18 | #include <linux/bitops.h> | 18 | #include <linux/bitops.h> |
19 | 19 | ||
20 | #include <asm/ptrace.h> | 20 | #include <asm/ptrace.h> |
21 | #include <asm/system.h> | 21 | #include <asm/mce.h> |
22 | #include <asm/dma.h> | 22 | #include <asm/dma.h> |
23 | #include <asm/irq.h> | 23 | #include <asm/irq.h> |
24 | #include <asm/mmu_context.h> | 24 | #include <asm/mmu_context.h> |
diff --git a/arch/alpha/kernel/sys_rawhide.c b/arch/alpha/kernel/sys_rawhide.c index a125d6bea7e1..dfd510ae5d8c 100644 --- a/arch/alpha/kernel/sys_rawhide.c +++ b/arch/alpha/kernel/sys_rawhide.c | |||
@@ -16,7 +16,6 @@ | |||
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | 17 | ||
18 | #include <asm/ptrace.h> | 18 | #include <asm/ptrace.h> |
19 | #include <asm/system.h> | ||
20 | #include <asm/dma.h> | 19 | #include <asm/dma.h> |
21 | #include <asm/irq.h> | 20 | #include <asm/irq.h> |
22 | #include <asm/mmu_context.h> | 21 | #include <asm/mmu_context.h> |
diff --git a/arch/alpha/kernel/sys_ruffian.c b/arch/alpha/kernel/sys_ruffian.c index 2581cbec6fc2..a3f485257170 100644 --- a/arch/alpha/kernel/sys_ruffian.c +++ b/arch/alpha/kernel/sys_ruffian.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
19 | 19 | ||
20 | #include <asm/ptrace.h> | 20 | #include <asm/ptrace.h> |
21 | #include <asm/system.h> | ||
22 | #include <asm/dma.h> | 21 | #include <asm/dma.h> |
23 | #include <asm/irq.h> | 22 | #include <asm/irq.h> |
24 | #include <asm/mmu_context.h> | 23 | #include <asm/mmu_context.h> |
diff --git a/arch/alpha/kernel/sys_rx164.c b/arch/alpha/kernel/sys_rx164.c index b172b27555a7..08ee737d4fba 100644 --- a/arch/alpha/kernel/sys_rx164.c +++ b/arch/alpha/kernel/sys_rx164.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <linux/bitops.h> | 17 | #include <linux/bitops.h> |
18 | 18 | ||
19 | #include <asm/ptrace.h> | 19 | #include <asm/ptrace.h> |
20 | #include <asm/system.h> | ||
21 | #include <asm/dma.h> | 20 | #include <asm/dma.h> |
22 | #include <asm/irq.h> | 21 | #include <asm/irq.h> |
23 | #include <asm/mmu_context.h> | 22 | #include <asm/mmu_context.h> |
diff --git a/arch/alpha/kernel/sys_sable.c b/arch/alpha/kernel/sys_sable.c index 98d1dbffe98f..8a0aa6d67b53 100644 --- a/arch/alpha/kernel/sys_sable.c +++ b/arch/alpha/kernel/sys_sable.c | |||
@@ -16,7 +16,6 @@ | |||
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | 17 | ||
18 | #include <asm/ptrace.h> | 18 | #include <asm/ptrace.h> |
19 | #include <asm/system.h> | ||
20 | #include <asm/dma.h> | 19 | #include <asm/dma.h> |
21 | #include <asm/irq.h> | 20 | #include <asm/irq.h> |
22 | #include <asm/mmu_context.h> | 21 | #include <asm/mmu_context.h> |
diff --git a/arch/alpha/kernel/sys_sio.c b/arch/alpha/kernel/sys_sio.c index 47bec1e97d1c..febd24eba7a6 100644 --- a/arch/alpha/kernel/sys_sio.c +++ b/arch/alpha/kernel/sys_sio.c | |||
@@ -20,7 +20,6 @@ | |||
20 | 20 | ||
21 | #include <asm/compiler.h> | 21 | #include <asm/compiler.h> |
22 | #include <asm/ptrace.h> | 22 | #include <asm/ptrace.h> |
23 | #include <asm/system.h> | ||
24 | #include <asm/dma.h> | 23 | #include <asm/dma.h> |
25 | #include <asm/irq.h> | 24 | #include <asm/irq.h> |
26 | #include <asm/mmu_context.h> | 25 | #include <asm/mmu_context.h> |
diff --git a/arch/alpha/kernel/sys_sx164.c b/arch/alpha/kernel/sys_sx164.c index 73e1c317afcb..d063b360efed 100644 --- a/arch/alpha/kernel/sys_sx164.c +++ b/arch/alpha/kernel/sys_sx164.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <linux/bitops.h> | 17 | #include <linux/bitops.h> |
18 | 18 | ||
19 | #include <asm/ptrace.h> | 19 | #include <asm/ptrace.h> |
20 | #include <asm/system.h> | ||
21 | #include <asm/dma.h> | 20 | #include <asm/dma.h> |
22 | #include <asm/irq.h> | 21 | #include <asm/irq.h> |
23 | #include <asm/mmu_context.h> | 22 | #include <asm/mmu_context.h> |
@@ -26,6 +25,7 @@ | |||
26 | #include <asm/core_cia.h> | 25 | #include <asm/core_cia.h> |
27 | #include <asm/hwrpb.h> | 26 | #include <asm/hwrpb.h> |
28 | #include <asm/tlbflush.h> | 27 | #include <asm/tlbflush.h> |
28 | #include <asm/special_insns.h> | ||
29 | 29 | ||
30 | #include "proto.h" | 30 | #include "proto.h" |
31 | #include "irq_impl.h" | 31 | #include "irq_impl.h" |
diff --git a/arch/alpha/kernel/sys_takara.c b/arch/alpha/kernel/sys_takara.c index 2ae99ad6975e..dd0f1eae3c68 100644 --- a/arch/alpha/kernel/sys_takara.c +++ b/arch/alpha/kernel/sys_takara.c | |||
@@ -16,7 +16,6 @@ | |||
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | 17 | ||
18 | #include <asm/ptrace.h> | 18 | #include <asm/ptrace.h> |
19 | #include <asm/system.h> | ||
20 | #include <asm/dma.h> | 19 | #include <asm/dma.h> |
21 | #include <asm/irq.h> | 20 | #include <asm/irq.h> |
22 | #include <asm/mmu_context.h> | 21 | #include <asm/mmu_context.h> |
diff --git a/arch/alpha/kernel/sys_titan.c b/arch/alpha/kernel/sys_titan.c index b8eafa053539..2533db280d9b 100644 --- a/arch/alpha/kernel/sys_titan.c +++ b/arch/alpha/kernel/sys_titan.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <linux/bitops.h> | 21 | #include <linux/bitops.h> |
22 | 22 | ||
23 | #include <asm/ptrace.h> | 23 | #include <asm/ptrace.h> |
24 | #include <asm/system.h> | ||
25 | #include <asm/dma.h> | 24 | #include <asm/dma.h> |
26 | #include <asm/irq.h> | 25 | #include <asm/irq.h> |
27 | #include <asm/mmu_context.h> | 26 | #include <asm/mmu_context.h> |
diff --git a/arch/alpha/kernel/sys_wildfire.c b/arch/alpha/kernel/sys_wildfire.c index 17c85a65e7b0..ee1874887776 100644 --- a/arch/alpha/kernel/sys_wildfire.c +++ b/arch/alpha/kernel/sys_wildfire.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <linux/bitops.h> | 15 | #include <linux/bitops.h> |
16 | 16 | ||
17 | #include <asm/ptrace.h> | 17 | #include <asm/ptrace.h> |
18 | #include <asm/system.h> | ||
19 | #include <asm/dma.h> | 18 | #include <asm/dma.h> |
20 | #include <asm/irq.h> | 19 | #include <asm/irq.h> |
21 | #include <asm/mmu_context.h> | 20 | #include <asm/mmu_context.h> |
diff --git a/arch/alpha/kernel/traps.c b/arch/alpha/kernel/traps.c index 0414e021a91c..80d987c0e9aa 100644 --- a/arch/alpha/kernel/traps.c +++ b/arch/alpha/kernel/traps.c | |||
@@ -24,6 +24,7 @@ | |||
24 | #include <asm/sysinfo.h> | 24 | #include <asm/sysinfo.h> |
25 | #include <asm/hwrpb.h> | 25 | #include <asm/hwrpb.h> |
26 | #include <asm/mmu_context.h> | 26 | #include <asm/mmu_context.h> |
27 | #include <asm/special_insns.h> | ||
27 | 28 | ||
28 | #include "proto.h" | 29 | #include "proto.h" |
29 | 30 | ||
diff --git a/arch/alpha/kernel/vmlinux.lds.S b/arch/alpha/kernel/vmlinux.lds.S index f937ad123852..647b84c15382 100644 --- a/arch/alpha/kernel/vmlinux.lds.S +++ b/arch/alpha/kernel/vmlinux.lds.S | |||
@@ -2,6 +2,7 @@ | |||
2 | #include <asm/thread_info.h> | 2 | #include <asm/thread_info.h> |
3 | #include <asm/cache.h> | 3 | #include <asm/cache.h> |
4 | #include <asm/page.h> | 4 | #include <asm/page.h> |
5 | #include <asm/setup.h> | ||
5 | 6 | ||
6 | OUTPUT_FORMAT("elf64-alpha") | 7 | OUTPUT_FORMAT("elf64-alpha") |
7 | OUTPUT_ARCH(alpha) | 8 | OUTPUT_ARCH(alpha) |
@@ -25,6 +26,7 @@ SECTIONS | |||
25 | *(.fixup) | 26 | *(.fixup) |
26 | *(.gnu.warning) | 27 | *(.gnu.warning) |
27 | } :kernel | 28 | } :kernel |
29 | swapper_pg_dir = SWAPPER_PGD; | ||
28 | _etext = .; /* End of text section */ | 30 | _etext = .; /* End of text section */ |
29 | 31 | ||
30 | NOTES :kernel :note | 32 | NOTES :kernel :note |
diff --git a/arch/alpha/lib/stacktrace.c b/arch/alpha/lib/stacktrace.c index 6d432e42aedc..5e832161e6d2 100644 --- a/arch/alpha/lib/stacktrace.c +++ b/arch/alpha/lib/stacktrace.c | |||
@@ -1,5 +1,4 @@ | |||
1 | #include <linux/kernel.h> | 1 | #include <linux/kernel.h> |
2 | #include <asm/system.h> | ||
3 | 2 | ||
4 | typedef unsigned int instr; | 3 | typedef unsigned int instr; |
5 | 4 | ||
diff --git a/arch/alpha/mm/fault.c b/arch/alpha/mm/fault.c index fadd5f882ff9..5eecab1a84ef 100644 --- a/arch/alpha/mm/fault.c +++ b/arch/alpha/mm/fault.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include <linux/interrupt.h> | 24 | #include <linux/interrupt.h> |
25 | #include <linux/module.h> | 25 | #include <linux/module.h> |
26 | 26 | ||
27 | #include <asm/system.h> | ||
28 | #include <asm/uaccess.h> | 27 | #include <asm/uaccess.h> |
29 | 28 | ||
30 | extern void die_if_kernel(char *,struct pt_regs *,long, unsigned long *); | 29 | extern void die_if_kernel(char *,struct pt_regs *,long, unsigned long *); |
diff --git a/arch/alpha/mm/init.c b/arch/alpha/mm/init.c index 69d0c5761e2f..1ad6ca74bed2 100644 --- a/arch/alpha/mm/init.c +++ b/arch/alpha/mm/init.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <linux/vmalloc.h> | 22 | #include <linux/vmalloc.h> |
23 | #include <linux/gfp.h> | 23 | #include <linux/gfp.h> |
24 | 24 | ||
25 | #include <asm/system.h> | ||
26 | #include <asm/uaccess.h> | 25 | #include <asm/uaccess.h> |
27 | #include <asm/pgtable.h> | 26 | #include <asm/pgtable.h> |
28 | #include <asm/pgalloc.h> | 27 | #include <asm/pgalloc.h> |
@@ -31,6 +30,7 @@ | |||
31 | #include <asm/mmu_context.h> | 30 | #include <asm/mmu_context.h> |
32 | #include <asm/console.h> | 31 | #include <asm/console.h> |
33 | #include <asm/tlb.h> | 32 | #include <asm/tlb.h> |
33 | #include <asm/setup.h> | ||
34 | 34 | ||
35 | extern void die_if_kernel(char *,struct pt_regs *,long); | 35 | extern void die_if_kernel(char *,struct pt_regs *,long); |
36 | 36 | ||
diff --git a/arch/alpha/oprofile/common.c b/arch/alpha/oprofile/common.c index bd8ac533a504..a0a5d27aa215 100644 --- a/arch/alpha/oprofile/common.c +++ b/arch/alpha/oprofile/common.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <linux/smp.h> | 12 | #include <linux/smp.h> |
13 | #include <linux/errno.h> | 13 | #include <linux/errno.h> |
14 | #include <asm/ptrace.h> | 14 | #include <asm/ptrace.h> |
15 | #include <asm/system.h> | ||
16 | 15 | ||
17 | #include "op_impl.h" | 16 | #include "op_impl.h" |
18 | 17 | ||
diff --git a/arch/alpha/oprofile/op_model_ev4.c b/arch/alpha/oprofile/op_model_ev4.c index 80d764dbf22f..18aa9b4f94f1 100644 --- a/arch/alpha/oprofile/op_model_ev4.c +++ b/arch/alpha/oprofile/op_model_ev4.c | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <linux/init.h> | 11 | #include <linux/init.h> |
12 | #include <linux/smp.h> | 12 | #include <linux/smp.h> |
13 | #include <asm/ptrace.h> | 13 | #include <asm/ptrace.h> |
14 | #include <asm/system.h> | ||
15 | 14 | ||
16 | #include "op_impl.h" | 15 | #include "op_impl.h" |
17 | 16 | ||
diff --git a/arch/alpha/oprofile/op_model_ev5.c b/arch/alpha/oprofile/op_model_ev5.c index ceea6e1ad79a..c32f8a0ad925 100644 --- a/arch/alpha/oprofile/op_model_ev5.c +++ b/arch/alpha/oprofile/op_model_ev5.c | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <linux/init.h> | 11 | #include <linux/init.h> |
12 | #include <linux/smp.h> | 12 | #include <linux/smp.h> |
13 | #include <asm/ptrace.h> | 13 | #include <asm/ptrace.h> |
14 | #include <asm/system.h> | ||
15 | 14 | ||
16 | #include "op_impl.h" | 15 | #include "op_impl.h" |
17 | 16 | ||
diff --git a/arch/alpha/oprofile/op_model_ev6.c b/arch/alpha/oprofile/op_model_ev6.c index 0869f85f5748..1c84cc257fc7 100644 --- a/arch/alpha/oprofile/op_model_ev6.c +++ b/arch/alpha/oprofile/op_model_ev6.c | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <linux/init.h> | 11 | #include <linux/init.h> |
12 | #include <linux/smp.h> | 12 | #include <linux/smp.h> |
13 | #include <asm/ptrace.h> | 13 | #include <asm/ptrace.h> |
14 | #include <asm/system.h> | ||
15 | 14 | ||
16 | #include "op_impl.h" | 15 | #include "op_impl.h" |
17 | 16 | ||
diff --git a/arch/alpha/oprofile/op_model_ev67.c b/arch/alpha/oprofile/op_model_ev67.c index 5b9d178e0228..34a57a126553 100644 --- a/arch/alpha/oprofile/op_model_ev67.c +++ b/arch/alpha/oprofile/op_model_ev67.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/smp.h> | 13 | #include <linux/smp.h> |
14 | #include <asm/ptrace.h> | 14 | #include <asm/ptrace.h> |
15 | #include <asm/system.h> | ||
16 | 15 | ||
17 | #include "op_impl.h" | 16 | #include "op_impl.h" |
18 | 17 | ||
diff --git a/arch/arm/common/via82c505.c b/arch/arm/common/via82c505.c index 67dd2affc57a..1171a5010aea 100644 --- a/arch/arm/common/via82c505.c +++ b/arch/arm/common/via82c505.c | |||
@@ -6,7 +6,6 @@ | |||
6 | #include <linux/ioport.h> | 6 | #include <linux/ioport.h> |
7 | #include <linux/io.h> | 7 | #include <linux/io.h> |
8 | 8 | ||
9 | #include <asm/system.h> | ||
10 | 9 | ||
11 | #include <asm/mach/pci.h> | 10 | #include <asm/mach/pci.h> |
12 | 11 | ||
diff --git a/arch/arm/include/asm/atomic.h b/arch/arm/include/asm/atomic.h index 86976d034382..68374ba6a943 100644 --- a/arch/arm/include/asm/atomic.h +++ b/arch/arm/include/asm/atomic.h | |||
@@ -13,7 +13,9 @@ | |||
13 | 13 | ||
14 | #include <linux/compiler.h> | 14 | #include <linux/compiler.h> |
15 | #include <linux/types.h> | 15 | #include <linux/types.h> |
16 | #include <asm/system.h> | 16 | #include <linux/irqflags.h> |
17 | #include <asm/barrier.h> | ||
18 | #include <asm/cmpxchg.h> | ||
17 | 19 | ||
18 | #define ATOMIC_INIT(i) { (i) } | 20 | #define ATOMIC_INIT(i) { (i) } |
19 | 21 | ||
diff --git a/arch/arm/include/asm/barrier.h b/arch/arm/include/asm/barrier.h new file mode 100644 index 000000000000..44f4a09ff37b --- /dev/null +++ b/arch/arm/include/asm/barrier.h | |||
@@ -0,0 +1,69 @@ | |||
1 | #ifndef __ASM_BARRIER_H | ||
2 | #define __ASM_BARRIER_H | ||
3 | |||
4 | #ifndef __ASSEMBLY__ | ||
5 | |||
6 | #define nop() __asm__ __volatile__("mov\tr0,r0\t@ nop\n\t"); | ||
7 | |||
8 | #if __LINUX_ARM_ARCH__ >= 7 || \ | ||
9 | (__LINUX_ARM_ARCH__ == 6 && defined(CONFIG_CPU_32v6K)) | ||
10 | #define sev() __asm__ __volatile__ ("sev" : : : "memory") | ||
11 | #define wfe() __asm__ __volatile__ ("wfe" : : : "memory") | ||
12 | #define wfi() __asm__ __volatile__ ("wfi" : : : "memory") | ||
13 | #endif | ||
14 | |||
15 | #if __LINUX_ARM_ARCH__ >= 7 | ||
16 | #define isb() __asm__ __volatile__ ("isb" : : : "memory") | ||
17 | #define dsb() __asm__ __volatile__ ("dsb" : : : "memory") | ||
18 | #define dmb() __asm__ __volatile__ ("dmb" : : : "memory") | ||
19 | #elif defined(CONFIG_CPU_XSC3) || __LINUX_ARM_ARCH__ == 6 | ||
20 | #define isb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c5, 4" \ | ||
21 | : : "r" (0) : "memory") | ||
22 | #define dsb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 4" \ | ||
23 | : : "r" (0) : "memory") | ||
24 | #define dmb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" \ | ||
25 | : : "r" (0) : "memory") | ||
26 | #elif defined(CONFIG_CPU_FA526) | ||
27 | #define isb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c5, 4" \ | ||
28 | : : "r" (0) : "memory") | ||
29 | #define dsb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 4" \ | ||
30 | : : "r" (0) : "memory") | ||
31 | #define dmb() __asm__ __volatile__ ("" : : : "memory") | ||
32 | #else | ||
33 | #define isb() __asm__ __volatile__ ("" : : : "memory") | ||
34 | #define dsb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 4" \ | ||
35 | : : "r" (0) : "memory") | ||
36 | #define dmb() __asm__ __volatile__ ("" : : : "memory") | ||
37 | #endif | ||
38 | |||
39 | #ifdef CONFIG_ARCH_HAS_BARRIERS | ||
40 | #include <mach/barriers.h> | ||
41 | #elif defined(CONFIG_ARM_DMA_MEM_BUFFERABLE) || defined(CONFIG_SMP) | ||
42 | #include <asm/outercache.h> | ||
43 | #define mb() do { dsb(); outer_sync(); } while (0) | ||
44 | #define rmb() dsb() | ||
45 | #define wmb() mb() | ||
46 | #else | ||
47 | #include <asm/memory.h> | ||
48 | #define mb() do { if (arch_is_coherent()) dmb(); else barrier(); } while (0) | ||
49 | #define rmb() do { if (arch_is_coherent()) dmb(); else barrier(); } while (0) | ||
50 | #define wmb() do { if (arch_is_coherent()) dmb(); else barrier(); } while (0) | ||
51 | #endif | ||
52 | |||
53 | #ifndef CONFIG_SMP | ||
54 | #define smp_mb() barrier() | ||
55 | #define smp_rmb() barrier() | ||
56 | #define smp_wmb() barrier() | ||
57 | #else | ||
58 | #define smp_mb() dmb() | ||
59 | #define smp_rmb() dmb() | ||
60 | #define smp_wmb() dmb() | ||
61 | #endif | ||
62 | |||
63 | #define read_barrier_depends() do { } while(0) | ||
64 | #define smp_read_barrier_depends() do { } while(0) | ||
65 | |||
66 | #define set_mb(var, value) do { var = value; smp_mb(); } while (0) | ||
67 | |||
68 | #endif /* !__ASSEMBLY__ */ | ||
69 | #endif /* __ASM_BARRIER_H */ | ||
diff --git a/arch/arm/include/asm/bitops.h b/arch/arm/include/asm/bitops.h index f7419ef9c8f9..e691ec91e4d3 100644 --- a/arch/arm/include/asm/bitops.h +++ b/arch/arm/include/asm/bitops.h | |||
@@ -24,7 +24,7 @@ | |||
24 | #endif | 24 | #endif |
25 | 25 | ||
26 | #include <linux/compiler.h> | 26 | #include <linux/compiler.h> |
27 | #include <asm/system.h> | 27 | #include <linux/irqflags.h> |
28 | 28 | ||
29 | #define smp_mb__before_clear_bit() smp_mb() | 29 | #define smp_mb__before_clear_bit() smp_mb() |
30 | #define smp_mb__after_clear_bit() smp_mb() | 30 | #define smp_mb__after_clear_bit() smp_mb() |
diff --git a/arch/arm/include/asm/bug.h b/arch/arm/include/asm/bug.h index fac79dceb736..7af5c6c3653a 100644 --- a/arch/arm/include/asm/bug.h +++ b/arch/arm/include/asm/bug.h | |||
@@ -1,6 +1,7 @@ | |||
1 | #ifndef _ASMARM_BUG_H | 1 | #ifndef _ASMARM_BUG_H |
2 | #define _ASMARM_BUG_H | 2 | #define _ASMARM_BUG_H |
3 | 3 | ||
4 | #include <linux/linkage.h> | ||
4 | 5 | ||
5 | #ifdef CONFIG_BUG | 6 | #ifdef CONFIG_BUG |
6 | 7 | ||
@@ -57,4 +58,33 @@ do { \ | |||
57 | 58 | ||
58 | #include <asm-generic/bug.h> | 59 | #include <asm-generic/bug.h> |
59 | 60 | ||
61 | struct pt_regs; | ||
62 | void die(const char *msg, struct pt_regs *regs, int err); | ||
63 | |||
64 | struct siginfo; | ||
65 | void arm_notify_die(const char *str, struct pt_regs *regs, struct siginfo *info, | ||
66 | unsigned long err, unsigned long trap); | ||
67 | |||
68 | #ifdef CONFIG_ARM_LPAE | ||
69 | #define FAULT_CODE_ALIGNMENT 33 | ||
70 | #define FAULT_CODE_DEBUG 34 | ||
71 | #else | ||
72 | #define FAULT_CODE_ALIGNMENT 1 | ||
73 | #define FAULT_CODE_DEBUG 2 | ||
74 | #endif | ||
75 | |||
76 | void hook_fault_code(int nr, int (*fn)(unsigned long, unsigned int, | ||
77 | struct pt_regs *), | ||
78 | int sig, int code, const char *name); | ||
79 | |||
80 | void hook_ifault_code(int nr, int (*fn)(unsigned long, unsigned int, | ||
81 | struct pt_regs *), | ||
82 | int sig, int code, const char *name); | ||
83 | |||
84 | extern asmlinkage void c_backtrace(unsigned long fp, int pmode); | ||
85 | |||
86 | struct mm_struct; | ||
87 | extern void show_pte(struct mm_struct *mm, unsigned long addr); | ||
88 | extern void __show_regs(struct pt_regs *); | ||
89 | |||
60 | #endif | 90 | #endif |
diff --git a/arch/arm/include/asm/cmpxchg.h b/arch/arm/include/asm/cmpxchg.h new file mode 100644 index 000000000000..d41d7cbf0ada --- /dev/null +++ b/arch/arm/include/asm/cmpxchg.h | |||
@@ -0,0 +1,295 @@ | |||
1 | #ifndef __ASM_ARM_CMPXCHG_H | ||
2 | #define __ASM_ARM_CMPXCHG_H | ||
3 | |||
4 | #include <linux/irqflags.h> | ||
5 | #include <asm/barrier.h> | ||
6 | |||
7 | #if defined(CONFIG_CPU_SA1100) || defined(CONFIG_CPU_SA110) | ||
8 | /* | ||
9 | * On the StrongARM, "swp" is terminally broken since it bypasses the | ||
10 | * cache totally. This means that the cache becomes inconsistent, and, | ||
11 | * since we use normal loads/stores as well, this is really bad. | ||
12 | * Typically, this causes oopsen in filp_close, but could have other, | ||
13 | * more disastrous effects. There are two work-arounds: | ||
14 | * 1. Disable interrupts and emulate the atomic swap | ||
15 | * 2. Clean the cache, perform atomic swap, flush the cache | ||
16 | * | ||
17 | * We choose (1) since its the "easiest" to achieve here and is not | ||
18 | * dependent on the processor type. | ||
19 | * | ||
20 | * NOTE that this solution won't work on an SMP system, so explcitly | ||
21 | * forbid it here. | ||
22 | */ | ||
23 | #define swp_is_buggy | ||
24 | #endif | ||
25 | |||
26 | static inline unsigned long __xchg(unsigned long x, volatile void *ptr, int size) | ||
27 | { | ||
28 | extern void __bad_xchg(volatile void *, int); | ||
29 | unsigned long ret; | ||
30 | #ifdef swp_is_buggy | ||
31 | unsigned long flags; | ||
32 | #endif | ||
33 | #if __LINUX_ARM_ARCH__ >= 6 | ||
34 | unsigned int tmp; | ||
35 | #endif | ||
36 | |||
37 | smp_mb(); | ||
38 | |||
39 | switch (size) { | ||
40 | #if __LINUX_ARM_ARCH__ >= 6 | ||
41 | case 1: | ||
42 | asm volatile("@ __xchg1\n" | ||
43 | "1: ldrexb %0, [%3]\n" | ||
44 | " strexb %1, %2, [%3]\n" | ||
45 | " teq %1, #0\n" | ||
46 | " bne 1b" | ||
47 | : "=&r" (ret), "=&r" (tmp) | ||
48 | : "r" (x), "r" (ptr) | ||
49 | : "memory", "cc"); | ||
50 | break; | ||
51 | case 4: | ||
52 | asm volatile("@ __xchg4\n" | ||
53 | "1: ldrex %0, [%3]\n" | ||
54 | " strex %1, %2, [%3]\n" | ||
55 | " teq %1, #0\n" | ||
56 | " bne 1b" | ||
57 | : "=&r" (ret), "=&r" (tmp) | ||
58 | : "r" (x), "r" (ptr) | ||
59 | : "memory", "cc"); | ||
60 | break; | ||
61 | #elif defined(swp_is_buggy) | ||
62 | #ifdef CONFIG_SMP | ||
63 | #error SMP is not supported on this platform | ||
64 | #endif | ||
65 | case 1: | ||
66 | raw_local_irq_save(flags); | ||
67 | ret = *(volatile unsigned char *)ptr; | ||
68 | *(volatile unsigned char *)ptr = x; | ||
69 | raw_local_irq_restore(flags); | ||
70 | break; | ||
71 | |||
72 | case 4: | ||
73 | raw_local_irq_save(flags); | ||
74 | ret = *(volatile unsigned long *)ptr; | ||
75 | *(volatile unsigned long *)ptr = x; | ||
76 | raw_local_irq_restore(flags); | ||
77 | break; | ||
78 | #else | ||
79 | case 1: | ||
80 | asm volatile("@ __xchg1\n" | ||
81 | " swpb %0, %1, [%2]" | ||
82 | : "=&r" (ret) | ||
83 | : "r" (x), "r" (ptr) | ||
84 | : "memory", "cc"); | ||
85 | break; | ||
86 | case 4: | ||
87 | asm volatile("@ __xchg4\n" | ||
88 | " swp %0, %1, [%2]" | ||
89 | : "=&r" (ret) | ||
90 | : "r" (x), "r" (ptr) | ||
91 | : "memory", "cc"); | ||
92 | break; | ||
93 | #endif | ||
94 | default: | ||
95 | __bad_xchg(ptr, size), ret = 0; | ||
96 | break; | ||
97 | } | ||
98 | smp_mb(); | ||
99 | |||
100 | return ret; | ||
101 | } | ||
102 | |||
103 | #define xchg(ptr,x) \ | ||
104 | ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr)))) | ||
105 | |||
106 | #include <asm-generic/cmpxchg-local.h> | ||
107 | |||
108 | #if __LINUX_ARM_ARCH__ < 6 | ||
109 | /* min ARCH < ARMv6 */ | ||
110 | |||
111 | #ifdef CONFIG_SMP | ||
112 | #error "SMP is not supported on this platform" | ||
113 | #endif | ||
114 | |||
115 | /* | ||
116 | * cmpxchg_local and cmpxchg64_local are atomic wrt current CPU. Always make | ||
117 | * them available. | ||
118 | */ | ||
119 | #define cmpxchg_local(ptr, o, n) \ | ||
120 | ((__typeof__(*(ptr)))__cmpxchg_local_generic((ptr), (unsigned long)(o),\ | ||
121 | (unsigned long)(n), sizeof(*(ptr)))) | ||
122 | #define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) | ||
123 | |||
124 | #ifndef CONFIG_SMP | ||
125 | #include <asm-generic/cmpxchg.h> | ||
126 | #endif | ||
127 | |||
128 | #else /* min ARCH >= ARMv6 */ | ||
129 | |||
130 | extern void __bad_cmpxchg(volatile void *ptr, int size); | ||
131 | |||
132 | /* | ||
133 | * cmpxchg only support 32-bits operands on ARMv6. | ||
134 | */ | ||
135 | |||
136 | static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old, | ||
137 | unsigned long new, int size) | ||
138 | { | ||
139 | unsigned long oldval, res; | ||
140 | |||
141 | switch (size) { | ||
142 | #ifndef CONFIG_CPU_V6 /* min ARCH >= ARMv6K */ | ||
143 | case 1: | ||
144 | do { | ||
145 | asm volatile("@ __cmpxchg1\n" | ||
146 | " ldrexb %1, [%2]\n" | ||
147 | " mov %0, #0\n" | ||
148 | " teq %1, %3\n" | ||
149 | " strexbeq %0, %4, [%2]\n" | ||
150 | : "=&r" (res), "=&r" (oldval) | ||
151 | : "r" (ptr), "Ir" (old), "r" (new) | ||
152 | : "memory", "cc"); | ||
153 | } while (res); | ||
154 | break; | ||
155 | case 2: | ||
156 | do { | ||
157 | asm volatile("@ __cmpxchg1\n" | ||
158 | " ldrexh %1, [%2]\n" | ||
159 | " mov %0, #0\n" | ||
160 | " teq %1, %3\n" | ||
161 | " strexheq %0, %4, [%2]\n" | ||
162 | : "=&r" (res), "=&r" (oldval) | ||
163 | : "r" (ptr), "Ir" (old), "r" (new) | ||
164 | : "memory", "cc"); | ||
165 | } while (res); | ||
166 | break; | ||
167 | #endif | ||
168 | case 4: | ||
169 | do { | ||
170 | asm volatile("@ __cmpxchg4\n" | ||
171 | " ldrex %1, [%2]\n" | ||
172 | " mov %0, #0\n" | ||
173 | " teq %1, %3\n" | ||
174 | " strexeq %0, %4, [%2]\n" | ||
175 | : "=&r" (res), "=&r" (oldval) | ||
176 | : "r" (ptr), "Ir" (old), "r" (new) | ||
177 | : "memory", "cc"); | ||
178 | } while (res); | ||
179 | break; | ||
180 | default: | ||
181 | __bad_cmpxchg(ptr, size); | ||
182 | oldval = 0; | ||
183 | } | ||
184 | |||
185 | return oldval; | ||
186 | } | ||
187 | |||
188 | static inline unsigned long __cmpxchg_mb(volatile void *ptr, unsigned long old, | ||
189 | unsigned long new, int size) | ||
190 | { | ||
191 | unsigned long ret; | ||
192 | |||
193 | smp_mb(); | ||
194 | ret = __cmpxchg(ptr, old, new, size); | ||
195 | smp_mb(); | ||
196 | |||
197 | return ret; | ||
198 | } | ||
199 | |||
200 | #define cmpxchg(ptr,o,n) \ | ||
201 | ((__typeof__(*(ptr)))__cmpxchg_mb((ptr), \ | ||
202 | (unsigned long)(o), \ | ||
203 | (unsigned long)(n), \ | ||
204 | sizeof(*(ptr)))) | ||
205 | |||
206 | static inline unsigned long __cmpxchg_local(volatile void *ptr, | ||
207 | unsigned long old, | ||
208 | unsigned long new, int size) | ||
209 | { | ||
210 | unsigned long ret; | ||
211 | |||
212 | switch (size) { | ||
213 | #ifdef CONFIG_CPU_V6 /* min ARCH == ARMv6 */ | ||
214 | case 1: | ||
215 | case 2: | ||
216 | ret = __cmpxchg_local_generic(ptr, old, new, size); | ||
217 | break; | ||
218 | #endif | ||
219 | default: | ||
220 | ret = __cmpxchg(ptr, old, new, size); | ||
221 | } | ||
222 | |||
223 | return ret; | ||
224 | } | ||
225 | |||
226 | #define cmpxchg_local(ptr,o,n) \ | ||
227 | ((__typeof__(*(ptr)))__cmpxchg_local((ptr), \ | ||
228 | (unsigned long)(o), \ | ||
229 | (unsigned long)(n), \ | ||
230 | sizeof(*(ptr)))) | ||
231 | |||
232 | #ifndef CONFIG_CPU_V6 /* min ARCH >= ARMv6K */ | ||
233 | |||
234 | /* | ||
235 | * Note : ARMv7-M (currently unsupported by Linux) does not support | ||
236 | * ldrexd/strexd. If ARMv7-M is ever supported by the Linux kernel, it should | ||
237 | * not be allowed to use __cmpxchg64. | ||
238 | */ | ||
239 | static inline unsigned long long __cmpxchg64(volatile void *ptr, | ||
240 | unsigned long long old, | ||
241 | unsigned long long new) | ||
242 | { | ||
243 | register unsigned long long oldval asm("r0"); | ||
244 | register unsigned long long __old asm("r2") = old; | ||
245 | register unsigned long long __new asm("r4") = new; | ||
246 | unsigned long res; | ||
247 | |||
248 | do { | ||
249 | asm volatile( | ||
250 | " @ __cmpxchg8\n" | ||
251 | " ldrexd %1, %H1, [%2]\n" | ||
252 | " mov %0, #0\n" | ||
253 | " teq %1, %3\n" | ||
254 | " teqeq %H1, %H3\n" | ||
255 | " strexdeq %0, %4, %H4, [%2]\n" | ||
256 | : "=&r" (res), "=&r" (oldval) | ||
257 | : "r" (ptr), "Ir" (__old), "r" (__new) | ||
258 | : "memory", "cc"); | ||
259 | } while (res); | ||
260 | |||
261 | return oldval; | ||
262 | } | ||
263 | |||
264 | static inline unsigned long long __cmpxchg64_mb(volatile void *ptr, | ||
265 | unsigned long long old, | ||
266 | unsigned long long new) | ||
267 | { | ||
268 | unsigned long long ret; | ||
269 | |||
270 | smp_mb(); | ||
271 | ret = __cmpxchg64(ptr, old, new); | ||
272 | smp_mb(); | ||
273 | |||
274 | return ret; | ||
275 | } | ||
276 | |||
277 | #define cmpxchg64(ptr,o,n) \ | ||
278 | ((__typeof__(*(ptr)))__cmpxchg64_mb((ptr), \ | ||
279 | (unsigned long long)(o), \ | ||
280 | (unsigned long long)(n))) | ||
281 | |||
282 | #define cmpxchg64_local(ptr,o,n) \ | ||
283 | ((__typeof__(*(ptr)))__cmpxchg64((ptr), \ | ||
284 | (unsigned long long)(o), \ | ||
285 | (unsigned long long)(n))) | ||
286 | |||
287 | #else /* min ARCH = ARMv6 */ | ||
288 | |||
289 | #define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) | ||
290 | |||
291 | #endif | ||
292 | |||
293 | #endif /* __LINUX_ARM_ARCH__ >= 6 */ | ||
294 | |||
295 | #endif /* __ASM_ARM_CMPXCHG_H */ | ||
diff --git a/arch/arm/include/asm/compiler.h b/arch/arm/include/asm/compiler.h new file mode 100644 index 000000000000..8155db2f7fa1 --- /dev/null +++ b/arch/arm/include/asm/compiler.h | |||
@@ -0,0 +1,15 @@ | |||
1 | #ifndef __ASM_ARM_COMPILER_H | ||
2 | #define __ASM_ARM_COMPILER_H | ||
3 | |||
4 | /* | ||
5 | * This is used to ensure the compiler did actually allocate the register we | ||
6 | * asked it for some inline assembly sequences. Apparently we can't trust | ||
7 | * the compiler from one version to another so a bit of paranoia won't hurt. | ||
8 | * This string is meant to be concatenated with the inline asm string and | ||
9 | * will cause compilation to stop on mismatch. | ||
10 | * (for details, see gcc PR 15089) | ||
11 | */ | ||
12 | #define __asmeq(x, y) ".ifnc " x "," y " ; .err ; .endif\n\t" | ||
13 | |||
14 | |||
15 | #endif /* __ASM_ARM_COMPILER_H */ | ||
diff --git a/arch/arm/include/asm/cp15.h b/arch/arm/include/asm/cp15.h new file mode 100644 index 000000000000..5ef4d8015a60 --- /dev/null +++ b/arch/arm/include/asm/cp15.h | |||
@@ -0,0 +1,87 @@ | |||
1 | #ifndef __ASM_ARM_CP15_H | ||
2 | #define __ASM_ARM_CP15_H | ||
3 | |||
4 | #include <asm/barrier.h> | ||
5 | |||
6 | /* | ||
7 | * CR1 bits (CP#15 CR1) | ||
8 | */ | ||
9 | #define CR_M (1 << 0) /* MMU enable */ | ||
10 | #define CR_A (1 << 1) /* Alignment abort enable */ | ||
11 | #define CR_C (1 << 2) /* Dcache enable */ | ||
12 | #define CR_W (1 << 3) /* Write buffer enable */ | ||
13 | #define CR_P (1 << 4) /* 32-bit exception handler */ | ||
14 | #define CR_D (1 << 5) /* 32-bit data address range */ | ||
15 | #define CR_L (1 << 6) /* Implementation defined */ | ||
16 | #define CR_B (1 << 7) /* Big endian */ | ||
17 | #define CR_S (1 << 8) /* System MMU protection */ | ||
18 | #define CR_R (1 << 9) /* ROM MMU protection */ | ||
19 | #define CR_F (1 << 10) /* Implementation defined */ | ||
20 | #define CR_Z (1 << 11) /* Implementation defined */ | ||
21 | #define CR_I (1 << 12) /* Icache enable */ | ||
22 | #define CR_V (1 << 13) /* Vectors relocated to 0xffff0000 */ | ||
23 | #define CR_RR (1 << 14) /* Round Robin cache replacement */ | ||
24 | #define CR_L4 (1 << 15) /* LDR pc can set T bit */ | ||
25 | #define CR_DT (1 << 16) | ||
26 | #define CR_IT (1 << 18) | ||
27 | #define CR_ST (1 << 19) | ||
28 | #define CR_FI (1 << 21) /* Fast interrupt (lower latency mode) */ | ||
29 | #define CR_U (1 << 22) /* Unaligned access operation */ | ||
30 | #define CR_XP (1 << 23) /* Extended page tables */ | ||
31 | #define CR_VE (1 << 24) /* Vectored interrupts */ | ||
32 | #define CR_EE (1 << 25) /* Exception (Big) Endian */ | ||
33 | #define CR_TRE (1 << 28) /* TEX remap enable */ | ||
34 | #define CR_AFE (1 << 29) /* Access flag enable */ | ||
35 | #define CR_TE (1 << 30) /* Thumb exception enable */ | ||
36 | |||
37 | #ifndef __ASSEMBLY__ | ||
38 | |||
39 | #if __LINUX_ARM_ARCH__ >= 4 | ||
40 | #define vectors_high() (cr_alignment & CR_V) | ||
41 | #else | ||
42 | #define vectors_high() (0) | ||
43 | #endif | ||
44 | |||
45 | extern unsigned long cr_no_alignment; /* defined in entry-armv.S */ | ||
46 | extern unsigned long cr_alignment; /* defined in entry-armv.S */ | ||
47 | |||
48 | static inline unsigned int get_cr(void) | ||
49 | { | ||
50 | unsigned int val; | ||
51 | asm("mrc p15, 0, %0, c1, c0, 0 @ get CR" : "=r" (val) : : "cc"); | ||
52 | return val; | ||
53 | } | ||
54 | |||
55 | static inline void set_cr(unsigned int val) | ||
56 | { | ||
57 | asm volatile("mcr p15, 0, %0, c1, c0, 0 @ set CR" | ||
58 | : : "r" (val) : "cc"); | ||
59 | isb(); | ||
60 | } | ||
61 | |||
62 | #ifndef CONFIG_SMP | ||
63 | extern void adjust_cr(unsigned long mask, unsigned long set); | ||
64 | #endif | ||
65 | |||
66 | #define CPACC_FULL(n) (3 << (n * 2)) | ||
67 | #define CPACC_SVC(n) (1 << (n * 2)) | ||
68 | #define CPACC_DISABLE(n) (0 << (n * 2)) | ||
69 | |||
70 | static inline unsigned int get_copro_access(void) | ||
71 | { | ||
72 | unsigned int val; | ||
73 | asm("mrc p15, 0, %0, c1, c0, 2 @ get copro access" | ||
74 | : "=r" (val) : : "cc"); | ||
75 | return val; | ||
76 | } | ||
77 | |||
78 | static inline void set_copro_access(unsigned int val) | ||
79 | { | ||
80 | asm volatile("mcr p15, 0, %0, c1, c0, 2 @ set copro access" | ||
81 | : : "r" (val) : "cc"); | ||
82 | isb(); | ||
83 | } | ||
84 | |||
85 | #endif | ||
86 | |||
87 | #endif | ||
diff --git a/arch/arm/include/asm/div64.h b/arch/arm/include/asm/div64.h index d3f0a9eee9f6..fe92ccf1d0b0 100644 --- a/arch/arm/include/asm/div64.h +++ b/arch/arm/include/asm/div64.h | |||
@@ -1,8 +1,8 @@ | |||
1 | #ifndef __ASM_ARM_DIV64 | 1 | #ifndef __ASM_ARM_DIV64 |
2 | #define __ASM_ARM_DIV64 | 2 | #define __ASM_ARM_DIV64 |
3 | 3 | ||
4 | #include <asm/system.h> | ||
5 | #include <linux/types.h> | 4 | #include <linux/types.h> |
5 | #include <asm/compiler.h> | ||
6 | 6 | ||
7 | /* | 7 | /* |
8 | * The semantics of do_div() are: | 8 | * The semantics of do_div() are: |
diff --git a/arch/arm/include/asm/dma.h b/arch/arm/include/asm/dma.h index 69a5b0b6455c..5694a0d6576b 100644 --- a/arch/arm/include/asm/dma.h +++ b/arch/arm/include/asm/dma.h | |||
@@ -19,7 +19,6 @@ | |||
19 | * It should not be re-used except for that purpose. | 19 | * It should not be re-used except for that purpose. |
20 | */ | 20 | */ |
21 | #include <linux/spinlock.h> | 21 | #include <linux/spinlock.h> |
22 | #include <asm/system.h> | ||
23 | #include <asm/scatterlist.h> | 22 | #include <asm/scatterlist.h> |
24 | 23 | ||
25 | #include <mach/isa-dma.h> | 24 | #include <mach/isa-dma.h> |
diff --git a/arch/arm/include/asm/domain.h b/arch/arm/include/asm/domain.h index b5dc173d336f..3d2220498abc 100644 --- a/arch/arm/include/asm/domain.h +++ b/arch/arm/include/asm/domain.h | |||
@@ -10,6 +10,10 @@ | |||
10 | #ifndef __ASM_PROC_DOMAIN_H | 10 | #ifndef __ASM_PROC_DOMAIN_H |
11 | #define __ASM_PROC_DOMAIN_H | 11 | #define __ASM_PROC_DOMAIN_H |
12 | 12 | ||
13 | #ifndef __ASSEMBLY__ | ||
14 | #include <asm/barrier.h> | ||
15 | #endif | ||
16 | |||
13 | /* | 17 | /* |
14 | * Domain numbers | 18 | * Domain numbers |
15 | * | 19 | * |
diff --git a/arch/arm/include/asm/exec.h b/arch/arm/include/asm/exec.h new file mode 100644 index 000000000000..7c4fbef72b3a --- /dev/null +++ b/arch/arm/include/asm/exec.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __ASM_ARM_EXEC_H | ||
2 | #define __ASM_ARM_EXEC_H | ||
3 | |||
4 | #define arch_align_stack(x) (x) | ||
5 | |||
6 | #endif /* __ASM_ARM_EXEC_H */ | ||
diff --git a/arch/arm/include/asm/hardware/iop3xx.h b/arch/arm/include/asm/hardware/iop3xx.h index 077c32326c63..2ff2c75a4639 100644 --- a/arch/arm/include/asm/hardware/iop3xx.h +++ b/arch/arm/include/asm/hardware/iop3xx.h | |||
@@ -231,6 +231,9 @@ extern int iop3xx_get_init_atu(void); | |||
231 | 231 | ||
232 | 232 | ||
233 | #ifndef __ASSEMBLY__ | 233 | #ifndef __ASSEMBLY__ |
234 | |||
235 | #include <linux/types.h> | ||
236 | |||
234 | void iop3xx_map_io(void); | 237 | void iop3xx_map_io(void); |
235 | void iop_init_cp6_handler(void); | 238 | void iop_init_cp6_handler(void); |
236 | void iop_init_time(unsigned long tickrate); | 239 | void iop_init_time(unsigned long tickrate); |
diff --git a/arch/arm/include/asm/io.h b/arch/arm/include/asm/io.h index 9275828feb3d..bae7eb6011d2 100644 --- a/arch/arm/include/asm/io.h +++ b/arch/arm/include/asm/io.h | |||
@@ -26,7 +26,6 @@ | |||
26 | #include <linux/types.h> | 26 | #include <linux/types.h> |
27 | #include <asm/byteorder.h> | 27 | #include <asm/byteorder.h> |
28 | #include <asm/memory.h> | 28 | #include <asm/memory.h> |
29 | #include <asm/system.h> | ||
30 | #include <asm-generic/pci_iomap.h> | 29 | #include <asm-generic/pci_iomap.h> |
31 | 30 | ||
32 | /* | 31 | /* |
@@ -99,6 +98,7 @@ static inline void __iomem *__typesafe_io(unsigned long addr) | |||
99 | 98 | ||
100 | /* IO barriers */ | 99 | /* IO barriers */ |
101 | #ifdef CONFIG_ARM_DMA_MEM_BUFFERABLE | 100 | #ifdef CONFIG_ARM_DMA_MEM_BUFFERABLE |
101 | #include <asm/barrier.h> | ||
102 | #define __iormb() rmb() | 102 | #define __iormb() rmb() |
103 | #define __iowmb() wmb() | 103 | #define __iowmb() wmb() |
104 | #else | 104 | #else |
diff --git a/arch/arm/include/asm/mmu.h b/arch/arm/include/asm/mmu.h index 14965658a923..b8e580a297e4 100644 --- a/arch/arm/include/asm/mmu.h +++ b/arch/arm/include/asm/mmu.h | |||
@@ -34,4 +34,11 @@ typedef struct { | |||
34 | 34 | ||
35 | #endif | 35 | #endif |
36 | 36 | ||
37 | /* | ||
38 | * switch_mm() may do a full cache flush over the context switch, | ||
39 | * so enable interrupts over the context switch to avoid high | ||
40 | * latency. | ||
41 | */ | ||
42 | #define __ARCH_WANT_INTERRUPTS_ON_CTXSW | ||
43 | |||
37 | #endif | 44 | #endif |
diff --git a/arch/arm/include/asm/processor.h b/arch/arm/include/asm/processor.h index cb8d638924fd..f4d7f56ee51f 100644 --- a/arch/arm/include/asm/processor.h +++ b/arch/arm/include/asm/processor.h | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <asm/hw_breakpoint.h> | 22 | #include <asm/hw_breakpoint.h> |
23 | #include <asm/ptrace.h> | 23 | #include <asm/ptrace.h> |
24 | #include <asm/types.h> | 24 | #include <asm/types.h> |
25 | #include <asm/system.h> | ||
26 | 25 | ||
27 | #ifdef __KERNEL__ | 26 | #ifdef __KERNEL__ |
28 | #define STACK_TOP ((current->personality & ADDR_LIMIT_32BIT) ? \ | 27 | #define STACK_TOP ((current->personality & ADDR_LIMIT_32BIT) ? \ |
@@ -90,6 +89,8 @@ unsigned long get_wchan(struct task_struct *p); | |||
90 | #define cpu_relax() barrier() | 89 | #define cpu_relax() barrier() |
91 | #endif | 90 | #endif |
92 | 91 | ||
92 | void cpu_idle_wait(void); | ||
93 | |||
93 | /* | 94 | /* |
94 | * Create a new kernel thread | 95 | * Create a new kernel thread |
95 | */ | 96 | */ |
diff --git a/arch/arm/include/asm/switch_to.h b/arch/arm/include/asm/switch_to.h new file mode 100644 index 000000000000..fa09e6b49bf1 --- /dev/null +++ b/arch/arm/include/asm/switch_to.h | |||
@@ -0,0 +1,18 @@ | |||
1 | #ifndef __ASM_ARM_SWITCH_TO_H | ||
2 | #define __ASM_ARM_SWITCH_TO_H | ||
3 | |||
4 | #include <linux/thread_info.h> | ||
5 | |||
6 | /* | ||
7 | * switch_to(prev, next) should switch from task `prev' to `next' | ||
8 | * `prev' will never be the same as `next'. schedule() itself | ||
9 | * contains the memory barrier to tell GCC not to cache `current'. | ||
10 | */ | ||
11 | extern struct task_struct *__switch_to(struct task_struct *, struct thread_info *, struct thread_info *); | ||
12 | |||
13 | #define switch_to(prev,next,last) \ | ||
14 | do { \ | ||
15 | last = __switch_to(prev,task_thread_info(prev), task_thread_info(next)); \ | ||
16 | } while (0) | ||
17 | |||
18 | #endif /* __ASM_ARM_SWITCH_TO_H */ | ||
diff --git a/arch/arm/include/asm/system.h b/arch/arm/include/asm/system.h index 424aa458c487..74542c52f9be 100644 --- a/arch/arm/include/asm/system.h +++ b/arch/arm/include/asm/system.h | |||
@@ -1,544 +1,8 @@ | |||
1 | #ifndef __ASM_ARM_SYSTEM_H | 1 | /* FILE TO BE DELETED. DO NOT ADD STUFF HERE! */ |
2 | #define __ASM_ARM_SYSTEM_H | 2 | #include <asm/barrier.h> |
3 | 3 | #include <asm/compiler.h> | |
4 | #ifdef __KERNEL__ | 4 | #include <asm/cmpxchg.h> |
5 | 5 | #include <asm/exec.h> | |
6 | #define CPU_ARCH_UNKNOWN 0 | 6 | #include <asm/switch_to.h> |
7 | #define CPU_ARCH_ARMv3 1 | 7 | #include <asm/system_info.h> |
8 | #define CPU_ARCH_ARMv4 2 | 8 | #include <asm/system_misc.h> |
9 | #define CPU_ARCH_ARMv4T 3 | ||
10 | #define CPU_ARCH_ARMv5 4 | ||
11 | #define CPU_ARCH_ARMv5T 5 | ||
12 | #define CPU_ARCH_ARMv5TE 6 | ||
13 | #define CPU_ARCH_ARMv5TEJ 7 | ||
14 | #define CPU_ARCH_ARMv6 8 | ||
15 | #define CPU_ARCH_ARMv7 9 | ||
16 | |||
17 | /* | ||
18 | * CR1 bits (CP#15 CR1) | ||
19 | */ | ||
20 | #define CR_M (1 << 0) /* MMU enable */ | ||
21 | #define CR_A (1 << 1) /* Alignment abort enable */ | ||
22 | #define CR_C (1 << 2) /* Dcache enable */ | ||
23 | #define CR_W (1 << 3) /* Write buffer enable */ | ||
24 | #define CR_P (1 << 4) /* 32-bit exception handler */ | ||
25 | #define CR_D (1 << 5) /* 32-bit data address range */ | ||
26 | #define CR_L (1 << 6) /* Implementation defined */ | ||
27 | #define CR_B (1 << 7) /* Big endian */ | ||
28 | #define CR_S (1 << 8) /* System MMU protection */ | ||
29 | #define CR_R (1 << 9) /* ROM MMU protection */ | ||
30 | #define CR_F (1 << 10) /* Implementation defined */ | ||
31 | #define CR_Z (1 << 11) /* Implementation defined */ | ||
32 | #define CR_I (1 << 12) /* Icache enable */ | ||
33 | #define CR_V (1 << 13) /* Vectors relocated to 0xffff0000 */ | ||
34 | #define CR_RR (1 << 14) /* Round Robin cache replacement */ | ||
35 | #define CR_L4 (1 << 15) /* LDR pc can set T bit */ | ||
36 | #define CR_DT (1 << 16) | ||
37 | #define CR_IT (1 << 18) | ||
38 | #define CR_ST (1 << 19) | ||
39 | #define CR_FI (1 << 21) /* Fast interrupt (lower latency mode) */ | ||
40 | #define CR_U (1 << 22) /* Unaligned access operation */ | ||
41 | #define CR_XP (1 << 23) /* Extended page tables */ | ||
42 | #define CR_VE (1 << 24) /* Vectored interrupts */ | ||
43 | #define CR_EE (1 << 25) /* Exception (Big) Endian */ | ||
44 | #define CR_TRE (1 << 28) /* TEX remap enable */ | ||
45 | #define CR_AFE (1 << 29) /* Access flag enable */ | ||
46 | #define CR_TE (1 << 30) /* Thumb exception enable */ | ||
47 | |||
48 | /* | ||
49 | * This is used to ensure the compiler did actually allocate the register we | ||
50 | * asked it for some inline assembly sequences. Apparently we can't trust | ||
51 | * the compiler from one version to another so a bit of paranoia won't hurt. | ||
52 | * This string is meant to be concatenated with the inline asm string and | ||
53 | * will cause compilation to stop on mismatch. | ||
54 | * (for details, see gcc PR 15089) | ||
55 | */ | ||
56 | #define __asmeq(x, y) ".ifnc " x "," y " ; .err ; .endif\n\t" | ||
57 | |||
58 | #ifndef __ASSEMBLY__ | ||
59 | |||
60 | #include <linux/compiler.h> | ||
61 | #include <linux/linkage.h> | ||
62 | #include <linux/irqflags.h> | ||
63 | |||
64 | #include <asm/outercache.h> | ||
65 | |||
66 | struct thread_info; | ||
67 | struct task_struct; | ||
68 | |||
69 | /* information about the system we're running on */ | ||
70 | extern unsigned int system_rev; | ||
71 | extern unsigned int system_serial_low; | ||
72 | extern unsigned int system_serial_high; | ||
73 | extern unsigned int mem_fclk_21285; | ||
74 | |||
75 | struct pt_regs; | ||
76 | |||
77 | void die(const char *msg, struct pt_regs *regs, int err); | ||
78 | |||
79 | struct siginfo; | ||
80 | void arm_notify_die(const char *str, struct pt_regs *regs, struct siginfo *info, | ||
81 | unsigned long err, unsigned long trap); | ||
82 | |||
83 | #ifdef CONFIG_ARM_LPAE | ||
84 | #define FAULT_CODE_ALIGNMENT 33 | ||
85 | #define FAULT_CODE_DEBUG 34 | ||
86 | #else | ||
87 | #define FAULT_CODE_ALIGNMENT 1 | ||
88 | #define FAULT_CODE_DEBUG 2 | ||
89 | #endif | ||
90 | |||
91 | void hook_fault_code(int nr, int (*fn)(unsigned long, unsigned int, | ||
92 | struct pt_regs *), | ||
93 | int sig, int code, const char *name); | ||
94 | |||
95 | void hook_ifault_code(int nr, int (*fn)(unsigned long, unsigned int, | ||
96 | struct pt_regs *), | ||
97 | int sig, int code, const char *name); | ||
98 | |||
99 | #define xchg(ptr,x) \ | ||
100 | ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr)))) | ||
101 | |||
102 | extern asmlinkage void c_backtrace(unsigned long fp, int pmode); | ||
103 | |||
104 | struct mm_struct; | ||
105 | extern void show_pte(struct mm_struct *mm, unsigned long addr); | ||
106 | extern void __show_regs(struct pt_regs *); | ||
107 | |||
108 | extern int __pure cpu_architecture(void); | ||
109 | extern void cpu_init(void); | ||
110 | |||
111 | void soft_restart(unsigned long); | ||
112 | extern void (*arm_pm_restart)(char str, const char *cmd); | ||
113 | extern void (*arm_pm_idle)(void); | ||
114 | |||
115 | #define UDBG_UNDEFINED (1 << 0) | ||
116 | #define UDBG_SYSCALL (1 << 1) | ||
117 | #define UDBG_BADABORT (1 << 2) | ||
118 | #define UDBG_SEGV (1 << 3) | ||
119 | #define UDBG_BUS (1 << 4) | ||
120 | |||
121 | extern unsigned int user_debug; | ||
122 | |||
123 | #if __LINUX_ARM_ARCH__ >= 4 | ||
124 | #define vectors_high() (cr_alignment & CR_V) | ||
125 | #else | ||
126 | #define vectors_high() (0) | ||
127 | #endif | ||
128 | |||
129 | #if __LINUX_ARM_ARCH__ >= 7 || \ | ||
130 | (__LINUX_ARM_ARCH__ == 6 && defined(CONFIG_CPU_32v6K)) | ||
131 | #define sev() __asm__ __volatile__ ("sev" : : : "memory") | ||
132 | #define wfe() __asm__ __volatile__ ("wfe" : : : "memory") | ||
133 | #define wfi() __asm__ __volatile__ ("wfi" : : : "memory") | ||
134 | #endif | ||
135 | |||
136 | #if __LINUX_ARM_ARCH__ >= 7 | ||
137 | #define isb() __asm__ __volatile__ ("isb" : : : "memory") | ||
138 | #define dsb() __asm__ __volatile__ ("dsb" : : : "memory") | ||
139 | #define dmb() __asm__ __volatile__ ("dmb" : : : "memory") | ||
140 | #elif defined(CONFIG_CPU_XSC3) || __LINUX_ARM_ARCH__ == 6 | ||
141 | #define isb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c5, 4" \ | ||
142 | : : "r" (0) : "memory") | ||
143 | #define dsb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 4" \ | ||
144 | : : "r" (0) : "memory") | ||
145 | #define dmb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 5" \ | ||
146 | : : "r" (0) : "memory") | ||
147 | #elif defined(CONFIG_CPU_FA526) | ||
148 | #define isb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c5, 4" \ | ||
149 | : : "r" (0) : "memory") | ||
150 | #define dsb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 4" \ | ||
151 | : : "r" (0) : "memory") | ||
152 | #define dmb() __asm__ __volatile__ ("" : : : "memory") | ||
153 | #else | ||
154 | #define isb() __asm__ __volatile__ ("" : : : "memory") | ||
155 | #define dsb() __asm__ __volatile__ ("mcr p15, 0, %0, c7, c10, 4" \ | ||
156 | : : "r" (0) : "memory") | ||
157 | #define dmb() __asm__ __volatile__ ("" : : : "memory") | ||
158 | #endif | ||
159 | |||
160 | #ifdef CONFIG_ARCH_HAS_BARRIERS | ||
161 | #include <mach/barriers.h> | ||
162 | #elif defined(CONFIG_ARM_DMA_MEM_BUFFERABLE) || defined(CONFIG_SMP) | ||
163 | #define mb() do { dsb(); outer_sync(); } while (0) | ||
164 | #define rmb() dsb() | ||
165 | #define wmb() mb() | ||
166 | #else | ||
167 | #include <asm/memory.h> | ||
168 | #define mb() do { if (arch_is_coherent()) dmb(); else barrier(); } while (0) | ||
169 | #define rmb() do { if (arch_is_coherent()) dmb(); else barrier(); } while (0) | ||
170 | #define wmb() do { if (arch_is_coherent()) dmb(); else barrier(); } while (0) | ||
171 | #endif | ||
172 | |||
173 | #ifndef CONFIG_SMP | ||
174 | #define smp_mb() barrier() | ||
175 | #define smp_rmb() barrier() | ||
176 | #define smp_wmb() barrier() | ||
177 | #else | ||
178 | #define smp_mb() dmb() | ||
179 | #define smp_rmb() dmb() | ||
180 | #define smp_wmb() dmb() | ||
181 | #endif | ||
182 | |||
183 | #define read_barrier_depends() do { } while(0) | ||
184 | #define smp_read_barrier_depends() do { } while(0) | ||
185 | |||
186 | #define set_mb(var, value) do { var = value; smp_mb(); } while (0) | ||
187 | #define nop() __asm__ __volatile__("mov\tr0,r0\t@ nop\n\t"); | ||
188 | |||
189 | extern unsigned long cr_no_alignment; /* defined in entry-armv.S */ | ||
190 | extern unsigned long cr_alignment; /* defined in entry-armv.S */ | ||
191 | |||
192 | static inline unsigned int get_cr(void) | ||
193 | { | ||
194 | unsigned int val; | ||
195 | asm("mrc p15, 0, %0, c1, c0, 0 @ get CR" : "=r" (val) : : "cc"); | ||
196 | return val; | ||
197 | } | ||
198 | |||
199 | static inline void set_cr(unsigned int val) | ||
200 | { | ||
201 | asm volatile("mcr p15, 0, %0, c1, c0, 0 @ set CR" | ||
202 | : : "r" (val) : "cc"); | ||
203 | isb(); | ||
204 | } | ||
205 | |||
206 | #ifndef CONFIG_SMP | ||
207 | extern void adjust_cr(unsigned long mask, unsigned long set); | ||
208 | #endif | ||
209 | |||
210 | #define CPACC_FULL(n) (3 << (n * 2)) | ||
211 | #define CPACC_SVC(n) (1 << (n * 2)) | ||
212 | #define CPACC_DISABLE(n) (0 << (n * 2)) | ||
213 | |||
214 | static inline unsigned int get_copro_access(void) | ||
215 | { | ||
216 | unsigned int val; | ||
217 | asm("mrc p15, 0, %0, c1, c0, 2 @ get copro access" | ||
218 | : "=r" (val) : : "cc"); | ||
219 | return val; | ||
220 | } | ||
221 | |||
222 | static inline void set_copro_access(unsigned int val) | ||
223 | { | ||
224 | asm volatile("mcr p15, 0, %0, c1, c0, 2 @ set copro access" | ||
225 | : : "r" (val) : "cc"); | ||
226 | isb(); | ||
227 | } | ||
228 | |||
229 | /* | ||
230 | * switch_mm() may do a full cache flush over the context switch, | ||
231 | * so enable interrupts over the context switch to avoid high | ||
232 | * latency. | ||
233 | */ | ||
234 | #define __ARCH_WANT_INTERRUPTS_ON_CTXSW | ||
235 | |||
236 | /* | ||
237 | * switch_to(prev, next) should switch from task `prev' to `next' | ||
238 | * `prev' will never be the same as `next'. schedule() itself | ||
239 | * contains the memory barrier to tell GCC not to cache `current'. | ||
240 | */ | ||
241 | extern struct task_struct *__switch_to(struct task_struct *, struct thread_info *, struct thread_info *); | ||
242 | |||
243 | #define switch_to(prev,next,last) \ | ||
244 | do { \ | ||
245 | last = __switch_to(prev,task_thread_info(prev), task_thread_info(next)); \ | ||
246 | } while (0) | ||
247 | |||
248 | #if defined(CONFIG_CPU_SA1100) || defined(CONFIG_CPU_SA110) | ||
249 | /* | ||
250 | * On the StrongARM, "swp" is terminally broken since it bypasses the | ||
251 | * cache totally. This means that the cache becomes inconsistent, and, | ||
252 | * since we use normal loads/stores as well, this is really bad. | ||
253 | * Typically, this causes oopsen in filp_close, but could have other, | ||
254 | * more disastrous effects. There are two work-arounds: | ||
255 | * 1. Disable interrupts and emulate the atomic swap | ||
256 | * 2. Clean the cache, perform atomic swap, flush the cache | ||
257 | * | ||
258 | * We choose (1) since its the "easiest" to achieve here and is not | ||
259 | * dependent on the processor type. | ||
260 | * | ||
261 | * NOTE that this solution won't work on an SMP system, so explcitly | ||
262 | * forbid it here. | ||
263 | */ | ||
264 | #define swp_is_buggy | ||
265 | #endif | ||
266 | |||
267 | static inline unsigned long __xchg(unsigned long x, volatile void *ptr, int size) | ||
268 | { | ||
269 | extern void __bad_xchg(volatile void *, int); | ||
270 | unsigned long ret; | ||
271 | #ifdef swp_is_buggy | ||
272 | unsigned long flags; | ||
273 | #endif | ||
274 | #if __LINUX_ARM_ARCH__ >= 6 | ||
275 | unsigned int tmp; | ||
276 | #endif | ||
277 | |||
278 | smp_mb(); | ||
279 | |||
280 | switch (size) { | ||
281 | #if __LINUX_ARM_ARCH__ >= 6 | ||
282 | case 1: | ||
283 | asm volatile("@ __xchg1\n" | ||
284 | "1: ldrexb %0, [%3]\n" | ||
285 | " strexb %1, %2, [%3]\n" | ||
286 | " teq %1, #0\n" | ||
287 | " bne 1b" | ||
288 | : "=&r" (ret), "=&r" (tmp) | ||
289 | : "r" (x), "r" (ptr) | ||
290 | : "memory", "cc"); | ||
291 | break; | ||
292 | case 4: | ||
293 | asm volatile("@ __xchg4\n" | ||
294 | "1: ldrex %0, [%3]\n" | ||
295 | " strex %1, %2, [%3]\n" | ||
296 | " teq %1, #0\n" | ||
297 | " bne 1b" | ||
298 | : "=&r" (ret), "=&r" (tmp) | ||
299 | : "r" (x), "r" (ptr) | ||
300 | : "memory", "cc"); | ||
301 | break; | ||
302 | #elif defined(swp_is_buggy) | ||
303 | #ifdef CONFIG_SMP | ||
304 | #error SMP is not supported on this platform | ||
305 | #endif | ||
306 | case 1: | ||
307 | raw_local_irq_save(flags); | ||
308 | ret = *(volatile unsigned char *)ptr; | ||
309 | *(volatile unsigned char *)ptr = x; | ||
310 | raw_local_irq_restore(flags); | ||
311 | break; | ||
312 | |||
313 | case 4: | ||
314 | raw_local_irq_save(flags); | ||
315 | ret = *(volatile unsigned long *)ptr; | ||
316 | *(volatile unsigned long *)ptr = x; | ||
317 | raw_local_irq_restore(flags); | ||
318 | break; | ||
319 | #else | ||
320 | case 1: | ||
321 | asm volatile("@ __xchg1\n" | ||
322 | " swpb %0, %1, [%2]" | ||
323 | : "=&r" (ret) | ||
324 | : "r" (x), "r" (ptr) | ||
325 | : "memory", "cc"); | ||
326 | break; | ||
327 | case 4: | ||
328 | asm volatile("@ __xchg4\n" | ||
329 | " swp %0, %1, [%2]" | ||
330 | : "=&r" (ret) | ||
331 | : "r" (x), "r" (ptr) | ||
332 | : "memory", "cc"); | ||
333 | break; | ||
334 | #endif | ||
335 | default: | ||
336 | __bad_xchg(ptr, size), ret = 0; | ||
337 | break; | ||
338 | } | ||
339 | smp_mb(); | ||
340 | |||
341 | return ret; | ||
342 | } | ||
343 | |||
344 | extern void disable_hlt(void); | ||
345 | extern void enable_hlt(void); | ||
346 | |||
347 | void cpu_idle_wait(void); | ||
348 | |||
349 | #include <asm-generic/cmpxchg-local.h> | ||
350 | |||
351 | #if __LINUX_ARM_ARCH__ < 6 | ||
352 | /* min ARCH < ARMv6 */ | ||
353 | |||
354 | #ifdef CONFIG_SMP | ||
355 | #error "SMP is not supported on this platform" | ||
356 | #endif | ||
357 | |||
358 | /* | ||
359 | * cmpxchg_local and cmpxchg64_local are atomic wrt current CPU. Always make | ||
360 | * them available. | ||
361 | */ | ||
362 | #define cmpxchg_local(ptr, o, n) \ | ||
363 | ((__typeof__(*(ptr)))__cmpxchg_local_generic((ptr), (unsigned long)(o),\ | ||
364 | (unsigned long)(n), sizeof(*(ptr)))) | ||
365 | #define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) | ||
366 | |||
367 | #ifndef CONFIG_SMP | ||
368 | #include <asm-generic/cmpxchg.h> | ||
369 | #endif | ||
370 | |||
371 | #else /* min ARCH >= ARMv6 */ | ||
372 | |||
373 | extern void __bad_cmpxchg(volatile void *ptr, int size); | ||
374 | |||
375 | /* | ||
376 | * cmpxchg only support 32-bits operands on ARMv6. | ||
377 | */ | ||
378 | |||
379 | static inline unsigned long __cmpxchg(volatile void *ptr, unsigned long old, | ||
380 | unsigned long new, int size) | ||
381 | { | ||
382 | unsigned long oldval, res; | ||
383 | |||
384 | switch (size) { | ||
385 | #ifndef CONFIG_CPU_V6 /* min ARCH >= ARMv6K */ | ||
386 | case 1: | ||
387 | do { | ||
388 | asm volatile("@ __cmpxchg1\n" | ||
389 | " ldrexb %1, [%2]\n" | ||
390 | " mov %0, #0\n" | ||
391 | " teq %1, %3\n" | ||
392 | " strexbeq %0, %4, [%2]\n" | ||
393 | : "=&r" (res), "=&r" (oldval) | ||
394 | : "r" (ptr), "Ir" (old), "r" (new) | ||
395 | : "memory", "cc"); | ||
396 | } while (res); | ||
397 | break; | ||
398 | case 2: | ||
399 | do { | ||
400 | asm volatile("@ __cmpxchg1\n" | ||
401 | " ldrexh %1, [%2]\n" | ||
402 | " mov %0, #0\n" | ||
403 | " teq %1, %3\n" | ||
404 | " strexheq %0, %4, [%2]\n" | ||
405 | : "=&r" (res), "=&r" (oldval) | ||
406 | : "r" (ptr), "Ir" (old), "r" (new) | ||
407 | : "memory", "cc"); | ||
408 | } while (res); | ||
409 | break; | ||
410 | #endif | ||
411 | case 4: | ||
412 | do { | ||
413 | asm volatile("@ __cmpxchg4\n" | ||
414 | " ldrex %1, [%2]\n" | ||
415 | " mov %0, #0\n" | ||
416 | " teq %1, %3\n" | ||
417 | " strexeq %0, %4, [%2]\n" | ||
418 | : "=&r" (res), "=&r" (oldval) | ||
419 | : "r" (ptr), "Ir" (old), "r" (new) | ||
420 | : "memory", "cc"); | ||
421 | } while (res); | ||
422 | break; | ||
423 | default: | ||
424 | __bad_cmpxchg(ptr, size); | ||
425 | oldval = 0; | ||
426 | } | ||
427 | |||
428 | return oldval; | ||
429 | } | ||
430 | |||
431 | static inline unsigned long __cmpxchg_mb(volatile void *ptr, unsigned long old, | ||
432 | unsigned long new, int size) | ||
433 | { | ||
434 | unsigned long ret; | ||
435 | |||
436 | smp_mb(); | ||
437 | ret = __cmpxchg(ptr, old, new, size); | ||
438 | smp_mb(); | ||
439 | |||
440 | return ret; | ||
441 | } | ||
442 | |||
443 | #define cmpxchg(ptr,o,n) \ | ||
444 | ((__typeof__(*(ptr)))__cmpxchg_mb((ptr), \ | ||
445 | (unsigned long)(o), \ | ||
446 | (unsigned long)(n), \ | ||
447 | sizeof(*(ptr)))) | ||
448 | |||
449 | static inline unsigned long __cmpxchg_local(volatile void *ptr, | ||
450 | unsigned long old, | ||
451 | unsigned long new, int size) | ||
452 | { | ||
453 | unsigned long ret; | ||
454 | |||
455 | switch (size) { | ||
456 | #ifdef CONFIG_CPU_V6 /* min ARCH == ARMv6 */ | ||
457 | case 1: | ||
458 | case 2: | ||
459 | ret = __cmpxchg_local_generic(ptr, old, new, size); | ||
460 | break; | ||
461 | #endif | ||
462 | default: | ||
463 | ret = __cmpxchg(ptr, old, new, size); | ||
464 | } | ||
465 | |||
466 | return ret; | ||
467 | } | ||
468 | |||
469 | #define cmpxchg_local(ptr,o,n) \ | ||
470 | ((__typeof__(*(ptr)))__cmpxchg_local((ptr), \ | ||
471 | (unsigned long)(o), \ | ||
472 | (unsigned long)(n), \ | ||
473 | sizeof(*(ptr)))) | ||
474 | |||
475 | #ifndef CONFIG_CPU_V6 /* min ARCH >= ARMv6K */ | ||
476 | |||
477 | /* | ||
478 | * Note : ARMv7-M (currently unsupported by Linux) does not support | ||
479 | * ldrexd/strexd. If ARMv7-M is ever supported by the Linux kernel, it should | ||
480 | * not be allowed to use __cmpxchg64. | ||
481 | */ | ||
482 | static inline unsigned long long __cmpxchg64(volatile void *ptr, | ||
483 | unsigned long long old, | ||
484 | unsigned long long new) | ||
485 | { | ||
486 | register unsigned long long oldval asm("r0"); | ||
487 | register unsigned long long __old asm("r2") = old; | ||
488 | register unsigned long long __new asm("r4") = new; | ||
489 | unsigned long res; | ||
490 | |||
491 | do { | ||
492 | asm volatile( | ||
493 | " @ __cmpxchg8\n" | ||
494 | " ldrexd %1, %H1, [%2]\n" | ||
495 | " mov %0, #0\n" | ||
496 | " teq %1, %3\n" | ||
497 | " teqeq %H1, %H3\n" | ||
498 | " strexdeq %0, %4, %H4, [%2]\n" | ||
499 | : "=&r" (res), "=&r" (oldval) | ||
500 | : "r" (ptr), "Ir" (__old), "r" (__new) | ||
501 | : "memory", "cc"); | ||
502 | } while (res); | ||
503 | |||
504 | return oldval; | ||
505 | } | ||
506 | |||
507 | static inline unsigned long long __cmpxchg64_mb(volatile void *ptr, | ||
508 | unsigned long long old, | ||
509 | unsigned long long new) | ||
510 | { | ||
511 | unsigned long long ret; | ||
512 | |||
513 | smp_mb(); | ||
514 | ret = __cmpxchg64(ptr, old, new); | ||
515 | smp_mb(); | ||
516 | |||
517 | return ret; | ||
518 | } | ||
519 | |||
520 | #define cmpxchg64(ptr,o,n) \ | ||
521 | ((__typeof__(*(ptr)))__cmpxchg64_mb((ptr), \ | ||
522 | (unsigned long long)(o), \ | ||
523 | (unsigned long long)(n))) | ||
524 | |||
525 | #define cmpxchg64_local(ptr,o,n) \ | ||
526 | ((__typeof__(*(ptr)))__cmpxchg64((ptr), \ | ||
527 | (unsigned long long)(o), \ | ||
528 | (unsigned long long)(n))) | ||
529 | |||
530 | #else /* min ARCH = ARMv6 */ | ||
531 | |||
532 | #define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) | ||
533 | |||
534 | #endif | ||
535 | |||
536 | #endif /* __LINUX_ARM_ARCH__ >= 6 */ | ||
537 | |||
538 | #endif /* __ASSEMBLY__ */ | ||
539 | |||
540 | #define arch_align_stack(x) (x) | ||
541 | |||
542 | #endif /* __KERNEL__ */ | ||
543 | |||
544 | #endif | ||
diff --git a/arch/arm/include/asm/system_info.h b/arch/arm/include/asm/system_info.h new file mode 100644 index 000000000000..dfd386d0c022 --- /dev/null +++ b/arch/arm/include/asm/system_info.h | |||
@@ -0,0 +1,27 @@ | |||
1 | #ifndef __ASM_ARM_SYSTEM_INFO_H | ||
2 | #define __ASM_ARM_SYSTEM_INFO_H | ||
3 | |||
4 | #define CPU_ARCH_UNKNOWN 0 | ||
5 | #define CPU_ARCH_ARMv3 1 | ||
6 | #define CPU_ARCH_ARMv4 2 | ||
7 | #define CPU_ARCH_ARMv4T 3 | ||
8 | #define CPU_ARCH_ARMv5 4 | ||
9 | #define CPU_ARCH_ARMv5T 5 | ||
10 | #define CPU_ARCH_ARMv5TE 6 | ||
11 | #define CPU_ARCH_ARMv5TEJ 7 | ||
12 | #define CPU_ARCH_ARMv6 8 | ||
13 | #define CPU_ARCH_ARMv7 9 | ||
14 | |||
15 | #ifndef __ASSEMBLY__ | ||
16 | |||
17 | /* information about the system we're running on */ | ||
18 | extern unsigned int system_rev; | ||
19 | extern unsigned int system_serial_low; | ||
20 | extern unsigned int system_serial_high; | ||
21 | extern unsigned int mem_fclk_21285; | ||
22 | |||
23 | extern int __pure cpu_architecture(void); | ||
24 | |||
25 | #endif /* !__ASSEMBLY__ */ | ||
26 | |||
27 | #endif /* __ASM_ARM_SYSTEM_INFO_H */ | ||
diff --git a/arch/arm/include/asm/system_misc.h b/arch/arm/include/asm/system_misc.h new file mode 100644 index 000000000000..5a85f148b607 --- /dev/null +++ b/arch/arm/include/asm/system_misc.h | |||
@@ -0,0 +1,29 @@ | |||
1 | #ifndef __ASM_ARM_SYSTEM_MISC_H | ||
2 | #define __ASM_ARM_SYSTEM_MISC_H | ||
3 | |||
4 | #ifndef __ASSEMBLY__ | ||
5 | |||
6 | #include <linux/compiler.h> | ||
7 | #include <linux/linkage.h> | ||
8 | #include <linux/irqflags.h> | ||
9 | |||
10 | extern void cpu_init(void); | ||
11 | |||
12 | void soft_restart(unsigned long); | ||
13 | extern void (*arm_pm_restart)(char str, const char *cmd); | ||
14 | extern void (*arm_pm_idle)(void); | ||
15 | |||
16 | #define UDBG_UNDEFINED (1 << 0) | ||
17 | #define UDBG_SYSCALL (1 << 1) | ||
18 | #define UDBG_BADABORT (1 << 2) | ||
19 | #define UDBG_SEGV (1 << 3) | ||
20 | #define UDBG_BUS (1 << 4) | ||
21 | |||
22 | extern unsigned int user_debug; | ||
23 | |||
24 | extern void disable_hlt(void); | ||
25 | extern void enable_hlt(void); | ||
26 | |||
27 | #endif /* !__ASSEMBLY__ */ | ||
28 | |||
29 | #endif /* __ASM_ARM_SYSTEM_MISC_H */ | ||
diff --git a/arch/arm/include/asm/uaccess.h b/arch/arm/include/asm/uaccess.h index 2958976d867b..71f6536d17ac 100644 --- a/arch/arm/include/asm/uaccess.h +++ b/arch/arm/include/asm/uaccess.h | |||
@@ -16,8 +16,8 @@ | |||
16 | #include <asm/errno.h> | 16 | #include <asm/errno.h> |
17 | #include <asm/memory.h> | 17 | #include <asm/memory.h> |
18 | #include <asm/domain.h> | 18 | #include <asm/domain.h> |
19 | #include <asm/system.h> | ||
20 | #include <asm/unified.h> | 19 | #include <asm/unified.h> |
20 | #include <asm/compiler.h> | ||
21 | 21 | ||
22 | #define VERIFY_READ 0 | 22 | #define VERIFY_READ 0 |
23 | #define VERIFY_WRITE 1 | 23 | #define VERIFY_WRITE 1 |
diff --git a/arch/arm/kernel/armksyms.c b/arch/arm/kernel/armksyms.c index 5b0bce61eb69..b57c75e0b01f 100644 --- a/arch/arm/kernel/armksyms.c +++ b/arch/arm/kernel/armksyms.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <linux/io.h> | 18 | #include <linux/io.h> |
19 | 19 | ||
20 | #include <asm/checksum.h> | 20 | #include <asm/checksum.h> |
21 | #include <asm/system.h> | ||
22 | #include <asm/ftrace.h> | 21 | #include <asm/ftrace.h> |
23 | 22 | ||
24 | /* | 23 | /* |
diff --git a/arch/arm/kernel/elf.c b/arch/arm/kernel/elf.c index ddba41d1fcf1..d0d1e83150c9 100644 --- a/arch/arm/kernel/elf.c +++ b/arch/arm/kernel/elf.c | |||
@@ -3,6 +3,7 @@ | |||
3 | #include <linux/personality.h> | 3 | #include <linux/personality.h> |
4 | #include <linux/binfmts.h> | 4 | #include <linux/binfmts.h> |
5 | #include <linux/elf.h> | 5 | #include <linux/elf.h> |
6 | #include <asm/system_info.h> | ||
6 | 7 | ||
7 | int elf_check_arch(const struct elf32_hdr *x) | 8 | int elf_check_arch(const struct elf32_hdr *x) |
8 | { | 9 | { |
diff --git a/arch/arm/kernel/entry-armv.S b/arch/arm/kernel/entry-armv.S index 22f0ed324f37..8ec5eed55e37 100644 --- a/arch/arm/kernel/entry-armv.S +++ b/arch/arm/kernel/entry-armv.S | |||
@@ -26,7 +26,7 @@ | |||
26 | #include <asm/unwind.h> | 26 | #include <asm/unwind.h> |
27 | #include <asm/unistd.h> | 27 | #include <asm/unistd.h> |
28 | #include <asm/tls.h> | 28 | #include <asm/tls.h> |
29 | #include <asm/system.h> | 29 | #include <asm/system_info.h> |
30 | 30 | ||
31 | #include "entry-header.S" | 31 | #include "entry-header.S" |
32 | #include <asm/entry-macro-multi.S> | 32 | #include <asm/entry-macro-multi.S> |
diff --git a/arch/arm/kernel/fiq.c b/arch/arm/kernel/fiq.c index 4c164ece5891..c32f8456aa09 100644 --- a/arch/arm/kernel/fiq.c +++ b/arch/arm/kernel/fiq.c | |||
@@ -42,9 +42,9 @@ | |||
42 | #include <linux/seq_file.h> | 42 | #include <linux/seq_file.h> |
43 | 43 | ||
44 | #include <asm/cacheflush.h> | 44 | #include <asm/cacheflush.h> |
45 | #include <asm/cp15.h> | ||
45 | #include <asm/fiq.h> | 46 | #include <asm/fiq.h> |
46 | #include <asm/irq.h> | 47 | #include <asm/irq.h> |
47 | #include <asm/system.h> | ||
48 | #include <asm/traps.h> | 48 | #include <asm/traps.h> |
49 | 49 | ||
50 | static unsigned long no_fiq_insn; | 50 | static unsigned long no_fiq_insn; |
diff --git a/arch/arm/kernel/head-nommu.S b/arch/arm/kernel/head-nommu.S index d46f25968bec..278cfc144f44 100644 --- a/arch/arm/kernel/head-nommu.S +++ b/arch/arm/kernel/head-nommu.S | |||
@@ -17,8 +17,8 @@ | |||
17 | #include <asm/assembler.h> | 17 | #include <asm/assembler.h> |
18 | #include <asm/ptrace.h> | 18 | #include <asm/ptrace.h> |
19 | #include <asm/asm-offsets.h> | 19 | #include <asm/asm-offsets.h> |
20 | #include <asm/cp15.h> | ||
20 | #include <asm/thread_info.h> | 21 | #include <asm/thread_info.h> |
21 | #include <asm/system.h> | ||
22 | 22 | ||
23 | /* | 23 | /* |
24 | * Kernel startup entry point. | 24 | * Kernel startup entry point. |
diff --git a/arch/arm/kernel/head.S b/arch/arm/kernel/head.S index 6d5791144066..a2e9694a68ee 100644 --- a/arch/arm/kernel/head.S +++ b/arch/arm/kernel/head.S | |||
@@ -15,12 +15,12 @@ | |||
15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
16 | 16 | ||
17 | #include <asm/assembler.h> | 17 | #include <asm/assembler.h> |
18 | #include <asm/cp15.h> | ||
18 | #include <asm/domain.h> | 19 | #include <asm/domain.h> |
19 | #include <asm/ptrace.h> | 20 | #include <asm/ptrace.h> |
20 | #include <asm/asm-offsets.h> | 21 | #include <asm/asm-offsets.h> |
21 | #include <asm/memory.h> | 22 | #include <asm/memory.h> |
22 | #include <asm/thread_info.h> | 23 | #include <asm/thread_info.h> |
23 | #include <asm/system.h> | ||
24 | #include <asm/pgtable.h> | 24 | #include <asm/pgtable.h> |
25 | 25 | ||
26 | #ifdef CONFIG_DEBUG_LL | 26 | #ifdef CONFIG_DEBUG_LL |
diff --git a/arch/arm/kernel/hw_breakpoint.c b/arch/arm/kernel/hw_breakpoint.c index d6a95ef9131d..ba386bd94107 100644 --- a/arch/arm/kernel/hw_breakpoint.c +++ b/arch/arm/kernel/hw_breakpoint.c | |||
@@ -34,7 +34,6 @@ | |||
34 | #include <asm/current.h> | 34 | #include <asm/current.h> |
35 | #include <asm/hw_breakpoint.h> | 35 | #include <asm/hw_breakpoint.h> |
36 | #include <asm/kdebug.h> | 36 | #include <asm/kdebug.h> |
37 | #include <asm/system.h> | ||
38 | #include <asm/traps.h> | 37 | #include <asm/traps.h> |
39 | 38 | ||
40 | /* Breakpoint currently in use for each BRP. */ | 39 | /* Breakpoint currently in use for each BRP. */ |
diff --git a/arch/arm/kernel/irq.c b/arch/arm/kernel/irq.c index 3efd82cc95f0..6a6a097edd61 100644 --- a/arch/arm/kernel/irq.c +++ b/arch/arm/kernel/irq.c | |||
@@ -36,7 +36,6 @@ | |||
36 | #include <linux/proc_fs.h> | 36 | #include <linux/proc_fs.h> |
37 | 37 | ||
38 | #include <asm/exception.h> | 38 | #include <asm/exception.h> |
39 | #include <asm/system.h> | ||
40 | #include <asm/mach/arch.h> | 39 | #include <asm/mach/arch.h> |
41 | #include <asm/mach/irq.h> | 40 | #include <asm/mach/irq.h> |
42 | #include <asm/mach/time.h> | 41 | #include <asm/mach/time.h> |
diff --git a/arch/arm/kernel/kprobes-common.c b/arch/arm/kernel/kprobes-common.c index a5394fb4e4e0..18a76282970e 100644 --- a/arch/arm/kernel/kprobes-common.c +++ b/arch/arm/kernel/kprobes-common.c | |||
@@ -13,6 +13,7 @@ | |||
13 | 13 | ||
14 | #include <linux/kernel.h> | 14 | #include <linux/kernel.h> |
15 | #include <linux/kprobes.h> | 15 | #include <linux/kprobes.h> |
16 | #include <asm/system_info.h> | ||
16 | 17 | ||
17 | #include "kprobes.h" | 18 | #include "kprobes.h" |
18 | 19 | ||
diff --git a/arch/arm/kernel/machine_kexec.c b/arch/arm/kernel/machine_kexec.c index 764bd456d84f..56995983eed8 100644 --- a/arch/arm/kernel/machine_kexec.c +++ b/arch/arm/kernel/machine_kexec.c | |||
@@ -12,7 +12,7 @@ | |||
12 | #include <asm/mmu_context.h> | 12 | #include <asm/mmu_context.h> |
13 | #include <asm/cacheflush.h> | 13 | #include <asm/cacheflush.h> |
14 | #include <asm/mach-types.h> | 14 | #include <asm/mach-types.h> |
15 | #include <asm/system.h> | 15 | #include <asm/system_misc.h> |
16 | 16 | ||
17 | extern const unsigned char relocate_new_kernel[]; | 17 | extern const unsigned char relocate_new_kernel[]; |
18 | extern const unsigned int relocate_new_kernel_size; | 18 | extern const unsigned int relocate_new_kernel_size; |
diff --git a/arch/arm/kernel/process.c b/arch/arm/kernel/process.c index d3eca4524533..7b9cddef6e53 100644 --- a/arch/arm/kernel/process.c +++ b/arch/arm/kernel/process.c | |||
@@ -35,7 +35,6 @@ | |||
35 | #include <asm/cacheflush.h> | 35 | #include <asm/cacheflush.h> |
36 | #include <asm/leds.h> | 36 | #include <asm/leds.h> |
37 | #include <asm/processor.h> | 37 | #include <asm/processor.h> |
38 | #include <asm/system.h> | ||
39 | #include <asm/thread_notify.h> | 38 | #include <asm/thread_notify.h> |
40 | #include <asm/stacktrace.h> | 39 | #include <asm/stacktrace.h> |
41 | #include <asm/mach/time.h> | 40 | #include <asm/mach/time.h> |
diff --git a/arch/arm/kernel/ptrace.c b/arch/arm/kernel/ptrace.c index ede6443c34d9..45956c9d0ef0 100644 --- a/arch/arm/kernel/ptrace.c +++ b/arch/arm/kernel/ptrace.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include <linux/audit.h> | 26 | #include <linux/audit.h> |
27 | 27 | ||
28 | #include <asm/pgtable.h> | 28 | #include <asm/pgtable.h> |
29 | #include <asm/system.h> | ||
30 | #include <asm/traps.h> | 29 | #include <asm/traps.h> |
31 | 30 | ||
32 | #define REG_PC 15 | 31 | #define REG_PC 15 |
diff --git a/arch/arm/kernel/setup.c b/arch/arm/kernel/setup.c index a255c39612ca..9e0fdb3a1988 100644 --- a/arch/arm/kernel/setup.c +++ b/arch/arm/kernel/setup.c | |||
@@ -33,6 +33,7 @@ | |||
33 | #include <linux/sort.h> | 33 | #include <linux/sort.h> |
34 | 34 | ||
35 | #include <asm/unified.h> | 35 | #include <asm/unified.h> |
36 | #include <asm/cp15.h> | ||
36 | #include <asm/cpu.h> | 37 | #include <asm/cpu.h> |
37 | #include <asm/cputype.h> | 38 | #include <asm/cputype.h> |
38 | #include <asm/elf.h> | 39 | #include <asm/elf.h> |
@@ -44,12 +45,13 @@ | |||
44 | #include <asm/cacheflush.h> | 45 | #include <asm/cacheflush.h> |
45 | #include <asm/cachetype.h> | 46 | #include <asm/cachetype.h> |
46 | #include <asm/tlbflush.h> | 47 | #include <asm/tlbflush.h> |
47 | #include <asm/system.h> | ||
48 | 48 | ||
49 | #include <asm/prom.h> | 49 | #include <asm/prom.h> |
50 | #include <asm/mach/arch.h> | 50 | #include <asm/mach/arch.h> |
51 | #include <asm/mach/irq.h> | 51 | #include <asm/mach/irq.h> |
52 | #include <asm/mach/time.h> | 52 | #include <asm/mach/time.h> |
53 | #include <asm/system_info.h> | ||
54 | #include <asm/system_misc.h> | ||
53 | #include <asm/traps.h> | 55 | #include <asm/traps.h> |
54 | #include <asm/unwind.h> | 56 | #include <asm/unwind.h> |
55 | #include <asm/memblock.h> | 57 | #include <asm/memblock.h> |
diff --git a/arch/arm/kernel/sleep.S b/arch/arm/kernel/sleep.S index 1f268bda4552..987dcf33415c 100644 --- a/arch/arm/kernel/sleep.S +++ b/arch/arm/kernel/sleep.S | |||
@@ -4,7 +4,6 @@ | |||
4 | #include <asm/assembler.h> | 4 | #include <asm/assembler.h> |
5 | #include <asm/glue-cache.h> | 5 | #include <asm/glue-cache.h> |
6 | #include <asm/glue-proc.h> | 6 | #include <asm/glue-proc.h> |
7 | #include <asm/system.h> | ||
8 | .text | 7 | .text |
9 | 8 | ||
10 | /* | 9 | /* |
diff --git a/arch/arm/kernel/tcm.c b/arch/arm/kernel/tcm.c index 01ec453bb924..30ae6bb4a310 100644 --- a/arch/arm/kernel/tcm.c +++ b/arch/arm/kernel/tcm.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <asm/cputype.h> | 16 | #include <asm/cputype.h> |
17 | #include <asm/mach/map.h> | 17 | #include <asm/mach/map.h> |
18 | #include <asm/memory.h> | 18 | #include <asm/memory.h> |
19 | #include <asm/system_info.h> | ||
19 | #include "tcm.h" | 20 | #include "tcm.h" |
20 | 21 | ||
21 | static struct gen_pool *tcm_pool; | 22 | static struct gen_pool *tcm_pool; |
diff --git a/arch/arm/kernel/thumbee.c b/arch/arm/kernel/thumbee.c index 9cb7aaca159f..aab899764053 100644 --- a/arch/arm/kernel/thumbee.c +++ b/arch/arm/kernel/thumbee.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/kernel.h> | 20 | #include <linux/kernel.h> |
21 | #include <linux/init.h> | 21 | #include <linux/init.h> |
22 | 22 | ||
23 | #include <asm/system_info.h> | ||
23 | #include <asm/thread_notify.h> | 24 | #include <asm/thread_notify.h> |
24 | 25 | ||
25 | /* | 26 | /* |
diff --git a/arch/arm/kernel/traps.c b/arch/arm/kernel/traps.c index f84dfe67724f..cd77743472a2 100644 --- a/arch/arm/kernel/traps.c +++ b/arch/arm/kernel/traps.c | |||
@@ -29,11 +29,11 @@ | |||
29 | #include <linux/atomic.h> | 29 | #include <linux/atomic.h> |
30 | #include <asm/cacheflush.h> | 30 | #include <asm/cacheflush.h> |
31 | #include <asm/exception.h> | 31 | #include <asm/exception.h> |
32 | #include <asm/system.h> | ||
33 | #include <asm/unistd.h> | 32 | #include <asm/unistd.h> |
34 | #include <asm/traps.h> | 33 | #include <asm/traps.h> |
35 | #include <asm/unwind.h> | 34 | #include <asm/unwind.h> |
36 | #include <asm/tls.h> | 35 | #include <asm/tls.h> |
36 | #include <asm/system_misc.h> | ||
37 | 37 | ||
38 | #include "signal.h" | 38 | #include "signal.h" |
39 | 39 | ||
diff --git a/arch/arm/mach-at91/at91rm9200.c b/arch/arm/mach-at91/at91rm9200.c index 0df1045311e4..364c19357e60 100644 --- a/arch/arm/mach-at91/at91rm9200.c +++ b/arch/arm/mach-at91/at91rm9200.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <asm/irq.h> | 15 | #include <asm/irq.h> |
16 | #include <asm/mach/arch.h> | 16 | #include <asm/mach/arch.h> |
17 | #include <asm/mach/map.h> | 17 | #include <asm/mach/map.h> |
18 | #include <asm/system_misc.h> | ||
18 | #include <mach/at91rm9200.h> | 19 | #include <mach/at91rm9200.h> |
19 | #include <mach/at91_pmc.h> | 20 | #include <mach/at91_pmc.h> |
20 | #include <mach/at91_st.h> | 21 | #include <mach/at91_st.h> |
diff --git a/arch/arm/mach-at91/at91sam9260.c b/arch/arm/mach-at91/at91sam9260.c index d1e5750a6a04..46f774233298 100644 --- a/arch/arm/mach-at91/at91sam9260.c +++ b/arch/arm/mach-at91/at91sam9260.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <asm/irq.h> | 16 | #include <asm/irq.h> |
17 | #include <asm/mach/arch.h> | 17 | #include <asm/mach/arch.h> |
18 | #include <asm/mach/map.h> | 18 | #include <asm/mach/map.h> |
19 | #include <asm/system_misc.h> | ||
19 | #include <mach/cpu.h> | 20 | #include <mach/cpu.h> |
20 | #include <mach/at91_dbgu.h> | 21 | #include <mach/at91_dbgu.h> |
21 | #include <mach/at91sam9260.h> | 22 | #include <mach/at91sam9260.h> |
diff --git a/arch/arm/mach-at91/at91sam9261.c b/arch/arm/mach-at91/at91sam9261.c index 684c5dfd92ac..7de81e6222f1 100644 --- a/arch/arm/mach-at91/at91sam9261.c +++ b/arch/arm/mach-at91/at91sam9261.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <asm/irq.h> | 16 | #include <asm/irq.h> |
17 | #include <asm/mach/arch.h> | 17 | #include <asm/mach/arch.h> |
18 | #include <asm/mach/map.h> | 18 | #include <asm/mach/map.h> |
19 | #include <asm/system_misc.h> | ||
19 | #include <mach/cpu.h> | 20 | #include <mach/cpu.h> |
20 | #include <mach/at91sam9261.h> | 21 | #include <mach/at91sam9261.h> |
21 | #include <mach/at91_pmc.h> | 22 | #include <mach/at91_pmc.h> |
diff --git a/arch/arm/mach-at91/at91sam9263.c b/arch/arm/mach-at91/at91sam9263.c index 0b4fa5a7f685..ef301be66575 100644 --- a/arch/arm/mach-at91/at91sam9263.c +++ b/arch/arm/mach-at91/at91sam9263.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <asm/irq.h> | 16 | #include <asm/irq.h> |
17 | #include <asm/mach/arch.h> | 17 | #include <asm/mach/arch.h> |
18 | #include <asm/mach/map.h> | 18 | #include <asm/mach/map.h> |
19 | #include <asm/system_misc.h> | ||
19 | #include <mach/at91sam9263.h> | 20 | #include <mach/at91sam9263.h> |
20 | #include <mach/at91_pmc.h> | 21 | #include <mach/at91_pmc.h> |
21 | #include <mach/at91_rstc.h> | 22 | #include <mach/at91_rstc.h> |
diff --git a/arch/arm/mach-at91/at91sam9g45.c b/arch/arm/mach-at91/at91sam9g45.c index df3bceacc86c..d222f8333dab 100644 --- a/arch/arm/mach-at91/at91sam9g45.c +++ b/arch/arm/mach-at91/at91sam9g45.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <asm/irq.h> | 16 | #include <asm/irq.h> |
17 | #include <asm/mach/arch.h> | 17 | #include <asm/mach/arch.h> |
18 | #include <asm/mach/map.h> | 18 | #include <asm/mach/map.h> |
19 | #include <asm/system_misc.h> | ||
19 | #include <mach/at91sam9g45.h> | 20 | #include <mach/at91sam9g45.h> |
20 | #include <mach/at91_pmc.h> | 21 | #include <mach/at91_pmc.h> |
21 | #include <mach/cpu.h> | 22 | #include <mach/cpu.h> |
diff --git a/arch/arm/mach-at91/at91sam9rl.c b/arch/arm/mach-at91/at91sam9rl.c index 63d9372eb18e..d9f2774f385e 100644 --- a/arch/arm/mach-at91/at91sam9rl.c +++ b/arch/arm/mach-at91/at91sam9rl.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <asm/irq.h> | 15 | #include <asm/irq.h> |
16 | #include <asm/mach/arch.h> | 16 | #include <asm/mach/arch.h> |
17 | #include <asm/mach/map.h> | 17 | #include <asm/mach/map.h> |
18 | #include <asm/system_misc.h> | ||
18 | #include <mach/cpu.h> | 19 | #include <mach/cpu.h> |
19 | #include <mach/at91_dbgu.h> | 20 | #include <mach/at91_dbgu.h> |
20 | #include <mach/at91sam9rl.h> | 21 | #include <mach/at91sam9rl.h> |
diff --git a/arch/arm/mach-at91/include/mach/system_rev.h b/arch/arm/mach-at91/include/mach/system_rev.h index ec164a4124c9..ef79a9aafc08 100644 --- a/arch/arm/mach-at91/include/mach/system_rev.h +++ b/arch/arm/mach-at91/include/mach/system_rev.h | |||
@@ -7,6 +7,8 @@ | |||
7 | #ifndef __ARCH_SYSTEM_REV_H__ | 7 | #ifndef __ARCH_SYSTEM_REV_H__ |
8 | #define __ARCH_SYSTEM_REV_H__ | 8 | #define __ARCH_SYSTEM_REV_H__ |
9 | 9 | ||
10 | #include <asm/system_info.h> | ||
11 | |||
10 | /* | 12 | /* |
11 | * board revision encoding | 13 | * board revision encoding |
12 | * mach specific | 14 | * mach specific |
diff --git a/arch/arm/mach-clps711x/common.c b/arch/arm/mach-clps711x/common.c index 8736c1acc166..3c5b5bbf24e5 100644 --- a/arch/arm/mach-clps711x/common.c +++ b/arch/arm/mach-clps711x/common.c | |||
@@ -37,6 +37,7 @@ | |||
37 | #include <asm/mach/map.h> | 37 | #include <asm/mach/map.h> |
38 | #include <asm/mach/time.h> | 38 | #include <asm/mach/time.h> |
39 | #include <asm/hardware/clps7111.h> | 39 | #include <asm/hardware/clps7111.h> |
40 | #include <asm/system_misc.h> | ||
40 | 41 | ||
41 | /* | 42 | /* |
42 | * This maps the generic CLPS711x registers | 43 | * This maps the generic CLPS711x registers |
diff --git a/arch/arm/mach-clps711x/p720t-leds.c b/arch/arm/mach-clps711x/p720t-leds.c index 15121446efc8..dd9a6cdbeb02 100644 --- a/arch/arm/mach-clps711x/p720t-leds.c +++ b/arch/arm/mach-clps711x/p720t-leds.c | |||
@@ -25,7 +25,6 @@ | |||
25 | 25 | ||
26 | #include <mach/hardware.h> | 26 | #include <mach/hardware.h> |
27 | #include <asm/leds.h> | 27 | #include <asm/leds.h> |
28 | #include <asm/system.h> | ||
29 | #include <asm/mach-types.h> | 28 | #include <asm/mach-types.h> |
30 | 29 | ||
31 | #include <asm/hardware/clps7111.h> | 30 | #include <asm/hardware/clps7111.h> |
diff --git a/arch/arm/mach-davinci/board-da850-evm.c b/arch/arm/mach-davinci/board-da850-evm.c index d5088900af6c..a70de24d1cbc 100644 --- a/arch/arm/mach-davinci/board-da850-evm.c +++ b/arch/arm/mach-davinci/board-da850-evm.c | |||
@@ -36,6 +36,7 @@ | |||
36 | 36 | ||
37 | #include <asm/mach-types.h> | 37 | #include <asm/mach-types.h> |
38 | #include <asm/mach/arch.h> | 38 | #include <asm/mach/arch.h> |
39 | #include <asm/system_info.h> | ||
39 | 40 | ||
40 | #include <mach/cp_intc.h> | 41 | #include <mach/cp_intc.h> |
41 | #include <mach/da8xx.h> | 42 | #include <mach/da8xx.h> |
diff --git a/arch/arm/mach-ebsa110/core.c b/arch/arm/mach-ebsa110/core.c index e400d75d11ae..8c9f56a3e8ec 100644 --- a/arch/arm/mach-ebsa110/core.c +++ b/arch/arm/mach-ebsa110/core.c | |||
@@ -22,7 +22,7 @@ | |||
22 | #include <asm/mach-types.h> | 22 | #include <asm/mach-types.h> |
23 | #include <asm/pgtable.h> | 23 | #include <asm/pgtable.h> |
24 | #include <asm/page.h> | 24 | #include <asm/page.h> |
25 | #include <asm/system.h> | 25 | #include <asm/system_misc.h> |
26 | 26 | ||
27 | #include <asm/mach/arch.h> | 27 | #include <asm/mach/arch.h> |
28 | #include <asm/mach/irq.h> | 28 | #include <asm/mach/irq.h> |
diff --git a/arch/arm/mach-ebsa110/leds.c b/arch/arm/mach-ebsa110/leds.c index d43121a30aa7..99e14e362500 100644 --- a/arch/arm/mach-ebsa110/leds.c +++ b/arch/arm/mach-ebsa110/leds.c | |||
@@ -17,7 +17,6 @@ | |||
17 | 17 | ||
18 | #include <mach/hardware.h> | 18 | #include <mach/hardware.h> |
19 | #include <asm/leds.h> | 19 | #include <asm/leds.h> |
20 | #include <asm/system.h> | ||
21 | #include <asm/mach-types.h> | 20 | #include <asm/mach-types.h> |
22 | 21 | ||
23 | #include "core.h" | 22 | #include "core.h" |
diff --git a/arch/arm/mach-exynos/hotplug.c b/arch/arm/mach-exynos/hotplug.c index dd1ad55524c9..9c17a0a43858 100644 --- a/arch/arm/mach-exynos/hotplug.c +++ b/arch/arm/mach-exynos/hotplug.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/io.h> | 16 | #include <linux/io.h> |
17 | 17 | ||
18 | #include <asm/cacheflush.h> | 18 | #include <asm/cacheflush.h> |
19 | #include <asm/cp15.h> | ||
19 | #include <asm/smp_plat.h> | 20 | #include <asm/smp_plat.h> |
20 | 21 | ||
21 | #include <mach/regs-pmu.h> | 22 | #include <mach/regs-pmu.h> |
diff --git a/arch/arm/mach-footbridge/common.c b/arch/arm/mach-footbridge/common.c index 41978ee4f9d0..3e6aaa6361da 100644 --- a/arch/arm/mach-footbridge/common.c +++ b/arch/arm/mach-footbridge/common.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <asm/irq.h> | 21 | #include <asm/irq.h> |
22 | #include <asm/mach-types.h> | 22 | #include <asm/mach-types.h> |
23 | #include <asm/setup.h> | 23 | #include <asm/setup.h> |
24 | #include <asm/system_misc.h> | ||
24 | #include <asm/hardware/dec21285.h> | 25 | #include <asm/hardware/dec21285.h> |
25 | 26 | ||
26 | #include <asm/mach/irq.h> | 27 | #include <asm/mach/irq.h> |
diff --git a/arch/arm/mach-footbridge/dc21285-timer.c b/arch/arm/mach-footbridge/dc21285-timer.c index 121ad1d4fa39..3b54196447c7 100644 --- a/arch/arm/mach-footbridge/dc21285-timer.c +++ b/arch/arm/mach-footbridge/dc21285-timer.c | |||
@@ -14,6 +14,7 @@ | |||
14 | 14 | ||
15 | #include <asm/hardware/dec21285.h> | 15 | #include <asm/hardware/dec21285.h> |
16 | #include <asm/mach/time.h> | 16 | #include <asm/mach/time.h> |
17 | #include <asm/system_info.h> | ||
17 | 18 | ||
18 | #include "common.h" | 19 | #include "common.h" |
19 | 20 | ||
diff --git a/arch/arm/mach-footbridge/dc21285.c b/arch/arm/mach-footbridge/dc21285.c index 3194d3f73503..e17e11de4f5e 100644 --- a/arch/arm/mach-footbridge/dc21285.c +++ b/arch/arm/mach-footbridge/dc21285.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <video/vga.h> | 21 | #include <video/vga.h> |
22 | 22 | ||
23 | #include <asm/irq.h> | 23 | #include <asm/irq.h> |
24 | #include <asm/system.h> | ||
25 | #include <asm/mach/pci.h> | 24 | #include <asm/mach/pci.h> |
26 | #include <asm/hardware/dec21285.h> | 25 | #include <asm/hardware/dec21285.h> |
27 | 26 | ||
diff --git a/arch/arm/mach-footbridge/ebsa285-leds.c b/arch/arm/mach-footbridge/ebsa285-leds.c index 4e10090cd87f..5bd266754b95 100644 --- a/arch/arm/mach-footbridge/ebsa285-leds.c +++ b/arch/arm/mach-footbridge/ebsa285-leds.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include <mach/hardware.h> | 24 | #include <mach/hardware.h> |
25 | #include <asm/leds.h> | 25 | #include <asm/leds.h> |
26 | #include <asm/mach-types.h> | 26 | #include <asm/mach-types.h> |
27 | #include <asm/system.h> | ||
28 | 27 | ||
29 | #define LED_STATE_ENABLED 1 | 28 | #define LED_STATE_ENABLED 1 |
30 | #define LED_STATE_CLAIMED 2 | 29 | #define LED_STATE_CLAIMED 2 |
diff --git a/arch/arm/mach-footbridge/netwinder-hw.c b/arch/arm/mach-footbridge/netwinder-hw.c index 80a1c5cc9071..cac9f67e7da7 100644 --- a/arch/arm/mach-footbridge/netwinder-hw.c +++ b/arch/arm/mach-footbridge/netwinder-hw.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <asm/leds.h> | 17 | #include <asm/leds.h> |
18 | #include <asm/mach-types.h> | 18 | #include <asm/mach-types.h> |
19 | #include <asm/setup.h> | 19 | #include <asm/setup.h> |
20 | #include <asm/system_misc.h> | ||
20 | 21 | ||
21 | #include <asm/mach/arch.h> | 22 | #include <asm/mach/arch.h> |
22 | 23 | ||
diff --git a/arch/arm/mach-footbridge/netwinder-leds.c b/arch/arm/mach-footbridge/netwinder-leds.c index e57102e871fc..5a2bd89cbdca 100644 --- a/arch/arm/mach-footbridge/netwinder-leds.c +++ b/arch/arm/mach-footbridge/netwinder-leds.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include <mach/hardware.h> | 24 | #include <mach/hardware.h> |
25 | #include <asm/leds.h> | 25 | #include <asm/leds.h> |
26 | #include <asm/mach-types.h> | 26 | #include <asm/mach-types.h> |
27 | #include <asm/system.h> | ||
28 | 27 | ||
29 | #define LED_STATE_ENABLED 1 | 28 | #define LED_STATE_ENABLED 1 |
30 | #define LED_STATE_CLAIMED 2 | 29 | #define LED_STATE_CLAIMED 2 |
diff --git a/arch/arm/mach-imx/dma-v1.c b/arch/arm/mach-imx/dma-v1.c index 42afc29a7da8..3189a6004cf9 100644 --- a/arch/arm/mach-imx/dma-v1.c +++ b/arch/arm/mach-imx/dma-v1.c | |||
@@ -32,7 +32,6 @@ | |||
32 | #include <linux/scatterlist.h> | 32 | #include <linux/scatterlist.h> |
33 | #include <linux/io.h> | 33 | #include <linux/io.h> |
34 | 34 | ||
35 | #include <asm/system.h> | ||
36 | #include <asm/irq.h> | 35 | #include <asm/irq.h> |
37 | #include <mach/hardware.h> | 36 | #include <mach/hardware.h> |
38 | #include <mach/dma-v1.h> | 37 | #include <mach/dma-v1.h> |
diff --git a/arch/arm/mach-imx/mach-imx6q.c b/arch/arm/mach-imx/mach-imx6q.c index 7696dfa2bdba..da6c1d9af768 100644 --- a/arch/arm/mach-imx/mach-imx6q.c +++ b/arch/arm/mach-imx/mach-imx6q.c | |||
@@ -26,6 +26,7 @@ | |||
26 | #include <asm/hardware/gic.h> | 26 | #include <asm/hardware/gic.h> |
27 | #include <asm/mach/arch.h> | 27 | #include <asm/mach/arch.h> |
28 | #include <asm/mach/time.h> | 28 | #include <asm/mach/time.h> |
29 | #include <asm/system_misc.h> | ||
29 | #include <mach/common.h> | 30 | #include <mach/common.h> |
30 | #include <mach/hardware.h> | 31 | #include <mach/hardware.h> |
31 | 32 | ||
diff --git a/arch/arm/mach-imx/mach-mx51_efikamx.c b/arch/arm/mach-imx/mach-mx51_efikamx.c index 3a5ed2dd885a..586e9f822124 100644 --- a/arch/arm/mach-imx/mach-mx51_efikamx.c +++ b/arch/arm/mach-imx/mach-mx51_efikamx.c | |||
@@ -33,6 +33,7 @@ | |||
33 | #include <mach/iomux-mx51.h> | 33 | #include <mach/iomux-mx51.h> |
34 | 34 | ||
35 | #include <asm/setup.h> | 35 | #include <asm/setup.h> |
36 | #include <asm/system_info.h> | ||
36 | #include <asm/mach-types.h> | 37 | #include <asm/mach-types.h> |
37 | #include <asm/mach/arch.h> | 38 | #include <asm/mach/arch.h> |
38 | #include <asm/mach/time.h> | 39 | #include <asm/mach/time.h> |
diff --git a/arch/arm/mach-imx/mach-mx51_efikasb.c b/arch/arm/mach-imx/mach-mx51_efikasb.c index ea5f65b0381a..24aded9e109f 100644 --- a/arch/arm/mach-imx/mach-mx51_efikasb.c +++ b/arch/arm/mach-imx/mach-mx51_efikasb.c | |||
@@ -36,6 +36,7 @@ | |||
36 | #include <mach/iomux-mx51.h> | 36 | #include <mach/iomux-mx51.h> |
37 | 37 | ||
38 | #include <asm/setup.h> | 38 | #include <asm/setup.h> |
39 | #include <asm/system_info.h> | ||
39 | #include <asm/mach-types.h> | 40 | #include <asm/mach-types.h> |
40 | #include <asm/mach/arch.h> | 41 | #include <asm/mach/arch.h> |
41 | #include <asm/mach/time.h> | 42 | #include <asm/mach/time.h> |
diff --git a/arch/arm/mach-integrator/core.c b/arch/arm/mach-integrator/core.c index 15b87f26ac96..1a65d77bd55d 100644 --- a/arch/arm/mach-integrator/core.c +++ b/arch/arm/mach-integrator/core.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <mach/platform.h> | 27 | #include <mach/platform.h> |
28 | #include <asm/irq.h> | 28 | #include <asm/irq.h> |
29 | #include <mach/cm.h> | 29 | #include <mach/cm.h> |
30 | #include <asm/system.h> | ||
31 | #include <asm/leds.h> | 30 | #include <asm/leds.h> |
32 | #include <asm/mach-types.h> | 31 | #include <asm/mach-types.h> |
33 | #include <asm/mach/time.h> | 32 | #include <asm/mach/time.h> |
diff --git a/arch/arm/mach-integrator/leds.c b/arch/arm/mach-integrator/leds.c index 28be186adb89..466defa97842 100644 --- a/arch/arm/mach-integrator/leds.c +++ b/arch/arm/mach-integrator/leds.c | |||
@@ -29,7 +29,6 @@ | |||
29 | #include <mach/hardware.h> | 29 | #include <mach/hardware.h> |
30 | #include <mach/platform.h> | 30 | #include <mach/platform.h> |
31 | #include <asm/leds.h> | 31 | #include <asm/leds.h> |
32 | #include <asm/system.h> | ||
33 | #include <asm/mach-types.h> | 32 | #include <asm/mach-types.h> |
34 | #include <mach/cm.h> | 33 | #include <mach/cm.h> |
35 | 34 | ||
diff --git a/arch/arm/mach-integrator/pci.c b/arch/arm/mach-integrator/pci.c index 520b6bf81bb1..36068f438f2b 100644 --- a/arch/arm/mach-integrator/pci.c +++ b/arch/arm/mach-integrator/pci.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <linux/init.h> | 27 | #include <linux/init.h> |
28 | 28 | ||
29 | #include <asm/irq.h> | 29 | #include <asm/irq.h> |
30 | #include <asm/system.h> | ||
31 | #include <asm/mach/pci.h> | 30 | #include <asm/mach/pci.h> |
32 | #include <asm/mach-types.h> | 31 | #include <asm/mach-types.h> |
33 | 32 | ||
diff --git a/arch/arm/mach-integrator/pci_v3.c b/arch/arm/mach-integrator/pci_v3.c index 015be770c1d8..4be172c3cbe0 100644 --- a/arch/arm/mach-integrator/pci_v3.c +++ b/arch/arm/mach-integrator/pci_v3.c | |||
@@ -32,7 +32,6 @@ | |||
32 | #include <mach/platform.h> | 32 | #include <mach/platform.h> |
33 | #include <asm/irq.h> | 33 | #include <asm/irq.h> |
34 | #include <asm/signal.h> | 34 | #include <asm/signal.h> |
35 | #include <asm/system.h> | ||
36 | #include <asm/mach/pci.h> | 35 | #include <asm/mach/pci.h> |
37 | #include <asm/irq_regs.h> | 36 | #include <asm/irq_regs.h> |
38 | 37 | ||
diff --git a/arch/arm/mach-iop33x/uart.c b/arch/arm/mach-iop33x/uart.c index cdae24e46eea..bbf54d794ce8 100644 --- a/arch/arm/mach-iop33x/uart.c +++ b/arch/arm/mach-iop33x/uart.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <asm/page.h> | 22 | #include <asm/page.h> |
23 | #include <asm/mach/map.h> | 23 | #include <asm/mach/map.h> |
24 | #include <asm/setup.h> | 24 | #include <asm/setup.h> |
25 | #include <asm/system.h> | ||
26 | #include <asm/memory.h> | 25 | #include <asm/memory.h> |
27 | #include <mach/hardware.h> | 26 | #include <mach/hardware.h> |
28 | #include <asm/hardware/iop3xx.h> | 27 | #include <asm/hardware/iop3xx.h> |
diff --git a/arch/arm/mach-ixp2000/core.c b/arch/arm/mach-ixp2000/core.c index 81c45370a4e6..f214cdff01cb 100644 --- a/arch/arm/mach-ixp2000/core.c +++ b/arch/arm/mach-ixp2000/core.c | |||
@@ -32,7 +32,6 @@ | |||
32 | #include <asm/memory.h> | 32 | #include <asm/memory.h> |
33 | #include <mach/hardware.h> | 33 | #include <mach/hardware.h> |
34 | #include <asm/irq.h> | 34 | #include <asm/irq.h> |
35 | #include <asm/system.h> | ||
36 | #include <asm/tlbflush.h> | 35 | #include <asm/tlbflush.h> |
37 | #include <asm/pgtable.h> | 36 | #include <asm/pgtable.h> |
38 | 37 | ||
diff --git a/arch/arm/mach-ixp2000/enp2611.c b/arch/arm/mach-ixp2000/enp2611.c index e872d238cd0f..4867f408617c 100644 --- a/arch/arm/mach-ixp2000/enp2611.c +++ b/arch/arm/mach-ixp2000/enp2611.c | |||
@@ -36,7 +36,6 @@ | |||
36 | #include <asm/irq.h> | 36 | #include <asm/irq.h> |
37 | #include <asm/pgtable.h> | 37 | #include <asm/pgtable.h> |
38 | #include <asm/page.h> | 38 | #include <asm/page.h> |
39 | #include <asm/system.h> | ||
40 | #include <mach/hardware.h> | 39 | #include <mach/hardware.h> |
41 | #include <asm/mach-types.h> | 40 | #include <asm/mach-types.h> |
42 | 41 | ||
diff --git a/arch/arm/mach-ixp2000/ixdp2400.c b/arch/arm/mach-ixp2000/ixdp2400.c index d519944653ad..915ad49e3b8f 100644 --- a/arch/arm/mach-ixp2000/ixdp2400.c +++ b/arch/arm/mach-ixp2000/ixdp2400.c | |||
@@ -29,7 +29,6 @@ | |||
29 | #include <asm/irq.h> | 29 | #include <asm/irq.h> |
30 | #include <asm/pgtable.h> | 30 | #include <asm/pgtable.h> |
31 | #include <asm/page.h> | 31 | #include <asm/page.h> |
32 | #include <asm/system.h> | ||
33 | #include <mach/hardware.h> | 32 | #include <mach/hardware.h> |
34 | #include <asm/mach-types.h> | 33 | #include <asm/mach-types.h> |
35 | 34 | ||
diff --git a/arch/arm/mach-ixp2000/ixdp2800.c b/arch/arm/mach-ixp2000/ixdp2800.c index b415febd2025..a9f1819ea049 100644 --- a/arch/arm/mach-ixp2000/ixdp2800.c +++ b/arch/arm/mach-ixp2000/ixdp2800.c | |||
@@ -29,7 +29,6 @@ | |||
29 | #include <asm/irq.h> | 29 | #include <asm/irq.h> |
30 | #include <asm/pgtable.h> | 30 | #include <asm/pgtable.h> |
31 | #include <asm/page.h> | 31 | #include <asm/page.h> |
32 | #include <asm/system.h> | ||
33 | #include <mach/hardware.h> | 32 | #include <mach/hardware.h> |
34 | #include <asm/mach-types.h> | 33 | #include <asm/mach-types.h> |
35 | 34 | ||
diff --git a/arch/arm/mach-ixp2000/ixdp2x00.c b/arch/arm/mach-ixp2000/ixdp2x00.c index dd9838299068..421e38dc0fac 100644 --- a/arch/arm/mach-ixp2000/ixdp2x00.c +++ b/arch/arm/mach-ixp2000/ixdp2x00.c | |||
@@ -30,7 +30,6 @@ | |||
30 | #include <asm/irq.h> | 30 | #include <asm/irq.h> |
31 | #include <asm/pgtable.h> | 31 | #include <asm/pgtable.h> |
32 | #include <asm/page.h> | 32 | #include <asm/page.h> |
33 | #include <asm/system.h> | ||
34 | #include <mach/hardware.h> | 33 | #include <mach/hardware.h> |
35 | #include <asm/mach-types.h> | 34 | #include <asm/mach-types.h> |
36 | 35 | ||
diff --git a/arch/arm/mach-ixp2000/ixdp2x01.c b/arch/arm/mach-ixp2000/ixdp2x01.c index 7632beadabf6..5196c39cdba4 100644 --- a/arch/arm/mach-ixp2000/ixdp2x01.c +++ b/arch/arm/mach-ixp2000/ixdp2x01.c | |||
@@ -34,7 +34,6 @@ | |||
34 | #include <asm/irq.h> | 34 | #include <asm/irq.h> |
35 | #include <asm/pgtable.h> | 35 | #include <asm/pgtable.h> |
36 | #include <asm/page.h> | 36 | #include <asm/page.h> |
37 | #include <asm/system.h> | ||
38 | #include <mach/hardware.h> | 37 | #include <mach/hardware.h> |
39 | #include <asm/mach-types.h> | 38 | #include <asm/mach-types.h> |
40 | 39 | ||
diff --git a/arch/arm/mach-ixp2000/pci.c b/arch/arm/mach-ixp2000/pci.c index 49c36f3cd602..9c02de932fac 100644 --- a/arch/arm/mach-ixp2000/pci.c +++ b/arch/arm/mach-ixp2000/pci.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include <linux/io.h> | 26 | #include <linux/io.h> |
27 | 27 | ||
28 | #include <asm/irq.h> | 28 | #include <asm/irq.h> |
29 | #include <asm/system.h> | ||
30 | #include <mach/hardware.h> | 29 | #include <mach/hardware.h> |
31 | 30 | ||
32 | #include <asm/mach/pci.h> | 31 | #include <asm/mach/pci.h> |
diff --git a/arch/arm/mach-ixp23xx/core.c b/arch/arm/mach-ixp23xx/core.c index 7c1495e4fe7a..d2c2dc35cbdd 100644 --- a/arch/arm/mach-ixp23xx/core.c +++ b/arch/arm/mach-ixp23xx/core.c | |||
@@ -34,7 +34,6 @@ | |||
34 | #include <asm/memory.h> | 34 | #include <asm/memory.h> |
35 | #include <mach/hardware.h> | 35 | #include <mach/hardware.h> |
36 | #include <asm/irq.h> | 36 | #include <asm/irq.h> |
37 | #include <asm/system.h> | ||
38 | #include <asm/tlbflush.h> | 37 | #include <asm/tlbflush.h> |
39 | #include <asm/pgtable.h> | 38 | #include <asm/pgtable.h> |
40 | 39 | ||
diff --git a/arch/arm/mach-ixp23xx/espresso.c b/arch/arm/mach-ixp23xx/espresso.c index 8f2487e1fc4e..d142d45dea12 100644 --- a/arch/arm/mach-ixp23xx/espresso.c +++ b/arch/arm/mach-ixp23xx/espresso.c | |||
@@ -32,7 +32,6 @@ | |||
32 | #include <mach/hardware.h> | 32 | #include <mach/hardware.h> |
33 | #include <asm/mach-types.h> | 33 | #include <asm/mach-types.h> |
34 | #include <asm/irq.h> | 34 | #include <asm/irq.h> |
35 | #include <asm/system.h> | ||
36 | #include <asm/tlbflush.h> | 35 | #include <asm/tlbflush.h> |
37 | #include <asm/pgtable.h> | 36 | #include <asm/pgtable.h> |
38 | 37 | ||
diff --git a/arch/arm/mach-ixp23xx/ixdp2351.c b/arch/arm/mach-ixp23xx/ixdp2351.c index 5d5dd3e8d069..b0e07db5ceaf 100644 --- a/arch/arm/mach-ixp23xx/ixdp2351.c +++ b/arch/arm/mach-ixp23xx/ixdp2351.c | |||
@@ -36,7 +36,6 @@ | |||
36 | #include <asm/memory.h> | 36 | #include <asm/memory.h> |
37 | #include <mach/hardware.h> | 37 | #include <mach/hardware.h> |
38 | #include <asm/mach-types.h> | 38 | #include <asm/mach-types.h> |
39 | #include <asm/system.h> | ||
40 | #include <asm/tlbflush.h> | 39 | #include <asm/tlbflush.h> |
41 | #include <asm/pgtable.h> | 40 | #include <asm/pgtable.h> |
42 | 41 | ||
diff --git a/arch/arm/mach-ixp23xx/pci.c b/arch/arm/mach-ixp23xx/pci.c index 3cbbd3208fa8..911f5a58e006 100644 --- a/arch/arm/mach-ixp23xx/pci.c +++ b/arch/arm/mach-ixp23xx/pci.c | |||
@@ -28,7 +28,6 @@ | |||
28 | 28 | ||
29 | #include <asm/irq.h> | 29 | #include <asm/irq.h> |
30 | #include <asm/sizes.h> | 30 | #include <asm/sizes.h> |
31 | #include <asm/system.h> | ||
32 | #include <asm/mach/pci.h> | 31 | #include <asm/mach/pci.h> |
33 | #include <mach/hardware.h> | 32 | #include <mach/hardware.h> |
34 | 33 | ||
diff --git a/arch/arm/mach-ixp23xx/roadrunner.c b/arch/arm/mach-ixp23xx/roadrunner.c index 377283fc658c..eaaa3fa9fd05 100644 --- a/arch/arm/mach-ixp23xx/roadrunner.c +++ b/arch/arm/mach-ixp23xx/roadrunner.c | |||
@@ -36,7 +36,6 @@ | |||
36 | #include <mach/hardware.h> | 36 | #include <mach/hardware.h> |
37 | #include <asm/mach-types.h> | 37 | #include <asm/mach-types.h> |
38 | #include <asm/irq.h> | 38 | #include <asm/irq.h> |
39 | #include <asm/system.h> | ||
40 | #include <asm/tlbflush.h> | 39 | #include <asm/tlbflush.h> |
41 | #include <asm/pgtable.h> | 40 | #include <asm/pgtable.h> |
42 | 41 | ||
diff --git a/arch/arm/mach-ixp4xx/common-pci.c b/arch/arm/mach-ixp4xx/common-pci.c index 8508882b13f0..d5719eb42591 100644 --- a/arch/arm/mach-ixp4xx/common-pci.c +++ b/arch/arm/mach-ixp4xx/common-pci.c | |||
@@ -32,7 +32,6 @@ | |||
32 | #include <asm/cputype.h> | 32 | #include <asm/cputype.h> |
33 | #include <asm/irq.h> | 33 | #include <asm/irq.h> |
34 | #include <asm/sizes.h> | 34 | #include <asm/sizes.h> |
35 | #include <asm/system.h> | ||
36 | #include <asm/mach/pci.h> | 35 | #include <asm/mach/pci.h> |
37 | #include <mach/hardware.h> | 36 | #include <mach/hardware.h> |
38 | 37 | ||
diff --git a/arch/arm/mach-ixp4xx/goramo_mlr.c b/arch/arm/mach-ixp4xx/goramo_mlr.c index c0e3d69a8aec..78ae12c46261 100644 --- a/arch/arm/mach-ixp4xx/goramo_mlr.c +++ b/arch/arm/mach-ixp4xx/goramo_mlr.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <linux/pci.h> | 12 | #include <linux/pci.h> |
13 | #include <linux/serial_8250.h> | 13 | #include <linux/serial_8250.h> |
14 | #include <asm/mach-types.h> | 14 | #include <asm/mach-types.h> |
15 | #include <asm/system.h> | ||
16 | #include <asm/mach/arch.h> | 15 | #include <asm/mach/arch.h> |
17 | #include <asm/mach/flash.h> | 16 | #include <asm/mach/flash.h> |
18 | #include <asm/mach/pci.h> | 17 | #include <asm/mach/pci.h> |
diff --git a/arch/arm/mach-ks8695/time.c b/arch/arm/mach-ks8695/time.c index 37dfcd5bd2ad..ec783a3070ae 100644 --- a/arch/arm/mach-ks8695/time.c +++ b/arch/arm/mach-ks8695/time.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <linux/io.h> | 27 | #include <linux/io.h> |
28 | 28 | ||
29 | #include <asm/mach/time.h> | 29 | #include <asm/mach/time.h> |
30 | #include <asm/system_misc.h> | ||
30 | 31 | ||
31 | #include <mach/regs-timer.h> | 32 | #include <mach/regs-timer.h> |
32 | #include <mach/regs-irq.h> | 33 | #include <mach/regs-irq.h> |
diff --git a/arch/arm/mach-mmp/common.c b/arch/arm/mach-mmp/common.c index 062b5b93c50e..9292b7966e3b 100644 --- a/arch/arm/mach-mmp/common.c +++ b/arch/arm/mach-mmp/common.c | |||
@@ -14,6 +14,7 @@ | |||
14 | 14 | ||
15 | #include <asm/page.h> | 15 | #include <asm/page.h> |
16 | #include <asm/mach/map.h> | 16 | #include <asm/mach/map.h> |
17 | #include <asm/system_misc.h> | ||
17 | #include <mach/addr-map.h> | 18 | #include <mach/addr-map.h> |
18 | #include <mach/cputype.h> | 19 | #include <mach/cputype.h> |
19 | 20 | ||
diff --git a/arch/arm/mach-mmp/pxa168.c b/arch/arm/mach-mmp/pxa168.c index f7d59c03fc67..b24d2c32cba9 100644 --- a/arch/arm/mach-mmp/pxa168.c +++ b/arch/arm/mach-mmp/pxa168.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/platform_device.h> | 16 | #include <linux/platform_device.h> |
17 | 17 | ||
18 | #include <asm/mach/time.h> | 18 | #include <asm/mach/time.h> |
19 | #include <asm/system_misc.h> | ||
19 | #include <mach/addr-map.h> | 20 | #include <mach/addr-map.h> |
20 | #include <mach/cputype.h> | 21 | #include <mach/cputype.h> |
21 | #include <mach/regs-apbc.h> | 22 | #include <mach/regs-apbc.h> |
diff --git a/arch/arm/mach-msm/board-sapphire.c b/arch/arm/mach-msm/board-sapphire.c index 97b8191d9d38..4a8ea0d40b6f 100644 --- a/arch/arm/mach-msm/board-sapphire.c +++ b/arch/arm/mach-msm/board-sapphire.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <asm/mach/arch.h> | 27 | #include <asm/mach/arch.h> |
28 | #include <asm/mach/map.h> | 28 | #include <asm/mach/map.h> |
29 | #include <asm/mach/flash.h> | 29 | #include <asm/mach/flash.h> |
30 | #include <asm/system.h> | ||
31 | #include <mach/system.h> | 30 | #include <mach/system.h> |
32 | #include <mach/vreg.h> | 31 | #include <mach/vreg.h> |
33 | #include <mach/board.h> | 32 | #include <mach/board.h> |
diff --git a/arch/arm/mach-mxs/system.c b/arch/arm/mach-mxs/system.c index 7aa5ac5d78bf..80ac1fca8a00 100644 --- a/arch/arm/mach-mxs/system.c +++ b/arch/arm/mach-mxs/system.c | |||
@@ -25,7 +25,7 @@ | |||
25 | #include <linux/module.h> | 25 | #include <linux/module.h> |
26 | 26 | ||
27 | #include <asm/proc-fns.h> | 27 | #include <asm/proc-fns.h> |
28 | #include <asm/system.h> | 28 | #include <asm/system_misc.h> |
29 | 29 | ||
30 | #include <mach/mxs.h> | 30 | #include <mach/mxs.h> |
31 | #include <mach/common.h> | 31 | #include <mach/common.h> |
diff --git a/arch/arm/mach-omap1/id.c b/arch/arm/mach-omap1/id.c index f24c1e2c5044..2b28e1da14b0 100644 --- a/arch/arm/mach-omap1/id.c +++ b/arch/arm/mach-omap1/id.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/kernel.h> | 15 | #include <linux/kernel.h> |
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <linux/io.h> | 17 | #include <linux/io.h> |
18 | #include <asm/system_info.h> | ||
18 | 19 | ||
19 | #include <plat/cpu.h> | 20 | #include <plat/cpu.h> |
20 | 21 | ||
diff --git a/arch/arm/mach-omap1/leds-h2p2-debug.c b/arch/arm/mach-omap1/leds-h2p2-debug.c index 4b818eb9f911..f6b14a14a957 100644 --- a/arch/arm/mach-omap1/leds-h2p2-debug.c +++ b/arch/arm/mach-omap1/leds-h2p2-debug.c | |||
@@ -17,7 +17,6 @@ | |||
17 | 17 | ||
18 | #include <mach/hardware.h> | 18 | #include <mach/hardware.h> |
19 | #include <asm/leds.h> | 19 | #include <asm/leds.h> |
20 | #include <asm/system.h> | ||
21 | #include <asm/mach-types.h> | 20 | #include <asm/mach-types.h> |
22 | 21 | ||
23 | #include <plat/fpga.h> | 22 | #include <plat/fpga.h> |
diff --git a/arch/arm/mach-omap1/leds-innovator.c b/arch/arm/mach-omap1/leds-innovator.c index 9b99c2894623..3a066ee8d02c 100644 --- a/arch/arm/mach-omap1/leds-innovator.c +++ b/arch/arm/mach-omap1/leds-innovator.c | |||
@@ -5,7 +5,6 @@ | |||
5 | 5 | ||
6 | #include <mach/hardware.h> | 6 | #include <mach/hardware.h> |
7 | #include <asm/leds.h> | 7 | #include <asm/leds.h> |
8 | #include <asm/system.h> | ||
9 | 8 | ||
10 | #include "leds.h" | 9 | #include "leds.h" |
11 | 10 | ||
diff --git a/arch/arm/mach-omap1/leds-osk.c b/arch/arm/mach-omap1/leds-osk.c index da09f4364979..936ed426b84f 100644 --- a/arch/arm/mach-omap1/leds-osk.c +++ b/arch/arm/mach-omap1/leds-osk.c | |||
@@ -8,7 +8,6 @@ | |||
8 | 8 | ||
9 | #include <mach/hardware.h> | 9 | #include <mach/hardware.h> |
10 | #include <asm/leds.h> | 10 | #include <asm/leds.h> |
11 | #include <asm/system.h> | ||
12 | 11 | ||
13 | #include "leds.h" | 12 | #include "leds.h" |
14 | 13 | ||
diff --git a/arch/arm/mach-omap1/mux.c b/arch/arm/mach-omap1/mux.c index 5fdef7a34828..087dba0df47e 100644 --- a/arch/arm/mach-omap1/mux.c +++ b/arch/arm/mach-omap1/mux.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <linux/io.h> | 27 | #include <linux/io.h> |
28 | #include <linux/spinlock.h> | 28 | #include <linux/spinlock.h> |
29 | 29 | ||
30 | #include <asm/system.h> | ||
31 | 30 | ||
32 | #include <plat/mux.h> | 31 | #include <plat/mux.h> |
33 | 32 | ||
diff --git a/arch/arm/mach-omap1/time.c b/arch/arm/mach-omap1/time.c index 2fae6a2740f1..4d8dd9a1b04c 100644 --- a/arch/arm/mach-omap1/time.c +++ b/arch/arm/mach-omap1/time.c | |||
@@ -44,7 +44,6 @@ | |||
44 | #include <linux/clockchips.h> | 44 | #include <linux/clockchips.h> |
45 | #include <linux/io.h> | 45 | #include <linux/io.h> |
46 | 46 | ||
47 | #include <asm/system.h> | ||
48 | #include <asm/leds.h> | 47 | #include <asm/leds.h> |
49 | #include <asm/irq.h> | 48 | #include <asm/irq.h> |
50 | #include <asm/sched_clock.h> | 49 | #include <asm/sched_clock.h> |
diff --git a/arch/arm/mach-omap1/timer32k.c b/arch/arm/mach-omap1/timer32k.c index a2e6d0709df2..325b9a0aa4a0 100644 --- a/arch/arm/mach-omap1/timer32k.c +++ b/arch/arm/mach-omap1/timer32k.c | |||
@@ -46,7 +46,6 @@ | |||
46 | #include <linux/clockchips.h> | 46 | #include <linux/clockchips.h> |
47 | #include <linux/io.h> | 47 | #include <linux/io.h> |
48 | 48 | ||
49 | #include <asm/system.h> | ||
50 | #include <asm/leds.h> | 49 | #include <asm/leds.h> |
51 | #include <asm/irq.h> | 50 | #include <asm/irq.h> |
52 | #include <asm/mach/irq.h> | 51 | #include <asm/mach/irq.h> |
diff --git a/arch/arm/mach-omap2/board-omap3touchbook.c b/arch/arm/mach-omap2/board-omap3touchbook.c index 8842e04aef01..ae2251fa4a69 100644 --- a/arch/arm/mach-omap2/board-omap3touchbook.c +++ b/arch/arm/mach-omap2/board-omap3touchbook.c | |||
@@ -42,6 +42,7 @@ | |||
42 | #include <asm/mach/arch.h> | 42 | #include <asm/mach/arch.h> |
43 | #include <asm/mach/map.h> | 43 | #include <asm/mach/map.h> |
44 | #include <asm/mach/flash.h> | 44 | #include <asm/mach/flash.h> |
45 | #include <asm/system_info.h> | ||
45 | 46 | ||
46 | #include <plat/board.h> | 47 | #include <plat/board.h> |
47 | #include "common.h" | 48 | #include "common.h" |
diff --git a/arch/arm/mach-omap2/board-rx51-peripherals.c b/arch/arm/mach-omap2/board-rx51-peripherals.c index 16aebfb8a7ec..f120997309af 100644 --- a/arch/arm/mach-omap2/board-rx51-peripherals.c +++ b/arch/arm/mach-omap2/board-rx51-peripherals.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <linux/gpio_keys.h> | 25 | #include <linux/gpio_keys.h> |
26 | #include <linux/mmc/host.h> | 26 | #include <linux/mmc/host.h> |
27 | #include <linux/power/isp1704_charger.h> | 27 | #include <linux/power/isp1704_charger.h> |
28 | #include <asm/system_info.h> | ||
28 | 29 | ||
29 | #include <plat/mcspi.h> | 30 | #include <plat/mcspi.h> |
30 | #include <plat/board.h> | 31 | #include <plat/board.h> |
diff --git a/arch/arm/mach-omap2/mux.c b/arch/arm/mach-omap2/mux.c index f26b2faa1694..65c33911341f 100644 --- a/arch/arm/mach-omap2/mux.c +++ b/arch/arm/mach-omap2/mux.c | |||
@@ -35,7 +35,6 @@ | |||
35 | #include <linux/irq.h> | 35 | #include <linux/irq.h> |
36 | #include <linux/interrupt.h> | 36 | #include <linux/interrupt.h> |
37 | 37 | ||
38 | #include <asm/system.h> | ||
39 | 38 | ||
40 | #include <plat/omap_hwmod.h> | 39 | #include <plat/omap_hwmod.h> |
41 | 40 | ||
diff --git a/arch/arm/mach-omap2/omap-mpuss-lowpower.c b/arch/arm/mach-omap2/omap-mpuss-lowpower.c index 63ab686834c1..13670aa84e58 100644 --- a/arch/arm/mach-omap2/omap-mpuss-lowpower.c +++ b/arch/arm/mach-omap2/omap-mpuss-lowpower.c | |||
@@ -46,7 +46,6 @@ | |||
46 | #include <asm/cacheflush.h> | 46 | #include <asm/cacheflush.h> |
47 | #include <asm/tlbflush.h> | 47 | #include <asm/tlbflush.h> |
48 | #include <asm/smp_scu.h> | 48 | #include <asm/smp_scu.h> |
49 | #include <asm/system.h> | ||
50 | #include <asm/pgalloc.h> | 49 | #include <asm/pgalloc.h> |
51 | #include <asm/suspend.h> | 50 | #include <asm/suspend.h> |
52 | #include <asm/hardware/cache-l2x0.h> | 51 | #include <asm/hardware/cache-l2x0.h> |
diff --git a/arch/arm/mach-omap2/pm24xx.c b/arch/arm/mach-omap2/pm24xx.c index 5ca45ca76946..95442b69ae27 100644 --- a/arch/arm/mach-omap2/pm24xx.c +++ b/arch/arm/mach-omap2/pm24xx.c | |||
@@ -33,6 +33,7 @@ | |||
33 | #include <asm/mach/time.h> | 33 | #include <asm/mach/time.h> |
34 | #include <asm/mach/irq.h> | 34 | #include <asm/mach/irq.h> |
35 | #include <asm/mach-types.h> | 35 | #include <asm/mach-types.h> |
36 | #include <asm/system_misc.h> | ||
36 | 37 | ||
37 | #include <plat/clock.h> | 38 | #include <plat/clock.h> |
38 | #include <plat/sram.h> | 39 | #include <plat/sram.h> |
diff --git a/arch/arm/mach-omap2/pm34xx.c b/arch/arm/mach-omap2/pm34xx.c index 027a537d72b2..238defc6f6df 100644 --- a/arch/arm/mach-omap2/pm34xx.c +++ b/arch/arm/mach-omap2/pm34xx.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include <trace/events/power.h> | 31 | #include <trace/events/power.h> |
32 | 32 | ||
33 | #include <asm/suspend.h> | 33 | #include <asm/suspend.h> |
34 | #include <asm/system_misc.h> | ||
34 | 35 | ||
35 | #include <plat/sram.h> | 36 | #include <plat/sram.h> |
36 | #include "clockdomain.h" | 37 | #include "clockdomain.h" |
diff --git a/arch/arm/mach-omap2/pm44xx.c b/arch/arm/mach-omap2/pm44xx.c index 91e0b1c9b76c..9ccaadc2cf07 100644 --- a/arch/arm/mach-omap2/pm44xx.c +++ b/arch/arm/mach-omap2/pm44xx.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/list.h> | 16 | #include <linux/list.h> |
17 | #include <linux/err.h> | 17 | #include <linux/err.h> |
18 | #include <linux/slab.h> | 18 | #include <linux/slab.h> |
19 | #include <asm/system_misc.h> | ||
19 | 20 | ||
20 | #include "common.h" | 21 | #include "common.h" |
21 | #include "clockdomain.h" | 22 | #include "clockdomain.h" |
diff --git a/arch/arm/mach-omap2/sleep44xx.S b/arch/arm/mach-omap2/sleep44xx.S index abd283400490..9f6b83d1b193 100644 --- a/arch/arm/mach-omap2/sleep44xx.S +++ b/arch/arm/mach-omap2/sleep44xx.S | |||
@@ -10,7 +10,6 @@ | |||
10 | */ | 10 | */ |
11 | 11 | ||
12 | #include <linux/linkage.h> | 12 | #include <linux/linkage.h> |
13 | #include <asm/system.h> | ||
14 | #include <asm/smp_scu.h> | 13 | #include <asm/smp_scu.h> |
15 | #include <asm/memory.h> | 14 | #include <asm/memory.h> |
16 | #include <asm/hardware/cache-l2x0.h> | 15 | #include <asm/hardware/cache-l2x0.h> |
diff --git a/arch/arm/mach-orion5x/common.c b/arch/arm/mach-orion5x/common.c index 5dad38ec00ea..24481666d2cd 100644 --- a/arch/arm/mach-orion5x/common.c +++ b/arch/arm/mach-orion5x/common.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <net/dsa.h> | 21 | #include <net/dsa.h> |
22 | #include <asm/page.h> | 22 | #include <asm/page.h> |
23 | #include <asm/setup.h> | 23 | #include <asm/setup.h> |
24 | #include <asm/system_misc.h> | ||
24 | #include <asm/timex.h> | 25 | #include <asm/timex.h> |
25 | #include <asm/mach/arch.h> | 26 | #include <asm/mach/arch.h> |
26 | #include <asm/mach/map.h> | 27 | #include <asm/mach/map.h> |
diff --git a/arch/arm/mach-orion5x/dns323-setup.c b/arch/arm/mach-orion5x/dns323-setup.c index 91b0f4788597..c3ed15b8ea25 100644 --- a/arch/arm/mach-orion5x/dns323-setup.c +++ b/arch/arm/mach-orion5x/dns323-setup.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include <asm/mach-types.h> | 32 | #include <asm/mach-types.h> |
33 | #include <asm/mach/arch.h> | 33 | #include <asm/mach/arch.h> |
34 | #include <asm/mach/pci.h> | 34 | #include <asm/mach/pci.h> |
35 | #include <asm/system_info.h> | ||
35 | #include <mach/orion5x.h> | 36 | #include <mach/orion5x.h> |
36 | #include "common.h" | 37 | #include "common.h" |
37 | #include "mpp.h" | 38 | #include "mpp.h" |
diff --git a/arch/arm/mach-orion5x/ls-chl-setup.c b/arch/arm/mach-orion5x/ls-chl-setup.c index 527213169db0..0c9e413b5805 100644 --- a/arch/arm/mach-orion5x/ls-chl-setup.c +++ b/arch/arm/mach-orion5x/ls-chl-setup.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <linux/gpio.h> | 22 | #include <linux/gpio.h> |
23 | #include <asm/mach-types.h> | 23 | #include <asm/mach-types.h> |
24 | #include <asm/mach/arch.h> | 24 | #include <asm/mach/arch.h> |
25 | #include <asm/system.h> | ||
26 | #include <mach/orion5x.h> | 25 | #include <mach/orion5x.h> |
27 | #include "common.h" | 26 | #include "common.h" |
28 | #include "mpp.h" | 27 | #include "mpp.h" |
diff --git a/arch/arm/mach-orion5x/ls_hgl-setup.c b/arch/arm/mach-orion5x/ls_hgl-setup.c index 9a8697b97dd7..c1b5d8a58037 100644 --- a/arch/arm/mach-orion5x/ls_hgl-setup.c +++ b/arch/arm/mach-orion5x/ls_hgl-setup.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <linux/gpio.h> | 21 | #include <linux/gpio.h> |
22 | #include <asm/mach-types.h> | 22 | #include <asm/mach-types.h> |
23 | #include <asm/mach/arch.h> | 23 | #include <asm/mach/arch.h> |
24 | #include <asm/system.h> | ||
25 | #include <mach/orion5x.h> | 24 | #include <mach/orion5x.h> |
26 | #include "common.h" | 25 | #include "common.h" |
27 | #include "mpp.h" | 26 | #include "mpp.h" |
diff --git a/arch/arm/mach-orion5x/lsmini-setup.c b/arch/arm/mach-orion5x/lsmini-setup.c index 09c73659f467..949eaa8f12e3 100644 --- a/arch/arm/mach-orion5x/lsmini-setup.c +++ b/arch/arm/mach-orion5x/lsmini-setup.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <linux/gpio.h> | 21 | #include <linux/gpio.h> |
22 | #include <asm/mach-types.h> | 22 | #include <asm/mach-types.h> |
23 | #include <asm/mach/arch.h> | 23 | #include <asm/mach/arch.h> |
24 | #include <asm/system.h> | ||
25 | #include <mach/orion5x.h> | 24 | #include <mach/orion5x.h> |
26 | #include "common.h" | 25 | #include "common.h" |
27 | #include "mpp.h" | 26 | #include "mpp.h" |
diff --git a/arch/arm/mach-pnx4008/core.c b/arch/arm/mach-pnx4008/core.c index 4cfb40b2ec19..be4c92858509 100644 --- a/arch/arm/mach-pnx4008/core.c +++ b/arch/arm/mach-pnx4008/core.c | |||
@@ -32,7 +32,7 @@ | |||
32 | #include <asm/mach-types.h> | 32 | #include <asm/mach-types.h> |
33 | #include <asm/pgtable.h> | 33 | #include <asm/pgtable.h> |
34 | #include <asm/page.h> | 34 | #include <asm/page.h> |
35 | #include <asm/system.h> | 35 | #include <asm/system_misc.h> |
36 | 36 | ||
37 | #include <asm/mach/arch.h> | 37 | #include <asm/mach/arch.h> |
38 | #include <asm/mach/map.h> | 38 | #include <asm/mach/map.h> |
diff --git a/arch/arm/mach-pnx4008/dma.c b/arch/arm/mach-pnx4008/dma.c index 7fa4bf2e2125..a4739e9fb2fb 100644 --- a/arch/arm/mach-pnx4008/dma.c +++ b/arch/arm/mach-pnx4008/dma.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include <linux/io.h> | 24 | #include <linux/io.h> |
25 | #include <linux/gfp.h> | 25 | #include <linux/gfp.h> |
26 | 26 | ||
27 | #include <asm/system.h> | ||
28 | #include <mach/hardware.h> | 27 | #include <mach/hardware.h> |
29 | #include <mach/dma.h> | 28 | #include <mach/dma.h> |
30 | #include <asm/dma-mapping.h> | 29 | #include <asm/dma-mapping.h> |
diff --git a/arch/arm/mach-pnx4008/irq.c b/arch/arm/mach-pnx4008/irq.c index 7608c7a288cf..41e4201972d5 100644 --- a/arch/arm/mach-pnx4008/irq.c +++ b/arch/arm/mach-pnx4008/irq.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <asm/setup.h> | 28 | #include <asm/setup.h> |
29 | #include <asm/pgtable.h> | 29 | #include <asm/pgtable.h> |
30 | #include <asm/page.h> | 30 | #include <asm/page.h> |
31 | #include <asm/system.h> | ||
32 | #include <asm/mach/arch.h> | 31 | #include <asm/mach/arch.h> |
33 | #include <asm/mach/irq.h> | 32 | #include <asm/mach/irq.h> |
34 | #include <asm/mach/map.h> | 33 | #include <asm/mach/map.h> |
diff --git a/arch/arm/mach-pnx4008/time.c b/arch/arm/mach-pnx4008/time.c index 0c8aad4bb0dc..0cfe8af3d3be 100644 --- a/arch/arm/mach-pnx4008/time.c +++ b/arch/arm/mach-pnx4008/time.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include <linux/irq.h> | 24 | #include <linux/irq.h> |
25 | #include <linux/io.h> | 25 | #include <linux/io.h> |
26 | 26 | ||
27 | #include <asm/system.h> | ||
28 | #include <mach/hardware.h> | 27 | #include <mach/hardware.h> |
29 | #include <asm/leds.h> | 28 | #include <asm/leds.h> |
30 | #include <asm/mach/time.h> | 29 | #include <asm/mach/time.h> |
diff --git a/arch/arm/mach-pxa/cm-x300.c b/arch/arm/mach-pxa/cm-x300.c index 4b981b82d2a5..895ee8c45009 100644 --- a/arch/arm/mach-pxa/cm-x300.c +++ b/arch/arm/mach-pxa/cm-x300.c | |||
@@ -44,6 +44,7 @@ | |||
44 | #include <asm/mach-types.h> | 44 | #include <asm/mach-types.h> |
45 | #include <asm/mach/arch.h> | 45 | #include <asm/mach/arch.h> |
46 | #include <asm/setup.h> | 46 | #include <asm/setup.h> |
47 | #include <asm/system_info.h> | ||
47 | 48 | ||
48 | #include <mach/pxa300.h> | 49 | #include <mach/pxa300.h> |
49 | #include <mach/pxa27x-udc.h> | 50 | #include <mach/pxa27x-udc.h> |
diff --git a/arch/arm/mach-pxa/colibri-pxa3xx.c b/arch/arm/mach-pxa/colibri-pxa3xx.c index 2b8ca0de8a3d..68cc75fac219 100644 --- a/arch/arm/mach-pxa/colibri-pxa3xx.c +++ b/arch/arm/mach-pxa/colibri-pxa3xx.c | |||
@@ -18,6 +18,7 @@ | |||
18 | #include <asm/mach-types.h> | 18 | #include <asm/mach-types.h> |
19 | #include <mach/hardware.h> | 19 | #include <mach/hardware.h> |
20 | #include <asm/sizes.h> | 20 | #include <asm/sizes.h> |
21 | #include <asm/system_info.h> | ||
21 | #include <asm/mach/arch.h> | 22 | #include <asm/mach/arch.h> |
22 | #include <asm/mach/irq.h> | 23 | #include <asm/mach/irq.h> |
23 | #include <mach/pxa3xx-regs.h> | 24 | #include <mach/pxa3xx-regs.h> |
diff --git a/arch/arm/mach-pxa/corgi.c b/arch/arm/mach-pxa/corgi.c index 11f1e735966e..de9d45e673fd 100644 --- a/arch/arm/mach-pxa/corgi.c +++ b/arch/arm/mach-pxa/corgi.c | |||
@@ -40,7 +40,6 @@ | |||
40 | #include <asm/mach-types.h> | 40 | #include <asm/mach-types.h> |
41 | #include <mach/hardware.h> | 41 | #include <mach/hardware.h> |
42 | #include <asm/irq.h> | 42 | #include <asm/irq.h> |
43 | #include <asm/system.h> | ||
44 | 43 | ||
45 | #include <asm/mach/arch.h> | 44 | #include <asm/mach/arch.h> |
46 | #include <asm/mach/map.h> | 45 | #include <asm/mach/map.h> |
diff --git a/arch/arm/mach-pxa/generic.c b/arch/arm/mach-pxa/generic.c index 5432ecb15def..42254175fcf4 100644 --- a/arch/arm/mach-pxa/generic.c +++ b/arch/arm/mach-pxa/generic.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <linux/init.h> | 22 | #include <linux/init.h> |
23 | 23 | ||
24 | #include <mach/hardware.h> | 24 | #include <mach/hardware.h> |
25 | #include <asm/system.h> | ||
26 | #include <asm/mach/map.h> | 25 | #include <asm/mach/map.h> |
27 | #include <asm/mach-types.h> | 26 | #include <asm/mach-types.h> |
28 | 27 | ||
diff --git a/arch/arm/mach-pxa/leds-idp.c b/arch/arm/mach-pxa/leds-idp.c index 8b9c17142d5a..06b060025d11 100644 --- a/arch/arm/mach-pxa/leds-idp.c +++ b/arch/arm/mach-pxa/leds-idp.c | |||
@@ -16,7 +16,6 @@ | |||
16 | 16 | ||
17 | #include <mach/hardware.h> | 17 | #include <mach/hardware.h> |
18 | #include <asm/leds.h> | 18 | #include <asm/leds.h> |
19 | #include <asm/system.h> | ||
20 | 19 | ||
21 | #include <mach/pxa25x.h> | 20 | #include <mach/pxa25x.h> |
22 | #include <mach/idp.h> | 21 | #include <mach/idp.h> |
diff --git a/arch/arm/mach-pxa/leds-lubbock.c b/arch/arm/mach-pxa/leds-lubbock.c index e26d5efe1969..0bd85c884a7c 100644 --- a/arch/arm/mach-pxa/leds-lubbock.c +++ b/arch/arm/mach-pxa/leds-lubbock.c | |||
@@ -15,7 +15,6 @@ | |||
15 | 15 | ||
16 | #include <mach/hardware.h> | 16 | #include <mach/hardware.h> |
17 | #include <asm/leds.h> | 17 | #include <asm/leds.h> |
18 | #include <asm/system.h> | ||
19 | #include <mach/pxa25x.h> | 18 | #include <mach/pxa25x.h> |
20 | #include <mach/lubbock.h> | 19 | #include <mach/lubbock.h> |
21 | 20 | ||
diff --git a/arch/arm/mach-pxa/leds-mainstone.c b/arch/arm/mach-pxa/leds-mainstone.c index db4af5eee8b2..4058ab340fe6 100644 --- a/arch/arm/mach-pxa/leds-mainstone.c +++ b/arch/arm/mach-pxa/leds-mainstone.c | |||
@@ -14,7 +14,6 @@ | |||
14 | 14 | ||
15 | #include <mach/hardware.h> | 15 | #include <mach/hardware.h> |
16 | #include <asm/leds.h> | 16 | #include <asm/leds.h> |
17 | #include <asm/system.h> | ||
18 | 17 | ||
19 | #include <mach/pxa27x.h> | 18 | #include <mach/pxa27x.h> |
20 | #include <mach/mainstone.h> | 19 | #include <mach/mainstone.h> |
diff --git a/arch/arm/mach-pxa/magician.c b/arch/arm/mach-pxa/magician.c index 5e26f3e93fdd..6f4785b347c2 100644 --- a/arch/arm/mach-pxa/magician.c +++ b/arch/arm/mach-pxa/magician.c | |||
@@ -34,6 +34,7 @@ | |||
34 | #include <mach/hardware.h> | 34 | #include <mach/hardware.h> |
35 | #include <asm/mach-types.h> | 35 | #include <asm/mach-types.h> |
36 | #include <asm/mach/arch.h> | 36 | #include <asm/mach/arch.h> |
37 | #include <asm/system_info.h> | ||
37 | 38 | ||
38 | #include <mach/pxa27x.h> | 39 | #include <mach/pxa27x.h> |
39 | #include <mach/magician.h> | 40 | #include <mach/magician.h> |
diff --git a/arch/arm/mach-pxa/poodle.c b/arch/arm/mach-pxa/poodle.c index 744baee12c0c..89d98c832189 100644 --- a/arch/arm/mach-pxa/poodle.c +++ b/arch/arm/mach-pxa/poodle.c | |||
@@ -34,7 +34,6 @@ | |||
34 | #include <asm/mach-types.h> | 34 | #include <asm/mach-types.h> |
35 | #include <asm/irq.h> | 35 | #include <asm/irq.h> |
36 | #include <asm/setup.h> | 36 | #include <asm/setup.h> |
37 | #include <asm/system.h> | ||
38 | 37 | ||
39 | #include <asm/mach/arch.h> | 38 | #include <asm/mach/arch.h> |
40 | #include <asm/mach/map.h> | 39 | #include <asm/mach/map.h> |
diff --git a/arch/arm/mach-pxa/reset.c b/arch/arm/mach-pxa/reset.c index c8497b00cdfe..b4528899ef08 100644 --- a/arch/arm/mach-pxa/reset.c +++ b/arch/arm/mach-pxa/reset.c | |||
@@ -9,6 +9,7 @@ | |||
9 | #include <linux/gpio.h> | 9 | #include <linux/gpio.h> |
10 | #include <linux/io.h> | 10 | #include <linux/io.h> |
11 | #include <asm/proc-fns.h> | 11 | #include <asm/proc-fns.h> |
12 | #include <asm/system_misc.h> | ||
12 | 13 | ||
13 | #include <mach/regs-ost.h> | 14 | #include <mach/regs-ost.h> |
14 | #include <mach/reset.h> | 15 | #include <mach/reset.h> |
diff --git a/arch/arm/mach-pxa/viper.c b/arch/arm/mach-pxa/viper.c index 023d6ca789de..7a3d342a7732 100644 --- a/arch/arm/mach-pxa/viper.c +++ b/arch/arm/mach-pxa/viper.c | |||
@@ -57,6 +57,7 @@ | |||
57 | #include <asm/mach-types.h> | 57 | #include <asm/mach-types.h> |
58 | #include <asm/irq.h> | 58 | #include <asm/irq.h> |
59 | #include <asm/sizes.h> | 59 | #include <asm/sizes.h> |
60 | #include <asm/system_info.h> | ||
60 | 61 | ||
61 | #include <asm/mach/arch.h> | 62 | #include <asm/mach/arch.h> |
62 | #include <asm/mach/map.h> | 63 | #include <asm/mach/map.h> |
diff --git a/arch/arm/mach-pxa/zeus.c b/arch/arm/mach-pxa/zeus.c index a4dd1c347050..af3d4f7646d7 100644 --- a/arch/arm/mach-pxa/zeus.c +++ b/arch/arm/mach-pxa/zeus.c | |||
@@ -32,6 +32,7 @@ | |||
32 | 32 | ||
33 | #include <asm/mach-types.h> | 33 | #include <asm/mach-types.h> |
34 | #include <asm/suspend.h> | 34 | #include <asm/suspend.h> |
35 | #include <asm/system_info.h> | ||
35 | #include <asm/mach/arch.h> | 36 | #include <asm/mach/arch.h> |
36 | #include <asm/mach/map.h> | 37 | #include <asm/mach/map.h> |
37 | 38 | ||
diff --git a/arch/arm/mach-realview/core.c b/arch/arm/mach-realview/core.c index acd329afc3ac..45868bb43cbd 100644 --- a/arch/arm/mach-realview/core.c +++ b/arch/arm/mach-realview/core.c | |||
@@ -33,7 +33,6 @@ | |||
33 | #include <linux/clkdev.h> | 33 | #include <linux/clkdev.h> |
34 | #include <linux/mtd/physmap.h> | 34 | #include <linux/mtd/physmap.h> |
35 | 35 | ||
36 | #include <asm/system.h> | ||
37 | #include <mach/hardware.h> | 36 | #include <mach/hardware.h> |
38 | #include <asm/irq.h> | 37 | #include <asm/irq.h> |
39 | #include <asm/leds.h> | 38 | #include <asm/leds.h> |
diff --git a/arch/arm/mach-realview/hotplug.c b/arch/arm/mach-realview/hotplug.c index eb55f05bef3a..57d9efba2956 100644 --- a/arch/arm/mach-realview/hotplug.c +++ b/arch/arm/mach-realview/hotplug.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/smp.h> | 13 | #include <linux/smp.h> |
14 | 14 | ||
15 | #include <asm/cacheflush.h> | 15 | #include <asm/cacheflush.h> |
16 | #include <asm/cp15.h> | ||
16 | #include <asm/smp_plat.h> | 17 | #include <asm/smp_plat.h> |
17 | 18 | ||
18 | extern volatile int pen_release; | 19 | extern volatile int pen_release; |
diff --git a/arch/arm/mach-rpc/riscpc.c b/arch/arm/mach-rpc/riscpc.c index 731552d68adf..f3fa259ce01f 100644 --- a/arch/arm/mach-rpc/riscpc.c +++ b/arch/arm/mach-rpc/riscpc.c | |||
@@ -28,6 +28,7 @@ | |||
28 | #include <asm/page.h> | 28 | #include <asm/page.h> |
29 | #include <asm/domain.h> | 29 | #include <asm/domain.h> |
30 | #include <asm/setup.h> | 30 | #include <asm/setup.h> |
31 | #include <asm/system_misc.h> | ||
31 | 32 | ||
32 | #include <asm/mach/map.h> | 33 | #include <asm/mach/map.h> |
33 | #include <asm/mach/arch.h> | 34 | #include <asm/mach/arch.h> |
diff --git a/arch/arm/mach-s3c24xx/s3c2410.c b/arch/arm/mach-s3c24xx/s3c2410.c index 061b6bb1a557..a3c5cb086ee2 100644 --- a/arch/arm/mach-s3c24xx/s3c2410.c +++ b/arch/arm/mach-s3c24xx/s3c2410.c | |||
@@ -30,6 +30,7 @@ | |||
30 | 30 | ||
31 | #include <mach/hardware.h> | 31 | #include <mach/hardware.h> |
32 | #include <asm/irq.h> | 32 | #include <asm/irq.h> |
33 | #include <asm/system_misc.h> | ||
33 | 34 | ||
34 | #include <plat/cpu-freq.h> | 35 | #include <plat/cpu-freq.h> |
35 | 36 | ||
diff --git a/arch/arm/mach-s3c24xx/s3c2412.c b/arch/arm/mach-s3c24xx/s3c2412.c index c6eac9871093..d4bc7f960bbb 100644 --- a/arch/arm/mach-s3c24xx/s3c2412.c +++ b/arch/arm/mach-s3c24xx/s3c2412.c | |||
@@ -31,6 +31,7 @@ | |||
31 | #include <mach/hardware.h> | 31 | #include <mach/hardware.h> |
32 | #include <asm/proc-fns.h> | 32 | #include <asm/proc-fns.h> |
33 | #include <asm/irq.h> | 33 | #include <asm/irq.h> |
34 | #include <asm/system_misc.h> | ||
34 | 35 | ||
35 | #include <plat/cpu-freq.h> | 36 | #include <plat/cpu-freq.h> |
36 | 37 | ||
diff --git a/arch/arm/mach-s3c24xx/s3c2416.c b/arch/arm/mach-s3c24xx/s3c2416.c index 0e9a71c90ed7..7743fade50df 100644 --- a/arch/arm/mach-s3c24xx/s3c2416.c +++ b/arch/arm/mach-s3c24xx/s3c2416.c | |||
@@ -43,6 +43,7 @@ | |||
43 | #include <mach/hardware.h> | 43 | #include <mach/hardware.h> |
44 | #include <asm/proc-fns.h> | 44 | #include <asm/proc-fns.h> |
45 | #include <asm/irq.h> | 45 | #include <asm/irq.h> |
46 | #include <asm/system_misc.h> | ||
46 | 47 | ||
47 | #include <mach/regs-s3c2443-clock.h> | 48 | #include <mach/regs-s3c2443-clock.h> |
48 | 49 | ||
diff --git a/arch/arm/mach-s3c24xx/s3c2443.c b/arch/arm/mach-s3c24xx/s3c2443.c index b7778a9dafaf..ab648ad8fa50 100644 --- a/arch/arm/mach-s3c24xx/s3c2443.c +++ b/arch/arm/mach-s3c24xx/s3c2443.c | |||
@@ -29,6 +29,7 @@ | |||
29 | 29 | ||
30 | #include <mach/hardware.h> | 30 | #include <mach/hardware.h> |
31 | #include <asm/irq.h> | 31 | #include <asm/irq.h> |
32 | #include <asm/system_misc.h> | ||
32 | 33 | ||
33 | #include <mach/regs-s3c2443-clock.h> | 34 | #include <mach/regs-s3c2443-clock.h> |
34 | 35 | ||
diff --git a/arch/arm/mach-s3c24xx/s3c244x.c b/arch/arm/mach-s3c24xx/s3c244x.c index d15852f642b7..6f74118f60c6 100644 --- a/arch/arm/mach-s3c24xx/s3c244x.c +++ b/arch/arm/mach-s3c24xx/s3c244x.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <linux/clk.h> | 23 | #include <linux/clk.h> |
24 | #include <linux/io.h> | 24 | #include <linux/io.h> |
25 | 25 | ||
26 | #include <asm/system_misc.h> | ||
26 | #include <asm/mach/arch.h> | 27 | #include <asm/mach/arch.h> |
27 | #include <asm/mach/map.h> | 28 | #include <asm/mach/map.h> |
28 | #include <asm/mach/irq.h> | 29 | #include <asm/mach/irq.h> |
diff --git a/arch/arm/mach-s3c64xx/common.c b/arch/arm/mach-s3c64xx/common.c index bee7dcd4df7c..b313380342a5 100644 --- a/arch/arm/mach-s3c64xx/common.c +++ b/arch/arm/mach-s3c64xx/common.c | |||
@@ -29,6 +29,7 @@ | |||
29 | #include <asm/mach/arch.h> | 29 | #include <asm/mach/arch.h> |
30 | #include <asm/mach/map.h> | 30 | #include <asm/mach/map.h> |
31 | #include <asm/hardware/vic.h> | 31 | #include <asm/hardware/vic.h> |
32 | #include <asm/system_misc.h> | ||
32 | 33 | ||
33 | #include <mach/map.h> | 34 | #include <mach/map.h> |
34 | #include <mach/hardware.h> | 35 | #include <mach/hardware.h> |
diff --git a/arch/arm/mach-s5p64x0/common.c b/arch/arm/mach-s5p64x0/common.c index 9143f8b19962..6e6a0a9d6778 100644 --- a/arch/arm/mach-s5p64x0/common.c +++ b/arch/arm/mach-s5p64x0/common.c | |||
@@ -27,6 +27,7 @@ | |||
27 | 27 | ||
28 | #include <asm/irq.h> | 28 | #include <asm/irq.h> |
29 | #include <asm/proc-fns.h> | 29 | #include <asm/proc-fns.h> |
30 | #include <asm/system_misc.h> | ||
30 | #include <asm/mach/arch.h> | 31 | #include <asm/mach/arch.h> |
31 | #include <asm/mach/map.h> | 32 | #include <asm/mach/map.h> |
32 | #include <asm/mach/irq.h> | 33 | #include <asm/mach/irq.h> |
diff --git a/arch/arm/mach-s5pc100/common.c b/arch/arm/mach-s5pc100/common.c index ff71e2d467c6..621908658861 100644 --- a/arch/arm/mach-s5pc100/common.c +++ b/arch/arm/mach-s5pc100/common.c | |||
@@ -27,6 +27,7 @@ | |||
27 | 27 | ||
28 | #include <asm/irq.h> | 28 | #include <asm/irq.h> |
29 | #include <asm/proc-fns.h> | 29 | #include <asm/proc-fns.h> |
30 | #include <asm/system_misc.h> | ||
30 | #include <asm/mach/arch.h> | 31 | #include <asm/mach/arch.h> |
31 | #include <asm/mach/map.h> | 32 | #include <asm/mach/map.h> |
32 | #include <asm/mach/irq.h> | 33 | #include <asm/mach/irq.h> |
diff --git a/arch/arm/mach-sa1100/generic.c b/arch/arm/mach-sa1100/generic.c index 1d0f71b17a26..7c524b4e415d 100644 --- a/arch/arm/mach-sa1100/generic.c +++ b/arch/arm/mach-sa1100/generic.c | |||
@@ -23,10 +23,10 @@ | |||
23 | #include <video/sa1100fb.h> | 23 | #include <video/sa1100fb.h> |
24 | 24 | ||
25 | #include <asm/div64.h> | 25 | #include <asm/div64.h> |
26 | #include <asm/system.h> | ||
27 | #include <asm/mach/map.h> | 26 | #include <asm/mach/map.h> |
28 | #include <asm/mach/flash.h> | 27 | #include <asm/mach/flash.h> |
29 | #include <asm/irq.h> | 28 | #include <asm/irq.h> |
29 | #include <asm/system_misc.h> | ||
30 | 30 | ||
31 | #include <mach/hardware.h> | 31 | #include <mach/hardware.h> |
32 | #include <mach/irqs.h> | 32 | #include <mach/irqs.h> |
diff --git a/arch/arm/mach-sa1100/leds-assabet.c b/arch/arm/mach-sa1100/leds-assabet.c index 64e9b4b11b54..3699176bca94 100644 --- a/arch/arm/mach-sa1100/leds-assabet.c +++ b/arch/arm/mach-sa1100/leds-assabet.c | |||
@@ -13,7 +13,6 @@ | |||
13 | 13 | ||
14 | #include <mach/hardware.h> | 14 | #include <mach/hardware.h> |
15 | #include <asm/leds.h> | 15 | #include <asm/leds.h> |
16 | #include <asm/system.h> | ||
17 | #include <mach/assabet.h> | 16 | #include <mach/assabet.h> |
18 | 17 | ||
19 | #include "leds.h" | 18 | #include "leds.h" |
diff --git a/arch/arm/mach-sa1100/leds-badge4.c b/arch/arm/mach-sa1100/leds-badge4.c index cf1e38458b81..f99fac3eedb6 100644 --- a/arch/arm/mach-sa1100/leds-badge4.c +++ b/arch/arm/mach-sa1100/leds-badge4.c | |||
@@ -14,7 +14,6 @@ | |||
14 | 14 | ||
15 | #include <mach/hardware.h> | 15 | #include <mach/hardware.h> |
16 | #include <asm/leds.h> | 16 | #include <asm/leds.h> |
17 | #include <asm/system.h> | ||
18 | 17 | ||
19 | #include "leds.h" | 18 | #include "leds.h" |
20 | 19 | ||
diff --git a/arch/arm/mach-sa1100/leds-cerf.c b/arch/arm/mach-sa1100/leds-cerf.c index 259b48e0be89..040540fb7d8a 100644 --- a/arch/arm/mach-sa1100/leds-cerf.c +++ b/arch/arm/mach-sa1100/leds-cerf.c | |||
@@ -7,7 +7,6 @@ | |||
7 | 7 | ||
8 | #include <mach/hardware.h> | 8 | #include <mach/hardware.h> |
9 | #include <asm/leds.h> | 9 | #include <asm/leds.h> |
10 | #include <asm/system.h> | ||
11 | 10 | ||
12 | #include "leds.h" | 11 | #include "leds.h" |
13 | 12 | ||
diff --git a/arch/arm/mach-sa1100/leds-hackkit.c b/arch/arm/mach-sa1100/leds-hackkit.c index 2bce137462e4..6a2352436e62 100644 --- a/arch/arm/mach-sa1100/leds-hackkit.c +++ b/arch/arm/mach-sa1100/leds-hackkit.c | |||
@@ -13,7 +13,6 @@ | |||
13 | 13 | ||
14 | #include <mach/hardware.h> | 14 | #include <mach/hardware.h> |
15 | #include <asm/leds.h> | 15 | #include <asm/leds.h> |
16 | #include <asm/system.h> | ||
17 | 16 | ||
18 | #include "leds.h" | 17 | #include "leds.h" |
19 | 18 | ||
diff --git a/arch/arm/mach-sa1100/leds-lart.c b/arch/arm/mach-sa1100/leds-lart.c index 0505a1fdcdb2..a51830c60e53 100644 --- a/arch/arm/mach-sa1100/leds-lart.c +++ b/arch/arm/mach-sa1100/leds-lart.c | |||
@@ -13,7 +13,6 @@ | |||
13 | 13 | ||
14 | #include <mach/hardware.h> | 14 | #include <mach/hardware.h> |
15 | #include <asm/leds.h> | 15 | #include <asm/leds.h> |
16 | #include <asm/system.h> | ||
17 | 16 | ||
18 | #include "leds.h" | 17 | #include "leds.h" |
19 | 18 | ||
diff --git a/arch/arm/mach-sa1100/pm.c b/arch/arm/mach-sa1100/pm.c index bf85b8b259d5..2fa499ec6afe 100644 --- a/arch/arm/mach-sa1100/pm.c +++ b/arch/arm/mach-sa1100/pm.c | |||
@@ -30,7 +30,6 @@ | |||
30 | #include <mach/hardware.h> | 30 | #include <mach/hardware.h> |
31 | #include <asm/memory.h> | 31 | #include <asm/memory.h> |
32 | #include <asm/suspend.h> | 32 | #include <asm/suspend.h> |
33 | #include <asm/system.h> | ||
34 | #include <asm/mach/time.h> | 33 | #include <asm/mach/time.h> |
35 | 34 | ||
36 | extern int sa1100_finish_suspend(unsigned long); | 35 | extern int sa1100_finish_suspend(unsigned long); |
diff --git a/arch/arm/mach-shark/leds.c b/arch/arm/mach-shark/leds.c index ccd49189bbd0..25609076921f 100644 --- a/arch/arm/mach-shark/leds.c +++ b/arch/arm/mach-shark/leds.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include <linux/io.h> | 23 | #include <linux/io.h> |
24 | 24 | ||
25 | #include <asm/leds.h> | 25 | #include <asm/leds.h> |
26 | #include <asm/system.h> | ||
27 | 26 | ||
28 | #define LED_STATE_ENABLED 1 | 27 | #define LED_STATE_ENABLED 1 |
29 | #define LED_STATE_CLAIMED 2 | 28 | #define LED_STATE_CLAIMED 2 |
diff --git a/arch/arm/mach-shmobile/cpuidle.c b/arch/arm/mach-shmobile/cpuidle.c index 1b2334277e85..21b09b6455e4 100644 --- a/arch/arm/mach-shmobile/cpuidle.c +++ b/arch/arm/mach-shmobile/cpuidle.c | |||
@@ -13,7 +13,6 @@ | |||
13 | #include <linux/suspend.h> | 13 | #include <linux/suspend.h> |
14 | #include <linux/module.h> | 14 | #include <linux/module.h> |
15 | #include <linux/err.h> | 15 | #include <linux/err.h> |
16 | #include <asm/system.h> | ||
17 | #include <asm/io.h> | 16 | #include <asm/io.h> |
18 | 17 | ||
19 | static void shmobile_enter_wfi(void) | 18 | static void shmobile_enter_wfi(void) |
diff --git a/arch/arm/mach-shmobile/include/mach/system.h b/arch/arm/mach-shmobile/include/mach/system.h index 3bbcb3fa0775..540eaff08f34 100644 --- a/arch/arm/mach-shmobile/include/mach/system.h +++ b/arch/arm/mach-shmobile/include/mach/system.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef __ASM_ARCH_SYSTEM_H | 1 | #ifndef __ASM_ARCH_SYSTEM_H |
2 | #define __ASM_ARCH_SYSTEM_H | 2 | #define __ASM_ARCH_SYSTEM_H |
3 | 3 | ||
4 | #include <asm/system_misc.h> | ||
5 | |||
4 | static inline void arch_reset(char mode, const char *cmd) | 6 | static inline void arch_reset(char mode, const char *cmd) |
5 | { | 7 | { |
6 | soft_restart(0); | 8 | soft_restart(0); |
diff --git a/arch/arm/mach-shmobile/pm-r8a7779.c b/arch/arm/mach-shmobile/pm-r8a7779.c index c38ba7b43ef8..a18a4ae16d2b 100644 --- a/arch/arm/mach-shmobile/pm-r8a7779.c +++ b/arch/arm/mach-shmobile/pm-r8a7779.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <linux/irq.h> | 18 | #include <linux/irq.h> |
19 | #include <linux/interrupt.h> | 19 | #include <linux/interrupt.h> |
20 | #include <linux/console.h> | 20 | #include <linux/console.h> |
21 | #include <asm/system.h> | ||
22 | #include <asm/io.h> | 21 | #include <asm/io.h> |
23 | #include <mach/common.h> | 22 | #include <mach/common.h> |
24 | #include <mach/r8a7779.h> | 23 | #include <mach/r8a7779.h> |
diff --git a/arch/arm/mach-shmobile/pm-sh7372.c b/arch/arm/mach-shmobile/pm-sh7372.c index fcf8b1761aef..a3bdb12acde9 100644 --- a/arch/arm/mach-shmobile/pm-sh7372.c +++ b/arch/arm/mach-shmobile/pm-sh7372.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <linux/irq.h> | 21 | #include <linux/irq.h> |
22 | #include <linux/bitrev.h> | 22 | #include <linux/bitrev.h> |
23 | #include <linux/console.h> | 23 | #include <linux/console.h> |
24 | #include <asm/system.h> | ||
25 | #include <asm/io.h> | 24 | #include <asm/io.h> |
26 | #include <asm/tlbflush.h> | 25 | #include <asm/tlbflush.h> |
27 | #include <asm/suspend.h> | 26 | #include <asm/suspend.h> |
diff --git a/arch/arm/mach-shmobile/suspend.c b/arch/arm/mach-shmobile/suspend.c index c1febe13f709..4d1b86a49923 100644 --- a/arch/arm/mach-shmobile/suspend.c +++ b/arch/arm/mach-shmobile/suspend.c | |||
@@ -12,8 +12,8 @@ | |||
12 | #include <linux/suspend.h> | 12 | #include <linux/suspend.h> |
13 | #include <linux/module.h> | 13 | #include <linux/module.h> |
14 | #include <linux/err.h> | 14 | #include <linux/err.h> |
15 | #include <asm/system.h> | ||
16 | #include <asm/io.h> | 15 | #include <asm/io.h> |
16 | #include <asm/system_misc.h> | ||
17 | 17 | ||
18 | static int shmobile_suspend_default_enter(suspend_state_t suspend_state) | 18 | static int shmobile_suspend_default_enter(suspend_state_t suspend_state) |
19 | { | 19 | { |
diff --git a/arch/arm/mach-tegra/cpu-tegra.c b/arch/arm/mach-tegra/cpu-tegra.c index bb5ce39b733b..7a065f0cf633 100644 --- a/arch/arm/mach-tegra/cpu-tegra.c +++ b/arch/arm/mach-tegra/cpu-tegra.c | |||
@@ -30,7 +30,6 @@ | |||
30 | #include <linux/io.h> | 30 | #include <linux/io.h> |
31 | #include <linux/suspend.h> | 31 | #include <linux/suspend.h> |
32 | 32 | ||
33 | #include <asm/system.h> | ||
34 | 33 | ||
35 | #include <mach/clk.h> | 34 | #include <mach/clk.h> |
36 | 35 | ||
diff --git a/arch/arm/mach-tegra/hotplug.c b/arch/arm/mach-tegra/hotplug.c index f3294040d357..d8dc9ddd6d18 100644 --- a/arch/arm/mach-tegra/hotplug.c +++ b/arch/arm/mach-tegra/hotplug.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <linux/smp.h> | 13 | #include <linux/smp.h> |
14 | 14 | ||
15 | #include <asm/cacheflush.h> | 15 | #include <asm/cacheflush.h> |
16 | #include <asm/cp15.h> | ||
16 | 17 | ||
17 | static inline void cpu_enter_lowpower(void) | 18 | static inline void cpu_enter_lowpower(void) |
18 | { | 19 | { |
diff --git a/arch/arm/mach-versatile/core.c b/arch/arm/mach-versatile/core.c index 0968772aedbe..6bbd74e950ab 100644 --- a/arch/arm/mach-versatile/core.c +++ b/arch/arm/mach-versatile/core.c | |||
@@ -36,7 +36,6 @@ | |||
36 | #include <linux/clkdev.h> | 36 | #include <linux/clkdev.h> |
37 | #include <linux/mtd/physmap.h> | 37 | #include <linux/mtd/physmap.h> |
38 | 38 | ||
39 | #include <asm/system.h> | ||
40 | #include <asm/irq.h> | 39 | #include <asm/irq.h> |
41 | #include <asm/leds.h> | 40 | #include <asm/leds.h> |
42 | #include <asm/hardware/arm_timer.h> | 41 | #include <asm/hardware/arm_timer.h> |
diff --git a/arch/arm/mach-versatile/pci.c b/arch/arm/mach-versatile/pci.c index 51733b022d04..a6e23f464528 100644 --- a/arch/arm/mach-versatile/pci.c +++ b/arch/arm/mach-versatile/pci.c | |||
@@ -24,7 +24,6 @@ | |||
24 | 24 | ||
25 | #include <mach/hardware.h> | 25 | #include <mach/hardware.h> |
26 | #include <asm/irq.h> | 26 | #include <asm/irq.h> |
27 | #include <asm/system.h> | ||
28 | #include <asm/mach/pci.h> | 27 | #include <asm/mach/pci.h> |
29 | 28 | ||
30 | /* | 29 | /* |
diff --git a/arch/arm/mach-vexpress/hotplug.c b/arch/arm/mach-vexpress/hotplug.c index 3034a4dab4a1..c504a72b94d6 100644 --- a/arch/arm/mach-vexpress/hotplug.c +++ b/arch/arm/mach-vexpress/hotplug.c | |||
@@ -14,7 +14,7 @@ | |||
14 | 14 | ||
15 | #include <asm/cacheflush.h> | 15 | #include <asm/cacheflush.h> |
16 | #include <asm/smp_plat.h> | 16 | #include <asm/smp_plat.h> |
17 | #include <asm/system.h> | 17 | #include <asm/cp15.h> |
18 | 18 | ||
19 | extern volatile int pen_release; | 19 | extern volatile int pen_release; |
20 | 20 | ||
diff --git a/arch/arm/mach-w90x900/cpu.c b/arch/arm/mach-w90x900/cpu.c index 9a0661992909..9e4dd8b63c4a 100644 --- a/arch/arm/mach-w90x900/cpu.c +++ b/arch/arm/mach-w90x900/cpu.c | |||
@@ -28,6 +28,7 @@ | |||
28 | #include <asm/mach/map.h> | 28 | #include <asm/mach/map.h> |
29 | #include <asm/mach/irq.h> | 29 | #include <asm/mach/irq.h> |
30 | #include <asm/irq.h> | 30 | #include <asm/irq.h> |
31 | #include <asm/system_misc.h> | ||
31 | 32 | ||
32 | #include <mach/hardware.h> | 33 | #include <mach/hardware.h> |
33 | #include <mach/regs-serial.h> | 34 | #include <mach/regs-serial.h> |
diff --git a/arch/arm/mm/alignment.c b/arch/arm/mm/alignment.c index caf14dc059e5..9107231aacc5 100644 --- a/arch/arm/mm/alignment.c +++ b/arch/arm/mm/alignment.c | |||
@@ -22,7 +22,8 @@ | |||
22 | #include <linux/sched.h> | 22 | #include <linux/sched.h> |
23 | #include <linux/uaccess.h> | 23 | #include <linux/uaccess.h> |
24 | 24 | ||
25 | #include <asm/system.h> | 25 | #include <asm/cp15.h> |
26 | #include <asm/system_info.h> | ||
26 | #include <asm/unaligned.h> | 27 | #include <asm/unaligned.h> |
27 | 28 | ||
28 | #include "fault.h" | 29 | #include "fault.h" |
diff --git a/arch/arm/mm/cache-feroceon-l2.c b/arch/arm/mm/cache-feroceon-l2.c index e0b0e7a4ec68..dd3d59122cc3 100644 --- a/arch/arm/mm/cache-feroceon-l2.c +++ b/arch/arm/mm/cache-feroceon-l2.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
16 | #include <linux/highmem.h> | 16 | #include <linux/highmem.h> |
17 | #include <asm/cacheflush.h> | 17 | #include <asm/cacheflush.h> |
18 | #include <asm/cp15.h> | ||
18 | #include <plat/cache-feroceon-l2.h> | 19 | #include <plat/cache-feroceon-l2.h> |
19 | 20 | ||
20 | /* | 21 | /* |
diff --git a/arch/arm/mm/cache-tauros2.c b/arch/arm/mm/cache-tauros2.c index 50868651890f..1fbca05fe906 100644 --- a/arch/arm/mm/cache-tauros2.c +++ b/arch/arm/mm/cache-tauros2.c | |||
@@ -16,6 +16,7 @@ | |||
16 | 16 | ||
17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
18 | #include <asm/cacheflush.h> | 18 | #include <asm/cacheflush.h> |
19 | #include <asm/cp15.h> | ||
19 | #include <asm/hardware/cache-tauros2.h> | 20 | #include <asm/hardware/cache-tauros2.h> |
20 | 21 | ||
21 | 22 | ||
diff --git a/arch/arm/mm/cache-xsc3l2.c b/arch/arm/mm/cache-xsc3l2.c index 5a32020471e3..6c3edeb66e74 100644 --- a/arch/arm/mm/cache-xsc3l2.c +++ b/arch/arm/mm/cache-xsc3l2.c | |||
@@ -18,7 +18,7 @@ | |||
18 | */ | 18 | */ |
19 | #include <linux/init.h> | 19 | #include <linux/init.h> |
20 | #include <linux/highmem.h> | 20 | #include <linux/highmem.h> |
21 | #include <asm/system.h> | 21 | #include <asm/cp15.h> |
22 | #include <asm/cputype.h> | 22 | #include <asm/cputype.h> |
23 | #include <asm/cacheflush.h> | 23 | #include <asm/cacheflush.h> |
24 | 24 | ||
diff --git a/arch/arm/mm/fault.c b/arch/arm/mm/fault.c index bb7eac381a8e..5bdff5c3e6cb 100644 --- a/arch/arm/mm/fault.c +++ b/arch/arm/mm/fault.c | |||
@@ -21,8 +21,9 @@ | |||
21 | #include <linux/perf_event.h> | 21 | #include <linux/perf_event.h> |
22 | 22 | ||
23 | #include <asm/exception.h> | 23 | #include <asm/exception.h> |
24 | #include <asm/system.h> | ||
25 | #include <asm/pgtable.h> | 24 | #include <asm/pgtable.h> |
25 | #include <asm/system_misc.h> | ||
26 | #include <asm/system_info.h> | ||
26 | #include <asm/tlbflush.h> | 27 | #include <asm/tlbflush.h> |
27 | 28 | ||
28 | #include "fault.h" | 29 | #include "fault.h" |
diff --git a/arch/arm/mm/flush.c b/arch/arm/mm/flush.c index 1a8d4aa821be..062d61a1f87d 100644 --- a/arch/arm/mm/flush.c +++ b/arch/arm/mm/flush.c | |||
@@ -16,7 +16,6 @@ | |||
16 | #include <asm/cachetype.h> | 16 | #include <asm/cachetype.h> |
17 | #include <asm/highmem.h> | 17 | #include <asm/highmem.h> |
18 | #include <asm/smp_plat.h> | 18 | #include <asm/smp_plat.h> |
19 | #include <asm/system.h> | ||
20 | #include <asm/tlbflush.h> | 19 | #include <asm/tlbflush.h> |
21 | 20 | ||
22 | #include "mm.h" | 21 | #include "mm.h" |
diff --git a/arch/arm/mm/idmap.c b/arch/arm/mm/idmap.c index feacf4c76712..ab88ed4f8e08 100644 --- a/arch/arm/mm/idmap.c +++ b/arch/arm/mm/idmap.c | |||
@@ -5,6 +5,7 @@ | |||
5 | #include <asm/pgalloc.h> | 5 | #include <asm/pgalloc.h> |
6 | #include <asm/pgtable.h> | 6 | #include <asm/pgtable.h> |
7 | #include <asm/sections.h> | 7 | #include <asm/sections.h> |
8 | #include <asm/system_info.h> | ||
8 | 9 | ||
9 | pgd_t *idmap_pgd; | 10 | pgd_t *idmap_pgd; |
10 | 11 | ||
diff --git a/arch/arm/mm/ioremap.c b/arch/arm/mm/ioremap.c index 80632e8d7538..6780b49f2c69 100644 --- a/arch/arm/mm/ioremap.c +++ b/arch/arm/mm/ioremap.c | |||
@@ -26,12 +26,14 @@ | |||
26 | #include <linux/vmalloc.h> | 26 | #include <linux/vmalloc.h> |
27 | #include <linux/io.h> | 27 | #include <linux/io.h> |
28 | 28 | ||
29 | #include <asm/cp15.h> | ||
29 | #include <asm/cputype.h> | 30 | #include <asm/cputype.h> |
30 | #include <asm/cacheflush.h> | 31 | #include <asm/cacheflush.h> |
31 | #include <asm/mmu_context.h> | 32 | #include <asm/mmu_context.h> |
32 | #include <asm/pgalloc.h> | 33 | #include <asm/pgalloc.h> |
33 | #include <asm/tlbflush.h> | 34 | #include <asm/tlbflush.h> |
34 | #include <asm/sizes.h> | 35 | #include <asm/sizes.h> |
36 | #include <asm/system_info.h> | ||
35 | 37 | ||
36 | #include <asm/mach/map.h> | 38 | #include <asm/mach/map.h> |
37 | #include "mm.h" | 39 | #include "mm.h" |
diff --git a/arch/arm/mm/mmu.c b/arch/arm/mm/mmu.c index 94c5a0c94f5e..cd439c1dd506 100644 --- a/arch/arm/mm/mmu.c +++ b/arch/arm/mm/mmu.c | |||
@@ -17,6 +17,7 @@ | |||
17 | #include <linux/fs.h> | 17 | #include <linux/fs.h> |
18 | #include <linux/vmalloc.h> | 18 | #include <linux/vmalloc.h> |
19 | 19 | ||
20 | #include <asm/cp15.h> | ||
20 | #include <asm/cputype.h> | 21 | #include <asm/cputype.h> |
21 | #include <asm/sections.h> | 22 | #include <asm/sections.h> |
22 | #include <asm/cachetype.h> | 23 | #include <asm/cachetype.h> |
@@ -25,6 +26,7 @@ | |||
25 | #include <asm/smp_plat.h> | 26 | #include <asm/smp_plat.h> |
26 | #include <asm/tlb.h> | 27 | #include <asm/tlb.h> |
27 | #include <asm/highmem.h> | 28 | #include <asm/highmem.h> |
29 | #include <asm/system_info.h> | ||
28 | #include <asm/traps.h> | 30 | #include <asm/traps.h> |
29 | 31 | ||
30 | #include <asm/mach/arch.h> | 32 | #include <asm/mach/arch.h> |
diff --git a/arch/arm/mm/pgd.c b/arch/arm/mm/pgd.c index a3e78ccabd65..0acb089d0f70 100644 --- a/arch/arm/mm/pgd.c +++ b/arch/arm/mm/pgd.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <linux/highmem.h> | 12 | #include <linux/highmem.h> |
13 | #include <linux/slab.h> | 13 | #include <linux/slab.h> |
14 | 14 | ||
15 | #include <asm/cp15.h> | ||
15 | #include <asm/pgalloc.h> | 16 | #include <asm/pgalloc.h> |
16 | #include <asm/page.h> | 17 | #include <asm/page.h> |
17 | #include <asm/tlbflush.h> | 18 | #include <asm/tlbflush.h> |
diff --git a/arch/arm/mm/proc-fa526.S b/arch/arm/mm/proc-fa526.S index 272558a133a3..d217e9795d74 100644 --- a/arch/arm/mm/proc-fa526.S +++ b/arch/arm/mm/proc-fa526.S | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <asm/pgtable.h> | 22 | #include <asm/pgtable.h> |
23 | #include <asm/page.h> | 23 | #include <asm/page.h> |
24 | #include <asm/ptrace.h> | 24 | #include <asm/ptrace.h> |
25 | #include <asm/system.h> | ||
26 | 25 | ||
27 | #include "proc-macros.S" | 26 | #include "proc-macros.S" |
28 | 27 | ||
diff --git a/arch/arm/nwfpe/fpa11.c b/arch/arm/nwfpe/fpa11.c index cc60acde84d9..2782ebcc2ed3 100644 --- a/arch/arm/nwfpe/fpa11.c +++ b/arch/arm/nwfpe/fpa11.c | |||
@@ -28,7 +28,6 @@ | |||
28 | 28 | ||
29 | #include <linux/compiler.h> | 29 | #include <linux/compiler.h> |
30 | #include <linux/string.h> | 30 | #include <linux/string.h> |
31 | #include <asm/system.h> | ||
32 | 31 | ||
33 | /* Reset the FPA11 chip. Called to initialize and reset the emulator. */ | 32 | /* Reset the FPA11 chip. Called to initialize and reset the emulator. */ |
34 | static void resetFPA11(void) | 33 | static void resetFPA11(void) |
diff --git a/arch/arm/plat-iop/i2c.c b/arch/arm/plat-iop/i2c.c index 4efe392859ee..88215ad031a2 100644 --- a/arch/arm/plat-iop/i2c.c +++ b/arch/arm/plat-iop/i2c.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include <asm/page.h> | 23 | #include <asm/page.h> |
24 | #include <asm/mach/map.h> | 24 | #include <asm/mach/map.h> |
25 | #include <asm/setup.h> | 25 | #include <asm/setup.h> |
26 | #include <asm/system.h> | ||
27 | #include <asm/memory.h> | 26 | #include <asm/memory.h> |
28 | #include <mach/hardware.h> | 27 | #include <mach/hardware.h> |
29 | #include <asm/hardware/iop3xx.h> | 28 | #include <asm/hardware/iop3xx.h> |
diff --git a/arch/arm/plat-iop/pci.c b/arch/arm/plat-iop/pci.c index 72768356447a..0da42058a20f 100644 --- a/arch/arm/plat-iop/pci.c +++ b/arch/arm/plat-iop/pci.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include <linux/io.h> | 20 | #include <linux/io.h> |
21 | #include <asm/irq.h> | 21 | #include <asm/irq.h> |
22 | #include <asm/signal.h> | 22 | #include <asm/signal.h> |
23 | #include <asm/system.h> | ||
24 | #include <mach/hardware.h> | 23 | #include <mach/hardware.h> |
25 | #include <asm/mach/pci.h> | 24 | #include <asm/mach/pci.h> |
26 | #include <asm/hardware/iop3xx.h> | 25 | #include <asm/hardware/iop3xx.h> |
diff --git a/arch/arm/plat-iop/restart.c b/arch/arm/plat-iop/restart.c index 6a85a0c502e6..33fa699a4d28 100644 --- a/arch/arm/plat-iop/restart.c +++ b/arch/arm/plat-iop/restart.c | |||
@@ -8,6 +8,7 @@ | |||
8 | * published by the Free Software Foundation. | 8 | * published by the Free Software Foundation. |
9 | */ | 9 | */ |
10 | #include <asm/hardware/iop3xx.h> | 10 | #include <asm/hardware/iop3xx.h> |
11 | #include <asm/system_misc.h> | ||
11 | #include <mach/hardware.h> | 12 | #include <mach/hardware.h> |
12 | 13 | ||
13 | void iop3xx_restart(char mode, const char *cmd) | 14 | void iop3xx_restart(char mode, const char *cmd) |
diff --git a/arch/arm/plat-mxc/system.c b/arch/arm/plat-mxc/system.c index f30dcacbbd0a..1996c3e3b8fe 100644 --- a/arch/arm/plat-mxc/system.c +++ b/arch/arm/plat-mxc/system.c | |||
@@ -25,8 +25,8 @@ | |||
25 | 25 | ||
26 | #include <mach/hardware.h> | 26 | #include <mach/hardware.h> |
27 | #include <mach/common.h> | 27 | #include <mach/common.h> |
28 | #include <asm/system_misc.h> | ||
28 | #include <asm/proc-fns.h> | 29 | #include <asm/proc-fns.h> |
29 | #include <asm/system.h> | ||
30 | #include <asm/mach-types.h> | 30 | #include <asm/mach-types.h> |
31 | 31 | ||
32 | void __iomem *(*imx_ioremap)(unsigned long, size_t, unsigned int) = NULL; | 32 | void __iomem *(*imx_ioremap)(unsigned long, size_t, unsigned int) = NULL; |
diff --git a/arch/arm/plat-omap/debug-leds.c b/arch/arm/plat-omap/debug-leds.c index 61a1ec2a6af4..39407cbe34c6 100644 --- a/arch/arm/plat-omap/debug-leds.c +++ b/arch/arm/plat-omap/debug-leds.c | |||
@@ -15,7 +15,6 @@ | |||
15 | 15 | ||
16 | #include <mach/hardware.h> | 16 | #include <mach/hardware.h> |
17 | #include <asm/leds.h> | 17 | #include <asm/leds.h> |
18 | #include <asm/system.h> | ||
19 | #include <asm/mach-types.h> | 18 | #include <asm/mach-types.h> |
20 | 19 | ||
21 | #include <plat/fpga.h> | 20 | #include <plat/fpga.h> |
diff --git a/arch/arm/plat-omap/dma.c b/arch/arm/plat-omap/dma.c index 74300ae29b71..ecdb3da0dea9 100644 --- a/arch/arm/plat-omap/dma.c +++ b/arch/arm/plat-omap/dma.c | |||
@@ -36,7 +36,6 @@ | |||
36 | #include <linux/slab.h> | 36 | #include <linux/slab.h> |
37 | #include <linux/delay.h> | 37 | #include <linux/delay.h> |
38 | 38 | ||
39 | #include <asm/system.h> | ||
40 | #include <mach/hardware.h> | 39 | #include <mach/hardware.h> |
41 | #include <plat/dma.h> | 40 | #include <plat/dma.h> |
42 | 41 | ||
diff --git a/arch/arm/plat-pxa/dma.c b/arch/arm/plat-pxa/dma.c index 2d3c19d7c7b1..79ef102e3b2b 100644 --- a/arch/arm/plat-pxa/dma.c +++ b/arch/arm/plat-pxa/dma.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include <linux/errno.h> | 20 | #include <linux/errno.h> |
21 | #include <linux/dma-mapping.h> | 21 | #include <linux/dma-mapping.h> |
22 | 22 | ||
23 | #include <asm/system.h> | ||
24 | #include <asm/irq.h> | 23 | #include <asm/irq.h> |
25 | #include <asm/memory.h> | 24 | #include <asm/memory.h> |
26 | #include <mach/hardware.h> | 25 | #include <mach/hardware.h> |
diff --git a/arch/arm/plat-s3c24xx/cpu.c b/arch/arm/plat-s3c24xx/cpu.c index 32a09931350c..0db73ae646bc 100644 --- a/arch/arm/plat-s3c24xx/cpu.c +++ b/arch/arm/plat-s3c24xx/cpu.c | |||
@@ -35,6 +35,7 @@ | |||
35 | #include <mach/regs-clock.h> | 35 | #include <mach/regs-clock.h> |
36 | #include <asm/irq.h> | 36 | #include <asm/irq.h> |
37 | #include <asm/cacheflush.h> | 37 | #include <asm/cacheflush.h> |
38 | #include <asm/system_info.h> | ||
38 | 39 | ||
39 | #include <asm/mach/arch.h> | 40 | #include <asm/mach/arch.h> |
40 | #include <asm/mach/map.h> | 41 | #include <asm/mach/map.h> |
diff --git a/arch/arm/plat-s3c24xx/dma.c b/arch/arm/plat-s3c24xx/dma.c index 2bab4c99a234..28f898f75380 100644 --- a/arch/arm/plat-s3c24xx/dma.c +++ b/arch/arm/plat-s3c24xx/dma.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <linux/errno.h> | 27 | #include <linux/errno.h> |
28 | #include <linux/io.h> | 28 | #include <linux/io.h> |
29 | 29 | ||
30 | #include <asm/system.h> | ||
31 | #include <asm/irq.h> | 30 | #include <asm/irq.h> |
32 | #include <mach/hardware.h> | 31 | #include <mach/hardware.h> |
33 | #include <mach/dma.h> | 32 | #include <mach/dma.h> |
diff --git a/arch/arm/plat-samsung/cpu.c b/arch/arm/plat-samsung/cpu.c index 81c06d44c11e..46b426e8aff5 100644 --- a/arch/arm/plat-samsung/cpu.c +++ b/arch/arm/plat-samsung/cpu.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
16 | #include <linux/io.h> | 16 | #include <linux/io.h> |
17 | 17 | ||
18 | #include <asm/system.h> | ||
19 | 18 | ||
20 | #include <mach/map.h> | 19 | #include <mach/map.h> |
21 | #include <plat/cpu.h> | 20 | #include <plat/cpu.h> |
diff --git a/arch/arm/plat-samsung/time.c b/arch/arm/plat-samsung/time.c index e3bb806bbafe..4dcb11c3d894 100644 --- a/arch/arm/plat-samsung/time.c +++ b/arch/arm/plat-samsung/time.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <linux/io.h> | 28 | #include <linux/io.h> |
29 | #include <linux/platform_device.h> | 29 | #include <linux/platform_device.h> |
30 | 30 | ||
31 | #include <asm/system.h> | ||
32 | #include <asm/leds.h> | 31 | #include <asm/leds.h> |
33 | #include <asm/mach-types.h> | 32 | #include <asm/mach-types.h> |
34 | 33 | ||
diff --git a/arch/arm/plat-spear/restart.c b/arch/arm/plat-spear/restart.c index 2b4e3d82957c..16f203e78d89 100644 --- a/arch/arm/plat-spear/restart.c +++ b/arch/arm/plat-spear/restart.c | |||
@@ -11,6 +11,7 @@ | |||
11 | * warranty of any kind, whether express or implied. | 11 | * warranty of any kind, whether express or implied. |
12 | */ | 12 | */ |
13 | #include <linux/io.h> | 13 | #include <linux/io.h> |
14 | #include <asm/system_misc.h> | ||
14 | #include <asm/hardware/sp810.h> | 15 | #include <asm/hardware/sp810.h> |
15 | #include <mach/hardware.h> | 16 | #include <mach/hardware.h> |
16 | #include <mach/generic.h> | 17 | #include <mach/generic.h> |
diff --git a/arch/arm/vfp/vfpmodule.c b/arch/arm/vfp/vfpmodule.c index 8f3ccddbdafd..858748eaa144 100644 --- a/arch/arm/vfp/vfpmodule.c +++ b/arch/arm/vfp/vfpmodule.c | |||
@@ -18,7 +18,9 @@ | |||
18 | #include <linux/smp.h> | 18 | #include <linux/smp.h> |
19 | #include <linux/init.h> | 19 | #include <linux/init.h> |
20 | 20 | ||
21 | #include <asm/cp15.h> | ||
21 | #include <asm/cputype.h> | 22 | #include <asm/cputype.h> |
23 | #include <asm/system_info.h> | ||
22 | #include <asm/thread_notify.h> | 24 | #include <asm/thread_notify.h> |
23 | #include <asm/vfp.h> | 25 | #include <asm/vfp.h> |
24 | 26 | ||
diff --git a/arch/avr32/include/asm/atomic.h b/arch/avr32/include/asm/atomic.h index e0ac2631c87e..61407279208a 100644 --- a/arch/avr32/include/asm/atomic.h +++ b/arch/avr32/include/asm/atomic.h | |||
@@ -15,7 +15,7 @@ | |||
15 | #define __ASM_AVR32_ATOMIC_H | 15 | #define __ASM_AVR32_ATOMIC_H |
16 | 16 | ||
17 | #include <linux/types.h> | 17 | #include <linux/types.h> |
18 | #include <asm/system.h> | 18 | #include <asm/cmpxchg.h> |
19 | 19 | ||
20 | #define ATOMIC_INIT(i) { (i) } | 20 | #define ATOMIC_INIT(i) { (i) } |
21 | 21 | ||
diff --git a/arch/avr32/include/asm/barrier.h b/arch/avr32/include/asm/barrier.h new file mode 100644 index 000000000000..808001c9cf8c --- /dev/null +++ b/arch/avr32/include/asm/barrier.h | |||
@@ -0,0 +1,27 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2004-2006 Atmel Corporation | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License version 2 as | ||
6 | * published by the Free Software Foundation. | ||
7 | */ | ||
8 | #ifndef __ASM_AVR32_BARRIER_H | ||
9 | #define __ASM_AVR32_BARRIER_H | ||
10 | |||
11 | #define mb() asm volatile("" : : : "memory") | ||
12 | #define rmb() mb() | ||
13 | #define wmb() asm volatile("sync 0" : : : "memory") | ||
14 | #define read_barrier_depends() do { } while(0) | ||
15 | #define set_mb(var, value) do { var = value; mb(); } while(0) | ||
16 | |||
17 | #ifdef CONFIG_SMP | ||
18 | # error "The AVR32 port does not support SMP" | ||
19 | #else | ||
20 | # define smp_mb() barrier() | ||
21 | # define smp_rmb() barrier() | ||
22 | # define smp_wmb() barrier() | ||
23 | # define smp_read_barrier_depends() do { } while(0) | ||
24 | #endif | ||
25 | |||
26 | |||
27 | #endif /* __ASM_AVR32_BARRIER_H */ | ||
diff --git a/arch/avr32/include/asm/bitops.h b/arch/avr32/include/asm/bitops.h index b70c19bab63a..ebe7ad3f490b 100644 --- a/arch/avr32/include/asm/bitops.h +++ b/arch/avr32/include/asm/bitops.h | |||
@@ -13,7 +13,6 @@ | |||
13 | #endif | 13 | #endif |
14 | 14 | ||
15 | #include <asm/byteorder.h> | 15 | #include <asm/byteorder.h> |
16 | #include <asm/system.h> | ||
17 | 16 | ||
18 | /* | 17 | /* |
19 | * clear_bit() doesn't provide any barrier for the compiler | 18 | * clear_bit() doesn't provide any barrier for the compiler |
diff --git a/arch/avr32/include/asm/bug.h b/arch/avr32/include/asm/bug.h index 2aa373cc61b5..85a92d099adb 100644 --- a/arch/avr32/include/asm/bug.h +++ b/arch/avr32/include/asm/bug.h | |||
@@ -70,4 +70,9 @@ | |||
70 | 70 | ||
71 | #include <asm-generic/bug.h> | 71 | #include <asm-generic/bug.h> |
72 | 72 | ||
73 | struct pt_regs; | ||
74 | void die(const char *str, struct pt_regs *regs, long err); | ||
75 | void _exception(long signr, struct pt_regs *regs, int code, | ||
76 | unsigned long addr); | ||
77 | |||
73 | #endif /* __ASM_AVR32_BUG_H */ | 78 | #endif /* __ASM_AVR32_BUG_H */ |
diff --git a/arch/avr32/include/asm/system.h b/arch/avr32/include/asm/cmpxchg.h index 62d9ded01635..962a6aeab787 100644 --- a/arch/avr32/include/asm/system.h +++ b/arch/avr32/include/asm/cmpxchg.h | |||
@@ -1,76 +1,22 @@ | |||
1 | /* | 1 | /* |
2 | * Atomic operations that C can't guarantee us. Useful for | ||
3 | * resource counting etc. | ||
4 | * | ||
5 | * But use these as seldom as possible since they are slower than | ||
6 | * regular operations. | ||
7 | * | ||
2 | * Copyright (C) 2004-2006 Atmel Corporation | 8 | * Copyright (C) 2004-2006 Atmel Corporation |
3 | * | 9 | * |
4 | * This program is free software; you can redistribute it and/or modify | 10 | * This program is free software; you can redistribute it and/or modify |
5 | * it under the terms of the GNU General Public License version 2 as | 11 | * it under the terms of the GNU General Public License version 2 as |
6 | * published by the Free Software Foundation. | 12 | * published by the Free Software Foundation. |
7 | */ | 13 | */ |
8 | #ifndef __ASM_AVR32_SYSTEM_H | 14 | #ifndef __ASM_AVR32_CMPXCHG_H |
9 | #define __ASM_AVR32_SYSTEM_H | 15 | #define __ASM_AVR32_CMPXCHG_H |
10 | |||
11 | #include <linux/compiler.h> | ||
12 | #include <linux/linkage.h> | ||
13 | #include <linux/types.h> | ||
14 | |||
15 | #include <asm/ptrace.h> | ||
16 | #include <asm/sysreg.h> | ||
17 | 16 | ||
18 | #define xchg(ptr,x) \ | 17 | #define xchg(ptr,x) \ |
19 | ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr)))) | 18 | ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr)))) |
20 | 19 | ||
21 | #define nop() asm volatile("nop") | ||
22 | |||
23 | #define mb() asm volatile("" : : : "memory") | ||
24 | #define rmb() mb() | ||
25 | #define wmb() asm volatile("sync 0" : : : "memory") | ||
26 | #define read_barrier_depends() do { } while(0) | ||
27 | #define set_mb(var, value) do { var = value; mb(); } while(0) | ||
28 | |||
29 | /* | ||
30 | * Help PathFinder and other Nexus-compliant debuggers keep track of | ||
31 | * the current PID by emitting an Ownership Trace Message each time we | ||
32 | * switch task. | ||
33 | */ | ||
34 | #ifdef CONFIG_OWNERSHIP_TRACE | ||
35 | #include <asm/ocd.h> | ||
36 | #define finish_arch_switch(prev) \ | ||
37 | do { \ | ||
38 | ocd_write(PID, prev->pid); \ | ||
39 | ocd_write(PID, current->pid); \ | ||
40 | } while(0) | ||
41 | #endif | ||
42 | |||
43 | /* | ||
44 | * switch_to(prev, next, last) should switch from task `prev' to task | ||
45 | * `next'. `prev' will never be the same as `next'. | ||
46 | * | ||
47 | * We just delegate everything to the __switch_to assembly function, | ||
48 | * which is implemented in arch/avr32/kernel/switch_to.S | ||
49 | * | ||
50 | * mb() tells GCC not to cache `current' across this call. | ||
51 | */ | ||
52 | struct cpu_context; | ||
53 | struct task_struct; | ||
54 | extern struct task_struct *__switch_to(struct task_struct *, | ||
55 | struct cpu_context *, | ||
56 | struct cpu_context *); | ||
57 | #define switch_to(prev, next, last) \ | ||
58 | do { \ | ||
59 | last = __switch_to(prev, &prev->thread.cpu_context + 1, \ | ||
60 | &next->thread.cpu_context); \ | ||
61 | } while (0) | ||
62 | |||
63 | #ifdef CONFIG_SMP | ||
64 | # error "The AVR32 port does not support SMP" | ||
65 | #else | ||
66 | # define smp_mb() barrier() | ||
67 | # define smp_rmb() barrier() | ||
68 | # define smp_wmb() barrier() | ||
69 | # define smp_read_barrier_depends() do { } while(0) | ||
70 | #endif | ||
71 | |||
72 | #include <linux/irqflags.h> | ||
73 | |||
74 | extern void __xchg_called_with_bad_pointer(void); | 20 | extern void __xchg_called_with_bad_pointer(void); |
75 | 21 | ||
76 | static inline unsigned long xchg_u32(u32 val, volatile u32 *m) | 22 | static inline unsigned long xchg_u32(u32 val, volatile u32 *m) |
@@ -168,11 +114,4 @@ static inline unsigned long __cmpxchg_local(volatile void *ptr, | |||
168 | 114 | ||
169 | #define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) | 115 | #define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) |
170 | 116 | ||
171 | struct pt_regs; | 117 | #endif /* __ASM_AVR32_CMPXCHG_H */ |
172 | void die(const char *str, struct pt_regs *regs, long err); | ||
173 | void _exception(long signr, struct pt_regs *regs, int code, | ||
174 | unsigned long addr); | ||
175 | |||
176 | #define arch_align_stack(x) (x) | ||
177 | |||
178 | #endif /* __ASM_AVR32_SYSTEM_H */ | ||
diff --git a/arch/avr32/include/asm/exec.h b/arch/avr32/include/asm/exec.h new file mode 100644 index 000000000000..f467be8bf823 --- /dev/null +++ b/arch/avr32/include/asm/exec.h | |||
@@ -0,0 +1,13 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2004-2006 Atmel Corporation | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License version 2 as | ||
6 | * published by the Free Software Foundation. | ||
7 | */ | ||
8 | #ifndef __ASM_AVR32_EXEC_H | ||
9 | #define __ASM_AVR32_EXEC_H | ||
10 | |||
11 | #define arch_align_stack(x) (x) | ||
12 | |||
13 | #endif /* __ASM_AVR32_EXEC_H */ | ||
diff --git a/arch/avr32/include/asm/special_insns.h b/arch/avr32/include/asm/special_insns.h new file mode 100644 index 000000000000..f922218dfaa5 --- /dev/null +++ b/arch/avr32/include/asm/special_insns.h | |||
@@ -0,0 +1,13 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2004-2006 Atmel Corporation | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License version 2 as | ||
6 | * published by the Free Software Foundation. | ||
7 | */ | ||
8 | #ifndef __ASM_AVR32_SPECIAL_INSNS_H | ||
9 | #define __ASM_AVR32_SPECIAL_INSNS_H | ||
10 | |||
11 | #define nop() asm volatile("nop") | ||
12 | |||
13 | #endif /* __ASM_AVR32_SPECIAL_INSNS_H */ | ||
diff --git a/arch/avr32/include/asm/switch_to.h b/arch/avr32/include/asm/switch_to.h new file mode 100644 index 000000000000..9a8e9d5208d4 --- /dev/null +++ b/arch/avr32/include/asm/switch_to.h | |||
@@ -0,0 +1,46 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2004-2006 Atmel Corporation | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or modify | ||
5 | * it under the terms of the GNU General Public License version 2 as | ||
6 | * published by the Free Software Foundation. | ||
7 | */ | ||
8 | #ifndef __ASM_AVR32_SWITCH_TO_H | ||
9 | #define __ASM_AVR32_SWITCH_TO_H | ||
10 | |||
11 | /* | ||
12 | * Help PathFinder and other Nexus-compliant debuggers keep track of | ||
13 | * the current PID by emitting an Ownership Trace Message each time we | ||
14 | * switch task. | ||
15 | */ | ||
16 | #ifdef CONFIG_OWNERSHIP_TRACE | ||
17 | #include <asm/ocd.h> | ||
18 | #define finish_arch_switch(prev) \ | ||
19 | do { \ | ||
20 | ocd_write(PID, prev->pid); \ | ||
21 | ocd_write(PID, current->pid); \ | ||
22 | } while(0) | ||
23 | #endif | ||
24 | |||
25 | /* | ||
26 | * switch_to(prev, next, last) should switch from task `prev' to task | ||
27 | * `next'. `prev' will never be the same as `next'. | ||
28 | * | ||
29 | * We just delegate everything to the __switch_to assembly function, | ||
30 | * which is implemented in arch/avr32/kernel/switch_to.S | ||
31 | * | ||
32 | * mb() tells GCC not to cache `current' across this call. | ||
33 | */ | ||
34 | struct cpu_context; | ||
35 | struct task_struct; | ||
36 | extern struct task_struct *__switch_to(struct task_struct *, | ||
37 | struct cpu_context *, | ||
38 | struct cpu_context *); | ||
39 | #define switch_to(prev, next, last) \ | ||
40 | do { \ | ||
41 | last = __switch_to(prev, &prev->thread.cpu_context + 1, \ | ||
42 | &next->thread.cpu_context); \ | ||
43 | } while (0) | ||
44 | |||
45 | |||
46 | #endif /* __ASM_AVR32_SWITCH_TO_H */ | ||
diff --git a/arch/avr32/mach-at32ap/cpufreq.c b/arch/avr32/mach-at32ap/cpufreq.c index 627743326253..18b765629a0c 100644 --- a/arch/avr32/mach-at32ap/cpufreq.c +++ b/arch/avr32/mach-at32ap/cpufreq.c | |||
@@ -19,7 +19,6 @@ | |||
19 | #include <linux/clk.h> | 19 | #include <linux/clk.h> |
20 | #include <linux/err.h> | 20 | #include <linux/err.h> |
21 | #include <linux/export.h> | 21 | #include <linux/export.h> |
22 | #include <asm/system.h> | ||
23 | 22 | ||
24 | static struct clk *cpuclk; | 23 | static struct clk *cpuclk; |
25 | 24 | ||
diff --git a/arch/avr32/oprofile/op_model_avr32.c b/arch/avr32/oprofile/op_model_avr32.c index a3e9b3c4845a..f74b7809e089 100644 --- a/arch/avr32/oprofile/op_model_avr32.c +++ b/arch/avr32/oprofile/op_model_avr32.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <linux/types.h> | 17 | #include <linux/types.h> |
18 | 18 | ||
19 | #include <asm/sysreg.h> | 19 | #include <asm/sysreg.h> |
20 | #include <asm/system.h> | ||
21 | 20 | ||
22 | #define AVR32_PERFCTR_IRQ_GROUP 0 | 21 | #define AVR32_PERFCTR_IRQ_GROUP 0 |
23 | #define AVR32_PERFCTR_IRQ_LINE 1 | 22 | #define AVR32_PERFCTR_IRQ_LINE 1 |
diff --git a/arch/blackfin/include/asm/system.h b/arch/blackfin/include/asm/system.h deleted file mode 100644 index a7f40578587c..000000000000 --- a/arch/blackfin/include/asm/system.h +++ /dev/null | |||
@@ -1,5 +0,0 @@ | |||
1 | /* FILE TO BE DELETED. DO NOT ADD STUFF HERE! */ | ||
2 | #include <asm/barrier.h> | ||
3 | #include <asm/cmpxchg.h> | ||
4 | #include <asm/exec.h> | ||
5 | #include <asm/switch_to.h> | ||
diff --git a/arch/c6x/include/asm/Kbuild b/arch/c6x/include/asm/Kbuild index 13dcf78adf91..3af601e31e66 100644 --- a/arch/c6x/include/asm/Kbuild +++ b/arch/c6x/include/asm/Kbuild | |||
@@ -3,7 +3,6 @@ include include/asm-generic/Kbuild.asm | |||
3 | generic-y += atomic.h | 3 | generic-y += atomic.h |
4 | generic-y += auxvec.h | 4 | generic-y += auxvec.h |
5 | generic-y += bitsperlong.h | 5 | generic-y += bitsperlong.h |
6 | generic-y += bug.h | ||
7 | generic-y += bugs.h | 6 | generic-y += bugs.h |
8 | generic-y += cputime.h | 7 | generic-y += cputime.h |
9 | generic-y += current.h | 8 | generic-y += current.h |
diff --git a/arch/c6x/include/asm/barrier.h b/arch/c6x/include/asm/barrier.h new file mode 100644 index 000000000000..538240e85909 --- /dev/null +++ b/arch/c6x/include/asm/barrier.h | |||
@@ -0,0 +1,27 @@ | |||
1 | /* | ||
2 | * Port on Texas Instruments TMS320C6x architecture | ||
3 | * | ||
4 | * Copyright (C) 2004, 2009, 2010, 2011 Texas Instruments Incorporated | ||
5 | * Author: Aurelien Jacquiot (aurelien.jacquiot@jaluna.com) | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License version 2 as | ||
9 | * published by the Free Software Foundation. | ||
10 | */ | ||
11 | #ifndef _ASM_C6X_BARRIER_H | ||
12 | #define _ASM_C6X_BARRIER_H | ||
13 | |||
14 | #define nop() asm("NOP\n"); | ||
15 | |||
16 | #define mb() barrier() | ||
17 | #define rmb() barrier() | ||
18 | #define wmb() barrier() | ||
19 | #define set_mb(var, value) do { var = value; mb(); } while (0) | ||
20 | #define set_wmb(var, value) do { var = value; wmb(); } while (0) | ||
21 | |||
22 | #define smp_mb() barrier() | ||
23 | #define smp_rmb() barrier() | ||
24 | #define smp_wmb() barrier() | ||
25 | #define smp_read_barrier_depends() do { } while (0) | ||
26 | |||
27 | #endif /* _ASM_C6X_BARRIER_H */ | ||
diff --git a/arch/c6x/include/asm/bitops.h b/arch/c6x/include/asm/bitops.h index 39ab7e874d96..0bec7e5036a8 100644 --- a/arch/c6x/include/asm/bitops.h +++ b/arch/c6x/include/asm/bitops.h | |||
@@ -15,7 +15,6 @@ | |||
15 | 15 | ||
16 | #include <linux/bitops.h> | 16 | #include <linux/bitops.h> |
17 | 17 | ||
18 | #include <asm/system.h> | ||
19 | #include <asm/byteorder.h> | 18 | #include <asm/byteorder.h> |
20 | 19 | ||
21 | /* | 20 | /* |
diff --git a/arch/c6x/include/asm/bug.h b/arch/c6x/include/asm/bug.h new file mode 100644 index 000000000000..8d59933dd6fe --- /dev/null +++ b/arch/c6x/include/asm/bug.h | |||
@@ -0,0 +1,23 @@ | |||
1 | /* | ||
2 | * Port on Texas Instruments TMS320C6x architecture | ||
3 | * | ||
4 | * Copyright (C) 2004, 2009, 2010, 2011 Texas Instruments Incorporated | ||
5 | * Author: Aurelien Jacquiot (aurelien.jacquiot@jaluna.com) | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License version 2 as | ||
9 | * published by the Free Software Foundation. | ||
10 | */ | ||
11 | #ifndef _ASM_C6X_BUG_H | ||
12 | #define _ASM_C6X_BUG_H | ||
13 | |||
14 | #include <linux/linkage.h> | ||
15 | #include <asm-generic/bug.h> | ||
16 | |||
17 | struct pt_regs; | ||
18 | |||
19 | extern void die(char *str, struct pt_regs *fp, int nr); | ||
20 | extern asmlinkage int process_exception(struct pt_regs *regs); | ||
21 | extern asmlinkage void enable_exception(void); | ||
22 | |||
23 | #endif /* _ASM_C6X_BUG_H */ | ||
diff --git a/arch/c6x/include/asm/cmpxchg.h b/arch/c6x/include/asm/cmpxchg.h new file mode 100644 index 000000000000..b27c8cefb8c3 --- /dev/null +++ b/arch/c6x/include/asm/cmpxchg.h | |||
@@ -0,0 +1,68 @@ | |||
1 | /* | ||
2 | * Port on Texas Instruments TMS320C6x architecture | ||
3 | * | ||
4 | * Copyright (C) 2004, 2009, 2010, 2011 Texas Instruments Incorporated | ||
5 | * Author: Aurelien Jacquiot (aurelien.jacquiot@jaluna.com) | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License version 2 as | ||
9 | * published by the Free Software Foundation. | ||
10 | */ | ||
11 | #ifndef _ASM_C6X_CMPXCHG_H | ||
12 | #define _ASM_C6X_CMPXCHG_H | ||
13 | |||
14 | #include <linux/irqflags.h> | ||
15 | |||
16 | /* | ||
17 | * Misc. functions | ||
18 | */ | ||
19 | static inline unsigned int __xchg(unsigned int x, volatile void *ptr, int size) | ||
20 | { | ||
21 | unsigned int tmp; | ||
22 | unsigned long flags; | ||
23 | |||
24 | local_irq_save(flags); | ||
25 | |||
26 | switch (size) { | ||
27 | case 1: | ||
28 | tmp = 0; | ||
29 | tmp = *((unsigned char *) ptr); | ||
30 | *((unsigned char *) ptr) = (unsigned char) x; | ||
31 | break; | ||
32 | case 2: | ||
33 | tmp = 0; | ||
34 | tmp = *((unsigned short *) ptr); | ||
35 | *((unsigned short *) ptr) = x; | ||
36 | break; | ||
37 | case 4: | ||
38 | tmp = 0; | ||
39 | tmp = *((unsigned int *) ptr); | ||
40 | *((unsigned int *) ptr) = x; | ||
41 | break; | ||
42 | } | ||
43 | local_irq_restore(flags); | ||
44 | return tmp; | ||
45 | } | ||
46 | |||
47 | #define xchg(ptr, x) \ | ||
48 | ((__typeof__(*(ptr)))__xchg((unsigned int)(x), (void *) (ptr), \ | ||
49 | sizeof(*(ptr)))) | ||
50 | #define tas(ptr) xchg((ptr), 1) | ||
51 | |||
52 | |||
53 | #include <asm-generic/cmpxchg-local.h> | ||
54 | |||
55 | /* | ||
56 | * cmpxchg_local and cmpxchg64_local are atomic wrt current CPU. Always make | ||
57 | * them available. | ||
58 | */ | ||
59 | #define cmpxchg_local(ptr, o, n) \ | ||
60 | ((__typeof__(*(ptr)))__cmpxchg_local_generic((ptr), \ | ||
61 | (unsigned long)(o), \ | ||
62 | (unsigned long)(n), \ | ||
63 | sizeof(*(ptr)))) | ||
64 | #define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) | ||
65 | |||
66 | #include <asm-generic/cmpxchg.h> | ||
67 | |||
68 | #endif /* _ASM_C6X_CMPXCHG_H */ | ||
diff --git a/arch/c6x/include/asm/exec.h b/arch/c6x/include/asm/exec.h new file mode 100644 index 000000000000..0fea482cdc84 --- /dev/null +++ b/arch/c6x/include/asm/exec.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef _ASM_C6X_EXEC_H | ||
2 | #define _ASM_C6X_EXEC_H | ||
3 | |||
4 | #define arch_align_stack(x) (x) | ||
5 | |||
6 | #endif /* _ASM_C6X_EXEC_H */ | ||
diff --git a/arch/c6x/include/asm/processor.h b/arch/c6x/include/asm/processor.h index 77ecbded1f37..3ff7fab956ba 100644 --- a/arch/c6x/include/asm/processor.h +++ b/arch/c6x/include/asm/processor.h | |||
@@ -129,4 +129,13 @@ extern unsigned long get_wchan(struct task_struct *p); | |||
129 | 129 | ||
130 | extern const struct seq_operations cpuinfo_op; | 130 | extern const struct seq_operations cpuinfo_op; |
131 | 131 | ||
132 | /* Reset the board */ | ||
133 | #define HARD_RESET_NOW() | ||
134 | |||
135 | extern unsigned int c6x_core_freq; | ||
136 | |||
137 | |||
138 | extern void (*c6x_restart)(void); | ||
139 | extern void (*c6x_halt)(void); | ||
140 | |||
132 | #endif /* ASM_C6X_PROCESSOR_H */ | 141 | #endif /* ASM_C6X_PROCESSOR_H */ |
diff --git a/arch/c6x/include/asm/setup.h b/arch/c6x/include/asm/setup.h index 1808f279f82e..a01e31896fa9 100644 --- a/arch/c6x/include/asm/setup.h +++ b/arch/c6x/include/asm/setup.h | |||
@@ -27,6 +27,7 @@ extern unsigned int c6x_devstat; | |||
27 | extern unsigned char c6x_fuse_mac[6]; | 27 | extern unsigned char c6x_fuse_mac[6]; |
28 | 28 | ||
29 | extern void machine_init(unsigned long dt_ptr); | 29 | extern void machine_init(unsigned long dt_ptr); |
30 | extern void time_init(void); | ||
30 | 31 | ||
31 | #endif /* !__ASSEMBLY__ */ | 32 | #endif /* !__ASSEMBLY__ */ |
32 | #endif /* _ASM_C6X_SETUP_H */ | 33 | #endif /* _ASM_C6X_SETUP_H */ |
diff --git a/arch/c6x/include/asm/special_insns.h b/arch/c6x/include/asm/special_insns.h new file mode 100644 index 000000000000..59672bca841d --- /dev/null +++ b/arch/c6x/include/asm/special_insns.h | |||
@@ -0,0 +1,63 @@ | |||
1 | /* | ||
2 | * Port on Texas Instruments TMS320C6x architecture | ||
3 | * | ||
4 | * Copyright (C) 2004, 2009, 2010, 2011 Texas Instruments Incorporated | ||
5 | * Author: Aurelien Jacquiot (aurelien.jacquiot@jaluna.com) | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License version 2 as | ||
9 | * published by the Free Software Foundation. | ||
10 | */ | ||
11 | #ifndef _ASM_C6X_SPECIAL_INSNS_H | ||
12 | #define _ASM_C6X_SPECIAL_INSNS_H | ||
13 | |||
14 | |||
15 | #define get_creg(reg) \ | ||
16 | ({ unsigned int __x; \ | ||
17 | asm volatile ("mvc .s2 " #reg ",%0\n" : "=b"(__x)); __x; }) | ||
18 | |||
19 | #define set_creg(reg, v) \ | ||
20 | do { unsigned int __x = (unsigned int)(v); \ | ||
21 | asm volatile ("mvc .s2 %0," #reg "\n" : : "b"(__x)); \ | ||
22 | } while (0) | ||
23 | |||
24 | #define or_creg(reg, n) \ | ||
25 | do { unsigned __x, __n = (unsigned)(n); \ | ||
26 | asm volatile ("mvc .s2 " #reg ",%0\n" \ | ||
27 | "or .l2 %1,%0,%0\n" \ | ||
28 | "mvc .s2 %0," #reg "\n" \ | ||
29 | "nop\n" \ | ||
30 | : "=&b"(__x) : "b"(__n)); \ | ||
31 | } while (0) | ||
32 | |||
33 | #define and_creg(reg, n) \ | ||
34 | do { unsigned __x, __n = (unsigned)(n); \ | ||
35 | asm volatile ("mvc .s2 " #reg ",%0\n" \ | ||
36 | "and .l2 %1,%0,%0\n" \ | ||
37 | "mvc .s2 %0," #reg "\n" \ | ||
38 | "nop\n" \ | ||
39 | : "=&b"(__x) : "b"(__n)); \ | ||
40 | } while (0) | ||
41 | |||
42 | #define get_coreid() (get_creg(DNUM) & 0xff) | ||
43 | |||
44 | /* Set/get IST */ | ||
45 | #define set_ist(x) set_creg(ISTP, x) | ||
46 | #define get_ist() get_creg(ISTP) | ||
47 | |||
48 | /* | ||
49 | * Exception management | ||
50 | */ | ||
51 | #define disable_exception() | ||
52 | #define get_except_type() get_creg(EFR) | ||
53 | #define ack_exception(type) set_creg(ECR, 1 << (type)) | ||
54 | #define get_iexcept() get_creg(IERR) | ||
55 | #define set_iexcept(mask) set_creg(IERR, (mask)) | ||
56 | |||
57 | #define _extu(x, s, e) \ | ||
58 | ({ unsigned int __x; \ | ||
59 | asm volatile ("extu .S2 %3,%1,%2,%0\n" : \ | ||
60 | "=b"(__x) : "n"(s), "n"(e), "b"(x)); \ | ||
61 | __x; }) | ||
62 | |||
63 | #endif /* _ASM_C6X_SPECIAL_INSNS_H */ | ||
diff --git a/arch/c6x/include/asm/switch_to.h b/arch/c6x/include/asm/switch_to.h new file mode 100644 index 000000000000..af6c71fe75ec --- /dev/null +++ b/arch/c6x/include/asm/switch_to.h | |||
@@ -0,0 +1,33 @@ | |||
1 | /* | ||
2 | * Port on Texas Instruments TMS320C6x architecture | ||
3 | * | ||
4 | * Copyright (C) 2004, 2009, 2010, 2011 Texas Instruments Incorporated | ||
5 | * Author: Aurelien Jacquiot (aurelien.jacquiot@jaluna.com) | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License version 2 as | ||
9 | * published by the Free Software Foundation. | ||
10 | */ | ||
11 | #ifndef _ASM_C6X_SWITCH_TO_H | ||
12 | #define _ASM_C6X_SWITCH_TO_H | ||
13 | |||
14 | #include <linux/linkage.h> | ||
15 | |||
16 | #define prepare_to_switch() do { } while (0) | ||
17 | |||
18 | struct task_struct; | ||
19 | struct thread_struct; | ||
20 | asmlinkage void *__switch_to(struct thread_struct *prev, | ||
21 | struct thread_struct *next, | ||
22 | struct task_struct *tsk); | ||
23 | |||
24 | #define switch_to(prev, next, last) \ | ||
25 | do { \ | ||
26 | current->thread.wchan = (u_long) __builtin_return_address(0); \ | ||
27 | (last) = __switch_to(&(prev)->thread, \ | ||
28 | &(next)->thread, (prev)); \ | ||
29 | mb(); \ | ||
30 | current->thread.wchan = 0; \ | ||
31 | } while (0) | ||
32 | |||
33 | #endif /* _ASM_C6X_SWITCH_TO_H */ | ||
diff --git a/arch/c6x/include/asm/system.h b/arch/c6x/include/asm/system.h deleted file mode 100644 index e076dc0eacc8..000000000000 --- a/arch/c6x/include/asm/system.h +++ /dev/null | |||
@@ -1,168 +0,0 @@ | |||
1 | /* | ||
2 | * Port on Texas Instruments TMS320C6x architecture | ||
3 | * | ||
4 | * Copyright (C) 2004, 2009, 2010, 2011 Texas Instruments Incorporated | ||
5 | * Author: Aurelien Jacquiot (aurelien.jacquiot@jaluna.com) | ||
6 | * | ||
7 | * This program is free software; you can redistribute it and/or modify | ||
8 | * it under the terms of the GNU General Public License version 2 as | ||
9 | * published by the Free Software Foundation. | ||
10 | */ | ||
11 | #ifndef _ASM_C6X_SYSTEM_H | ||
12 | #define _ASM_C6X_SYSTEM_H | ||
13 | |||
14 | #include <linux/linkage.h> | ||
15 | #include <linux/irqflags.h> | ||
16 | |||
17 | #define prepare_to_switch() do { } while (0) | ||
18 | |||
19 | struct task_struct; | ||
20 | struct thread_struct; | ||
21 | asmlinkage void *__switch_to(struct thread_struct *prev, | ||
22 | struct thread_struct *next, | ||
23 | struct task_struct *tsk); | ||
24 | |||
25 | #define switch_to(prev, next, last) \ | ||
26 | do { \ | ||
27 | current->thread.wchan = (u_long) __builtin_return_address(0); \ | ||
28 | (last) = __switch_to(&(prev)->thread, \ | ||
29 | &(next)->thread, (prev)); \ | ||
30 | mb(); \ | ||
31 | current->thread.wchan = 0; \ | ||
32 | } while (0) | ||
33 | |||
34 | /* Reset the board */ | ||
35 | #define HARD_RESET_NOW() | ||
36 | |||
37 | #define get_creg(reg) \ | ||
38 | ({ unsigned int __x; \ | ||
39 | asm volatile ("mvc .s2 " #reg ",%0\n" : "=b"(__x)); __x; }) | ||
40 | |||
41 | #define set_creg(reg, v) \ | ||
42 | do { unsigned int __x = (unsigned int)(v); \ | ||
43 | asm volatile ("mvc .s2 %0," #reg "\n" : : "b"(__x)); \ | ||
44 | } while (0) | ||
45 | |||
46 | #define or_creg(reg, n) \ | ||
47 | do { unsigned __x, __n = (unsigned)(n); \ | ||
48 | asm volatile ("mvc .s2 " #reg ",%0\n" \ | ||
49 | "or .l2 %1,%0,%0\n" \ | ||
50 | "mvc .s2 %0," #reg "\n" \ | ||
51 | "nop\n" \ | ||
52 | : "=&b"(__x) : "b"(__n)); \ | ||
53 | } while (0) | ||
54 | |||
55 | #define and_creg(reg, n) \ | ||
56 | do { unsigned __x, __n = (unsigned)(n); \ | ||
57 | asm volatile ("mvc .s2 " #reg ",%0\n" \ | ||
58 | "and .l2 %1,%0,%0\n" \ | ||
59 | "mvc .s2 %0," #reg "\n" \ | ||
60 | "nop\n" \ | ||
61 | : "=&b"(__x) : "b"(__n)); \ | ||
62 | } while (0) | ||
63 | |||
64 | #define get_coreid() (get_creg(DNUM) & 0xff) | ||
65 | |||
66 | /* Set/get IST */ | ||
67 | #define set_ist(x) set_creg(ISTP, x) | ||
68 | #define get_ist() get_creg(ISTP) | ||
69 | |||
70 | /* | ||
71 | * Exception management | ||
72 | */ | ||
73 | asmlinkage void enable_exception(void); | ||
74 | #define disable_exception() | ||
75 | #define get_except_type() get_creg(EFR) | ||
76 | #define ack_exception(type) set_creg(ECR, 1 << (type)) | ||
77 | #define get_iexcept() get_creg(IERR) | ||
78 | #define set_iexcept(mask) set_creg(IERR, (mask)) | ||
79 | |||
80 | /* | ||
81 | * Misc. functions | ||
82 | */ | ||
83 | #define nop() asm("NOP\n"); | ||
84 | #define mb() barrier() | ||
85 | #define rmb() barrier() | ||
86 | #define wmb() barrier() | ||
87 | #define set_mb(var, value) do { var = value; mb(); } while (0) | ||
88 | #define set_wmb(var, value) do { var = value; wmb(); } while (0) | ||
89 | |||
90 | #define smp_mb() barrier() | ||
91 | #define smp_rmb() barrier() | ||
92 | #define smp_wmb() barrier() | ||
93 | #define smp_read_barrier_depends() do { } while (0) | ||
94 | |||
95 | #define xchg(ptr, x) \ | ||
96 | ((__typeof__(*(ptr)))__xchg((unsigned int)(x), (void *) (ptr), \ | ||
97 | sizeof(*(ptr)))) | ||
98 | #define tas(ptr) xchg((ptr), 1) | ||
99 | |||
100 | unsigned int _lmbd(unsigned int, unsigned int); | ||
101 | unsigned int _bitr(unsigned int); | ||
102 | |||
103 | struct __xchg_dummy { unsigned int a[100]; }; | ||
104 | #define __xg(x) ((volatile struct __xchg_dummy *)(x)) | ||
105 | |||
106 | static inline unsigned int __xchg(unsigned int x, volatile void *ptr, int size) | ||
107 | { | ||
108 | unsigned int tmp; | ||
109 | unsigned long flags; | ||
110 | |||
111 | local_irq_save(flags); | ||
112 | |||
113 | switch (size) { | ||
114 | case 1: | ||
115 | tmp = 0; | ||
116 | tmp = *((unsigned char *) ptr); | ||
117 | *((unsigned char *) ptr) = (unsigned char) x; | ||
118 | break; | ||
119 | case 2: | ||
120 | tmp = 0; | ||
121 | tmp = *((unsigned short *) ptr); | ||
122 | *((unsigned short *) ptr) = x; | ||
123 | break; | ||
124 | case 4: | ||
125 | tmp = 0; | ||
126 | tmp = *((unsigned int *) ptr); | ||
127 | *((unsigned int *) ptr) = x; | ||
128 | break; | ||
129 | } | ||
130 | local_irq_restore(flags); | ||
131 | return tmp; | ||
132 | } | ||
133 | |||
134 | #include <asm-generic/cmpxchg-local.h> | ||
135 | |||
136 | /* | ||
137 | * cmpxchg_local and cmpxchg64_local are atomic wrt current CPU. Always make | ||
138 | * them available. | ||
139 | */ | ||
140 | #define cmpxchg_local(ptr, o, n) \ | ||
141 | ((__typeof__(*(ptr)))__cmpxchg_local_generic((ptr), \ | ||
142 | (unsigned long)(o), \ | ||
143 | (unsigned long)(n), \ | ||
144 | sizeof(*(ptr)))) | ||
145 | #define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) | ||
146 | |||
147 | #include <asm-generic/cmpxchg.h> | ||
148 | |||
149 | #define _extu(x, s, e) \ | ||
150 | ({ unsigned int __x; \ | ||
151 | asm volatile ("extu .S2 %3,%1,%2,%0\n" : \ | ||
152 | "=b"(__x) : "n"(s), "n"(e), "b"(x)); \ | ||
153 | __x; }) | ||
154 | |||
155 | |||
156 | extern unsigned int c6x_core_freq; | ||
157 | |||
158 | struct pt_regs; | ||
159 | |||
160 | extern void die(char *str, struct pt_regs *fp, int nr); | ||
161 | extern asmlinkage int process_exception(struct pt_regs *regs); | ||
162 | extern void time_init(void); | ||
163 | extern void free_initmem(void); | ||
164 | |||
165 | extern void (*c6x_restart)(void); | ||
166 | extern void (*c6x_halt)(void); | ||
167 | |||
168 | #endif /* _ASM_C6X_SYSTEM_H */ | ||
diff --git a/arch/c6x/kernel/irq.c b/arch/c6x/kernel/irq.c index d77bcfdf0d8e..65b8ddf54b44 100644 --- a/arch/c6x/kernel/irq.c +++ b/arch/c6x/kernel/irq.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <linux/kernel_stat.h> | 27 | #include <linux/kernel_stat.h> |
28 | 28 | ||
29 | #include <asm/megamod-pic.h> | 29 | #include <asm/megamod-pic.h> |
30 | #include <asm/special_insns.h> | ||
30 | 31 | ||
31 | unsigned long irq_err_count; | 32 | unsigned long irq_err_count; |
32 | 33 | ||
diff --git a/arch/c6x/kernel/setup.c b/arch/c6x/kernel/setup.c index 0c07921747f4..ce46186600c5 100644 --- a/arch/c6x/kernel/setup.c +++ b/arch/c6x/kernel/setup.c | |||
@@ -34,6 +34,7 @@ | |||
34 | #include <asm/dscr.h> | 34 | #include <asm/dscr.h> |
35 | #include <asm/clock.h> | 35 | #include <asm/clock.h> |
36 | #include <asm/soc.h> | 36 | #include <asm/soc.h> |
37 | #include <asm/special_insns.h> | ||
37 | 38 | ||
38 | static const char *c6x_soc_name; | 39 | static const char *c6x_soc_name; |
39 | 40 | ||
diff --git a/arch/c6x/kernel/soc.c b/arch/c6x/kernel/soc.c index dd45bc39af0e..0748c94ebef6 100644 --- a/arch/c6x/kernel/soc.c +++ b/arch/c6x/kernel/soc.c | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <linux/module.h> | 11 | #include <linux/module.h> |
12 | #include <linux/ctype.h> | 12 | #include <linux/ctype.h> |
13 | #include <linux/etherdevice.h> | 13 | #include <linux/etherdevice.h> |
14 | #include <asm/system.h> | ||
15 | #include <asm/setup.h> | 14 | #include <asm/setup.h> |
16 | #include <asm/soc.h> | 15 | #include <asm/soc.h> |
17 | 16 | ||
diff --git a/arch/c6x/kernel/time.c b/arch/c6x/kernel/time.c index 4c9f136165f7..356ee84cad95 100644 --- a/arch/c6x/kernel/time.c +++ b/arch/c6x/kernel/time.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/timex.h> | 20 | #include <linux/timex.h> |
21 | #include <linux/profile.h> | 21 | #include <linux/profile.h> |
22 | 22 | ||
23 | #include <asm/special_insns.h> | ||
23 | #include <asm/timer64.h> | 24 | #include <asm/timer64.h> |
24 | 25 | ||
25 | static u32 sched_clock_multiplier; | 26 | static u32 sched_clock_multiplier; |
diff --git a/arch/c6x/kernel/traps.c b/arch/c6x/kernel/traps.c index f50e3edd6dad..1be74e5b4788 100644 --- a/arch/c6x/kernel/traps.c +++ b/arch/c6x/kernel/traps.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <linux/bug.h> | 14 | #include <linux/bug.h> |
15 | 15 | ||
16 | #include <asm/soc.h> | 16 | #include <asm/soc.h> |
17 | #include <asm/special_insns.h> | ||
17 | #include <asm/traps.h> | 18 | #include <asm/traps.h> |
18 | 19 | ||
19 | int (*c6x_nmi_handler)(struct pt_regs *regs); | 20 | int (*c6x_nmi_handler)(struct pt_regs *regs); |
diff --git a/arch/c6x/platforms/timer64.c b/arch/c6x/platforms/timer64.c index 03c03c249191..3c73d74a4674 100644 --- a/arch/c6x/platforms/timer64.c +++ b/arch/c6x/platforms/timer64.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <linux/of_address.h> | 15 | #include <linux/of_address.h> |
16 | #include <asm/soc.h> | 16 | #include <asm/soc.h> |
17 | #include <asm/dscr.h> | 17 | #include <asm/dscr.h> |
18 | #include <asm/special_insns.h> | ||
18 | #include <asm/timer64.h> | 19 | #include <asm/timer64.h> |
19 | 20 | ||
20 | struct timer_regs { | 21 | struct timer_regs { |
diff --git a/arch/cris/arch-v10/drivers/ds1302.c b/arch/cris/arch-v10/drivers/ds1302.c index 3d655dcc65da..74f99c688c8d 100644 --- a/arch/cris/arch-v10/drivers/ds1302.c +++ b/arch/cris/arch-v10/drivers/ds1302.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include <linux/capability.h> | 24 | #include <linux/capability.h> |
25 | 25 | ||
26 | #include <asm/uaccess.h> | 26 | #include <asm/uaccess.h> |
27 | #include <asm/system.h> | ||
28 | #include <arch/svinto.h> | 27 | #include <arch/svinto.h> |
29 | #include <asm/io.h> | 28 | #include <asm/io.h> |
30 | #include <asm/rtc.h> | 29 | #include <asm/rtc.h> |
diff --git a/arch/cris/arch-v10/drivers/gpio.c b/arch/cris/arch-v10/drivers/gpio.c index a276f0811731..609d5510410e 100644 --- a/arch/cris/arch-v10/drivers/gpio.c +++ b/arch/cris/arch-v10/drivers/gpio.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include <asm/etraxgpio.h> | 24 | #include <asm/etraxgpio.h> |
25 | #include <arch/svinto.h> | 25 | #include <arch/svinto.h> |
26 | #include <asm/io.h> | 26 | #include <asm/io.h> |
27 | #include <asm/system.h> | ||
28 | #include <asm/irq.h> | 27 | #include <asm/irq.h> |
29 | #include <arch/io_interface_mux.h> | 28 | #include <arch/io_interface_mux.h> |
30 | 29 | ||
diff --git a/arch/cris/arch-v10/drivers/i2c.c b/arch/cris/arch-v10/drivers/i2c.c index c413539d4205..b3d1f9ed1b98 100644 --- a/arch/cris/arch-v10/drivers/i2c.c +++ b/arch/cris/arch-v10/drivers/i2c.c | |||
@@ -22,7 +22,6 @@ | |||
22 | 22 | ||
23 | #include <asm/etraxi2c.h> | 23 | #include <asm/etraxi2c.h> |
24 | 24 | ||
25 | #include <asm/system.h> | ||
26 | #include <arch/svinto.h> | 25 | #include <arch/svinto.h> |
27 | #include <asm/io.h> | 26 | #include <asm/io.h> |
28 | #include <asm/delay.h> | 27 | #include <asm/delay.h> |
diff --git a/arch/cris/arch-v10/drivers/pcf8563.c b/arch/cris/arch-v10/drivers/pcf8563.c index 1391b731ad1c..9da056860c92 100644 --- a/arch/cris/arch-v10/drivers/pcf8563.c +++ b/arch/cris/arch-v10/drivers/pcf8563.c | |||
@@ -29,7 +29,6 @@ | |||
29 | #include <linux/mutex.h> | 29 | #include <linux/mutex.h> |
30 | 30 | ||
31 | #include <asm/uaccess.h> | 31 | #include <asm/uaccess.h> |
32 | #include <asm/system.h> | ||
33 | #include <asm/io.h> | 32 | #include <asm/io.h> |
34 | #include <asm/rtc.h> | 33 | #include <asm/rtc.h> |
35 | 34 | ||
diff --git a/arch/cris/arch-v10/drivers/sync_serial.c b/arch/cris/arch-v10/drivers/sync_serial.c index 466af40c5822..c4b71710fb0e 100644 --- a/arch/cris/arch-v10/drivers/sync_serial.c +++ b/arch/cris/arch-v10/drivers/sync_serial.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <asm/io.h> | 27 | #include <asm/io.h> |
28 | #include <arch/svinto.h> | 28 | #include <arch/svinto.h> |
29 | #include <asm/uaccess.h> | 29 | #include <asm/uaccess.h> |
30 | #include <asm/system.h> | ||
31 | #include <asm/sync_serial.h> | 30 | #include <asm/sync_serial.h> |
32 | #include <arch/io_interface_mux.h> | 31 | #include <arch/io_interface_mux.h> |
33 | 32 | ||
diff --git a/arch/cris/arch-v10/kernel/debugport.c b/arch/cris/arch-v10/kernel/debugport.c index 99851ba8e5fa..f932c85fbde4 100644 --- a/arch/cris/arch-v10/kernel/debugport.c +++ b/arch/cris/arch-v10/kernel/debugport.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <linux/major.h> | 18 | #include <linux/major.h> |
19 | #include <linux/delay.h> | 19 | #include <linux/delay.h> |
20 | #include <linux/tty.h> | 20 | #include <linux/tty.h> |
21 | #include <asm/system.h> | ||
22 | #include <arch/svinto.h> | 21 | #include <arch/svinto.h> |
23 | #include <asm/io.h> /* Get SIMCOUT. */ | 22 | #include <asm/io.h> /* Get SIMCOUT. */ |
24 | 23 | ||
diff --git a/arch/cris/arch-v10/kernel/dma.c b/arch/cris/arch-v10/kernel/dma.c index d31504b4a19e..5795047359b2 100644 --- a/arch/cris/arch-v10/kernel/dma.c +++ b/arch/cris/arch-v10/kernel/dma.c | |||
@@ -8,6 +8,7 @@ | |||
8 | 8 | ||
9 | #include <asm/dma.h> | 9 | #include <asm/dma.h> |
10 | #include <arch/svinto.h> | 10 | #include <arch/svinto.h> |
11 | #include <arch/system.h> | ||
11 | 12 | ||
12 | /* Macro to access ETRAX 100 registers */ | 13 | /* Macro to access ETRAX 100 registers */ |
13 | #define SETS(var, reg, field, val) var = (var & ~IO_MASK_(reg##_, field##_)) | \ | 14 | #define SETS(var, reg, field, val) var = (var & ~IO_MASK_(reg##_, field##_)) | \ |
diff --git a/arch/cris/arch-v10/kernel/io_interface_mux.c b/arch/cris/arch-v10/kernel/io_interface_mux.c index 29f97e962795..ad64cd1c861a 100644 --- a/arch/cris/arch-v10/kernel/io_interface_mux.c +++ b/arch/cris/arch-v10/kernel/io_interface_mux.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <arch/svinto.h> | 14 | #include <arch/svinto.h> |
15 | #include <asm/io.h> | 15 | #include <asm/io.h> |
16 | #include <arch/io_interface_mux.h> | 16 | #include <arch/io_interface_mux.h> |
17 | #include <arch/system.h> | ||
17 | 18 | ||
18 | 19 | ||
19 | #define DBG(s) | 20 | #define DBG(s) |
diff --git a/arch/cris/arch-v10/kernel/process.c b/arch/cris/arch-v10/kernel/process.c index 9a57db6907f5..bee8df43c201 100644 --- a/arch/cris/arch-v10/kernel/process.c +++ b/arch/cris/arch-v10/kernel/process.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/fs.h> | 16 | #include <linux/fs.h> |
17 | #include <arch/svinto.h> | 17 | #include <arch/svinto.h> |
18 | #include <linux/init.h> | 18 | #include <linux/init.h> |
19 | #include <arch/system.h> | ||
19 | 20 | ||
20 | #ifdef CONFIG_ETRAX_GPIO | 21 | #ifdef CONFIG_ETRAX_GPIO |
21 | void etrax_gpio_wake_up_check(void); /* drivers/gpio.c */ | 22 | void etrax_gpio_wake_up_check(void); /* drivers/gpio.c */ |
diff --git a/arch/cris/arch-v10/kernel/ptrace.c b/arch/cris/arch-v10/kernel/ptrace.c index 320065f3cbe5..bfddfb99401f 100644 --- a/arch/cris/arch-v10/kernel/ptrace.c +++ b/arch/cris/arch-v10/kernel/ptrace.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <asm/uaccess.h> | 15 | #include <asm/uaccess.h> |
16 | #include <asm/page.h> | 16 | #include <asm/page.h> |
17 | #include <asm/pgtable.h> | 17 | #include <asm/pgtable.h> |
18 | #include <asm/system.h> | ||
19 | #include <asm/processor.h> | 18 | #include <asm/processor.h> |
20 | 19 | ||
21 | /* | 20 | /* |
diff --git a/arch/cris/arch-v10/kernel/setup.c b/arch/cris/arch-v10/kernel/setup.c index de27b50b72a2..4f96d71b5154 100644 --- a/arch/cris/arch-v10/kernel/setup.c +++ b/arch/cris/arch-v10/kernel/setup.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <linux/proc_fs.h> | 14 | #include <linux/proc_fs.h> |
15 | #include <linux/delay.h> | 15 | #include <linux/delay.h> |
16 | #include <linux/param.h> | 16 | #include <linux/param.h> |
17 | #include <arch/system.h> | ||
17 | 18 | ||
18 | #ifdef CONFIG_PROC_FS | 19 | #ifdef CONFIG_PROC_FS |
19 | #define HAS_FPU 0x0001 | 20 | #define HAS_FPU 0x0001 |
diff --git a/arch/cris/arch-v10/kernel/signal.c b/arch/cris/arch-v10/kernel/signal.c index e78fe49a9849..289c584ba499 100644 --- a/arch/cris/arch-v10/kernel/signal.c +++ b/arch/cris/arch-v10/kernel/signal.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <asm/processor.h> | 27 | #include <asm/processor.h> |
28 | #include <asm/ucontext.h> | 28 | #include <asm/ucontext.h> |
29 | #include <asm/uaccess.h> | 29 | #include <asm/uaccess.h> |
30 | #include <arch/system.h> | ||
30 | 31 | ||
31 | #define DEBUG_SIG 0 | 32 | #define DEBUG_SIG 0 |
32 | 33 | ||
diff --git a/arch/cris/arch-v10/kernel/traps.c b/arch/cris/arch-v10/kernel/traps.c index 8bebb96bbca1..7001beda716c 100644 --- a/arch/cris/arch-v10/kernel/traps.c +++ b/arch/cris/arch-v10/kernel/traps.c | |||
@@ -11,6 +11,7 @@ | |||
11 | #include <linux/ptrace.h> | 11 | #include <linux/ptrace.h> |
12 | #include <asm/uaccess.h> | 12 | #include <asm/uaccess.h> |
13 | #include <arch/sv_addr_ag.h> | 13 | #include <arch/sv_addr_ag.h> |
14 | #include <arch/system.h> | ||
14 | 15 | ||
15 | void | 16 | void |
16 | show_registers(struct pt_regs *regs) | 17 | show_registers(struct pt_regs *regs) |
diff --git a/arch/cris/arch-v32/drivers/i2c.c b/arch/cris/arch-v32/drivers/i2c.c index ddb23996f11a..3b2c82ce8147 100644 --- a/arch/cris/arch-v32/drivers/i2c.c +++ b/arch/cris/arch-v32/drivers/i2c.c | |||
@@ -36,7 +36,6 @@ | |||
36 | 36 | ||
37 | #include <asm/etraxi2c.h> | 37 | #include <asm/etraxi2c.h> |
38 | 38 | ||
39 | #include <asm/system.h> | ||
40 | #include <asm/io.h> | 39 | #include <asm/io.h> |
41 | #include <asm/delay.h> | 40 | #include <asm/delay.h> |
42 | 41 | ||
diff --git a/arch/cris/arch-v32/drivers/mach-a3/gpio.c b/arch/cris/arch-v32/drivers/mach-a3/gpio.c index c845831e2225..0b86deedacb9 100644 --- a/arch/cris/arch-v32/drivers/mach-a3/gpio.c +++ b/arch/cris/arch-v32/drivers/mach-a3/gpio.c | |||
@@ -31,7 +31,6 @@ | |||
31 | #include <hwregs/gio_defs.h> | 31 | #include <hwregs/gio_defs.h> |
32 | #include <hwregs/intr_vect_defs.h> | 32 | #include <hwregs/intr_vect_defs.h> |
33 | #include <asm/io.h> | 33 | #include <asm/io.h> |
34 | #include <asm/system.h> | ||
35 | #include <asm/irq.h> | 34 | #include <asm/irq.h> |
36 | #include <mach/pinmux.h> | 35 | #include <mach/pinmux.h> |
37 | 36 | ||
diff --git a/arch/cris/arch-v32/drivers/mach-fs/gpio.c b/arch/cris/arch-v32/drivers/mach-fs/gpio.c index ee90d2659be7..a2ac0917f1a6 100644 --- a/arch/cris/arch-v32/drivers/mach-fs/gpio.c +++ b/arch/cris/arch-v32/drivers/mach-fs/gpio.c | |||
@@ -30,7 +30,6 @@ | |||
30 | #include <hwregs/gio_defs.h> | 30 | #include <hwregs/gio_defs.h> |
31 | #include <hwregs/intr_vect_defs.h> | 31 | #include <hwregs/intr_vect_defs.h> |
32 | #include <asm/io.h> | 32 | #include <asm/io.h> |
33 | #include <asm/system.h> | ||
34 | #include <asm/irq.h> | 33 | #include <asm/irq.h> |
35 | 34 | ||
36 | #ifdef CONFIG_ETRAX_VIRTUAL_GPIO | 35 | #ifdef CONFIG_ETRAX_VIRTUAL_GPIO |
diff --git a/arch/cris/arch-v32/kernel/debugport.c b/arch/cris/arch-v32/kernel/debugport.c index 794b364d9f7d..610909b003f6 100644 --- a/arch/cris/arch-v32/kernel/debugport.c +++ b/arch/cris/arch-v32/kernel/debugport.c | |||
@@ -4,7 +4,6 @@ | |||
4 | 4 | ||
5 | #include <linux/console.h> | 5 | #include <linux/console.h> |
6 | #include <linux/init.h> | 6 | #include <linux/init.h> |
7 | #include <asm/system.h> | ||
8 | #include <hwregs/reg_rdwr.h> | 7 | #include <hwregs/reg_rdwr.h> |
9 | #include <hwregs/reg_map.h> | 8 | #include <hwregs/reg_map.h> |
10 | #include <hwregs/ser_defs.h> | 9 | #include <hwregs/ser_defs.h> |
diff --git a/arch/cris/arch-v32/kernel/fasttimer.c b/arch/cris/arch-v32/kernel/fasttimer.c index 111caa1a2efb..ab1551ee43c5 100644 --- a/arch/cris/arch-v32/kernel/fasttimer.c +++ b/arch/cris/arch-v32/kernel/fasttimer.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <linux/delay.h> | 17 | #include <linux/delay.h> |
18 | 18 | ||
19 | #include <asm/irq.h> | 19 | #include <asm/irq.h> |
20 | #include <asm/system.h> | ||
21 | 20 | ||
22 | #include <hwregs/reg_map.h> | 21 | #include <hwregs/reg_map.h> |
23 | #include <hwregs/reg_rdwr.h> | 22 | #include <hwregs/reg_rdwr.h> |
diff --git a/arch/cris/arch-v32/kernel/ptrace.c b/arch/cris/arch-v32/kernel/ptrace.c index 511ece94a574..f7ad9e8637df 100644 --- a/arch/cris/arch-v32/kernel/ptrace.c +++ b/arch/cris/arch-v32/kernel/ptrace.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <asm/uaccess.h> | 15 | #include <asm/uaccess.h> |
16 | #include <asm/page.h> | 16 | #include <asm/page.h> |
17 | #include <asm/pgtable.h> | 17 | #include <asm/pgtable.h> |
18 | #include <asm/system.h> | ||
19 | #include <asm/processor.h> | 18 | #include <asm/processor.h> |
20 | #include <arch/hwregs/supp_reg.h> | 19 | #include <arch/hwregs/supp_reg.h> |
21 | 20 | ||
diff --git a/arch/cris/arch-v32/mach-a3/dma.c b/arch/cris/arch-v32/mach-a3/dma.c index f35e4f65f4ef..47c64bf40eae 100644 --- a/arch/cris/arch-v32/mach-a3/dma.c +++ b/arch/cris/arch-v32/mach-a3/dma.c | |||
@@ -9,7 +9,6 @@ | |||
9 | #include <hwregs/clkgen_defs.h> | 9 | #include <hwregs/clkgen_defs.h> |
10 | #include <hwregs/strmux_defs.h> | 10 | #include <hwregs/strmux_defs.h> |
11 | #include <linux/errno.h> | 11 | #include <linux/errno.h> |
12 | #include <asm/system.h> | ||
13 | #include <arbiter.h> | 12 | #include <arbiter.h> |
14 | 13 | ||
15 | static char used_dma_channels[MAX_DMA_CHANNELS]; | 14 | static char used_dma_channels[MAX_DMA_CHANNELS]; |
diff --git a/arch/cris/arch-v32/mach-fs/dma.c b/arch/cris/arch-v32/mach-fs/dma.c index 2d970d7505c9..fc6416a671ea 100644 --- a/arch/cris/arch-v32/mach-fs/dma.c +++ b/arch/cris/arch-v32/mach-fs/dma.c | |||
@@ -9,7 +9,6 @@ | |||
9 | #include <hwregs/config_defs.h> | 9 | #include <hwregs/config_defs.h> |
10 | #include <hwregs/strmux_defs.h> | 10 | #include <hwregs/strmux_defs.h> |
11 | #include <linux/errno.h> | 11 | #include <linux/errno.h> |
12 | #include <asm/system.h> | ||
13 | #include <mach/arbiter.h> | 12 | #include <mach/arbiter.h> |
14 | 13 | ||
15 | static char used_dma_channels[MAX_DMA_CHANNELS]; | 14 | static char used_dma_channels[MAX_DMA_CHANNELS]; |
diff --git a/arch/cris/include/arch-v10/arch/elf.h b/arch/cris/include/arch-v10/arch/elf.h index 1c38ee728b17..1eb638aeddb4 100644 --- a/arch/cris/include/arch-v10/arch/elf.h +++ b/arch/cris/include/arch-v10/arch/elf.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef __ASMCRIS_ARCH_ELF_H | 1 | #ifndef __ASMCRIS_ARCH_ELF_H |
2 | #define __ASMCRIS_ARCH_ELF_H | 2 | #define __ASMCRIS_ARCH_ELF_H |
3 | 3 | ||
4 | #include <arch/system.h> | ||
5 | |||
4 | #define ELF_MACH EF_CRIS_VARIANT_ANY_V0_V10 | 6 | #define ELF_MACH EF_CRIS_VARIANT_ANY_V0_V10 |
5 | 7 | ||
6 | /* | 8 | /* |
diff --git a/arch/cris/include/arch-v32/arch/elf.h b/arch/cris/include/arch-v32/arch/elf.h index 1324e505a4d8..c46d58291166 100644 --- a/arch/cris/include/arch-v32/arch/elf.h +++ b/arch/cris/include/arch-v32/arch/elf.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef _ASM_CRIS_ELF_H | 1 | #ifndef _ASM_CRIS_ELF_H |
2 | #define _ASM_CRIS_ELF_H | 2 | #define _ASM_CRIS_ELF_H |
3 | 3 | ||
4 | #include <arch/system.h> | ||
5 | |||
4 | #define ELF_CORE_EFLAGS EF_CRIS_VARIANT_V32 | 6 | #define ELF_CORE_EFLAGS EF_CRIS_VARIANT_V32 |
5 | 7 | ||
6 | /* | 8 | /* |
diff --git a/arch/cris/include/arch-v32/arch/system.h b/arch/cris/include/arch-v32/arch/system.h index 76cea99eaa60..db853fb3a458 100644 --- a/arch/cris/include/arch-v32/arch/system.h +++ b/arch/cris/include/arch-v32/arch/system.h | |||
@@ -34,14 +34,4 @@ static inline unsigned long rdsp(void) | |||
34 | /* Write the user-mode stack pointer. */ | 34 | /* Write the user-mode stack pointer. */ |
35 | #define wrusp(usp) __asm__ __volatile__ ("move %0, $usp" : : "rm" (usp)) | 35 | #define wrusp(usp) __asm__ __volatile__ ("move %0, $usp" : : "rm" (usp)) |
36 | 36 | ||
37 | #define nop() __asm__ __volatile__ ("nop"); | ||
38 | |||
39 | #define xchg(ptr,x) \ | ||
40 | ((__typeof__(*(ptr)))__xchg((unsigned long) (x),(ptr),sizeof(*(ptr)))) | ||
41 | |||
42 | #define tas(ptr) (xchg((ptr),1)) | ||
43 | |||
44 | struct __xchg_dummy { unsigned long a[100]; }; | ||
45 | #define __xg(x) ((struct __xchg_dummy *)(x)) | ||
46 | |||
47 | #endif /* _ASM_CRIS_ARCH_SYSTEM_H */ | 37 | #endif /* _ASM_CRIS_ARCH_SYSTEM_H */ |
diff --git a/arch/cris/include/asm/atomic.h b/arch/cris/include/asm/atomic.h index bbf093814db2..1056a5dfe04f 100644 --- a/arch/cris/include/asm/atomic.h +++ b/arch/cris/include/asm/atomic.h | |||
@@ -5,7 +5,7 @@ | |||
5 | 5 | ||
6 | #include <linux/compiler.h> | 6 | #include <linux/compiler.h> |
7 | #include <linux/types.h> | 7 | #include <linux/types.h> |
8 | #include <asm/system.h> | 8 | #include <asm/cmpxchg.h> |
9 | #include <arch/atomic.h> | 9 | #include <arch/atomic.h> |
10 | 10 | ||
11 | /* | 11 | /* |
diff --git a/arch/cris/include/asm/barrier.h b/arch/cris/include/asm/barrier.h new file mode 100644 index 000000000000..198ad7fa6b25 --- /dev/null +++ b/arch/cris/include/asm/barrier.h | |||
@@ -0,0 +1,25 @@ | |||
1 | #ifndef __ASM_CRIS_BARRIER_H | ||
2 | #define __ASM_CRIS_BARRIER_H | ||
3 | |||
4 | #define nop() __asm__ __volatile__ ("nop"); | ||
5 | |||
6 | #define barrier() __asm__ __volatile__("": : :"memory") | ||
7 | #define mb() barrier() | ||
8 | #define rmb() mb() | ||
9 | #define wmb() mb() | ||
10 | #define read_barrier_depends() do { } while(0) | ||
11 | #define set_mb(var, value) do { var = value; mb(); } while (0) | ||
12 | |||
13 | #ifdef CONFIG_SMP | ||
14 | #define smp_mb() mb() | ||
15 | #define smp_rmb() rmb() | ||
16 | #define smp_wmb() wmb() | ||
17 | #define smp_read_barrier_depends() read_barrier_depends() | ||
18 | #else | ||
19 | #define smp_mb() barrier() | ||
20 | #define smp_rmb() barrier() | ||
21 | #define smp_wmb() barrier() | ||
22 | #define smp_read_barrier_depends() do { } while(0) | ||
23 | #endif | ||
24 | |||
25 | #endif /* __ASM_CRIS_BARRIER_H */ | ||
diff --git a/arch/cris/include/asm/bitops.h b/arch/cris/include/asm/bitops.h index a78a2d70cd8b..184066ceb1f6 100644 --- a/arch/cris/include/asm/bitops.h +++ b/arch/cris/include/asm/bitops.h | |||
@@ -19,7 +19,6 @@ | |||
19 | #endif | 19 | #endif |
20 | 20 | ||
21 | #include <arch/bitops.h> | 21 | #include <arch/bitops.h> |
22 | #include <asm/system.h> | ||
23 | #include <linux/atomic.h> | 22 | #include <linux/atomic.h> |
24 | #include <linux/compiler.h> | 23 | #include <linux/compiler.h> |
25 | 24 | ||
diff --git a/arch/cris/include/asm/system.h b/arch/cris/include/asm/cmpxchg.h index ea10592f7d75..b756dac8aa3f 100644 --- a/arch/cris/include/asm/system.h +++ b/arch/cris/include/asm/cmpxchg.h | |||
@@ -1,44 +1,7 @@ | |||
1 | #ifndef __ASM_CRIS_SYSTEM_H | 1 | #ifndef __ASM_CRIS_CMPXCHG__ |
2 | #define __ASM_CRIS_SYSTEM_H | 2 | #define __ASM_CRIS_CMPXCHG__ |
3 | 3 | ||
4 | #include <linux/irqflags.h> | 4 | #include <linux/irqflags.h> |
5 | #include <arch/system.h> | ||
6 | |||
7 | /* the switch_to macro calls resume, an asm function in entry.S which does the actual | ||
8 | * task switching. | ||
9 | */ | ||
10 | |||
11 | extern struct task_struct *resume(struct task_struct *prev, struct task_struct *next, int); | ||
12 | #define switch_to(prev,next,last) last = resume(prev,next, \ | ||
13 | (int)&((struct task_struct *)0)->thread) | ||
14 | |||
15 | #define barrier() __asm__ __volatile__("": : :"memory") | ||
16 | #define mb() barrier() | ||
17 | #define rmb() mb() | ||
18 | #define wmb() mb() | ||
19 | #define read_barrier_depends() do { } while(0) | ||
20 | #define set_mb(var, value) do { var = value; mb(); } while (0) | ||
21 | |||
22 | #ifdef CONFIG_SMP | ||
23 | #define smp_mb() mb() | ||
24 | #define smp_rmb() rmb() | ||
25 | #define smp_wmb() wmb() | ||
26 | #define smp_read_barrier_depends() read_barrier_depends() | ||
27 | #else | ||
28 | #define smp_mb() barrier() | ||
29 | #define smp_rmb() barrier() | ||
30 | #define smp_wmb() barrier() | ||
31 | #define smp_read_barrier_depends() do { } while(0) | ||
32 | #endif | ||
33 | |||
34 | #define iret() | ||
35 | |||
36 | /* | ||
37 | * disable hlt during certain critical i/o operations | ||
38 | */ | ||
39 | #define HAVE_DISABLE_HLT | ||
40 | void disable_hlt(void); | ||
41 | void enable_hlt(void); | ||
42 | 5 | ||
43 | static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int size) | 6 | static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int size) |
44 | { | 7 | { |
@@ -67,6 +30,11 @@ static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int siz | |||
67 | return x; | 30 | return x; |
68 | } | 31 | } |
69 | 32 | ||
33 | #define xchg(ptr,x) \ | ||
34 | ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr)))) | ||
35 | |||
36 | #define tas(ptr) (xchg((ptr),1)) | ||
37 | |||
70 | #include <asm-generic/cmpxchg-local.h> | 38 | #include <asm-generic/cmpxchg-local.h> |
71 | 39 | ||
72 | /* | 40 | /* |
@@ -82,8 +50,4 @@ static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int siz | |||
82 | #include <asm-generic/cmpxchg.h> | 50 | #include <asm-generic/cmpxchg.h> |
83 | #endif | 51 | #endif |
84 | 52 | ||
85 | #define arch_align_stack(x) (x) | 53 | #endif /* __ASM_CRIS_CMPXCHG__ */ |
86 | |||
87 | void default_idle(void); | ||
88 | |||
89 | #endif | ||
diff --git a/arch/cris/include/asm/exec.h b/arch/cris/include/asm/exec.h new file mode 100644 index 000000000000..9665dab7e25b --- /dev/null +++ b/arch/cris/include/asm/exec.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __ASM_CRIS_EXEC_H | ||
2 | #define __ASM_CRIS_EXEC_H | ||
3 | |||
4 | #define arch_align_stack(x) (x) | ||
5 | |||
6 | #endif /* __ASM_CRIS_EXEC_H */ | ||
diff --git a/arch/cris/include/asm/processor.h b/arch/cris/include/asm/processor.h index 3f7248f7a1c9..4210d72a6667 100644 --- a/arch/cris/include/asm/processor.h +++ b/arch/cris/include/asm/processor.h | |||
@@ -10,10 +10,10 @@ | |||
10 | #ifndef __ASM_CRIS_PROCESSOR_H | 10 | #ifndef __ASM_CRIS_PROCESSOR_H |
11 | #define __ASM_CRIS_PROCESSOR_H | 11 | #define __ASM_CRIS_PROCESSOR_H |
12 | 12 | ||
13 | #include <asm/system.h> | ||
14 | #include <asm/page.h> | 13 | #include <asm/page.h> |
15 | #include <asm/ptrace.h> | 14 | #include <asm/ptrace.h> |
16 | #include <arch/processor.h> | 15 | #include <arch/processor.h> |
16 | #include <arch/system.h> | ||
17 | 17 | ||
18 | struct task_struct; | 18 | struct task_struct; |
19 | 19 | ||
@@ -72,4 +72,13 @@ static inline void release_thread(struct task_struct *dead_task) | |||
72 | 72 | ||
73 | #define cpu_relax() barrier() | 73 | #define cpu_relax() barrier() |
74 | 74 | ||
75 | /* | ||
76 | * disable hlt during certain critical i/o operations | ||
77 | */ | ||
78 | #define HAVE_DISABLE_HLT | ||
79 | void disable_hlt(void); | ||
80 | void enable_hlt(void); | ||
81 | |||
82 | void default_idle(void); | ||
83 | |||
75 | #endif /* __ASM_CRIS_PROCESSOR_H */ | 84 | #endif /* __ASM_CRIS_PROCESSOR_H */ |
diff --git a/arch/cris/include/asm/switch_to.h b/arch/cris/include/asm/switch_to.h new file mode 100644 index 000000000000..d842e1163ba1 --- /dev/null +++ b/arch/cris/include/asm/switch_to.h | |||
@@ -0,0 +1,12 @@ | |||
1 | #ifndef __ASM_CRIS_SWITCH_TO_H | ||
2 | #define __ASM_CRIS_SWITCH_TO_H | ||
3 | |||
4 | /* the switch_to macro calls resume, an asm function in entry.S which does the actual | ||
5 | * task switching. | ||
6 | */ | ||
7 | |||
8 | extern struct task_struct *resume(struct task_struct *prev, struct task_struct *next, int); | ||
9 | #define switch_to(prev,next,last) last = resume(prev,next, \ | ||
10 | (int)&((struct task_struct *)0)->thread) | ||
11 | |||
12 | #endif /* __ASM_CRIS_SWITCH_TO_H */ | ||
diff --git a/arch/cris/kernel/irq.c b/arch/cris/kernel/irq.c index 788eb2248916..d36836dbbc07 100644 --- a/arch/cris/kernel/irq.c +++ b/arch/cris/kernel/irq.c | |||
@@ -36,6 +36,7 @@ | |||
36 | #include <linux/spinlock.h> | 36 | #include <linux/spinlock.h> |
37 | 37 | ||
38 | #include <asm/io.h> | 38 | #include <asm/io.h> |
39 | #include <arch/system.h> | ||
39 | 40 | ||
40 | /* called by the assembler IRQ entry functions defined in irq.h | 41 | /* called by the assembler IRQ entry functions defined in irq.h |
41 | * to dispatch the interrupts to registered handlers | 42 | * to dispatch the interrupts to registered handlers |
diff --git a/arch/cris/kernel/process.c b/arch/cris/kernel/process.c index d8f50ff6fadd..891dad85e8bd 100644 --- a/arch/cris/kernel/process.c +++ b/arch/cris/kernel/process.c | |||
@@ -16,7 +16,6 @@ | |||
16 | #include <asm/pgtable.h> | 16 | #include <asm/pgtable.h> |
17 | #include <asm/uaccess.h> | 17 | #include <asm/uaccess.h> |
18 | #include <asm/irq.h> | 18 | #include <asm/irq.h> |
19 | #include <asm/system.h> | ||
20 | #include <linux/module.h> | 19 | #include <linux/module.h> |
21 | #include <linux/spinlock.h> | 20 | #include <linux/spinlock.h> |
22 | #include <linux/init_task.h> | 21 | #include <linux/init_task.h> |
diff --git a/arch/cris/kernel/ptrace.c b/arch/cris/kernel/ptrace.c index 48b0f3912632..d114ad3da9b1 100644 --- a/arch/cris/kernel/ptrace.c +++ b/arch/cris/kernel/ptrace.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <asm/uaccess.h> | 21 | #include <asm/uaccess.h> |
22 | #include <asm/page.h> | 22 | #include <asm/page.h> |
23 | #include <asm/pgtable.h> | 23 | #include <asm/pgtable.h> |
24 | #include <asm/system.h> | ||
25 | #include <asm/processor.h> | 24 | #include <asm/processor.h> |
26 | 25 | ||
27 | 26 | ||
diff --git a/arch/cris/kernel/setup.c b/arch/cris/kernel/setup.c index b712f4934c4b..32c3d248868e 100644 --- a/arch/cris/kernel/setup.c +++ b/arch/cris/kernel/setup.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <linux/pfn.h> | 20 | #include <linux/pfn.h> |
21 | #include <linux/cpu.h> | 21 | #include <linux/cpu.h> |
22 | #include <asm/setup.h> | 22 | #include <asm/setup.h> |
23 | #include <arch/system.h> | ||
23 | 24 | ||
24 | /* | 25 | /* |
25 | * Setup options | 26 | * Setup options |
diff --git a/arch/cris/kernel/traps.c b/arch/cris/kernel/traps.c index 8da53f34c7a7..a11ad3229f8c 100644 --- a/arch/cris/kernel/traps.c +++ b/arch/cris/kernel/traps.c | |||
@@ -17,6 +17,7 @@ | |||
17 | 17 | ||
18 | #include <asm/pgtable.h> | 18 | #include <asm/pgtable.h> |
19 | #include <asm/uaccess.h> | 19 | #include <asm/uaccess.h> |
20 | #include <arch/system.h> | ||
20 | 21 | ||
21 | extern void arch_enable_nmi(void); | 22 | extern void arch_enable_nmi(void); |
22 | extern void stop_watchdog(void); | 23 | extern void stop_watchdog(void); |
diff --git a/arch/cris/mm/fault.c b/arch/cris/mm/fault.c index 9dcac8ec8fa0..b4760d86e1bb 100644 --- a/arch/cris/mm/fault.c +++ b/arch/cris/mm/fault.c | |||
@@ -9,6 +9,7 @@ | |||
9 | #include <linux/module.h> | 9 | #include <linux/module.h> |
10 | #include <linux/wait.h> | 10 | #include <linux/wait.h> |
11 | #include <asm/uaccess.h> | 11 | #include <asm/uaccess.h> |
12 | #include <arch/system.h> | ||
12 | 13 | ||
13 | extern int find_fixup_code(struct pt_regs *); | 14 | extern int find_fixup_code(struct pt_regs *); |
14 | extern void die_if_kernel(const char *, struct pt_regs *, long); | 15 | extern void die_if_kernel(const char *, struct pt_regs *, long); |
diff --git a/arch/frv/include/asm/atomic.h b/arch/frv/include/asm/atomic.h index 0d8a7d661740..b86329d0e316 100644 --- a/arch/frv/include/asm/atomic.h +++ b/arch/frv/include/asm/atomic.h | |||
@@ -16,7 +16,7 @@ | |||
16 | 16 | ||
17 | #include <linux/types.h> | 17 | #include <linux/types.h> |
18 | #include <asm/spr-regs.h> | 18 | #include <asm/spr-regs.h> |
19 | #include <asm/system.h> | 19 | #include <asm/cmpxchg.h> |
20 | 20 | ||
21 | #ifdef CONFIG_SMP | 21 | #ifdef CONFIG_SMP |
22 | #error not SMP safe | 22 | #error not SMP safe |
@@ -181,61 +181,6 @@ static inline void atomic64_dec(atomic64_t *v) | |||
181 | #define atomic64_dec_and_test(v) (atomic64_dec_return((v)) == 0) | 181 | #define atomic64_dec_and_test(v) (atomic64_dec_return((v)) == 0) |
182 | #define atomic64_inc_and_test(v) (atomic64_inc_return((v)) == 0) | 182 | #define atomic64_inc_and_test(v) (atomic64_inc_return((v)) == 0) |
183 | 183 | ||
184 | /*****************************************************************************/ | ||
185 | /* | ||
186 | * exchange value with memory | ||
187 | */ | ||
188 | extern uint64_t __xchg_64(uint64_t i, volatile void *v); | ||
189 | |||
190 | #ifndef CONFIG_FRV_OUTOFLINE_ATOMIC_OPS | ||
191 | |||
192 | #define xchg(ptr, x) \ | ||
193 | ({ \ | ||
194 | __typeof__(ptr) __xg_ptr = (ptr); \ | ||
195 | __typeof__(*(ptr)) __xg_orig; \ | ||
196 | \ | ||
197 | switch (sizeof(__xg_orig)) { \ | ||
198 | case 4: \ | ||
199 | asm volatile( \ | ||
200 | "swap%I0 %M0,%1" \ | ||
201 | : "+m"(*__xg_ptr), "=r"(__xg_orig) \ | ||
202 | : "1"(x) \ | ||
203 | : "memory" \ | ||
204 | ); \ | ||
205 | break; \ | ||
206 | \ | ||
207 | default: \ | ||
208 | __xg_orig = (__typeof__(__xg_orig))0; \ | ||
209 | asm volatile("break"); \ | ||
210 | break; \ | ||
211 | } \ | ||
212 | \ | ||
213 | __xg_orig; \ | ||
214 | }) | ||
215 | |||
216 | #else | ||
217 | |||
218 | extern uint32_t __xchg_32(uint32_t i, volatile void *v); | ||
219 | |||
220 | #define xchg(ptr, x) \ | ||
221 | ({ \ | ||
222 | __typeof__(ptr) __xg_ptr = (ptr); \ | ||
223 | __typeof__(*(ptr)) __xg_orig; \ | ||
224 | \ | ||
225 | switch (sizeof(__xg_orig)) { \ | ||
226 | case 4: __xg_orig = (__typeof__(*(ptr))) __xchg_32((uint32_t) x, __xg_ptr); break; \ | ||
227 | default: \ | ||
228 | __xg_orig = (__typeof__(__xg_orig))0; \ | ||
229 | asm volatile("break"); \ | ||
230 | break; \ | ||
231 | } \ | ||
232 | __xg_orig; \ | ||
233 | }) | ||
234 | |||
235 | #endif | ||
236 | |||
237 | #define tas(ptr) (xchg((ptr), 1)) | ||
238 | |||
239 | #define atomic_cmpxchg(v, old, new) (cmpxchg(&(v)->counter, old, new)) | 184 | #define atomic_cmpxchg(v, old, new) (cmpxchg(&(v)->counter, old, new)) |
240 | #define atomic_xchg(v, new) (xchg(&(v)->counter, new)) | 185 | #define atomic_xchg(v, new) (xchg(&(v)->counter, new)) |
241 | #define atomic64_cmpxchg(v, old, new) (__cmpxchg_64(old, new, &(v)->counter)) | 186 | #define atomic64_cmpxchg(v, old, new) (__cmpxchg_64(old, new, &(v)->counter)) |
diff --git a/arch/frv/include/asm/barrier.h b/arch/frv/include/asm/barrier.h new file mode 100644 index 000000000000..06776ad9f5e9 --- /dev/null +++ b/arch/frv/include/asm/barrier.h | |||
@@ -0,0 +1,29 @@ | |||
1 | /* FR-V CPU memory barrier definitions | ||
2 | * | ||
3 | * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved. | ||
4 | * Written by David Howells (dhowells@redhat.com) | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or | ||
7 | * modify it under the terms of the GNU General Public License | ||
8 | * as published by the Free Software Foundation; either version | ||
9 | * 2 of the License, or (at your option) any later version. | ||
10 | */ | ||
11 | |||
12 | #ifndef _ASM_BARRIER_H | ||
13 | #define _ASM_BARRIER_H | ||
14 | |||
15 | #define nop() asm volatile ("nop"::) | ||
16 | |||
17 | #define mb() asm volatile ("membar" : : :"memory") | ||
18 | #define rmb() asm volatile ("membar" : : :"memory") | ||
19 | #define wmb() asm volatile ("membar" : : :"memory") | ||
20 | #define read_barrier_depends() do { } while (0) | ||
21 | |||
22 | #define smp_mb() barrier() | ||
23 | #define smp_rmb() barrier() | ||
24 | #define smp_wmb() barrier() | ||
25 | #define smp_read_barrier_depends() do {} while(0) | ||
26 | #define set_mb(var, value) \ | ||
27 | do { var = (value); barrier(); } while (0) | ||
28 | |||
29 | #endif /* _ASM_BARRIER_H */ | ||
diff --git a/arch/frv/include/asm/bug.h b/arch/frv/include/asm/bug.h index 2e054508a2f6..dd01bcf42ee6 100644 --- a/arch/frv/include/asm/bug.h +++ b/arch/frv/include/asm/bug.h | |||
@@ -51,4 +51,6 @@ do { \ | |||
51 | 51 | ||
52 | #include <asm-generic/bug.h> | 52 | #include <asm-generic/bug.h> |
53 | 53 | ||
54 | extern void die_if_kernel(const char *, ...) __attribute__((format(printf, 1, 2))); | ||
55 | |||
54 | #endif | 56 | #endif |
diff --git a/arch/frv/include/asm/system.h b/arch/frv/include/asm/cmpxchg.h index 6c10fd2c626d..5b04dd0aecab 100644 --- a/arch/frv/include/asm/system.h +++ b/arch/frv/include/asm/cmpxchg.h | |||
@@ -1,6 +1,9 @@ | |||
1 | /* system.h: FR-V CPU control definitions | 1 | /* xchg and cmpxchg operation emulation for FR-V |
2 | * | 2 | * |
3 | * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved. | 3 | * For an explanation of how atomic ops work in this arch, see: |
4 | * Documentation/frv/atomic-ops.txt | ||
5 | * | ||
6 | * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved. | ||
4 | * Written by David Howells (dhowells@redhat.com) | 7 | * Written by David Howells (dhowells@redhat.com) |
5 | * | 8 | * |
6 | * This program is free software; you can redistribute it and/or | 9 | * This program is free software; you can redistribute it and/or |
@@ -8,54 +11,65 @@ | |||
8 | * as published by the Free Software Foundation; either version | 11 | * as published by the Free Software Foundation; either version |
9 | * 2 of the License, or (at your option) any later version. | 12 | * 2 of the License, or (at your option) any later version. |
10 | */ | 13 | */ |
11 | 14 | #ifndef _ASM_CMPXCHG_H | |
12 | #ifndef _ASM_SYSTEM_H | 15 | #define _ASM_CMPXCHG_H |
13 | #define _ASM_SYSTEM_H | ||
14 | 16 | ||
15 | #include <linux/types.h> | 17 | #include <linux/types.h> |
16 | #include <linux/linkage.h> | ||
17 | #include <linux/kernel.h> | ||
18 | |||
19 | struct thread_struct; | ||
20 | 18 | ||
19 | /*****************************************************************************/ | ||
21 | /* | 20 | /* |
22 | * switch_to(prev, next) should switch from task `prev' to `next' | 21 | * exchange value with memory |
23 | * `prev' will never be the same as `next'. | ||
24 | * The `mb' is to tell GCC not to cache `current' across this call. | ||
25 | */ | 22 | */ |
26 | extern asmlinkage | 23 | extern uint64_t __xchg_64(uint64_t i, volatile void *v); |
27 | struct task_struct *__switch_to(struct thread_struct *prev_thread, | ||
28 | struct thread_struct *next_thread, | ||
29 | struct task_struct *prev); | ||
30 | |||
31 | #define switch_to(prev, next, last) \ | ||
32 | do { \ | ||
33 | (prev)->thread.sched_lr = \ | ||
34 | (unsigned long) __builtin_return_address(0); \ | ||
35 | (last) = __switch_to(&(prev)->thread, &(next)->thread, (prev)); \ | ||
36 | mb(); \ | ||
37 | } while(0) | ||
38 | 24 | ||
39 | /* | 25 | #ifndef CONFIG_FRV_OUTOFLINE_ATOMIC_OPS |
40 | * Force strict CPU ordering. | 26 | |
41 | */ | 27 | #define xchg(ptr, x) \ |
42 | #define nop() asm volatile ("nop"::) | 28 | ({ \ |
43 | #define mb() asm volatile ("membar" : : :"memory") | 29 | __typeof__(ptr) __xg_ptr = (ptr); \ |
44 | #define rmb() asm volatile ("membar" : : :"memory") | 30 | __typeof__(*(ptr)) __xg_orig; \ |
45 | #define wmb() asm volatile ("membar" : : :"memory") | 31 | \ |
46 | #define read_barrier_depends() do { } while (0) | 32 | switch (sizeof(__xg_orig)) { \ |
33 | case 4: \ | ||
34 | asm volatile( \ | ||
35 | "swap%I0 %M0,%1" \ | ||
36 | : "+m"(*__xg_ptr), "=r"(__xg_orig) \ | ||
37 | : "1"(x) \ | ||
38 | : "memory" \ | ||
39 | ); \ | ||
40 | break; \ | ||
41 | \ | ||
42 | default: \ | ||
43 | __xg_orig = (__typeof__(__xg_orig))0; \ | ||
44 | asm volatile("break"); \ | ||
45 | break; \ | ||
46 | } \ | ||
47 | \ | ||
48 | __xg_orig; \ | ||
49 | }) | ||
47 | 50 | ||
48 | #define smp_mb() barrier() | 51 | #else |
49 | #define smp_rmb() barrier() | ||
50 | #define smp_wmb() barrier() | ||
51 | #define smp_read_barrier_depends() do {} while(0) | ||
52 | #define set_mb(var, value) \ | ||
53 | do { var = (value); barrier(); } while (0) | ||
54 | 52 | ||
55 | extern void die_if_kernel(const char *, ...) __attribute__((format(printf, 1, 2))); | 53 | extern uint32_t __xchg_32(uint32_t i, volatile void *v); |
56 | extern void free_initmem(void); | 54 | |
55 | #define xchg(ptr, x) \ | ||
56 | ({ \ | ||
57 | __typeof__(ptr) __xg_ptr = (ptr); \ | ||
58 | __typeof__(*(ptr)) __xg_orig; \ | ||
59 | \ | ||
60 | switch (sizeof(__xg_orig)) { \ | ||
61 | case 4: __xg_orig = (__typeof__(*(ptr))) __xchg_32((uint32_t) x, __xg_ptr); break; \ | ||
62 | default: \ | ||
63 | __xg_orig = (__typeof__(__xg_orig))0; \ | ||
64 | asm volatile("break"); \ | ||
65 | break; \ | ||
66 | } \ | ||
67 | __xg_orig; \ | ||
68 | }) | ||
69 | |||
70 | #endif | ||
57 | 71 | ||
58 | #define arch_align_stack(x) (x) | 72 | #define tas(ptr) (xchg((ptr), 1)) |
59 | 73 | ||
60 | /*****************************************************************************/ | 74 | /*****************************************************************************/ |
61 | /* | 75 | /* |
@@ -155,4 +169,4 @@ static inline unsigned long __cmpxchg_local(volatile void *ptr, | |||
155 | (unsigned long)(n), sizeof(*(ptr)))) | 169 | (unsigned long)(n), sizeof(*(ptr)))) |
156 | #define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) | 170 | #define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) |
157 | 171 | ||
158 | #endif /* _ASM_SYSTEM_H */ | 172 | #endif /* _ASM_CMPXCHG_H */ |
diff --git a/arch/frv/include/asm/exec.h b/arch/frv/include/asm/exec.h new file mode 100644 index 000000000000..65c91305d4a7 --- /dev/null +++ b/arch/frv/include/asm/exec.h | |||
@@ -0,0 +1,17 @@ | |||
1 | /* FR-V CPU executable handling | ||
2 | * | ||
3 | * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved. | ||
4 | * Written by David Howells (dhowells@redhat.com) | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or | ||
7 | * modify it under the terms of the GNU General Public License | ||
8 | * as published by the Free Software Foundation; either version | ||
9 | * 2 of the License, or (at your option) any later version. | ||
10 | */ | ||
11 | |||
12 | #ifndef _ASM_EXEC_H | ||
13 | #define _ASM_EXEC_H | ||
14 | |||
15 | #define arch_align_stack(x) (x) | ||
16 | |||
17 | #endif /* _ASM_EXEC_H */ | ||
diff --git a/arch/frv/include/asm/switch_to.h b/arch/frv/include/asm/switch_to.h new file mode 100644 index 000000000000..2cf0f6a7fbb1 --- /dev/null +++ b/arch/frv/include/asm/switch_to.h | |||
@@ -0,0 +1,35 @@ | |||
1 | /* FR-V CPU basic task switching | ||
2 | * | ||
3 | * Copyright (C) 2003 Red Hat, Inc. All Rights Reserved. | ||
4 | * Written by David Howells (dhowells@redhat.com) | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or | ||
7 | * modify it under the terms of the GNU General Public License | ||
8 | * as published by the Free Software Foundation; either version | ||
9 | * 2 of the License, or (at your option) any later version. | ||
10 | */ | ||
11 | |||
12 | #ifndef _ASM_SWITCH_TO_H | ||
13 | #define _ASM_SWITCH_TO_H | ||
14 | |||
15 | #include <linux/thread_info.h> | ||
16 | |||
17 | /* | ||
18 | * switch_to(prev, next) should switch from task `prev' to `next' | ||
19 | * `prev' will never be the same as `next'. | ||
20 | * The `mb' is to tell GCC not to cache `current' across this call. | ||
21 | */ | ||
22 | extern asmlinkage | ||
23 | struct task_struct *__switch_to(struct thread_struct *prev_thread, | ||
24 | struct thread_struct *next_thread, | ||
25 | struct task_struct *prev); | ||
26 | |||
27 | #define switch_to(prev, next, last) \ | ||
28 | do { \ | ||
29 | (prev)->thread.sched_lr = \ | ||
30 | (unsigned long) __builtin_return_address(0); \ | ||
31 | (last) = __switch_to(&(prev)->thread, &(next)->thread, (prev)); \ | ||
32 | mb(); \ | ||
33 | } while(0) | ||
34 | |||
35 | #endif /* _ASM_SWITCH_TO_H */ | ||
diff --git a/arch/frv/kernel/debug-stub.c b/arch/frv/kernel/debug-stub.c index 2845139c8077..a0228f717ef2 100644 --- a/arch/frv/kernel/debug-stub.c +++ b/arch/frv/kernel/debug-stub.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <linux/serial_reg.h> | 17 | #include <linux/serial_reg.h> |
18 | #include <linux/start_kernel.h> | 18 | #include <linux/start_kernel.h> |
19 | 19 | ||
20 | #include <asm/system.h> | ||
21 | #include <asm/serial-regs.h> | 20 | #include <asm/serial-regs.h> |
22 | #include <asm/timer-regs.h> | 21 | #include <asm/timer-regs.h> |
23 | #include <asm/irc-regs.h> | 22 | #include <asm/irc-regs.h> |
diff --git a/arch/frv/kernel/gdb-io.c b/arch/frv/kernel/gdb-io.c index 2ca641d199f8..0707d35079ba 100644 --- a/arch/frv/kernel/gdb-io.c +++ b/arch/frv/kernel/gdb-io.c | |||
@@ -19,7 +19,6 @@ | |||
19 | #include <linux/serial_reg.h> | 19 | #include <linux/serial_reg.h> |
20 | 20 | ||
21 | #include <asm/pgtable.h> | 21 | #include <asm/pgtable.h> |
22 | #include <asm/system.h> | ||
23 | #include <asm/irc-regs.h> | 22 | #include <asm/irc-regs.h> |
24 | #include <asm/timer-regs.h> | 23 | #include <asm/timer-regs.h> |
25 | #include <asm/gdb-stub.h> | 24 | #include <asm/gdb-stub.h> |
diff --git a/arch/frv/kernel/gdb-stub.c b/arch/frv/kernel/gdb-stub.c index a6d5381c94fe..bbe78b0bffec 100644 --- a/arch/frv/kernel/gdb-stub.c +++ b/arch/frv/kernel/gdb-stub.c | |||
@@ -126,7 +126,6 @@ | |||
126 | 126 | ||
127 | #include <asm/asm-offsets.h> | 127 | #include <asm/asm-offsets.h> |
128 | #include <asm/pgtable.h> | 128 | #include <asm/pgtable.h> |
129 | #include <asm/system.h> | ||
130 | #include <asm/gdb-stub.h> | 129 | #include <asm/gdb-stub.h> |
131 | 130 | ||
132 | #define LEDS(x) do { /* *(u32*)0xe1200004 = ~(x); mb(); */ } while(0) | 131 | #define LEDS(x) do { /* *(u32*)0xe1200004 = ~(x); mb(); */ } while(0) |
diff --git a/arch/frv/kernel/irq-mb93091.c b/arch/frv/kernel/irq-mb93091.c index 9afc2ea400dc..2cc327a1ca44 100644 --- a/arch/frv/kernel/irq-mb93091.c +++ b/arch/frv/kernel/irq-mb93091.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include <linux/bitops.h> | 20 | #include <linux/bitops.h> |
21 | 21 | ||
22 | #include <asm/io.h> | 22 | #include <asm/io.h> |
23 | #include <asm/system.h> | ||
24 | #include <asm/delay.h> | 23 | #include <asm/delay.h> |
25 | #include <asm/irq.h> | 24 | #include <asm/irq.h> |
26 | #include <asm/irc-regs.h> | 25 | #include <asm/irc-regs.h> |
diff --git a/arch/frv/kernel/irq-mb93093.c b/arch/frv/kernel/irq-mb93093.c index 4d4ad09d3c91..95e4eb4f1f38 100644 --- a/arch/frv/kernel/irq-mb93093.c +++ b/arch/frv/kernel/irq-mb93093.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include <linux/bitops.h> | 20 | #include <linux/bitops.h> |
21 | 21 | ||
22 | #include <asm/io.h> | 22 | #include <asm/io.h> |
23 | #include <asm/system.h> | ||
24 | #include <asm/delay.h> | 23 | #include <asm/delay.h> |
25 | #include <asm/irq.h> | 24 | #include <asm/irq.h> |
26 | #include <asm/irc-regs.h> | 25 | #include <asm/irc-regs.h> |
diff --git a/arch/frv/kernel/irq-mb93493.c b/arch/frv/kernel/irq-mb93493.c index 4d034c7840c9..ba648da0932d 100644 --- a/arch/frv/kernel/irq-mb93493.c +++ b/arch/frv/kernel/irq-mb93493.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include <linux/bitops.h> | 20 | #include <linux/bitops.h> |
21 | 21 | ||
22 | #include <asm/io.h> | 22 | #include <asm/io.h> |
23 | #include <asm/system.h> | ||
24 | #include <asm/delay.h> | 23 | #include <asm/delay.h> |
25 | #include <asm/irq.h> | 24 | #include <asm/irq.h> |
26 | #include <asm/irc-regs.h> | 25 | #include <asm/irc-regs.h> |
diff --git a/arch/frv/kernel/irq.c b/arch/frv/kernel/irq.c index 3facbc28cbbc..2239346fa3db 100644 --- a/arch/frv/kernel/irq.c +++ b/arch/frv/kernel/irq.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <linux/atomic.h> | 28 | #include <linux/atomic.h> |
29 | #include <asm/io.h> | 29 | #include <asm/io.h> |
30 | #include <asm/smp.h> | 30 | #include <asm/smp.h> |
31 | #include <asm/system.h> | ||
32 | #include <asm/uaccess.h> | 31 | #include <asm/uaccess.h> |
33 | #include <asm/pgalloc.h> | 32 | #include <asm/pgalloc.h> |
34 | #include <asm/delay.h> | 33 | #include <asm/delay.h> |
diff --git a/arch/frv/kernel/process.c b/arch/frv/kernel/process.c index 29cc49783787..d4de48bd5efe 100644 --- a/arch/frv/kernel/process.c +++ b/arch/frv/kernel/process.c | |||
@@ -28,7 +28,6 @@ | |||
28 | 28 | ||
29 | #include <asm/asm-offsets.h> | 29 | #include <asm/asm-offsets.h> |
30 | #include <asm/uaccess.h> | 30 | #include <asm/uaccess.h> |
31 | #include <asm/system.h> | ||
32 | #include <asm/setup.h> | 31 | #include <asm/setup.h> |
33 | #include <asm/pgtable.h> | 32 | #include <asm/pgtable.h> |
34 | #include <asm/tlb.h> | 33 | #include <asm/tlb.h> |
diff --git a/arch/frv/kernel/ptrace.c b/arch/frv/kernel/ptrace.c index 9d68f7fac730..3987ff88dab0 100644 --- a/arch/frv/kernel/ptrace.c +++ b/arch/frv/kernel/ptrace.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include <asm/uaccess.h> | 26 | #include <asm/uaccess.h> |
27 | #include <asm/page.h> | 27 | #include <asm/page.h> |
28 | #include <asm/pgtable.h> | 28 | #include <asm/pgtable.h> |
29 | #include <asm/system.h> | ||
30 | #include <asm/processor.h> | 29 | #include <asm/processor.h> |
31 | #include <asm/unistd.h> | 30 | #include <asm/unistd.h> |
32 | 31 | ||
diff --git a/arch/frv/kernel/traps.c b/arch/frv/kernel/traps.c index 1d2dfe67d442..5cfd1420b091 100644 --- a/arch/frv/kernel/traps.c +++ b/arch/frv/kernel/traps.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include <asm/asm-offsets.h> | 23 | #include <asm/asm-offsets.h> |
24 | #include <asm/setup.h> | 24 | #include <asm/setup.h> |
25 | #include <asm/fpu.h> | 25 | #include <asm/fpu.h> |
26 | #include <asm/system.h> | ||
27 | #include <asm/uaccess.h> | 26 | #include <asm/uaccess.h> |
28 | #include <asm/pgtable.h> | 27 | #include <asm/pgtable.h> |
29 | #include <asm/siginfo.h> | 28 | #include <asm/siginfo.h> |
diff --git a/arch/frv/mm/fault.c b/arch/frv/mm/fault.c index a325d57a83d5..331c1e2cfb67 100644 --- a/arch/frv/mm/fault.c +++ b/arch/frv/mm/fault.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include <linux/ptrace.h> | 20 | #include <linux/ptrace.h> |
21 | #include <linux/hardirq.h> | 21 | #include <linux/hardirq.h> |
22 | 22 | ||
23 | #include <asm/system.h> | ||
24 | #include <asm/pgtable.h> | 23 | #include <asm/pgtable.h> |
25 | #include <asm/uaccess.h> | 24 | #include <asm/uaccess.h> |
26 | #include <asm/gdb-stub.h> | 25 | #include <asm/gdb-stub.h> |
diff --git a/arch/frv/mm/init.c b/arch/frv/mm/init.c index fbe5f0dbae06..a19effcccb34 100644 --- a/arch/frv/mm/init.c +++ b/arch/frv/mm/init.c | |||
@@ -33,7 +33,6 @@ | |||
33 | #include <asm/segment.h> | 33 | #include <asm/segment.h> |
34 | #include <asm/page.h> | 34 | #include <asm/page.h> |
35 | #include <asm/pgtable.h> | 35 | #include <asm/pgtable.h> |
36 | #include <asm/system.h> | ||
37 | #include <asm/mmu_context.h> | 36 | #include <asm/mmu_context.h> |
38 | #include <asm/virtconvert.h> | 37 | #include <asm/virtconvert.h> |
39 | #include <asm/sections.h> | 38 | #include <asm/sections.h> |
diff --git a/arch/frv/mm/kmap.c b/arch/frv/mm/kmap.c index fb78be38ea02..e9217e605aa8 100644 --- a/arch/frv/mm/kmap.c +++ b/arch/frv/mm/kmap.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <asm/page.h> | 21 | #include <asm/page.h> |
22 | #include <asm/pgalloc.h> | 22 | #include <asm/pgalloc.h> |
23 | #include <asm/io.h> | 23 | #include <asm/io.h> |
24 | #include <asm/system.h> | ||
25 | 24 | ||
26 | #undef DEBUG | 25 | #undef DEBUG |
27 | 26 | ||
diff --git a/arch/h8300/include/asm/atomic.h b/arch/h8300/include/asm/atomic.h index f5a38c1f5489..40901e353c21 100644 --- a/arch/h8300/include/asm/atomic.h +++ b/arch/h8300/include/asm/atomic.h | |||
@@ -2,6 +2,7 @@ | |||
2 | #define __ARCH_H8300_ATOMIC__ | 2 | #define __ARCH_H8300_ATOMIC__ |
3 | 3 | ||
4 | #include <linux/types.h> | 4 | #include <linux/types.h> |
5 | #include <asm/cmpxchg.h> | ||
5 | 6 | ||
6 | /* | 7 | /* |
7 | * Atomic operations that C can't guarantee us. Useful for | 8 | * Atomic operations that C can't guarantee us. Useful for |
@@ -13,7 +14,6 @@ | |||
13 | #define atomic_read(v) (*(volatile int *)&(v)->counter) | 14 | #define atomic_read(v) (*(volatile int *)&(v)->counter) |
14 | #define atomic_set(v, i) (((v)->counter) = i) | 15 | #define atomic_set(v, i) (((v)->counter) = i) |
15 | 16 | ||
16 | #include <asm/system.h> | ||
17 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
18 | 18 | ||
19 | static __inline__ int atomic_add_return(int i, atomic_t *v) | 19 | static __inline__ int atomic_add_return(int i, atomic_t *v) |
@@ -102,8 +102,6 @@ static inline int atomic_cmpxchg(atomic_t *v, int old, int new) | |||
102 | return ret; | 102 | return ret; |
103 | } | 103 | } |
104 | 104 | ||
105 | #define atomic_xchg(v, new) (xchg(&((v)->counter), new)) | ||
106 | |||
107 | static inline int __atomic_add_unless(atomic_t *v, int a, int u) | 105 | static inline int __atomic_add_unless(atomic_t *v, int a, int u) |
108 | { | 106 | { |
109 | int ret; | 107 | int ret; |
diff --git a/arch/h8300/include/asm/barrier.h b/arch/h8300/include/asm/barrier.h new file mode 100644 index 000000000000..c7283c343c55 --- /dev/null +++ b/arch/h8300/include/asm/barrier.h | |||
@@ -0,0 +1,27 @@ | |||
1 | #ifndef _H8300_BARRIER_H | ||
2 | #define _H8300_BARRIER_H | ||
3 | |||
4 | #define nop() asm volatile ("nop"::) | ||
5 | |||
6 | /* | ||
7 | * Force strict CPU ordering. | ||
8 | * Not really required on H8... | ||
9 | */ | ||
10 | #define mb() asm volatile ("" : : :"memory") | ||
11 | #define rmb() asm volatile ("" : : :"memory") | ||
12 | #define wmb() asm volatile ("" : : :"memory") | ||
13 | #define set_mb(var, value) do { xchg(&var, value); } while (0) | ||
14 | |||
15 | #ifdef CONFIG_SMP | ||
16 | #define smp_mb() mb() | ||
17 | #define smp_rmb() rmb() | ||
18 | #define smp_wmb() wmb() | ||
19 | #define smp_read_barrier_depends() read_barrier_depends() | ||
20 | #else | ||
21 | #define smp_mb() barrier() | ||
22 | #define smp_rmb() barrier() | ||
23 | #define smp_wmb() barrier() | ||
24 | #define smp_read_barrier_depends() do { } while(0) | ||
25 | #endif | ||
26 | |||
27 | #endif /* _H8300_BARRIER_H */ | ||
diff --git a/arch/h8300/include/asm/bitops.h b/arch/h8300/include/asm/bitops.h index e856c1bb3415..eb34e0cd33d5 100644 --- a/arch/h8300/include/asm/bitops.h +++ b/arch/h8300/include/asm/bitops.h | |||
@@ -7,7 +7,6 @@ | |||
7 | */ | 7 | */ |
8 | 8 | ||
9 | #include <linux/compiler.h> | 9 | #include <linux/compiler.h> |
10 | #include <asm/system.h> | ||
11 | 10 | ||
12 | #ifdef __KERNEL__ | 11 | #ifdef __KERNEL__ |
13 | 12 | ||
diff --git a/arch/h8300/include/asm/bug.h b/arch/h8300/include/asm/bug.h index 887c19773185..1e1be8119935 100644 --- a/arch/h8300/include/asm/bug.h +++ b/arch/h8300/include/asm/bug.h | |||
@@ -5,4 +5,8 @@ | |||
5 | #define is_valid_bugaddr(addr) (1) | 5 | #define is_valid_bugaddr(addr) (1) |
6 | 6 | ||
7 | #include <asm-generic/bug.h> | 7 | #include <asm-generic/bug.h> |
8 | |||
9 | struct pt_regs; | ||
10 | extern void die(const char *str, struct pt_regs *fp, unsigned long err); | ||
11 | |||
8 | #endif | 12 | #endif |
diff --git a/arch/h8300/include/asm/cmpxchg.h b/arch/h8300/include/asm/cmpxchg.h new file mode 100644 index 000000000000..cdb203ef681f --- /dev/null +++ b/arch/h8300/include/asm/cmpxchg.h | |||
@@ -0,0 +1,60 @@ | |||
1 | #ifndef __ARCH_H8300_CMPXCHG__ | ||
2 | #define __ARCH_H8300_CMPXCHG__ | ||
3 | |||
4 | #include <linux/irqflags.h> | ||
5 | |||
6 | #define xchg(ptr,x) ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr)))) | ||
7 | |||
8 | struct __xchg_dummy { unsigned long a[100]; }; | ||
9 | #define __xg(x) ((volatile struct __xchg_dummy *)(x)) | ||
10 | |||
11 | static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int size) | ||
12 | { | ||
13 | unsigned long tmp, flags; | ||
14 | |||
15 | local_irq_save(flags); | ||
16 | |||
17 | switch (size) { | ||
18 | case 1: | ||
19 | __asm__ __volatile__ | ||
20 | ("mov.b %2,%0\n\t" | ||
21 | "mov.b %1,%2" | ||
22 | : "=&r" (tmp) : "r" (x), "m" (*__xg(ptr)) : "memory"); | ||
23 | break; | ||
24 | case 2: | ||
25 | __asm__ __volatile__ | ||
26 | ("mov.w %2,%0\n\t" | ||
27 | "mov.w %1,%2" | ||
28 | : "=&r" (tmp) : "r" (x), "m" (*__xg(ptr)) : "memory"); | ||
29 | break; | ||
30 | case 4: | ||
31 | __asm__ __volatile__ | ||
32 | ("mov.l %2,%0\n\t" | ||
33 | "mov.l %1,%2" | ||
34 | : "=&r" (tmp) : "r" (x), "m" (*__xg(ptr)) : "memory"); | ||
35 | break; | ||
36 | default: | ||
37 | tmp = 0; | ||
38 | } | ||
39 | local_irq_restore(flags); | ||
40 | return tmp; | ||
41 | } | ||
42 | |||
43 | #include <asm-generic/cmpxchg-local.h> | ||
44 | |||
45 | /* | ||
46 | * cmpxchg_local and cmpxchg64_local are atomic wrt current CPU. Always make | ||
47 | * them available. | ||
48 | */ | ||
49 | #define cmpxchg_local(ptr, o, n) \ | ||
50 | ((__typeof__(*(ptr)))__cmpxchg_local_generic((ptr), (unsigned long)(o),\ | ||
51 | (unsigned long)(n), sizeof(*(ptr)))) | ||
52 | #define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) | ||
53 | |||
54 | #ifndef CONFIG_SMP | ||
55 | #include <asm-generic/cmpxchg.h> | ||
56 | #endif | ||
57 | |||
58 | #define atomic_xchg(v, new) (xchg(&((v)->counter), new)) | ||
59 | |||
60 | #endif /* __ARCH_H8300_CMPXCHG__ */ | ||
diff --git a/arch/h8300/include/asm/exec.h b/arch/h8300/include/asm/exec.h new file mode 100644 index 000000000000..c01c45ccadf9 --- /dev/null +++ b/arch/h8300/include/asm/exec.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef _H8300_EXEC_H | ||
2 | #define _H8300_EXEC_H | ||
3 | |||
4 | #define arch_align_stack(x) (x) | ||
5 | |||
6 | #endif /* _H8300_EXEC_H */ | ||
diff --git a/arch/h8300/include/asm/processor.h b/arch/h8300/include/asm/processor.h index e834b6018897..61fabf1788c6 100644 --- a/arch/h8300/include/asm/processor.h +++ b/arch/h8300/include/asm/processor.h | |||
@@ -135,4 +135,9 @@ unsigned long get_wchan(struct task_struct *p); | |||
135 | 135 | ||
136 | #define cpu_relax() barrier() | 136 | #define cpu_relax() barrier() |
137 | 137 | ||
138 | #define HARD_RESET_NOW() ({ \ | ||
139 | local_irq_disable(); \ | ||
140 | asm("jmp @@0"); \ | ||
141 | }) | ||
142 | |||
138 | #endif | 143 | #endif |
diff --git a/arch/h8300/include/asm/switch_to.h b/arch/h8300/include/asm/switch_to.h new file mode 100644 index 000000000000..cdd8731ce487 --- /dev/null +++ b/arch/h8300/include/asm/switch_to.h | |||
@@ -0,0 +1,50 @@ | |||
1 | #ifndef _H8300_SWITCH_TO_H | ||
2 | #define _H8300_SWITCH_TO_H | ||
3 | |||
4 | /* | ||
5 | * switch_to(n) should switch tasks to task ptr, first checking that | ||
6 | * ptr isn't the current task, in which case it does nothing. This | ||
7 | * also clears the TS-flag if the task we switched to has used the | ||
8 | * math co-processor latest. | ||
9 | */ | ||
10 | /* | ||
11 | * switch_to() saves the extra registers, that are not saved | ||
12 | * automatically by SAVE_SWITCH_STACK in resume(), ie. d0-d5 and | ||
13 | * a0-a1. Some of these are used by schedule() and its predecessors | ||
14 | * and so we might get see unexpected behaviors when a task returns | ||
15 | * with unexpected register values. | ||
16 | * | ||
17 | * syscall stores these registers itself and none of them are used | ||
18 | * by syscall after the function in the syscall has been called. | ||
19 | * | ||
20 | * Beware that resume now expects *next to be in d1 and the offset of | ||
21 | * tss to be in a1. This saves a few instructions as we no longer have | ||
22 | * to push them onto the stack and read them back right after. | ||
23 | * | ||
24 | * 02/17/96 - Jes Sorensen (jds@kom.auc.dk) | ||
25 | * | ||
26 | * Changed 96/09/19 by Andreas Schwab | ||
27 | * pass prev in a0, next in a1, offset of tss in d1, and whether | ||
28 | * the mm structures are shared in d2 (to avoid atc flushing). | ||
29 | * | ||
30 | * H8/300 Porting 2002/09/04 Yoshinori Sato | ||
31 | */ | ||
32 | |||
33 | asmlinkage void resume(void); | ||
34 | #define switch_to(prev,next,last) { \ | ||
35 | void *_last; \ | ||
36 | __asm__ __volatile__( \ | ||
37 | "mov.l %1, er0\n\t" \ | ||
38 | "mov.l %2, er1\n\t" \ | ||
39 | "mov.l %3, er2\n\t" \ | ||
40 | "jsr @_resume\n\t" \ | ||
41 | "mov.l er2,%0\n\t" \ | ||
42 | : "=r" (_last) \ | ||
43 | : "r" (&(prev->thread)), \ | ||
44 | "r" (&(next->thread)), \ | ||
45 | "g" (prev) \ | ||
46 | : "cc", "er0", "er1", "er2", "er3"); \ | ||
47 | (last) = _last; \ | ||
48 | } | ||
49 | |||
50 | #endif /* _H8300_SWITCH_TO_H */ | ||
diff --git a/arch/h8300/include/asm/system.h b/arch/h8300/include/asm/system.h deleted file mode 100644 index 2c2382e50d93..000000000000 --- a/arch/h8300/include/asm/system.h +++ /dev/null | |||
@@ -1,140 +0,0 @@ | |||
1 | #ifndef _H8300_SYSTEM_H | ||
2 | #define _H8300_SYSTEM_H | ||
3 | |||
4 | #include <linux/linkage.h> | ||
5 | #include <linux/irqflags.h> | ||
6 | |||
7 | struct pt_regs; | ||
8 | |||
9 | /* | ||
10 | * switch_to(n) should switch tasks to task ptr, first checking that | ||
11 | * ptr isn't the current task, in which case it does nothing. This | ||
12 | * also clears the TS-flag if the task we switched to has used the | ||
13 | * math co-processor latest. | ||
14 | */ | ||
15 | /* | ||
16 | * switch_to() saves the extra registers, that are not saved | ||
17 | * automatically by SAVE_SWITCH_STACK in resume(), ie. d0-d5 and | ||
18 | * a0-a1. Some of these are used by schedule() and its predecessors | ||
19 | * and so we might get see unexpected behaviors when a task returns | ||
20 | * with unexpected register values. | ||
21 | * | ||
22 | * syscall stores these registers itself and none of them are used | ||
23 | * by syscall after the function in the syscall has been called. | ||
24 | * | ||
25 | * Beware that resume now expects *next to be in d1 and the offset of | ||
26 | * tss to be in a1. This saves a few instructions as we no longer have | ||
27 | * to push them onto the stack and read them back right after. | ||
28 | * | ||
29 | * 02/17/96 - Jes Sorensen (jds@kom.auc.dk) | ||
30 | * | ||
31 | * Changed 96/09/19 by Andreas Schwab | ||
32 | * pass prev in a0, next in a1, offset of tss in d1, and whether | ||
33 | * the mm structures are shared in d2 (to avoid atc flushing). | ||
34 | * | ||
35 | * H8/300 Porting 2002/09/04 Yoshinori Sato | ||
36 | */ | ||
37 | |||
38 | asmlinkage void resume(void); | ||
39 | #define switch_to(prev,next,last) { \ | ||
40 | void *_last; \ | ||
41 | __asm__ __volatile__( \ | ||
42 | "mov.l %1, er0\n\t" \ | ||
43 | "mov.l %2, er1\n\t" \ | ||
44 | "mov.l %3, er2\n\t" \ | ||
45 | "jsr @_resume\n\t" \ | ||
46 | "mov.l er2,%0\n\t" \ | ||
47 | : "=r" (_last) \ | ||
48 | : "r" (&(prev->thread)), \ | ||
49 | "r" (&(next->thread)), \ | ||
50 | "g" (prev) \ | ||
51 | : "cc", "er0", "er1", "er2", "er3"); \ | ||
52 | (last) = _last; \ | ||
53 | } | ||
54 | |||
55 | #define iret() __asm__ __volatile__ ("rte": : :"memory", "sp", "cc") | ||
56 | |||
57 | /* | ||
58 | * Force strict CPU ordering. | ||
59 | * Not really required on H8... | ||
60 | */ | ||
61 | #define nop() asm volatile ("nop"::) | ||
62 | #define mb() asm volatile ("" : : :"memory") | ||
63 | #define rmb() asm volatile ("" : : :"memory") | ||
64 | #define wmb() asm volatile ("" : : :"memory") | ||
65 | #define set_mb(var, value) do { xchg(&var, value); } while (0) | ||
66 | |||
67 | #ifdef CONFIG_SMP | ||
68 | #define smp_mb() mb() | ||
69 | #define smp_rmb() rmb() | ||
70 | #define smp_wmb() wmb() | ||
71 | #define smp_read_barrier_depends() read_barrier_depends() | ||
72 | #else | ||
73 | #define smp_mb() barrier() | ||
74 | #define smp_rmb() barrier() | ||
75 | #define smp_wmb() barrier() | ||
76 | #define smp_read_barrier_depends() do { } while(0) | ||
77 | #endif | ||
78 | |||
79 | #define xchg(ptr,x) ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr)))) | ||
80 | |||
81 | struct __xchg_dummy { unsigned long a[100]; }; | ||
82 | #define __xg(x) ((volatile struct __xchg_dummy *)(x)) | ||
83 | |||
84 | static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int size) | ||
85 | { | ||
86 | unsigned long tmp, flags; | ||
87 | |||
88 | local_irq_save(flags); | ||
89 | |||
90 | switch (size) { | ||
91 | case 1: | ||
92 | __asm__ __volatile__ | ||
93 | ("mov.b %2,%0\n\t" | ||
94 | "mov.b %1,%2" | ||
95 | : "=&r" (tmp) : "r" (x), "m" (*__xg(ptr)) : "memory"); | ||
96 | break; | ||
97 | case 2: | ||
98 | __asm__ __volatile__ | ||
99 | ("mov.w %2,%0\n\t" | ||
100 | "mov.w %1,%2" | ||
101 | : "=&r" (tmp) : "r" (x), "m" (*__xg(ptr)) : "memory"); | ||
102 | break; | ||
103 | case 4: | ||
104 | __asm__ __volatile__ | ||
105 | ("mov.l %2,%0\n\t" | ||
106 | "mov.l %1,%2" | ||
107 | : "=&r" (tmp) : "r" (x), "m" (*__xg(ptr)) : "memory"); | ||
108 | break; | ||
109 | default: | ||
110 | tmp = 0; | ||
111 | } | ||
112 | local_irq_restore(flags); | ||
113 | return tmp; | ||
114 | } | ||
115 | |||
116 | #define HARD_RESET_NOW() ({ \ | ||
117 | local_irq_disable(); \ | ||
118 | asm("jmp @@0"); \ | ||
119 | }) | ||
120 | |||
121 | #include <asm-generic/cmpxchg-local.h> | ||
122 | |||
123 | /* | ||
124 | * cmpxchg_local and cmpxchg64_local are atomic wrt current CPU. Always make | ||
125 | * them available. | ||
126 | */ | ||
127 | #define cmpxchg_local(ptr, o, n) \ | ||
128 | ((__typeof__(*(ptr)))__cmpxchg_local_generic((ptr), (unsigned long)(o),\ | ||
129 | (unsigned long)(n), sizeof(*(ptr)))) | ||
130 | #define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) | ||
131 | |||
132 | #ifndef CONFIG_SMP | ||
133 | #include <asm-generic/cmpxchg.h> | ||
134 | #endif | ||
135 | |||
136 | #define arch_align_stack(x) (x) | ||
137 | |||
138 | extern void die(const char *str, struct pt_regs *fp, unsigned long err); | ||
139 | |||
140 | #endif /* _H8300_SYSTEM_H */ | ||
diff --git a/arch/h8300/kernel/irq.c b/arch/h8300/kernel/irq.c index 1f67fed476af..2fa8ac7b79b5 100644 --- a/arch/h8300/kernel/irq.c +++ b/arch/h8300/kernel/irq.c | |||
@@ -16,7 +16,6 @@ | |||
16 | #include <linux/irq.h> | 16 | #include <linux/irq.h> |
17 | #include <linux/interrupt.h> | 17 | #include <linux/interrupt.h> |
18 | 18 | ||
19 | #include <asm/system.h> | ||
20 | #include <asm/traps.h> | 19 | #include <asm/traps.h> |
21 | #include <asm/io.h> | 20 | #include <asm/io.h> |
22 | #include <asm/setup.h> | 21 | #include <asm/setup.h> |
diff --git a/arch/h8300/kernel/process.c b/arch/h8300/kernel/process.c index 1a173b35f475..0e9c315be104 100644 --- a/arch/h8300/kernel/process.c +++ b/arch/h8300/kernel/process.c | |||
@@ -38,7 +38,6 @@ | |||
38 | #include <linux/slab.h> | 38 | #include <linux/slab.h> |
39 | 39 | ||
40 | #include <asm/uaccess.h> | 40 | #include <asm/uaccess.h> |
41 | #include <asm/system.h> | ||
42 | #include <asm/traps.h> | 41 | #include <asm/traps.h> |
43 | #include <asm/setup.h> | 42 | #include <asm/setup.h> |
44 | #include <asm/pgtable.h> | 43 | #include <asm/pgtable.h> |
diff --git a/arch/h8300/kernel/ptrace.c b/arch/h8300/kernel/ptrace.c index 497fa89b5df4..748cf6585aa4 100644 --- a/arch/h8300/kernel/ptrace.c +++ b/arch/h8300/kernel/ptrace.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <asm/uaccess.h> | 27 | #include <asm/uaccess.h> |
28 | #include <asm/page.h> | 28 | #include <asm/page.h> |
29 | #include <asm/pgtable.h> | 29 | #include <asm/pgtable.h> |
30 | #include <asm/system.h> | ||
31 | #include <asm/processor.h> | 30 | #include <asm/processor.h> |
32 | #include <asm/signal.h> | 31 | #include <asm/signal.h> |
33 | 32 | ||
diff --git a/arch/h8300/kernel/traps.c b/arch/h8300/kernel/traps.c index dfa05bd908b6..7833aa3e7c7d 100644 --- a/arch/h8300/kernel/traps.c +++ b/arch/h8300/kernel/traps.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <linux/module.h> | 22 | #include <linux/module.h> |
23 | #include <linux/bug.h> | 23 | #include <linux/bug.h> |
24 | 24 | ||
25 | #include <asm/system.h> | ||
26 | #include <asm/irq.h> | 25 | #include <asm/irq.h> |
27 | #include <asm/traps.h> | 26 | #include <asm/traps.h> |
28 | #include <asm/page.h> | 27 | #include <asm/page.h> |
diff --git a/arch/h8300/mm/fault.c b/arch/h8300/mm/fault.c index 1d092abebf03..472535977006 100644 --- a/arch/h8300/mm/fault.c +++ b/arch/h8300/mm/fault.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
18 | #include <linux/ptrace.h> | 18 | #include <linux/ptrace.h> |
19 | 19 | ||
20 | #include <asm/system.h> | ||
21 | #include <asm/pgtable.h> | 20 | #include <asm/pgtable.h> |
22 | 21 | ||
23 | /* | 22 | /* |
diff --git a/arch/h8300/mm/init.c b/arch/h8300/mm/init.c index 7cc3380f250c..973369c32a95 100644 --- a/arch/h8300/mm/init.c +++ b/arch/h8300/mm/init.c | |||
@@ -36,7 +36,6 @@ | |||
36 | #include <asm/segment.h> | 36 | #include <asm/segment.h> |
37 | #include <asm/page.h> | 37 | #include <asm/page.h> |
38 | #include <asm/pgtable.h> | 38 | #include <asm/pgtable.h> |
39 | #include <asm/system.h> | ||
40 | 39 | ||
41 | #undef DEBUG | 40 | #undef DEBUG |
42 | 41 | ||
diff --git a/arch/h8300/mm/kmap.c b/arch/h8300/mm/kmap.c index 944a502c2e56..f79edcdadf39 100644 --- a/arch/h8300/mm/kmap.c +++ b/arch/h8300/mm/kmap.c | |||
@@ -19,7 +19,6 @@ | |||
19 | #include <asm/page.h> | 19 | #include <asm/page.h> |
20 | #include <asm/pgalloc.h> | 20 | #include <asm/pgalloc.h> |
21 | #include <asm/io.h> | 21 | #include <asm/io.h> |
22 | #include <asm/system.h> | ||
23 | 22 | ||
24 | #undef DEBUG | 23 | #undef DEBUG |
25 | 24 | ||
diff --git a/arch/h8300/mm/memory.c b/arch/h8300/mm/memory.c index 5552ddfaab5e..06e364641392 100644 --- a/arch/h8300/mm/memory.c +++ b/arch/h8300/mm/memory.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include <asm/segment.h> | 26 | #include <asm/segment.h> |
27 | #include <asm/page.h> | 27 | #include <asm/page.h> |
28 | #include <asm/pgtable.h> | 28 | #include <asm/pgtable.h> |
29 | #include <asm/system.h> | ||
30 | #include <asm/traps.h> | 29 | #include <asm/traps.h> |
31 | #include <asm/io.h> | 30 | #include <asm/io.h> |
32 | 31 | ||
diff --git a/arch/hexagon/include/asm/atomic.h b/arch/hexagon/include/asm/atomic.h index e220f9053035..3e258043337b 100644 --- a/arch/hexagon/include/asm/atomic.h +++ b/arch/hexagon/include/asm/atomic.h | |||
@@ -23,6 +23,7 @@ | |||
23 | #define _ASM_ATOMIC_H | 23 | #define _ASM_ATOMIC_H |
24 | 24 | ||
25 | #include <linux/types.h> | 25 | #include <linux/types.h> |
26 | #include <asm/cmpxchg.h> | ||
26 | 27 | ||
27 | #define ATOMIC_INIT(i) { (i) } | 28 | #define ATOMIC_INIT(i) { (i) } |
28 | #define atomic_set(v, i) ((v)->counter = (i)) | 29 | #define atomic_set(v, i) ((v)->counter = (i)) |
diff --git a/arch/hexagon/include/asm/barrier.h b/arch/hexagon/include/asm/barrier.h new file mode 100644 index 000000000000..a4ed6e26cb1d --- /dev/null +++ b/arch/hexagon/include/asm/barrier.h | |||
@@ -0,0 +1,41 @@ | |||
1 | /* | ||
2 | * Memory barrier definitions for the Hexagon architecture | ||
3 | * | ||
4 | * Copyright (c) 2010-2011, Code Aurora Forum. All rights reserved. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 and | ||
8 | * only version 2 as published by the Free Software Foundation. | ||
9 | * | ||
10 | * This program is distributed in the hope that it will be useful, | ||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | * GNU General Public License for more details. | ||
14 | * | ||
15 | * You should have received a copy of the GNU General Public License | ||
16 | * along with this program; if not, write to the Free Software | ||
17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA | ||
18 | * 02110-1301, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef _ASM_BARRIER_H | ||
22 | #define _ASM_BARRIER_H | ||
23 | |||
24 | #define rmb() barrier() | ||
25 | #define read_barrier_depends() barrier() | ||
26 | #define wmb() barrier() | ||
27 | #define mb() barrier() | ||
28 | #define smp_rmb() barrier() | ||
29 | #define smp_read_barrier_depends() barrier() | ||
30 | #define smp_wmb() barrier() | ||
31 | #define smp_mb() barrier() | ||
32 | #define smp_mb__before_atomic_dec() barrier() | ||
33 | #define smp_mb__after_atomic_dec() barrier() | ||
34 | #define smp_mb__before_atomic_inc() barrier() | ||
35 | #define smp_mb__after_atomic_inc() barrier() | ||
36 | |||
37 | /* Set a value and use a memory barrier. Used by the scheduler somewhere. */ | ||
38 | #define set_mb(var, value) \ | ||
39 | do { var = value; mb(); } while (0) | ||
40 | |||
41 | #endif /* _ASM_BARRIER_H */ | ||
diff --git a/arch/hexagon/include/asm/bitops.h b/arch/hexagon/include/asm/bitops.h index d23461e080ff..4caa649ad78b 100644 --- a/arch/hexagon/include/asm/bitops.h +++ b/arch/hexagon/include/asm/bitops.h | |||
@@ -24,7 +24,6 @@ | |||
24 | 24 | ||
25 | #include <linux/compiler.h> | 25 | #include <linux/compiler.h> |
26 | #include <asm/byteorder.h> | 26 | #include <asm/byteorder.h> |
27 | #include <asm/system.h> | ||
28 | #include <asm/atomic.h> | 27 | #include <asm/atomic.h> |
29 | 28 | ||
30 | #ifdef __KERNEL__ | 29 | #ifdef __KERNEL__ |
diff --git a/arch/hexagon/include/asm/system.h b/arch/hexagon/include/asm/cmpxchg.h index 323ed1dd65e2..c5f9527e1df6 100644 --- a/arch/hexagon/include/asm/system.h +++ b/arch/hexagon/include/asm/cmpxchg.h | |||
@@ -1,8 +1,9 @@ | |||
1 | /* | 1 | /* |
2 | * System level definitions for the Hexagon architecture | 2 | * xchg/cmpxchg operations for the Hexagon architecture |
3 | * | 3 | * |
4 | * Copyright (c) 2010-2011, Code Aurora Forum. All rights reserved. | 4 | * Copyright (c) 2010-2011, Code Aurora Forum. All rights reserved. |
5 | * | 5 | * |
6 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | 7 | * This program is free software; you can redistribute it and/or modify |
7 | * it under the terms of the GNU General Public License version 2 and | 8 | * it under the terms of the GNU General Public License version 2 and |
8 | * only version 2 as published by the Free Software Foundation. | 9 | * only version 2 as published by the Free Software Foundation. |
@@ -18,37 +19,8 @@ | |||
18 | * 02110-1301, USA. | 19 | * 02110-1301, USA. |
19 | */ | 20 | */ |
20 | 21 | ||
21 | #ifndef _ASM_SYSTEM_H | 22 | #ifndef _ASM_CMPXCHG_H |
22 | #define _ASM_SYSTEM_H | 23 | #define _ASM_CMPXCHG_H |
23 | |||
24 | #include <linux/linkage.h> | ||
25 | #include <linux/irqflags.h> | ||
26 | #include <asm/atomic.h> | ||
27 | #include <asm/hexagon_vm.h> | ||
28 | |||
29 | struct thread_struct; | ||
30 | |||
31 | extern struct task_struct *__switch_to(struct task_struct *, | ||
32 | struct task_struct *, | ||
33 | struct task_struct *); | ||
34 | |||
35 | #define switch_to(p, n, r) do {\ | ||
36 | r = __switch_to((p), (n), (r));\ | ||
37 | } while (0) | ||
38 | |||
39 | |||
40 | #define rmb() barrier() | ||
41 | #define read_barrier_depends() barrier() | ||
42 | #define wmb() barrier() | ||
43 | #define mb() barrier() | ||
44 | #define smp_rmb() barrier() | ||
45 | #define smp_read_barrier_depends() barrier() | ||
46 | #define smp_wmb() barrier() | ||
47 | #define smp_mb() barrier() | ||
48 | #define smp_mb__before_atomic_dec() barrier() | ||
49 | #define smp_mb__after_atomic_dec() barrier() | ||
50 | #define smp_mb__before_atomic_inc() barrier() | ||
51 | #define smp_mb__after_atomic_inc() barrier() | ||
52 | 24 | ||
53 | /* | 25 | /* |
54 | * __xchg - atomically exchange a register and a memory location | 26 | * __xchg - atomically exchange a register and a memory location |
@@ -87,10 +59,6 @@ static inline unsigned long __xchg(unsigned long x, volatile void *ptr, | |||
87 | #define xchg(ptr, v) ((__typeof__(*(ptr)))__xchg((unsigned long)(v), (ptr), \ | 59 | #define xchg(ptr, v) ((__typeof__(*(ptr)))__xchg((unsigned long)(v), (ptr), \ |
88 | sizeof(*(ptr)))) | 60 | sizeof(*(ptr)))) |
89 | 61 | ||
90 | /* Set a value and use a memory barrier. Used by the scheduler somewhere. */ | ||
91 | #define set_mb(var, value) \ | ||
92 | do { var = value; mb(); } while (0) | ||
93 | |||
94 | /* | 62 | /* |
95 | * see rt-mutex-design.txt; cmpxchg supposedly checks if *ptr == A and swaps. | 63 | * see rt-mutex-design.txt; cmpxchg supposedly checks if *ptr == A and swaps. |
96 | * looks just like atomic_cmpxchg on our arch currently with a bunch of | 64 | * looks just like atomic_cmpxchg on our arch currently with a bunch of |
@@ -119,8 +87,4 @@ static inline unsigned long __xchg(unsigned long x, volatile void *ptr, | |||
119 | __oldval; \ | 87 | __oldval; \ |
120 | }) | 88 | }) |
121 | 89 | ||
122 | /* Should probably shoot for an 8-byte aligned stack pointer */ | 90 | #endif /* _ASM_CMPXCHG_H */ |
123 | #define STACK_MASK (~7) | ||
124 | #define arch_align_stack(x) (x & STACK_MASK) | ||
125 | |||
126 | #endif | ||
diff --git a/arch/hexagon/include/asm/exec.h b/arch/hexagon/include/asm/exec.h new file mode 100644 index 000000000000..350e6d497d44 --- /dev/null +++ b/arch/hexagon/include/asm/exec.h | |||
@@ -0,0 +1,28 @@ | |||
1 | /* | ||
2 | * Process execution related definitions for the Hexagon architecture | ||
3 | * | ||
4 | * Copyright (c) 2010-2011, Code Aurora Forum. All rights reserved. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 and | ||
8 | * only version 2 as published by the Free Software Foundation. | ||
9 | * | ||
10 | * This program is distributed in the hope that it will be useful, | ||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | * GNU General Public License for more details. | ||
14 | * | ||
15 | * You should have received a copy of the GNU General Public License | ||
16 | * along with this program; if not, write to the Free Software | ||
17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA | ||
18 | * 02110-1301, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef _ASM_EXEC_H | ||
22 | #define _ASM_EXEC_H | ||
23 | |||
24 | /* Should probably shoot for an 8-byte aligned stack pointer */ | ||
25 | #define STACK_MASK (~7) | ||
26 | #define arch_align_stack(x) (x & STACK_MASK) | ||
27 | |||
28 | #endif /* _ASM_EXEC_H */ | ||
diff --git a/arch/hexagon/include/asm/switch_to.h b/arch/hexagon/include/asm/switch_to.h new file mode 100644 index 000000000000..28ca0dfb6064 --- /dev/null +++ b/arch/hexagon/include/asm/switch_to.h | |||
@@ -0,0 +1,34 @@ | |||
1 | /* | ||
2 | * Task switching definitions for the Hexagon architecture | ||
3 | * | ||
4 | * Copyright (c) 2010-2011, Code Aurora Forum. All rights reserved. | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 and | ||
8 | * only version 2 as published by the Free Software Foundation. | ||
9 | * | ||
10 | * This program is distributed in the hope that it will be useful, | ||
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | ||
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | ||
13 | * GNU General Public License for more details. | ||
14 | * | ||
15 | * You should have received a copy of the GNU General Public License | ||
16 | * along with this program; if not, write to the Free Software | ||
17 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA | ||
18 | * 02110-1301, USA. | ||
19 | */ | ||
20 | |||
21 | #ifndef _ASM_SWITCH_TO_H | ||
22 | #define _ASM_SWITCH_TO_H | ||
23 | |||
24 | struct thread_struct; | ||
25 | |||
26 | extern struct task_struct *__switch_to(struct task_struct *, | ||
27 | struct task_struct *, | ||
28 | struct task_struct *); | ||
29 | |||
30 | #define switch_to(p, n, r) do {\ | ||
31 | r = __switch_to((p), (n), (r));\ | ||
32 | } while (0) | ||
33 | |||
34 | #endif /* _ASM_SWITCH_TO_H */ | ||
diff --git a/arch/hexagon/kernel/ptrace.c b/arch/hexagon/kernel/ptrace.c index bea3f08470fd..32342de1a79c 100644 --- a/arch/hexagon/kernel/ptrace.c +++ b/arch/hexagon/kernel/ptrace.c | |||
@@ -29,7 +29,6 @@ | |||
29 | #include <linux/regset.h> | 29 | #include <linux/regset.h> |
30 | #include <linux/user.h> | 30 | #include <linux/user.h> |
31 | 31 | ||
32 | #include <asm/system.h> | ||
33 | #include <asm/user.h> | 32 | #include <asm/user.h> |
34 | 33 | ||
35 | static int genregs_get(struct task_struct *target, | 34 | static int genregs_get(struct task_struct *target, |
diff --git a/arch/hexagon/kernel/smp.c b/arch/hexagon/kernel/smp.c index 0123c63e9a3a..15d1fd22bbc5 100644 --- a/arch/hexagon/kernel/smp.c +++ b/arch/hexagon/kernel/smp.c | |||
@@ -29,7 +29,6 @@ | |||
29 | #include <linux/smp.h> | 29 | #include <linux/smp.h> |
30 | #include <linux/spinlock.h> | 30 | #include <linux/spinlock.h> |
31 | 31 | ||
32 | #include <asm/system.h> /* xchg */ | ||
33 | #include <asm/time.h> /* timer_interrupt */ | 32 | #include <asm/time.h> /* timer_interrupt */ |
34 | #include <asm/hexagon_vm.h> | 33 | #include <asm/hexagon_vm.h> |
35 | 34 | ||
diff --git a/arch/hexagon/kernel/vm_events.c b/arch/hexagon/kernel/vm_events.c index 986a081e32ec..591fc1b68635 100644 --- a/arch/hexagon/kernel/vm_events.c +++ b/arch/hexagon/kernel/vm_events.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <asm/registers.h> | 22 | #include <asm/registers.h> |
23 | #include <linux/irq.h> | 23 | #include <linux/irq.h> |
24 | #include <linux/hardirq.h> | 24 | #include <linux/hardirq.h> |
25 | #include <asm/system.h> | ||
26 | 25 | ||
27 | /* | 26 | /* |
28 | * show_regs - print pt_regs structure | 27 | * show_regs - print pt_regs structure |
diff --git a/arch/ia64/dig/setup.c b/arch/ia64/dig/setup.c index 9196b330ff7f..98131e1db7a0 100644 --- a/arch/ia64/dig/setup.c +++ b/arch/ia64/dig/setup.c | |||
@@ -22,7 +22,7 @@ | |||
22 | 22 | ||
23 | #include <asm/io.h> | 23 | #include <asm/io.h> |
24 | #include <asm/machvec.h> | 24 | #include <asm/machvec.h> |
25 | #include <asm/system.h> | 25 | #include <asm/setup.h> |
26 | 26 | ||
27 | void __init | 27 | void __init |
28 | dig_setup (char **cmdline_p) | 28 | dig_setup (char **cmdline_p) |
diff --git a/arch/ia64/hp/common/sba_iommu.c b/arch/ia64/hp/common/sba_iommu.c index f5f4ef149aac..f6ea3a3b4a84 100644 --- a/arch/ia64/hp/common/sba_iommu.c +++ b/arch/ia64/hp/common/sba_iommu.c | |||
@@ -43,7 +43,6 @@ | |||
43 | #include <asm/io.h> | 43 | #include <asm/io.h> |
44 | #include <asm/page.h> /* PAGE_OFFSET */ | 44 | #include <asm/page.h> /* PAGE_OFFSET */ |
45 | #include <asm/dma.h> | 45 | #include <asm/dma.h> |
46 | #include <asm/system.h> /* wmb() */ | ||
47 | 46 | ||
48 | #include <asm/acpi-ext.h> | 47 | #include <asm/acpi-ext.h> |
49 | 48 | ||
diff --git a/arch/ia64/hp/sim/boot/bootloader.c b/arch/ia64/hp/sim/boot/bootloader.c index c5e9baafafe0..28f4b230b8cb 100644 --- a/arch/ia64/hp/sim/boot/bootloader.c +++ b/arch/ia64/hp/sim/boot/bootloader.c | |||
@@ -20,7 +20,6 @@ struct task_struct; /* forward declaration for elf.h */ | |||
20 | #include <asm/pal.h> | 20 | #include <asm/pal.h> |
21 | #include <asm/pgtable.h> | 21 | #include <asm/pgtable.h> |
22 | #include <asm/sal.h> | 22 | #include <asm/sal.h> |
23 | #include <asm/system.h> | ||
24 | 23 | ||
25 | #include "ssc.h" | 24 | #include "ssc.h" |
26 | 25 | ||
diff --git a/arch/ia64/hp/sim/boot/fw-emu.c b/arch/ia64/hp/sim/boot/fw-emu.c index 0216e28300fa..271f412bda1a 100644 --- a/arch/ia64/hp/sim/boot/fw-emu.c +++ b/arch/ia64/hp/sim/boot/fw-emu.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <asm/io.h> | 13 | #include <asm/io.h> |
14 | #include <asm/pal.h> | 14 | #include <asm/pal.h> |
15 | #include <asm/sal.h> | 15 | #include <asm/sal.h> |
16 | #include <asm/setup.h> | ||
16 | 17 | ||
17 | #include "ssc.h" | 18 | #include "ssc.h" |
18 | 19 | ||
diff --git a/arch/ia64/hp/sim/simeth.c b/arch/ia64/hp/sim/simeth.c index a63218e1f6c9..c13064e422df 100644 --- a/arch/ia64/hp/sim/simeth.c +++ b/arch/ia64/hp/sim/simeth.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include <linux/skbuff.h> | 20 | #include <linux/skbuff.h> |
21 | #include <linux/notifier.h> | 21 | #include <linux/notifier.h> |
22 | #include <linux/bitops.h> | 22 | #include <linux/bitops.h> |
23 | #include <asm/system.h> | ||
24 | #include <asm/irq.h> | 23 | #include <asm/irq.h> |
25 | #include <asm/hpsim.h> | 24 | #include <asm/hpsim.h> |
26 | 25 | ||
diff --git a/arch/ia64/include/asm/acpi.h b/arch/ia64/include/asm/acpi.h index a06dfb13d518..301609c3fcec 100644 --- a/arch/ia64/include/asm/acpi.h +++ b/arch/ia64/include/asm/acpi.h | |||
@@ -32,7 +32,6 @@ | |||
32 | 32 | ||
33 | #include <linux/init.h> | 33 | #include <linux/init.h> |
34 | #include <linux/numa.h> | 34 | #include <linux/numa.h> |
35 | #include <asm/system.h> | ||
36 | #include <asm/numa.h> | 35 | #include <asm/numa.h> |
37 | 36 | ||
38 | #define COMPILER_DEPENDENT_INT64 long | 37 | #define COMPILER_DEPENDENT_INT64 long |
diff --git a/arch/ia64/include/asm/atomic.h b/arch/ia64/include/asm/atomic.h index 3fad89ee01cb..7d9116600a36 100644 --- a/arch/ia64/include/asm/atomic.h +++ b/arch/ia64/include/asm/atomic.h | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <linux/types.h> | 15 | #include <linux/types.h> |
16 | 16 | ||
17 | #include <asm/intrinsics.h> | 17 | #include <asm/intrinsics.h> |
18 | #include <asm/system.h> | ||
19 | 18 | ||
20 | 19 | ||
21 | #define ATOMIC_INIT(i) ((atomic_t) { (i) }) | 20 | #define ATOMIC_INIT(i) ((atomic_t) { (i) }) |
diff --git a/arch/ia64/include/asm/auxvec.h b/arch/ia64/include/asm/auxvec.h index 23cebe5685b9..58277fc650ef 100644 --- a/arch/ia64/include/asm/auxvec.h +++ b/arch/ia64/include/asm/auxvec.h | |||
@@ -8,4 +8,6 @@ | |||
8 | #define AT_SYSINFO 32 | 8 | #define AT_SYSINFO 32 |
9 | #define AT_SYSINFO_EHDR 33 | 9 | #define AT_SYSINFO_EHDR 33 |
10 | 10 | ||
11 | #define AT_VECTOR_SIZE_ARCH 2 /* entries in ARCH_DLINFO */ | ||
12 | |||
11 | #endif /* _ASM_IA64_AUXVEC_H */ | 13 | #endif /* _ASM_IA64_AUXVEC_H */ |
diff --git a/arch/ia64/include/asm/barrier.h b/arch/ia64/include/asm/barrier.h new file mode 100644 index 000000000000..60576e06b6fb --- /dev/null +++ b/arch/ia64/include/asm/barrier.h | |||
@@ -0,0 +1,68 @@ | |||
1 | /* | ||
2 | * Memory barrier definitions. This is based on information published | ||
3 | * in the Processor Abstraction Layer and the System Abstraction Layer | ||
4 | * manual. | ||
5 | * | ||
6 | * Copyright (C) 1998-2003 Hewlett-Packard Co | ||
7 | * David Mosberger-Tang <davidm@hpl.hp.com> | ||
8 | * Copyright (C) 1999 Asit Mallick <asit.k.mallick@intel.com> | ||
9 | * Copyright (C) 1999 Don Dugger <don.dugger@intel.com> | ||
10 | */ | ||
11 | #ifndef _ASM_IA64_BARRIER_H | ||
12 | #define _ASM_IA64_BARRIER_H | ||
13 | |||
14 | #include <linux/compiler.h> | ||
15 | |||
16 | /* | ||
17 | * Macros to force memory ordering. In these descriptions, "previous" | ||
18 | * and "subsequent" refer to program order; "visible" means that all | ||
19 | * architecturally visible effects of a memory access have occurred | ||
20 | * (at a minimum, this means the memory has been read or written). | ||
21 | * | ||
22 | * wmb(): Guarantees that all preceding stores to memory- | ||
23 | * like regions are visible before any subsequent | ||
24 | * stores and that all following stores will be | ||
25 | * visible only after all previous stores. | ||
26 | * rmb(): Like wmb(), but for reads. | ||
27 | * mb(): wmb()/rmb() combo, i.e., all previous memory | ||
28 | * accesses are visible before all subsequent | ||
29 | * accesses and vice versa. This is also known as | ||
30 | * a "fence." | ||
31 | * | ||
32 | * Note: "mb()" and its variants cannot be used as a fence to order | ||
33 | * accesses to memory mapped I/O registers. For that, mf.a needs to | ||
34 | * be used. However, we don't want to always use mf.a because (a) | ||
35 | * it's (presumably) much slower than mf and (b) mf.a is supported for | ||
36 | * sequential memory pages only. | ||
37 | */ | ||
38 | #define mb() ia64_mf() | ||
39 | #define rmb() mb() | ||
40 | #define wmb() mb() | ||
41 | #define read_barrier_depends() do { } while(0) | ||
42 | |||
43 | #ifdef CONFIG_SMP | ||
44 | # define smp_mb() mb() | ||
45 | # define smp_rmb() rmb() | ||
46 | # define smp_wmb() wmb() | ||
47 | # define smp_read_barrier_depends() read_barrier_depends() | ||
48 | #else | ||
49 | # define smp_mb() barrier() | ||
50 | # define smp_rmb() barrier() | ||
51 | # define smp_wmb() barrier() | ||
52 | # define smp_read_barrier_depends() do { } while(0) | ||
53 | #endif | ||
54 | |||
55 | /* | ||
56 | * XXX check on this ---I suspect what Linus really wants here is | ||
57 | * acquire vs release semantics but we can't discuss this stuff with | ||
58 | * Linus just yet. Grrr... | ||
59 | */ | ||
60 | #define set_mb(var, value) do { (var) = (value); mb(); } while (0) | ||
61 | |||
62 | /* | ||
63 | * The group barrier in front of the rsm & ssm are necessary to ensure | ||
64 | * that none of the previous instructions in the same group are | ||
65 | * affected by the rsm/ssm. | ||
66 | */ | ||
67 | |||
68 | #endif /* _ASM_IA64_BARRIER_H */ | ||
diff --git a/arch/ia64/include/asm/exec.h b/arch/ia64/include/asm/exec.h new file mode 100644 index 000000000000..b26242490e36 --- /dev/null +++ b/arch/ia64/include/asm/exec.h | |||
@@ -0,0 +1,14 @@ | |||
1 | /* | ||
2 | * Process execution defines. | ||
3 | * | ||
4 | * Copyright (C) 1998-2003 Hewlett-Packard Co | ||
5 | * David Mosberger-Tang <davidm@hpl.hp.com> | ||
6 | * Copyright (C) 1999 Asit Mallick <asit.k.mallick@intel.com> | ||
7 | * Copyright (C) 1999 Don Dugger <don.dugger@intel.com> | ||
8 | */ | ||
9 | #ifndef _ASM_IA64_EXEC_H | ||
10 | #define _ASM_IA64_EXEC_H | ||
11 | |||
12 | #define arch_align_stack(x) (x) | ||
13 | |||
14 | #endif /* _ASM_IA64_EXEC_H */ | ||
diff --git a/arch/ia64/include/asm/futex.h b/arch/ia64/include/asm/futex.h index 8428525ddb22..0ab82cc2dc8f 100644 --- a/arch/ia64/include/asm/futex.h +++ b/arch/ia64/include/asm/futex.h | |||
@@ -4,7 +4,6 @@ | |||
4 | #include <linux/futex.h> | 4 | #include <linux/futex.h> |
5 | #include <linux/uaccess.h> | 5 | #include <linux/uaccess.h> |
6 | #include <asm/errno.h> | 6 | #include <asm/errno.h> |
7 | #include <asm/system.h> | ||
8 | 7 | ||
9 | #define __futex_atomic_op1(insn, ret, oldval, uaddr, oparg) \ | 8 | #define __futex_atomic_op1(insn, ret, oldval, uaddr, oparg) \ |
10 | do { \ | 9 | do { \ |
diff --git a/arch/ia64/include/asm/io.h b/arch/ia64/include/asm/io.h index e5a6c3530c6c..2c26321c28c3 100644 --- a/arch/ia64/include/asm/io.h +++ b/arch/ia64/include/asm/io.h | |||
@@ -71,7 +71,6 @@ extern unsigned int num_io_spaces; | |||
71 | #include <asm/intrinsics.h> | 71 | #include <asm/intrinsics.h> |
72 | #include <asm/machvec.h> | 72 | #include <asm/machvec.h> |
73 | #include <asm/page.h> | 73 | #include <asm/page.h> |
74 | #include <asm/system.h> | ||
75 | #include <asm-generic/iomap.h> | 74 | #include <asm-generic/iomap.h> |
76 | 75 | ||
77 | /* | 76 | /* |
diff --git a/arch/ia64/include/asm/irqflags.h b/arch/ia64/include/asm/irqflags.h index f82d6be2ecd2..2b68d856dc78 100644 --- a/arch/ia64/include/asm/irqflags.h +++ b/arch/ia64/include/asm/irqflags.h | |||
@@ -10,6 +10,8 @@ | |||
10 | #ifndef _ASM_IA64_IRQFLAGS_H | 10 | #ifndef _ASM_IA64_IRQFLAGS_H |
11 | #define _ASM_IA64_IRQFLAGS_H | 11 | #define _ASM_IA64_IRQFLAGS_H |
12 | 12 | ||
13 | #include <asm/pal.h> | ||
14 | |||
13 | #ifdef CONFIG_IA64_DEBUG_IRQ | 15 | #ifdef CONFIG_IA64_DEBUG_IRQ |
14 | extern unsigned long last_cli_ip; | 16 | extern unsigned long last_cli_ip; |
15 | static inline void arch_maybe_save_ip(unsigned long flags) | 17 | static inline void arch_maybe_save_ip(unsigned long flags) |
diff --git a/arch/ia64/include/asm/kexec.h b/arch/ia64/include/asm/kexec.h index e1d58f819d78..aea2b81b03a3 100644 --- a/arch/ia64/include/asm/kexec.h +++ b/arch/ia64/include/asm/kexec.h | |||
@@ -1,6 +1,7 @@ | |||
1 | #ifndef _ASM_IA64_KEXEC_H | 1 | #ifndef _ASM_IA64_KEXEC_H |
2 | #define _ASM_IA64_KEXEC_H | 2 | #define _ASM_IA64_KEXEC_H |
3 | 3 | ||
4 | #include <asm/setup.h> | ||
4 | 5 | ||
5 | /* Maximum physical address we can use pages from */ | 6 | /* Maximum physical address we can use pages from */ |
6 | #define KEXEC_SOURCE_MEMORY_LIMIT (-1UL) | 7 | #define KEXEC_SOURCE_MEMORY_LIMIT (-1UL) |
diff --git a/arch/ia64/include/asm/mca_asm.h b/arch/ia64/include/asm/mca_asm.h index dd2a5b134390..13c1d4994d49 100644 --- a/arch/ia64/include/asm/mca_asm.h +++ b/arch/ia64/include/asm/mca_asm.h | |||
@@ -15,6 +15,8 @@ | |||
15 | #ifndef _ASM_IA64_MCA_ASM_H | 15 | #ifndef _ASM_IA64_MCA_ASM_H |
16 | #define _ASM_IA64_MCA_ASM_H | 16 | #define _ASM_IA64_MCA_ASM_H |
17 | 17 | ||
18 | #include <asm/percpu.h> | ||
19 | |||
18 | #define PSR_IC 13 | 20 | #define PSR_IC 13 |
19 | #define PSR_I 14 | 21 | #define PSR_I 14 |
20 | #define PSR_DT 17 | 22 | #define PSR_DT 17 |
diff --git a/arch/ia64/include/asm/page.h b/arch/ia64/include/asm/page.h index 961a16f43e6b..f1e1b2e3cdb3 100644 --- a/arch/ia64/include/asm/page.h +++ b/arch/ia64/include/asm/page.h | |||
@@ -221,4 +221,14 @@ get_order (unsigned long size) | |||
221 | (((current->personality & READ_IMPLIES_EXEC) != 0) \ | 221 | (((current->personality & READ_IMPLIES_EXEC) != 0) \ |
222 | ? VM_EXEC : 0)) | 222 | ? VM_EXEC : 0)) |
223 | 223 | ||
224 | #define GATE_ADDR RGN_BASE(RGN_GATE) | ||
225 | |||
226 | /* | ||
227 | * 0xa000000000000000+2*PERCPU_PAGE_SIZE | ||
228 | * - 0xa000000000000000+3*PERCPU_PAGE_SIZE remain unmapped (guard page) | ||
229 | */ | ||
230 | #define KERNEL_START (GATE_ADDR+__IA64_UL_CONST(0x100000000)) | ||
231 | #define PERCPU_ADDR (-PERCPU_PAGE_SIZE) | ||
232 | #define LOAD_OFFSET (KERNEL_START - KERNEL_TR_PAGE_SIZE) | ||
233 | |||
224 | #endif /* _ASM_IA64_PAGE_H */ | 234 | #endif /* _ASM_IA64_PAGE_H */ |
diff --git a/arch/ia64/include/asm/pci.h b/arch/ia64/include/asm/pci.h index b22e5f5fa593..5e04b591e423 100644 --- a/arch/ia64/include/asm/pci.h +++ b/arch/ia64/include/asm/pci.h | |||
@@ -11,6 +11,14 @@ | |||
11 | #include <asm/scatterlist.h> | 11 | #include <asm/scatterlist.h> |
12 | #include <asm/hw_irq.h> | 12 | #include <asm/hw_irq.h> |
13 | 13 | ||
14 | struct pci_vector_struct { | ||
15 | __u16 segment; /* PCI Segment number */ | ||
16 | __u16 bus; /* PCI Bus number */ | ||
17 | __u32 pci_id; /* ACPI split 16 bits device, 16 bits function (see section 6.1.1) */ | ||
18 | __u8 pin; /* PCI PIN (0 = A, 1 = B, 2 = C, 3 = D) */ | ||
19 | __u32 irq; /* IRQ assigned */ | ||
20 | }; | ||
21 | |||
14 | /* | 22 | /* |
15 | * Can be used to override the logic in pci_scan_bus for skipping already-configured bus | 23 | * Can be used to override the logic in pci_scan_bus for skipping already-configured bus |
16 | * numbers - to be used for buggy BIOSes or architectures with incomplete PCI setup by the | 24 | * numbers - to be used for buggy BIOSes or architectures with incomplete PCI setup by the |
diff --git a/arch/ia64/include/asm/pgtable.h b/arch/ia64/include/asm/pgtable.h index 1a97af31ef17..815810cbbedc 100644 --- a/arch/ia64/include/asm/pgtable.h +++ b/arch/ia64/include/asm/pgtable.h | |||
@@ -16,7 +16,6 @@ | |||
16 | #include <asm/mman.h> | 16 | #include <asm/mman.h> |
17 | #include <asm/page.h> | 17 | #include <asm/page.h> |
18 | #include <asm/processor.h> | 18 | #include <asm/processor.h> |
19 | #include <asm/system.h> | ||
20 | #include <asm/types.h> | 19 | #include <asm/types.h> |
21 | 20 | ||
22 | #define IA64_MAX_PHYS_BITS 50 /* max. number of physical address bits (architected) */ | 21 | #define IA64_MAX_PHYS_BITS 50 /* max. number of physical address bits (architected) */ |
diff --git a/arch/ia64/include/asm/processor.h b/arch/ia64/include/asm/processor.h index 691be0b95c1e..483f6c6a4238 100644 --- a/arch/ia64/include/asm/processor.h +++ b/arch/ia64/include/asm/processor.h | |||
@@ -19,6 +19,9 @@ | |||
19 | #include <asm/ptrace.h> | 19 | #include <asm/ptrace.h> |
20 | #include <asm/ustack.h> | 20 | #include <asm/ustack.h> |
21 | 21 | ||
22 | #define __ARCH_WANT_UNLOCKED_CTXSW | ||
23 | #define ARCH_HAS_PREFETCH_SWITCH_STACK | ||
24 | |||
22 | #define IA64_NUM_PHYS_STACK_REG 96 | 25 | #define IA64_NUM_PHYS_STACK_REG 96 |
23 | #define IA64_NUM_DBG_REGS 8 | 26 | #define IA64_NUM_DBG_REGS 8 |
24 | 27 | ||
@@ -720,6 +723,11 @@ extern unsigned long boot_option_idle_override; | |||
720 | enum idle_boot_override {IDLE_NO_OVERRIDE=0, IDLE_HALT, IDLE_FORCE_MWAIT, | 723 | enum idle_boot_override {IDLE_NO_OVERRIDE=0, IDLE_HALT, IDLE_FORCE_MWAIT, |
721 | IDLE_NOMWAIT, IDLE_POLL}; | 724 | IDLE_NOMWAIT, IDLE_POLL}; |
722 | 725 | ||
726 | void cpu_idle_wait(void); | ||
727 | void default_idle(void); | ||
728 | |||
729 | #define ia64_platform_is(x) (strcmp(x, platform_name) == 0) | ||
730 | |||
723 | #endif /* !__ASSEMBLY__ */ | 731 | #endif /* !__ASSEMBLY__ */ |
724 | 732 | ||
725 | #endif /* _ASM_IA64_PROCESSOR_H */ | 733 | #endif /* _ASM_IA64_PROCESSOR_H */ |
diff --git a/arch/ia64/include/asm/sal.h b/arch/ia64/include/asm/sal.h index d19ddba4e327..e504f382115e 100644 --- a/arch/ia64/include/asm/sal.h +++ b/arch/ia64/include/asm/sal.h | |||
@@ -40,7 +40,6 @@ | |||
40 | #include <linux/efi.h> | 40 | #include <linux/efi.h> |
41 | 41 | ||
42 | #include <asm/pal.h> | 42 | #include <asm/pal.h> |
43 | #include <asm/system.h> | ||
44 | #include <asm/fpu.h> | 43 | #include <asm/fpu.h> |
45 | 44 | ||
46 | extern spinlock_t sal_lock; | 45 | extern spinlock_t sal_lock; |
diff --git a/arch/ia64/include/asm/setup.h b/arch/ia64/include/asm/setup.h index 4399a44355b3..8d56458310b3 100644 --- a/arch/ia64/include/asm/setup.h +++ b/arch/ia64/include/asm/setup.h | |||
@@ -3,4 +3,22 @@ | |||
3 | 3 | ||
4 | #define COMMAND_LINE_SIZE 2048 | 4 | #define COMMAND_LINE_SIZE 2048 |
5 | 5 | ||
6 | extern struct ia64_boot_param { | ||
7 | __u64 command_line; /* physical address of command line arguments */ | ||
8 | __u64 efi_systab; /* physical address of EFI system table */ | ||
9 | __u64 efi_memmap; /* physical address of EFI memory map */ | ||
10 | __u64 efi_memmap_size; /* size of EFI memory map */ | ||
11 | __u64 efi_memdesc_size; /* size of an EFI memory map descriptor */ | ||
12 | __u32 efi_memdesc_version; /* memory descriptor version */ | ||
13 | struct { | ||
14 | __u16 num_cols; /* number of columns on console output device */ | ||
15 | __u16 num_rows; /* number of rows on console output device */ | ||
16 | __u16 orig_x; /* cursor's x position */ | ||
17 | __u16 orig_y; /* cursor's y position */ | ||
18 | } console_info; | ||
19 | __u64 fpswa; /* physical address of the fpswa interface */ | ||
20 | __u64 initrd_start; | ||
21 | __u64 initrd_size; | ||
22 | } *ia64_boot_param; | ||
23 | |||
6 | #endif | 24 | #endif |
diff --git a/arch/ia64/include/asm/sn/pda.h b/arch/ia64/include/asm/sn/pda.h index 1c5108d44d8b..22ae358c8d16 100644 --- a/arch/ia64/include/asm/sn/pda.h +++ b/arch/ia64/include/asm/sn/pda.h | |||
@@ -10,7 +10,6 @@ | |||
10 | 10 | ||
11 | #include <linux/cache.h> | 11 | #include <linux/cache.h> |
12 | #include <asm/percpu.h> | 12 | #include <asm/percpu.h> |
13 | #include <asm/system.h> | ||
14 | 13 | ||
15 | 14 | ||
16 | /* | 15 | /* |
diff --git a/arch/ia64/include/asm/spinlock.h b/arch/ia64/include/asm/spinlock.h index b77768d35f93..54ff557d474e 100644 --- a/arch/ia64/include/asm/spinlock.h +++ b/arch/ia64/include/asm/spinlock.h | |||
@@ -15,7 +15,6 @@ | |||
15 | 15 | ||
16 | #include <linux/atomic.h> | 16 | #include <linux/atomic.h> |
17 | #include <asm/intrinsics.h> | 17 | #include <asm/intrinsics.h> |
18 | #include <asm/system.h> | ||
19 | 18 | ||
20 | #define arch_spin_lock_init(x) ((x)->lock = 0) | 19 | #define arch_spin_lock_init(x) ((x)->lock = 0) |
21 | 20 | ||
diff --git a/arch/ia64/include/asm/switch_to.h b/arch/ia64/include/asm/switch_to.h new file mode 100644 index 000000000000..cb2412fcd17f --- /dev/null +++ b/arch/ia64/include/asm/switch_to.h | |||
@@ -0,0 +1,87 @@ | |||
1 | /* | ||
2 | * Low-level task switching. This is based on information published in | ||
3 | * the Processor Abstraction Layer and the System Abstraction Layer | ||
4 | * manual. | ||
5 | * | ||
6 | * Copyright (C) 1998-2003 Hewlett-Packard Co | ||
7 | * David Mosberger-Tang <davidm@hpl.hp.com> | ||
8 | * Copyright (C) 1999 Asit Mallick <asit.k.mallick@intel.com> | ||
9 | * Copyright (C) 1999 Don Dugger <don.dugger@intel.com> | ||
10 | */ | ||
11 | #ifndef _ASM_IA64_SWITCH_TO_H | ||
12 | #define _ASM_IA64_SWITCH_TO_H | ||
13 | |||
14 | #include <linux/percpu.h> | ||
15 | |||
16 | struct task_struct; | ||
17 | |||
18 | /* | ||
19 | * Context switch from one thread to another. If the two threads have | ||
20 | * different address spaces, schedule() has already taken care of | ||
21 | * switching to the new address space by calling switch_mm(). | ||
22 | * | ||
23 | * Disabling access to the fph partition and the debug-register | ||
24 | * context switch MUST be done before calling ia64_switch_to() since a | ||
25 | * newly created thread returns directly to | ||
26 | * ia64_ret_from_syscall_clear_r8. | ||
27 | */ | ||
28 | extern struct task_struct *ia64_switch_to (void *next_task); | ||
29 | |||
30 | extern void ia64_save_extra (struct task_struct *task); | ||
31 | extern void ia64_load_extra (struct task_struct *task); | ||
32 | |||
33 | #ifdef CONFIG_VIRT_CPU_ACCOUNTING | ||
34 | extern void ia64_account_on_switch (struct task_struct *prev, struct task_struct *next); | ||
35 | # define IA64_ACCOUNT_ON_SWITCH(p,n) ia64_account_on_switch(p,n) | ||
36 | #else | ||
37 | # define IA64_ACCOUNT_ON_SWITCH(p,n) | ||
38 | #endif | ||
39 | |||
40 | #ifdef CONFIG_PERFMON | ||
41 | DECLARE_PER_CPU(unsigned long, pfm_syst_info); | ||
42 | # define PERFMON_IS_SYSWIDE() (__get_cpu_var(pfm_syst_info) & 0x1) | ||
43 | #else | ||
44 | # define PERFMON_IS_SYSWIDE() (0) | ||
45 | #endif | ||
46 | |||
47 | #define IA64_HAS_EXTRA_STATE(t) \ | ||
48 | ((t)->thread.flags & (IA64_THREAD_DBG_VALID|IA64_THREAD_PM_VALID) \ | ||
49 | || PERFMON_IS_SYSWIDE()) | ||
50 | |||
51 | #define __switch_to(prev,next,last) do { \ | ||
52 | IA64_ACCOUNT_ON_SWITCH(prev, next); \ | ||
53 | if (IA64_HAS_EXTRA_STATE(prev)) \ | ||
54 | ia64_save_extra(prev); \ | ||
55 | if (IA64_HAS_EXTRA_STATE(next)) \ | ||
56 | ia64_load_extra(next); \ | ||
57 | ia64_psr(task_pt_regs(next))->dfh = !ia64_is_local_fpu_owner(next); \ | ||
58 | (last) = ia64_switch_to((next)); \ | ||
59 | } while (0) | ||
60 | |||
61 | #ifdef CONFIG_SMP | ||
62 | /* | ||
63 | * In the SMP case, we save the fph state when context-switching away from a thread that | ||
64 | * modified fph. This way, when the thread gets scheduled on another CPU, the CPU can | ||
65 | * pick up the state from task->thread.fph, avoiding the complication of having to fetch | ||
66 | * the latest fph state from another CPU. In other words: eager save, lazy restore. | ||
67 | */ | ||
68 | # define switch_to(prev,next,last) do { \ | ||
69 | if (ia64_psr(task_pt_regs(prev))->mfh && ia64_is_local_fpu_owner(prev)) { \ | ||
70 | ia64_psr(task_pt_regs(prev))->mfh = 0; \ | ||
71 | (prev)->thread.flags |= IA64_THREAD_FPH_VALID; \ | ||
72 | __ia64_save_fpu((prev)->thread.fph); \ | ||
73 | } \ | ||
74 | __switch_to(prev, next, last); \ | ||
75 | /* "next" in old context is "current" in new context */ \ | ||
76 | if (unlikely((current->thread.flags & IA64_THREAD_MIGRATION) && \ | ||
77 | (task_cpu(current) != \ | ||
78 | task_thread_info(current)->last_cpu))) { \ | ||
79 | platform_migrate(current); \ | ||
80 | task_thread_info(current)->last_cpu = task_cpu(current); \ | ||
81 | } \ | ||
82 | } while (0) | ||
83 | #else | ||
84 | # define switch_to(prev,next,last) __switch_to(prev, next, last) | ||
85 | #endif | ||
86 | |||
87 | #endif /* _ASM_IA64_SWITCH_TO_H */ | ||
diff --git a/arch/ia64/include/asm/system.h b/arch/ia64/include/asm/system.h deleted file mode 100644 index 6cca30705d50..000000000000 --- a/arch/ia64/include/asm/system.h +++ /dev/null | |||
@@ -1,203 +0,0 @@ | |||
1 | #ifndef _ASM_IA64_SYSTEM_H | ||
2 | #define _ASM_IA64_SYSTEM_H | ||
3 | |||
4 | /* | ||
5 | * System defines. Note that this is included both from .c and .S | ||
6 | * files, so it does only defines, not any C code. This is based | ||
7 | * on information published in the Processor Abstraction Layer | ||
8 | * and the System Abstraction Layer manual. | ||
9 | * | ||
10 | * Copyright (C) 1998-2003 Hewlett-Packard Co | ||
11 | * David Mosberger-Tang <davidm@hpl.hp.com> | ||
12 | * Copyright (C) 1999 Asit Mallick <asit.k.mallick@intel.com> | ||
13 | * Copyright (C) 1999 Don Dugger <don.dugger@intel.com> | ||
14 | */ | ||
15 | |||
16 | #include <asm/kregs.h> | ||
17 | #include <asm/page.h> | ||
18 | #include <asm/pal.h> | ||
19 | #include <asm/percpu.h> | ||
20 | |||
21 | #define GATE_ADDR RGN_BASE(RGN_GATE) | ||
22 | |||
23 | /* | ||
24 | * 0xa000000000000000+2*PERCPU_PAGE_SIZE | ||
25 | * - 0xa000000000000000+3*PERCPU_PAGE_SIZE remain unmapped (guard page) | ||
26 | */ | ||
27 | #define KERNEL_START (GATE_ADDR+__IA64_UL_CONST(0x100000000)) | ||
28 | #define PERCPU_ADDR (-PERCPU_PAGE_SIZE) | ||
29 | #define LOAD_OFFSET (KERNEL_START - KERNEL_TR_PAGE_SIZE) | ||
30 | |||
31 | #ifndef __ASSEMBLY__ | ||
32 | |||
33 | #include <linux/kernel.h> | ||
34 | #include <linux/types.h> | ||
35 | |||
36 | #define AT_VECTOR_SIZE_ARCH 2 /* entries in ARCH_DLINFO */ | ||
37 | |||
38 | struct pci_vector_struct { | ||
39 | __u16 segment; /* PCI Segment number */ | ||
40 | __u16 bus; /* PCI Bus number */ | ||
41 | __u32 pci_id; /* ACPI split 16 bits device, 16 bits function (see section 6.1.1) */ | ||
42 | __u8 pin; /* PCI PIN (0 = A, 1 = B, 2 = C, 3 = D) */ | ||
43 | __u32 irq; /* IRQ assigned */ | ||
44 | }; | ||
45 | |||
46 | extern struct ia64_boot_param { | ||
47 | __u64 command_line; /* physical address of command line arguments */ | ||
48 | __u64 efi_systab; /* physical address of EFI system table */ | ||
49 | __u64 efi_memmap; /* physical address of EFI memory map */ | ||
50 | __u64 efi_memmap_size; /* size of EFI memory map */ | ||
51 | __u64 efi_memdesc_size; /* size of an EFI memory map descriptor */ | ||
52 | __u32 efi_memdesc_version; /* memory descriptor version */ | ||
53 | struct { | ||
54 | __u16 num_cols; /* number of columns on console output device */ | ||
55 | __u16 num_rows; /* number of rows on console output device */ | ||
56 | __u16 orig_x; /* cursor's x position */ | ||
57 | __u16 orig_y; /* cursor's y position */ | ||
58 | } console_info; | ||
59 | __u64 fpswa; /* physical address of the fpswa interface */ | ||
60 | __u64 initrd_start; | ||
61 | __u64 initrd_size; | ||
62 | } *ia64_boot_param; | ||
63 | |||
64 | /* | ||
65 | * Macros to force memory ordering. In these descriptions, "previous" | ||
66 | * and "subsequent" refer to program order; "visible" means that all | ||
67 | * architecturally visible effects of a memory access have occurred | ||
68 | * (at a minimum, this means the memory has been read or written). | ||
69 | * | ||
70 | * wmb(): Guarantees that all preceding stores to memory- | ||
71 | * like regions are visible before any subsequent | ||
72 | * stores and that all following stores will be | ||
73 | * visible only after all previous stores. | ||
74 | * rmb(): Like wmb(), but for reads. | ||
75 | * mb(): wmb()/rmb() combo, i.e., all previous memory | ||
76 | * accesses are visible before all subsequent | ||
77 | * accesses and vice versa. This is also known as | ||
78 | * a "fence." | ||
79 | * | ||
80 | * Note: "mb()" and its variants cannot be used as a fence to order | ||
81 | * accesses to memory mapped I/O registers. For that, mf.a needs to | ||
82 | * be used. However, we don't want to always use mf.a because (a) | ||
83 | * it's (presumably) much slower than mf and (b) mf.a is supported for | ||
84 | * sequential memory pages only. | ||
85 | */ | ||
86 | #define mb() ia64_mf() | ||
87 | #define rmb() mb() | ||
88 | #define wmb() mb() | ||
89 | #define read_barrier_depends() do { } while(0) | ||
90 | |||
91 | #ifdef CONFIG_SMP | ||
92 | # define smp_mb() mb() | ||
93 | # define smp_rmb() rmb() | ||
94 | # define smp_wmb() wmb() | ||
95 | # define smp_read_barrier_depends() read_barrier_depends() | ||
96 | #else | ||
97 | # define smp_mb() barrier() | ||
98 | # define smp_rmb() barrier() | ||
99 | # define smp_wmb() barrier() | ||
100 | # define smp_read_barrier_depends() do { } while(0) | ||
101 | #endif | ||
102 | |||
103 | /* | ||
104 | * XXX check on this ---I suspect what Linus really wants here is | ||
105 | * acquire vs release semantics but we can't discuss this stuff with | ||
106 | * Linus just yet. Grrr... | ||
107 | */ | ||
108 | #define set_mb(var, value) do { (var) = (value); mb(); } while (0) | ||
109 | |||
110 | /* | ||
111 | * The group barrier in front of the rsm & ssm are necessary to ensure | ||
112 | * that none of the previous instructions in the same group are | ||
113 | * affected by the rsm/ssm. | ||
114 | */ | ||
115 | |||
116 | #ifdef __KERNEL__ | ||
117 | |||
118 | /* | ||
119 | * Context switch from one thread to another. If the two threads have | ||
120 | * different address spaces, schedule() has already taken care of | ||
121 | * switching to the new address space by calling switch_mm(). | ||
122 | * | ||
123 | * Disabling access to the fph partition and the debug-register | ||
124 | * context switch MUST be done before calling ia64_switch_to() since a | ||
125 | * newly created thread returns directly to | ||
126 | * ia64_ret_from_syscall_clear_r8. | ||
127 | */ | ||
128 | extern struct task_struct *ia64_switch_to (void *next_task); | ||
129 | |||
130 | struct task_struct; | ||
131 | |||
132 | extern void ia64_save_extra (struct task_struct *task); | ||
133 | extern void ia64_load_extra (struct task_struct *task); | ||
134 | |||
135 | #ifdef CONFIG_VIRT_CPU_ACCOUNTING | ||
136 | extern void ia64_account_on_switch (struct task_struct *prev, struct task_struct *next); | ||
137 | # define IA64_ACCOUNT_ON_SWITCH(p,n) ia64_account_on_switch(p,n) | ||
138 | #else | ||
139 | # define IA64_ACCOUNT_ON_SWITCH(p,n) | ||
140 | #endif | ||
141 | |||
142 | #ifdef CONFIG_PERFMON | ||
143 | DECLARE_PER_CPU(unsigned long, pfm_syst_info); | ||
144 | # define PERFMON_IS_SYSWIDE() (__get_cpu_var(pfm_syst_info) & 0x1) | ||
145 | #else | ||
146 | # define PERFMON_IS_SYSWIDE() (0) | ||
147 | #endif | ||
148 | |||
149 | #define IA64_HAS_EXTRA_STATE(t) \ | ||
150 | ((t)->thread.flags & (IA64_THREAD_DBG_VALID|IA64_THREAD_PM_VALID) \ | ||
151 | || PERFMON_IS_SYSWIDE()) | ||
152 | |||
153 | #define __switch_to(prev,next,last) do { \ | ||
154 | IA64_ACCOUNT_ON_SWITCH(prev, next); \ | ||
155 | if (IA64_HAS_EXTRA_STATE(prev)) \ | ||
156 | ia64_save_extra(prev); \ | ||
157 | if (IA64_HAS_EXTRA_STATE(next)) \ | ||
158 | ia64_load_extra(next); \ | ||
159 | ia64_psr(task_pt_regs(next))->dfh = !ia64_is_local_fpu_owner(next); \ | ||
160 | (last) = ia64_switch_to((next)); \ | ||
161 | } while (0) | ||
162 | |||
163 | #ifdef CONFIG_SMP | ||
164 | /* | ||
165 | * In the SMP case, we save the fph state when context-switching away from a thread that | ||
166 | * modified fph. This way, when the thread gets scheduled on another CPU, the CPU can | ||
167 | * pick up the state from task->thread.fph, avoiding the complication of having to fetch | ||
168 | * the latest fph state from another CPU. In other words: eager save, lazy restore. | ||
169 | */ | ||
170 | # define switch_to(prev,next,last) do { \ | ||
171 | if (ia64_psr(task_pt_regs(prev))->mfh && ia64_is_local_fpu_owner(prev)) { \ | ||
172 | ia64_psr(task_pt_regs(prev))->mfh = 0; \ | ||
173 | (prev)->thread.flags |= IA64_THREAD_FPH_VALID; \ | ||
174 | __ia64_save_fpu((prev)->thread.fph); \ | ||
175 | } \ | ||
176 | __switch_to(prev, next, last); \ | ||
177 | /* "next" in old context is "current" in new context */ \ | ||
178 | if (unlikely((current->thread.flags & IA64_THREAD_MIGRATION) && \ | ||
179 | (task_cpu(current) != \ | ||
180 | task_thread_info(current)->last_cpu))) { \ | ||
181 | platform_migrate(current); \ | ||
182 | task_thread_info(current)->last_cpu = task_cpu(current); \ | ||
183 | } \ | ||
184 | } while (0) | ||
185 | #else | ||
186 | # define switch_to(prev,next,last) __switch_to(prev, next, last) | ||
187 | #endif | ||
188 | |||
189 | #define __ARCH_WANT_UNLOCKED_CTXSW | ||
190 | #define ARCH_HAS_PREFETCH_SWITCH_STACK | ||
191 | #define ia64_platform_is(x) (strcmp(x, platform_name) == 0) | ||
192 | |||
193 | void cpu_idle_wait(void); | ||
194 | |||
195 | #define arch_align_stack(x) (x) | ||
196 | |||
197 | void default_idle(void); | ||
198 | |||
199 | #endif /* __KERNEL__ */ | ||
200 | |||
201 | #endif /* __ASSEMBLY__ */ | ||
202 | |||
203 | #endif /* _ASM_IA64_SYSTEM_H */ | ||
diff --git a/arch/ia64/include/asm/uv/uv.h b/arch/ia64/include/asm/uv/uv.h index 61b5bdfd980e..8f6cbaa742e9 100644 --- a/arch/ia64/include/asm/uv/uv.h +++ b/arch/ia64/include/asm/uv/uv.h | |||
@@ -1,7 +1,6 @@ | |||
1 | #ifndef _ASM_IA64_UV_UV_H | 1 | #ifndef _ASM_IA64_UV_UV_H |
2 | #define _ASM_IA64_UV_UV_H | 2 | #define _ASM_IA64_UV_UV_H |
3 | 3 | ||
4 | #include <asm/system.h> | ||
5 | #include <asm/sn/simulator.h> | 4 | #include <asm/sn/simulator.h> |
6 | 5 | ||
7 | static inline int is_uv_system(void) | 6 | static inline int is_uv_system(void) |
diff --git a/arch/ia64/kernel/acpi.c b/arch/ia64/kernel/acpi.c index 2d801bfe16ac..d1cc81e63ba6 100644 --- a/arch/ia64/kernel/acpi.c +++ b/arch/ia64/kernel/acpi.c | |||
@@ -50,7 +50,6 @@ | |||
50 | #include <asm/iosapic.h> | 50 | #include <asm/iosapic.h> |
51 | #include <asm/machvec.h> | 51 | #include <asm/machvec.h> |
52 | #include <asm/page.h> | 52 | #include <asm/page.h> |
53 | #include <asm/system.h> | ||
54 | #include <asm/numa.h> | 53 | #include <asm/numa.h> |
55 | #include <asm/sal.h> | 54 | #include <asm/sal.h> |
56 | #include <asm/cyclone.h> | 55 | #include <asm/cyclone.h> |
diff --git a/arch/ia64/kernel/efi.c b/arch/ia64/kernel/efi.c index c38d22e5e902..d37bbd48637f 100644 --- a/arch/ia64/kernel/efi.c +++ b/arch/ia64/kernel/efi.c | |||
@@ -39,6 +39,7 @@ | |||
39 | #include <asm/pgtable.h> | 39 | #include <asm/pgtable.h> |
40 | #include <asm/processor.h> | 40 | #include <asm/processor.h> |
41 | #include <asm/mca.h> | 41 | #include <asm/mca.h> |
42 | #include <asm/setup.h> | ||
42 | #include <asm/tlbflush.h> | 43 | #include <asm/tlbflush.h> |
43 | 44 | ||
44 | #define EFI_DEBUG 0 | 45 | #define EFI_DEBUG 0 |
diff --git a/arch/ia64/kernel/fsys.S b/arch/ia64/kernel/fsys.S index 331d42bda77a..f15d8601827f 100644 --- a/arch/ia64/kernel/fsys.S +++ b/arch/ia64/kernel/fsys.S | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <asm/thread_info.h> | 21 | #include <asm/thread_info.h> |
22 | #include <asm/sal.h> | 22 | #include <asm/sal.h> |
23 | #include <asm/signal.h> | 23 | #include <asm/signal.h> |
24 | #include <asm/system.h> | ||
25 | #include <asm/unistd.h> | 24 | #include <asm/unistd.h> |
26 | 25 | ||
27 | #include "entry.h" | 26 | #include "entry.h" |
diff --git a/arch/ia64/kernel/gate.S b/arch/ia64/kernel/gate.S index 245d3e1ec7e1..b5f8bdd8618e 100644 --- a/arch/ia64/kernel/gate.S +++ b/arch/ia64/kernel/gate.S | |||
@@ -11,8 +11,9 @@ | |||
11 | #include <asm/errno.h> | 11 | #include <asm/errno.h> |
12 | #include <asm/asm-offsets.h> | 12 | #include <asm/asm-offsets.h> |
13 | #include <asm/sigcontext.h> | 13 | #include <asm/sigcontext.h> |
14 | #include <asm/system.h> | ||
15 | #include <asm/unistd.h> | 14 | #include <asm/unistd.h> |
15 | #include <asm/kregs.h> | ||
16 | #include <asm/page.h> | ||
16 | #include "paravirt_inst.h" | 17 | #include "paravirt_inst.h" |
17 | 18 | ||
18 | /* | 19 | /* |
diff --git a/arch/ia64/kernel/gate.lds.S b/arch/ia64/kernel/gate.lds.S index d32b0855110a..e518f7902af6 100644 --- a/arch/ia64/kernel/gate.lds.S +++ b/arch/ia64/kernel/gate.lds.S | |||
@@ -5,8 +5,7 @@ | |||
5 | * its layout. | 5 | * its layout. |
6 | */ | 6 | */ |
7 | 7 | ||
8 | 8 | #include <asm/page.h> | |
9 | #include <asm/system.h> | ||
10 | #include "paravirt_patchlist.h" | 9 | #include "paravirt_patchlist.h" |
11 | 10 | ||
12 | SECTIONS | 11 | SECTIONS |
diff --git a/arch/ia64/kernel/head.S b/arch/ia64/kernel/head.S index 17a9fba38930..629a250f7c19 100644 --- a/arch/ia64/kernel/head.S +++ b/arch/ia64/kernel/head.S | |||
@@ -30,7 +30,6 @@ | |||
30 | #include <asm/pgtable.h> | 30 | #include <asm/pgtable.h> |
31 | #include <asm/processor.h> | 31 | #include <asm/processor.h> |
32 | #include <asm/ptrace.h> | 32 | #include <asm/ptrace.h> |
33 | #include <asm/system.h> | ||
34 | #include <asm/mca_asm.h> | 33 | #include <asm/mca_asm.h> |
35 | #include <linux/init.h> | 34 | #include <linux/init.h> |
36 | #include <linux/linkage.h> | 35 | #include <linux/linkage.h> |
diff --git a/arch/ia64/kernel/iosapic.c b/arch/ia64/kernel/iosapic.c index b0f9afebb146..ef4b5d877cf2 100644 --- a/arch/ia64/kernel/iosapic.c +++ b/arch/ia64/kernel/iosapic.c | |||
@@ -98,7 +98,6 @@ | |||
98 | #include <asm/machvec.h> | 98 | #include <asm/machvec.h> |
99 | #include <asm/processor.h> | 99 | #include <asm/processor.h> |
100 | #include <asm/ptrace.h> | 100 | #include <asm/ptrace.h> |
101 | #include <asm/system.h> | ||
102 | 101 | ||
103 | #undef DEBUG_INTERRUPT_ROUTING | 102 | #undef DEBUG_INTERRUPT_ROUTING |
104 | 103 | ||
diff --git a/arch/ia64/kernel/irq_ia64.c b/arch/ia64/kernel/irq_ia64.c index 782c3a357f24..08113b1d30f7 100644 --- a/arch/ia64/kernel/irq_ia64.c +++ b/arch/ia64/kernel/irq_ia64.c | |||
@@ -39,7 +39,6 @@ | |||
39 | #include <asm/hw_irq.h> | 39 | #include <asm/hw_irq.h> |
40 | #include <asm/machvec.h> | 40 | #include <asm/machvec.h> |
41 | #include <asm/pgtable.h> | 41 | #include <asm/pgtable.h> |
42 | #include <asm/system.h> | ||
43 | #include <asm/tlbflush.h> | 42 | #include <asm/tlbflush.h> |
44 | 43 | ||
45 | #ifdef CONFIG_PERFMON | 44 | #ifdef CONFIG_PERFMON |
diff --git a/arch/ia64/kernel/ivt.S b/arch/ia64/kernel/ivt.S index d93e396bf599..fa25689fc453 100644 --- a/arch/ia64/kernel/ivt.S +++ b/arch/ia64/kernel/ivt.S | |||
@@ -54,7 +54,6 @@ | |||
54 | #include <asm/pgtable.h> | 54 | #include <asm/pgtable.h> |
55 | #include <asm/processor.h> | 55 | #include <asm/processor.h> |
56 | #include <asm/ptrace.h> | 56 | #include <asm/ptrace.h> |
57 | #include <asm/system.h> | ||
58 | #include <asm/thread_info.h> | 57 | #include <asm/thread_info.h> |
59 | #include <asm/unistd.h> | 58 | #include <asm/unistd.h> |
60 | #include <asm/errno.h> | 59 | #include <asm/errno.h> |
diff --git a/arch/ia64/kernel/machvec.c b/arch/ia64/kernel/machvec.c index d41a40ef80c0..f5a1e5246b3e 100644 --- a/arch/ia64/kernel/machvec.c +++ b/arch/ia64/kernel/machvec.c | |||
@@ -1,7 +1,6 @@ | |||
1 | #include <linux/module.h> | 1 | #include <linux/module.h> |
2 | #include <linux/dma-mapping.h> | 2 | #include <linux/dma-mapping.h> |
3 | #include <asm/machvec.h> | 3 | #include <asm/machvec.h> |
4 | #include <asm/system.h> | ||
5 | 4 | ||
6 | #ifdef CONFIG_IA64_GENERIC | 5 | #ifdef CONFIG_IA64_GENERIC |
7 | 6 | ||
diff --git a/arch/ia64/kernel/mca.c b/arch/ia64/kernel/mca.c index 8192009cb924..a39fe098a732 100644 --- a/arch/ia64/kernel/mca.c +++ b/arch/ia64/kernel/mca.c | |||
@@ -92,7 +92,6 @@ | |||
92 | #include <asm/meminit.h> | 92 | #include <asm/meminit.h> |
93 | #include <asm/page.h> | 93 | #include <asm/page.h> |
94 | #include <asm/ptrace.h> | 94 | #include <asm/ptrace.h> |
95 | #include <asm/system.h> | ||
96 | #include <asm/sal.h> | 95 | #include <asm/sal.h> |
97 | #include <asm/mca.h> | 96 | #include <asm/mca.h> |
98 | #include <asm/kexec.h> | 97 | #include <asm/kexec.h> |
diff --git a/arch/ia64/kernel/mca_drv.c b/arch/ia64/kernel/mca_drv.c index 09b4d6828c45..1c2e89406721 100644 --- a/arch/ia64/kernel/mca_drv.c +++ b/arch/ia64/kernel/mca_drv.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <asm/machvec.h> | 28 | #include <asm/machvec.h> |
29 | #include <asm/page.h> | 29 | #include <asm/page.h> |
30 | #include <asm/ptrace.h> | 30 | #include <asm/ptrace.h> |
31 | #include <asm/system.h> | ||
32 | #include <asm/sal.h> | 31 | #include <asm/sal.h> |
33 | #include <asm/mca.h> | 32 | #include <asm/mca.h> |
34 | 33 | ||
diff --git a/arch/ia64/kernel/patch.c b/arch/ia64/kernel/patch.c index 68a1311db806..1cf091793714 100644 --- a/arch/ia64/kernel/patch.c +++ b/arch/ia64/kernel/patch.c | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <asm/patch.h> | 11 | #include <asm/patch.h> |
12 | #include <asm/processor.h> | 12 | #include <asm/processor.h> |
13 | #include <asm/sections.h> | 13 | #include <asm/sections.h> |
14 | #include <asm/system.h> | ||
15 | #include <asm/unistd.h> | 14 | #include <asm/unistd.h> |
16 | 15 | ||
17 | /* | 16 | /* |
diff --git a/arch/ia64/kernel/pci-dma.c b/arch/ia64/kernel/pci-dma.c index eb1175720050..7cdc89b2483c 100644 --- a/arch/ia64/kernel/pci-dma.c +++ b/arch/ia64/kernel/pci-dma.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <asm/machvec.h> | 12 | #include <asm/machvec.h> |
13 | #include <linux/dma-mapping.h> | 13 | #include <linux/dma-mapping.h> |
14 | 14 | ||
15 | #include <asm/system.h> | ||
16 | 15 | ||
17 | #ifdef CONFIG_INTEL_IOMMU | 16 | #ifdef CONFIG_INTEL_IOMMU |
18 | 17 | ||
diff --git a/arch/ia64/kernel/perfmon.c b/arch/ia64/kernel/perfmon.c index b2c65e034f5d..9d0fd7d5bb82 100644 --- a/arch/ia64/kernel/perfmon.c +++ b/arch/ia64/kernel/perfmon.c | |||
@@ -49,7 +49,6 @@ | |||
49 | #include <asm/perfmon.h> | 49 | #include <asm/perfmon.h> |
50 | #include <asm/processor.h> | 50 | #include <asm/processor.h> |
51 | #include <asm/signal.h> | 51 | #include <asm/signal.h> |
52 | #include <asm/system.h> | ||
53 | #include <asm/uaccess.h> | 52 | #include <asm/uaccess.h> |
54 | #include <asm/delay.h> | 53 | #include <asm/delay.h> |
55 | 54 | ||
diff --git a/arch/ia64/kernel/ptrace.c b/arch/ia64/kernel/ptrace.c index dad91661ddf9..4265ff64219b 100644 --- a/arch/ia64/kernel/ptrace.c +++ b/arch/ia64/kernel/ptrace.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include <asm/processor.h> | 26 | #include <asm/processor.h> |
27 | #include <asm/ptrace_offsets.h> | 27 | #include <asm/ptrace_offsets.h> |
28 | #include <asm/rse.h> | 28 | #include <asm/rse.h> |
29 | #include <asm/system.h> | ||
30 | #include <asm/uaccess.h> | 29 | #include <asm/uaccess.h> |
31 | #include <asm/unwind.h> | 30 | #include <asm/unwind.h> |
32 | #ifdef CONFIG_PERFMON | 31 | #ifdef CONFIG_PERFMON |
diff --git a/arch/ia64/kernel/setup.c b/arch/ia64/kernel/setup.c index cd57d7312de0..c45e6ddb4ddb 100644 --- a/arch/ia64/kernel/setup.c +++ b/arch/ia64/kernel/setup.c | |||
@@ -59,7 +59,6 @@ | |||
59 | #include <asm/sections.h> | 59 | #include <asm/sections.h> |
60 | #include <asm/setup.h> | 60 | #include <asm/setup.h> |
61 | #include <asm/smp.h> | 61 | #include <asm/smp.h> |
62 | #include <asm/system.h> | ||
63 | #include <asm/tlbflush.h> | 62 | #include <asm/tlbflush.h> |
64 | #include <asm/unistd.h> | 63 | #include <asm/unistd.h> |
65 | #include <asm/hpsim.h> | 64 | #include <asm/hpsim.h> |
diff --git a/arch/ia64/kernel/smp.c b/arch/ia64/kernel/smp.c index 0bd537b4ea6b..e27f925032ae 100644 --- a/arch/ia64/kernel/smp.c +++ b/arch/ia64/kernel/smp.c | |||
@@ -44,7 +44,6 @@ | |||
44 | #include <asm/processor.h> | 44 | #include <asm/processor.h> |
45 | #include <asm/ptrace.h> | 45 | #include <asm/ptrace.h> |
46 | #include <asm/sal.h> | 46 | #include <asm/sal.h> |
47 | #include <asm/system.h> | ||
48 | #include <asm/tlbflush.h> | 47 | #include <asm/tlbflush.h> |
49 | #include <asm/unistd.h> | 48 | #include <asm/unistd.h> |
50 | #include <asm/mca.h> | 49 | #include <asm/mca.h> |
diff --git a/arch/ia64/kernel/smpboot.c b/arch/ia64/kernel/smpboot.c index 559097986672..fb7927be75c4 100644 --- a/arch/ia64/kernel/smpboot.c +++ b/arch/ia64/kernel/smpboot.c | |||
@@ -55,7 +55,6 @@ | |||
55 | #include <asm/processor.h> | 55 | #include <asm/processor.h> |
56 | #include <asm/ptrace.h> | 56 | #include <asm/ptrace.h> |
57 | #include <asm/sal.h> | 57 | #include <asm/sal.h> |
58 | #include <asm/system.h> | ||
59 | #include <asm/tlbflush.h> | 58 | #include <asm/tlbflush.h> |
60 | #include <asm/unistd.h> | 59 | #include <asm/unistd.h> |
61 | #include <asm/sn/arch.h> | 60 | #include <asm/sn/arch.h> |
diff --git a/arch/ia64/kernel/time.c b/arch/ia64/kernel/time.c index 43920de425f1..aa94bdda9de8 100644 --- a/arch/ia64/kernel/time.c +++ b/arch/ia64/kernel/time.c | |||
@@ -29,7 +29,6 @@ | |||
29 | #include <asm/ptrace.h> | 29 | #include <asm/ptrace.h> |
30 | #include <asm/sal.h> | 30 | #include <asm/sal.h> |
31 | #include <asm/sections.h> | 31 | #include <asm/sections.h> |
32 | #include <asm/system.h> | ||
33 | 32 | ||
34 | #include "fsyscall_gtod_data.h" | 33 | #include "fsyscall_gtod_data.h" |
35 | 34 | ||
diff --git a/arch/ia64/kernel/traps.c b/arch/ia64/kernel/traps.c index fd80e70018a9..bd42b76000d1 100644 --- a/arch/ia64/kernel/traps.c +++ b/arch/ia64/kernel/traps.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <asm/intrinsics.h> | 22 | #include <asm/intrinsics.h> |
23 | #include <asm/processor.h> | 23 | #include <asm/processor.h> |
24 | #include <asm/uaccess.h> | 24 | #include <asm/uaccess.h> |
25 | #include <asm/setup.h> | ||
25 | 26 | ||
26 | fpswa_interface_t *fpswa_interface; | 27 | fpswa_interface_t *fpswa_interface; |
27 | EXPORT_SYMBOL(fpswa_interface); | 28 | EXPORT_SYMBOL(fpswa_interface); |
diff --git a/arch/ia64/kernel/uncached.c b/arch/ia64/kernel/uncached.c index 6a867dc45c05..a96bcf83a735 100644 --- a/arch/ia64/kernel/uncached.c +++ b/arch/ia64/kernel/uncached.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include <linux/gfp.h> | 23 | #include <linux/gfp.h> |
24 | #include <asm/page.h> | 24 | #include <asm/page.h> |
25 | #include <asm/pal.h> | 25 | #include <asm/pal.h> |
26 | #include <asm/system.h> | ||
27 | #include <asm/pgtable.h> | 26 | #include <asm/pgtable.h> |
28 | #include <linux/atomic.h> | 27 | #include <linux/atomic.h> |
29 | #include <asm/tlbflush.h> | 28 | #include <asm/tlbflush.h> |
diff --git a/arch/ia64/kernel/unwind.c b/arch/ia64/kernel/unwind.c index fed6afa2e8a9..8f66195999e7 100644 --- a/arch/ia64/kernel/unwind.c +++ b/arch/ia64/kernel/unwind.c | |||
@@ -41,7 +41,6 @@ | |||
41 | #include <asm/ptrace_offsets.h> | 41 | #include <asm/ptrace_offsets.h> |
42 | #include <asm/rse.h> | 42 | #include <asm/rse.h> |
43 | #include <asm/sections.h> | 43 | #include <asm/sections.h> |
44 | #include <asm/system.h> | ||
45 | #include <asm/uaccess.h> | 44 | #include <asm/uaccess.h> |
46 | 45 | ||
47 | #include "entry.h" | 46 | #include "entry.h" |
diff --git a/arch/ia64/kernel/vmlinux.lds.S b/arch/ia64/kernel/vmlinux.lds.S index 53c0ba004e9e..0ccb28fab27e 100644 --- a/arch/ia64/kernel/vmlinux.lds.S +++ b/arch/ia64/kernel/vmlinux.lds.S | |||
@@ -1,7 +1,6 @@ | |||
1 | 1 | ||
2 | #include <asm/cache.h> | 2 | #include <asm/cache.h> |
3 | #include <asm/ptrace.h> | 3 | #include <asm/ptrace.h> |
4 | #include <asm/system.h> | ||
5 | #include <asm/pgtable.h> | 4 | #include <asm/pgtable.h> |
6 | 5 | ||
7 | #include <asm-generic/vmlinux.lds.h> | 6 | #include <asm-generic/vmlinux.lds.h> |
diff --git a/arch/ia64/mm/fault.c b/arch/ia64/mm/fault.c index 20b359376128..02d29c2a132a 100644 --- a/arch/ia64/mm/fault.c +++ b/arch/ia64/mm/fault.c | |||
@@ -14,7 +14,6 @@ | |||
14 | 14 | ||
15 | #include <asm/pgtable.h> | 15 | #include <asm/pgtable.h> |
16 | #include <asm/processor.h> | 16 | #include <asm/processor.h> |
17 | #include <asm/system.h> | ||
18 | #include <asm/uaccess.h> | 17 | #include <asm/uaccess.h> |
19 | 18 | ||
20 | extern int die(char *, struct pt_regs *, long); | 19 | extern int die(char *, struct pt_regs *, long); |
diff --git a/arch/ia64/mm/init.c b/arch/ia64/mm/init.c index 13df239dbed1..0eab454867a2 100644 --- a/arch/ia64/mm/init.c +++ b/arch/ia64/mm/init.c | |||
@@ -30,7 +30,6 @@ | |||
30 | #include <asm/pgalloc.h> | 30 | #include <asm/pgalloc.h> |
31 | #include <asm/sal.h> | 31 | #include <asm/sal.h> |
32 | #include <asm/sections.h> | 32 | #include <asm/sections.h> |
33 | #include <asm/system.h> | ||
34 | #include <asm/tlb.h> | 33 | #include <asm/tlb.h> |
35 | #include <asm/uaccess.h> | 34 | #include <asm/uaccess.h> |
36 | #include <asm/unistd.h> | 35 | #include <asm/unistd.h> |
diff --git a/arch/ia64/oprofile/backtrace.c b/arch/ia64/oprofile/backtrace.c index f7b798993cea..6a219a946050 100644 --- a/arch/ia64/oprofile/backtrace.c +++ b/arch/ia64/oprofile/backtrace.c | |||
@@ -14,7 +14,6 @@ | |||
14 | #include <linux/sched.h> | 14 | #include <linux/sched.h> |
15 | #include <linux/mm.h> | 15 | #include <linux/mm.h> |
16 | #include <asm/ptrace.h> | 16 | #include <asm/ptrace.h> |
17 | #include <asm/system.h> | ||
18 | 17 | ||
19 | /* | 18 | /* |
20 | * For IA64 we need to perform a complex little dance to get both | 19 | * For IA64 we need to perform a complex little dance to get both |
diff --git a/arch/ia64/pci/pci.c b/arch/ia64/pci/pci.c index d1ce3200147c..524df4295c90 100644 --- a/arch/ia64/pci/pci.c +++ b/arch/ia64/pci/pci.c | |||
@@ -24,7 +24,6 @@ | |||
24 | 24 | ||
25 | #include <asm/machvec.h> | 25 | #include <asm/machvec.h> |
26 | #include <asm/page.h> | 26 | #include <asm/page.h> |
27 | #include <asm/system.h> | ||
28 | #include <asm/io.h> | 27 | #include <asm/io.h> |
29 | #include <asm/sal.h> | 28 | #include <asm/sal.h> |
30 | #include <asm/smp.h> | 29 | #include <asm/smp.h> |
diff --git a/arch/ia64/sn/kernel/setup.c b/arch/ia64/sn/kernel/setup.c index 77db0b514fa4..f82e7b462b7b 100644 --- a/arch/ia64/sn/kernel/setup.c +++ b/arch/ia64/sn/kernel/setup.c | |||
@@ -33,9 +33,9 @@ | |||
33 | #include <asm/io.h> | 33 | #include <asm/io.h> |
34 | #include <asm/sal.h> | 34 | #include <asm/sal.h> |
35 | #include <asm/machvec.h> | 35 | #include <asm/machvec.h> |
36 | #include <asm/system.h> | ||
37 | #include <asm/processor.h> | 36 | #include <asm/processor.h> |
38 | #include <asm/vga.h> | 37 | #include <asm/vga.h> |
38 | #include <asm/setup.h> | ||
39 | #include <asm/sn/arch.h> | 39 | #include <asm/sn/arch.h> |
40 | #include <asm/sn/addrs.h> | 40 | #include <asm/sn/addrs.h> |
41 | #include <asm/sn/pda.h> | 41 | #include <asm/sn/pda.h> |
diff --git a/arch/ia64/sn/kernel/sn2/prominfo_proc.c b/arch/ia64/sn/kernel/sn2/prominfo_proc.c index e63328818643..20b88cb1881a 100644 --- a/arch/ia64/sn/kernel/sn2/prominfo_proc.c +++ b/arch/ia64/sn/kernel/sn2/prominfo_proc.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <linux/slab.h> | 12 | #include <linux/slab.h> |
13 | #include <linux/proc_fs.h> | 13 | #include <linux/proc_fs.h> |
14 | #include <linux/nodemask.h> | 14 | #include <linux/nodemask.h> |
15 | #include <asm/system.h> | ||
16 | #include <asm/io.h> | 15 | #include <asm/io.h> |
17 | #include <asm/sn/sn_sal.h> | 16 | #include <asm/sn/sn_sal.h> |
18 | #include <asm/sn/sn_cpuid.h> | 17 | #include <asm/sn/sn_cpuid.h> |
diff --git a/arch/ia64/sn/kernel/sn2/sn2_smp.c b/arch/ia64/sn/kernel/sn2/sn2_smp.c index e884ba4e031d..68c845411624 100644 --- a/arch/ia64/sn/kernel/sn2/sn2_smp.c +++ b/arch/ia64/sn/kernel/sn2/sn2_smp.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include <asm/processor.h> | 26 | #include <asm/processor.h> |
27 | #include <asm/irq.h> | 27 | #include <asm/irq.h> |
28 | #include <asm/sal.h> | 28 | #include <asm/sal.h> |
29 | #include <asm/system.h> | ||
30 | #include <asm/delay.h> | 29 | #include <asm/delay.h> |
31 | #include <asm/io.h> | 30 | #include <asm/io.h> |
32 | #include <asm/smp.h> | 31 | #include <asm/smp.h> |
diff --git a/arch/ia64/sn/kernel/sn2/timer.c b/arch/ia64/sn/kernel/sn2/timer.c index 0f8844e49363..abab8f99e913 100644 --- a/arch/ia64/sn/kernel/sn2/timer.c +++ b/arch/ia64/sn/kernel/sn2/timer.c | |||
@@ -14,7 +14,6 @@ | |||
14 | #include <linux/clocksource.h> | 14 | #include <linux/clocksource.h> |
15 | 15 | ||
16 | #include <asm/hw_irq.h> | 16 | #include <asm/hw_irq.h> |
17 | #include <asm/system.h> | ||
18 | #include <asm/timex.h> | 17 | #include <asm/timex.h> |
19 | 18 | ||
20 | #include <asm/sn/leds.h> | 19 | #include <asm/sn/leds.h> |
diff --git a/arch/ia64/sn/kernel/tiocx.c b/arch/ia64/sn/kernel/tiocx.c index 2f406f509d44..14c1711238c0 100644 --- a/arch/ia64/sn/kernel/tiocx.c +++ b/arch/ia64/sn/kernel/tiocx.c | |||
@@ -14,7 +14,6 @@ | |||
14 | #include <linux/capability.h> | 14 | #include <linux/capability.h> |
15 | #include <linux/device.h> | 15 | #include <linux/device.h> |
16 | #include <linux/delay.h> | 16 | #include <linux/delay.h> |
17 | #include <asm/system.h> | ||
18 | #include <asm/uaccess.h> | 17 | #include <asm/uaccess.h> |
19 | #include <asm/sn/sn_sal.h> | 18 | #include <asm/sn/sn_sal.h> |
20 | #include <asm/sn/addrs.h> | 19 | #include <asm/sn/addrs.h> |
diff --git a/arch/ia64/xen/xensetup.S b/arch/ia64/xen/xensetup.S index b820ed02ab9f..e29519ebe2d2 100644 --- a/arch/ia64/xen/xensetup.S +++ b/arch/ia64/xen/xensetup.S | |||
@@ -7,7 +7,6 @@ | |||
7 | #include <asm/processor.h> | 7 | #include <asm/processor.h> |
8 | #include <asm/asmmacro.h> | 8 | #include <asm/asmmacro.h> |
9 | #include <asm/pgtable.h> | 9 | #include <asm/pgtable.h> |
10 | #include <asm/system.h> | ||
11 | #include <asm/paravirt.h> | 10 | #include <asm/paravirt.h> |
12 | #include <asm/xen/privop.h> | 11 | #include <asm/xen/privop.h> |
13 | #include <linux/elfnote.h> | 12 | #include <linux/elfnote.h> |
diff --git a/arch/m32r/include/asm/atomic.h b/arch/m32r/include/asm/atomic.h index 1e7f29fb21f2..0d81697c326c 100644 --- a/arch/m32r/include/asm/atomic.h +++ b/arch/m32r/include/asm/atomic.h | |||
@@ -11,7 +11,8 @@ | |||
11 | 11 | ||
12 | #include <linux/types.h> | 12 | #include <linux/types.h> |
13 | #include <asm/assembler.h> | 13 | #include <asm/assembler.h> |
14 | #include <asm/system.h> | 14 | #include <asm/cmpxchg.h> |
15 | #include <asm/dcache_clear.h> | ||
15 | 16 | ||
16 | /* | 17 | /* |
17 | * Atomic operations that C can't guarantee us. Useful for | 18 | * Atomic operations that C can't guarantee us. Useful for |
diff --git a/arch/m32r/include/asm/barrier.h b/arch/m32r/include/asm/barrier.h new file mode 100644 index 000000000000..6976621efd3f --- /dev/null +++ b/arch/m32r/include/asm/barrier.h | |||
@@ -0,0 +1,94 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (C) 2001 Hiroyuki Kondo, Hirokazu Takata, and Hitoshi Yamamoto | ||
7 | * Copyright (C) 2004, 2006 Hirokazu Takata <takata at linux-m32r.org> | ||
8 | */ | ||
9 | #ifndef _ASM_M32R_BARRIER_H | ||
10 | #define _ASM_M32R_BARRIER_H | ||
11 | |||
12 | #define nop() __asm__ __volatile__ ("nop" : : ) | ||
13 | |||
14 | /* | ||
15 | * Memory barrier. | ||
16 | * | ||
17 | * mb() prevents loads and stores being reordered across this point. | ||
18 | * rmb() prevents loads being reordered across this point. | ||
19 | * wmb() prevents stores being reordered across this point. | ||
20 | */ | ||
21 | #define mb() barrier() | ||
22 | #define rmb() mb() | ||
23 | #define wmb() mb() | ||
24 | |||
25 | /** | ||
26 | * read_barrier_depends - Flush all pending reads that subsequents reads | ||
27 | * depend on. | ||
28 | * | ||
29 | * No data-dependent reads from memory-like regions are ever reordered | ||
30 | * over this barrier. All reads preceding this primitive are guaranteed | ||
31 | * to access memory (but not necessarily other CPUs' caches) before any | ||
32 | * reads following this primitive that depend on the data return by | ||
33 | * any of the preceding reads. This primitive is much lighter weight than | ||
34 | * rmb() on most CPUs, and is never heavier weight than is | ||
35 | * rmb(). | ||
36 | * | ||
37 | * These ordering constraints are respected by both the local CPU | ||
38 | * and the compiler. | ||
39 | * | ||
40 | * Ordering is not guaranteed by anything other than these primitives, | ||
41 | * not even by data dependencies. See the documentation for | ||
42 | * memory_barrier() for examples and URLs to more information. | ||
43 | * | ||
44 | * For example, the following code would force ordering (the initial | ||
45 | * value of "a" is zero, "b" is one, and "p" is "&a"): | ||
46 | * | ||
47 | * <programlisting> | ||
48 | * CPU 0 CPU 1 | ||
49 | * | ||
50 | * b = 2; | ||
51 | * memory_barrier(); | ||
52 | * p = &b; q = p; | ||
53 | * read_barrier_depends(); | ||
54 | * d = *q; | ||
55 | * </programlisting> | ||
56 | * | ||
57 | * | ||
58 | * because the read of "*q" depends on the read of "p" and these | ||
59 | * two reads are separated by a read_barrier_depends(). However, | ||
60 | * the following code, with the same initial values for "a" and "b": | ||
61 | * | ||
62 | * <programlisting> | ||
63 | * CPU 0 CPU 1 | ||
64 | * | ||
65 | * a = 2; | ||
66 | * memory_barrier(); | ||
67 | * b = 3; y = b; | ||
68 | * read_barrier_depends(); | ||
69 | * x = a; | ||
70 | * </programlisting> | ||
71 | * | ||
72 | * does not enforce ordering, since there is no data dependency between | ||
73 | * the read of "a" and the read of "b". Therefore, on some CPUs, such | ||
74 | * as Alpha, "y" could be set to 3 and "x" to 0. Use rmb() | ||
75 | * in cases like this where there are no data dependencies. | ||
76 | **/ | ||
77 | |||
78 | #define read_barrier_depends() do { } while (0) | ||
79 | |||
80 | #ifdef CONFIG_SMP | ||
81 | #define smp_mb() mb() | ||
82 | #define smp_rmb() rmb() | ||
83 | #define smp_wmb() wmb() | ||
84 | #define smp_read_barrier_depends() read_barrier_depends() | ||
85 | #define set_mb(var, value) do { (void) xchg(&var, value); } while (0) | ||
86 | #else | ||
87 | #define smp_mb() barrier() | ||
88 | #define smp_rmb() barrier() | ||
89 | #define smp_wmb() barrier() | ||
90 | #define smp_read_barrier_depends() do { } while (0) | ||
91 | #define set_mb(var, value) do { var = value; barrier(); } while (0) | ||
92 | #endif | ||
93 | |||
94 | #endif /* _ASM_M32R_BARRIER_H */ | ||
diff --git a/arch/m32r/include/asm/bitops.h b/arch/m32r/include/asm/bitops.h index 6300f22cdbdb..d3dea9ac7d4e 100644 --- a/arch/m32r/include/asm/bitops.h +++ b/arch/m32r/include/asm/bitops.h | |||
@@ -16,9 +16,10 @@ | |||
16 | #endif | 16 | #endif |
17 | 17 | ||
18 | #include <linux/compiler.h> | 18 | #include <linux/compiler.h> |
19 | #include <linux/irqflags.h> | ||
19 | #include <asm/assembler.h> | 20 | #include <asm/assembler.h> |
20 | #include <asm/system.h> | ||
21 | #include <asm/byteorder.h> | 21 | #include <asm/byteorder.h> |
22 | #include <asm/dcache_clear.h> | ||
22 | #include <asm/types.h> | 23 | #include <asm/types.h> |
23 | 24 | ||
24 | /* | 25 | /* |
diff --git a/arch/m32r/include/asm/cmpxchg.h b/arch/m32r/include/asm/cmpxchg.h new file mode 100644 index 000000000000..de651db20b43 --- /dev/null +++ b/arch/m32r/include/asm/cmpxchg.h | |||
@@ -0,0 +1,221 @@ | |||
1 | #ifndef _ASM_M32R_CMPXCHG_H | ||
2 | #define _ASM_M32R_CMPXCHG_H | ||
3 | |||
4 | /* | ||
5 | * M32R version: | ||
6 | * Copyright (C) 2001, 2002 Hitoshi Yamamoto | ||
7 | * Copyright (C) 2004 Hirokazu Takata <takata at linux-m32r.org> | ||
8 | */ | ||
9 | |||
10 | #include <linux/irqflags.h> | ||
11 | #include <asm/assembler.h> | ||
12 | #include <asm/dcache_clear.h> | ||
13 | |||
14 | extern void __xchg_called_with_bad_pointer(void); | ||
15 | |||
16 | static __always_inline unsigned long | ||
17 | __xchg(unsigned long x, volatile void *ptr, int size) | ||
18 | { | ||
19 | unsigned long flags; | ||
20 | unsigned long tmp = 0; | ||
21 | |||
22 | local_irq_save(flags); | ||
23 | |||
24 | switch (size) { | ||
25 | #ifndef CONFIG_SMP | ||
26 | case 1: | ||
27 | __asm__ __volatile__ ( | ||
28 | "ldb %0, @%2 \n\t" | ||
29 | "stb %1, @%2 \n\t" | ||
30 | : "=&r" (tmp) : "r" (x), "r" (ptr) : "memory"); | ||
31 | break; | ||
32 | case 2: | ||
33 | __asm__ __volatile__ ( | ||
34 | "ldh %0, @%2 \n\t" | ||
35 | "sth %1, @%2 \n\t" | ||
36 | : "=&r" (tmp) : "r" (x), "r" (ptr) : "memory"); | ||
37 | break; | ||
38 | case 4: | ||
39 | __asm__ __volatile__ ( | ||
40 | "ld %0, @%2 \n\t" | ||
41 | "st %1, @%2 \n\t" | ||
42 | : "=&r" (tmp) : "r" (x), "r" (ptr) : "memory"); | ||
43 | break; | ||
44 | #else /* CONFIG_SMP */ | ||
45 | case 4: | ||
46 | __asm__ __volatile__ ( | ||
47 | DCACHE_CLEAR("%0", "r4", "%2") | ||
48 | "lock %0, @%2; \n\t" | ||
49 | "unlock %1, @%2; \n\t" | ||
50 | : "=&r" (tmp) : "r" (x), "r" (ptr) | ||
51 | : "memory" | ||
52 | #ifdef CONFIG_CHIP_M32700_TS1 | ||
53 | , "r4" | ||
54 | #endif /* CONFIG_CHIP_M32700_TS1 */ | ||
55 | ); | ||
56 | break; | ||
57 | #endif /* CONFIG_SMP */ | ||
58 | default: | ||
59 | __xchg_called_with_bad_pointer(); | ||
60 | } | ||
61 | |||
62 | local_irq_restore(flags); | ||
63 | |||
64 | return (tmp); | ||
65 | } | ||
66 | |||
67 | #define xchg(ptr, x) \ | ||
68 | ((__typeof__(*(ptr)))__xchg((unsigned long)(x), (ptr), sizeof(*(ptr)))) | ||
69 | |||
70 | static __always_inline unsigned long | ||
71 | __xchg_local(unsigned long x, volatile void *ptr, int size) | ||
72 | { | ||
73 | unsigned long flags; | ||
74 | unsigned long tmp = 0; | ||
75 | |||
76 | local_irq_save(flags); | ||
77 | |||
78 | switch (size) { | ||
79 | case 1: | ||
80 | __asm__ __volatile__ ( | ||
81 | "ldb %0, @%2 \n\t" | ||
82 | "stb %1, @%2 \n\t" | ||
83 | : "=&r" (tmp) : "r" (x), "r" (ptr) : "memory"); | ||
84 | break; | ||
85 | case 2: | ||
86 | __asm__ __volatile__ ( | ||
87 | "ldh %0, @%2 \n\t" | ||
88 | "sth %1, @%2 \n\t" | ||
89 | : "=&r" (tmp) : "r" (x), "r" (ptr) : "memory"); | ||
90 | break; | ||
91 | case 4: | ||
92 | __asm__ __volatile__ ( | ||
93 | "ld %0, @%2 \n\t" | ||
94 | "st %1, @%2 \n\t" | ||
95 | : "=&r" (tmp) : "r" (x), "r" (ptr) : "memory"); | ||
96 | break; | ||
97 | default: | ||
98 | __xchg_called_with_bad_pointer(); | ||
99 | } | ||
100 | |||
101 | local_irq_restore(flags); | ||
102 | |||
103 | return (tmp); | ||
104 | } | ||
105 | |||
106 | #define xchg_local(ptr, x) \ | ||
107 | ((__typeof__(*(ptr)))__xchg_local((unsigned long)(x), (ptr), \ | ||
108 | sizeof(*(ptr)))) | ||
109 | |||
110 | #define __HAVE_ARCH_CMPXCHG 1 | ||
111 | |||
112 | static inline unsigned long | ||
113 | __cmpxchg_u32(volatile unsigned int *p, unsigned int old, unsigned int new) | ||
114 | { | ||
115 | unsigned long flags; | ||
116 | unsigned int retval; | ||
117 | |||
118 | local_irq_save(flags); | ||
119 | __asm__ __volatile__ ( | ||
120 | DCACHE_CLEAR("%0", "r4", "%1") | ||
121 | M32R_LOCK" %0, @%1; \n" | ||
122 | " bne %0, %2, 1f; \n" | ||
123 | M32R_UNLOCK" %3, @%1; \n" | ||
124 | " bra 2f; \n" | ||
125 | " .fillinsn \n" | ||
126 | "1:" | ||
127 | M32R_UNLOCK" %0, @%1; \n" | ||
128 | " .fillinsn \n" | ||
129 | "2:" | ||
130 | : "=&r" (retval) | ||
131 | : "r" (p), "r" (old), "r" (new) | ||
132 | : "cbit", "memory" | ||
133 | #ifdef CONFIG_CHIP_M32700_TS1 | ||
134 | , "r4" | ||
135 | #endif /* CONFIG_CHIP_M32700_TS1 */ | ||
136 | ); | ||
137 | local_irq_restore(flags); | ||
138 | |||
139 | return retval; | ||
140 | } | ||
141 | |||
142 | static inline unsigned long | ||
143 | __cmpxchg_local_u32(volatile unsigned int *p, unsigned int old, | ||
144 | unsigned int new) | ||
145 | { | ||
146 | unsigned long flags; | ||
147 | unsigned int retval; | ||
148 | |||
149 | local_irq_save(flags); | ||
150 | __asm__ __volatile__ ( | ||
151 | DCACHE_CLEAR("%0", "r4", "%1") | ||
152 | "ld %0, @%1; \n" | ||
153 | " bne %0, %2, 1f; \n" | ||
154 | "st %3, @%1; \n" | ||
155 | " bra 2f; \n" | ||
156 | " .fillinsn \n" | ||
157 | "1:" | ||
158 | "st %0, @%1; \n" | ||
159 | " .fillinsn \n" | ||
160 | "2:" | ||
161 | : "=&r" (retval) | ||
162 | : "r" (p), "r" (old), "r" (new) | ||
163 | : "cbit", "memory" | ||
164 | #ifdef CONFIG_CHIP_M32700_TS1 | ||
165 | , "r4" | ||
166 | #endif /* CONFIG_CHIP_M32700_TS1 */ | ||
167 | ); | ||
168 | local_irq_restore(flags); | ||
169 | |||
170 | return retval; | ||
171 | } | ||
172 | |||
173 | /* This function doesn't exist, so you'll get a linker error | ||
174 | if something tries to do an invalid cmpxchg(). */ | ||
175 | extern void __cmpxchg_called_with_bad_pointer(void); | ||
176 | |||
177 | static inline unsigned long | ||
178 | __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size) | ||
179 | { | ||
180 | switch (size) { | ||
181 | case 4: | ||
182 | return __cmpxchg_u32(ptr, old, new); | ||
183 | #if 0 /* we don't have __cmpxchg_u64 */ | ||
184 | case 8: | ||
185 | return __cmpxchg_u64(ptr, old, new); | ||
186 | #endif /* 0 */ | ||
187 | } | ||
188 | __cmpxchg_called_with_bad_pointer(); | ||
189 | return old; | ||
190 | } | ||
191 | |||
192 | #define cmpxchg(ptr, o, n) \ | ||
193 | ((__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)(o), \ | ||
194 | (unsigned long)(n), sizeof(*(ptr)))) | ||
195 | |||
196 | #include <asm-generic/cmpxchg-local.h> | ||
197 | |||
198 | static inline unsigned long __cmpxchg_local(volatile void *ptr, | ||
199 | unsigned long old, | ||
200 | unsigned long new, int size) | ||
201 | { | ||
202 | switch (size) { | ||
203 | case 4: | ||
204 | return __cmpxchg_local_u32(ptr, old, new); | ||
205 | default: | ||
206 | return __cmpxchg_local_generic(ptr, old, new, size); | ||
207 | } | ||
208 | |||
209 | return old; | ||
210 | } | ||
211 | |||
212 | /* | ||
213 | * cmpxchg_local and cmpxchg64_local are atomic wrt current CPU. Always make | ||
214 | * them available. | ||
215 | */ | ||
216 | #define cmpxchg_local(ptr, o, n) \ | ||
217 | ((__typeof__(*(ptr)))__cmpxchg_local((ptr), (unsigned long)(o), \ | ||
218 | (unsigned long)(n), sizeof(*(ptr)))) | ||
219 | #define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) | ||
220 | |||
221 | #endif /* _ASM_M32R_CMPXCHG_H */ | ||
diff --git a/arch/m32r/include/asm/dcache_clear.h b/arch/m32r/include/asm/dcache_clear.h new file mode 100644 index 000000000000..a0ae06c2e9e7 --- /dev/null +++ b/arch/m32r/include/asm/dcache_clear.h | |||
@@ -0,0 +1,29 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (C) 2001 Hiroyuki Kondo, Hirokazu Takata, and Hitoshi Yamamoto | ||
7 | * Copyright (C) 2004, 2006 Hirokazu Takata <takata at linux-m32r.org> | ||
8 | */ | ||
9 | #ifndef _ASM_M32R_DCACHE_CLEAR_H | ||
10 | #define _ASM_M32R_DCACHE_CLEAR_H | ||
11 | |||
12 | #ifdef CONFIG_CHIP_M32700_TS1 | ||
13 | #define DCACHE_CLEAR(reg0, reg1, addr) \ | ||
14 | "seth "reg1", #high(dcache_dummy); \n\t" \ | ||
15 | "or3 "reg1", "reg1", #low(dcache_dummy); \n\t" \ | ||
16 | "lock "reg0", @"reg1"; \n\t" \ | ||
17 | "add3 "reg0", "addr", #0x1000; \n\t" \ | ||
18 | "ld "reg0", @"reg0"; \n\t" \ | ||
19 | "add3 "reg0", "addr", #0x2000; \n\t" \ | ||
20 | "ld "reg0", @"reg0"; \n\t" \ | ||
21 | "unlock "reg0", @"reg1"; \n\t" | ||
22 | /* FIXME: This workaround code cannot handle kernel modules | ||
23 | * correctly under SMP environment. | ||
24 | */ | ||
25 | #else /* CONFIG_CHIP_M32700_TS1 */ | ||
26 | #define DCACHE_CLEAR(reg0, reg1, addr) | ||
27 | #endif /* CONFIG_CHIP_M32700_TS1 */ | ||
28 | |||
29 | #endif /* _ASM_M32R_DCACHE_CLEAR_H */ | ||
diff --git a/arch/m32r/include/asm/exec.h b/arch/m32r/include/asm/exec.h new file mode 100644 index 000000000000..c805dbd75b5d --- /dev/null +++ b/arch/m32r/include/asm/exec.h | |||
@@ -0,0 +1,14 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (C) 2001 Hiroyuki Kondo, Hirokazu Takata, and Hitoshi Yamamoto | ||
7 | * Copyright (C) 2004, 2006 Hirokazu Takata <takata at linux-m32r.org> | ||
8 | */ | ||
9 | #ifndef _ASM_M32R_EXEC_H | ||
10 | #define _ASM_M32R_EXEC_H | ||
11 | |||
12 | #define arch_align_stack(x) (x) | ||
13 | |||
14 | #endif /* _ASM_M32R_EXEC_H */ | ||
diff --git a/arch/m32r/include/asm/local.h b/arch/m32r/include/asm/local.h index 734bca87018a..4045db3e4f65 100644 --- a/arch/m32r/include/asm/local.h +++ b/arch/m32r/include/asm/local.h | |||
@@ -12,7 +12,6 @@ | |||
12 | 12 | ||
13 | #include <linux/percpu.h> | 13 | #include <linux/percpu.h> |
14 | #include <asm/assembler.h> | 14 | #include <asm/assembler.h> |
15 | #include <asm/system.h> | ||
16 | #include <asm/local.h> | 15 | #include <asm/local.h> |
17 | 16 | ||
18 | /* | 17 | /* |
diff --git a/arch/m32r/include/asm/spinlock.h b/arch/m32r/include/asm/spinlock.h index b0ea2f26da3b..fa13694eaae3 100644 --- a/arch/m32r/include/asm/spinlock.h +++ b/arch/m32r/include/asm/spinlock.h | |||
@@ -11,6 +11,7 @@ | |||
11 | 11 | ||
12 | #include <linux/compiler.h> | 12 | #include <linux/compiler.h> |
13 | #include <linux/atomic.h> | 13 | #include <linux/atomic.h> |
14 | #include <asm/dcache_clear.h> | ||
14 | #include <asm/page.h> | 15 | #include <asm/page.h> |
15 | 16 | ||
16 | /* | 17 | /* |
diff --git a/arch/m32r/include/asm/switch_to.h b/arch/m32r/include/asm/switch_to.h new file mode 100644 index 000000000000..4b262f7a8fe9 --- /dev/null +++ b/arch/m32r/include/asm/switch_to.h | |||
@@ -0,0 +1,51 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (C) 2001 Hiroyuki Kondo, Hirokazu Takata, and Hitoshi Yamamoto | ||
7 | * Copyright (C) 2004, 2006 Hirokazu Takata <takata at linux-m32r.org> | ||
8 | */ | ||
9 | #ifndef _ASM_M32R_SWITCH_TO_H | ||
10 | #define _ASM_M32R_SWITCH_TO_H | ||
11 | |||
12 | /* | ||
13 | * switch_to(prev, next) should switch from task `prev' to `next' | ||
14 | * `prev' will never be the same as `next'. | ||
15 | * | ||
16 | * `next' and `prev' should be struct task_struct, but it isn't always defined | ||
17 | */ | ||
18 | |||
19 | #if defined(CONFIG_FRAME_POINTER) || \ | ||
20 | !defined(CONFIG_SCHED_OMIT_FRAME_POINTER) | ||
21 | #define M32R_PUSH_FP " push fp\n" | ||
22 | #define M32R_POP_FP " pop fp\n" | ||
23 | #else | ||
24 | #define M32R_PUSH_FP "" | ||
25 | #define M32R_POP_FP "" | ||
26 | #endif | ||
27 | |||
28 | #define switch_to(prev, next, last) do { \ | ||
29 | __asm__ __volatile__ ( \ | ||
30 | " seth lr, #high(1f) \n" \ | ||
31 | " or3 lr, lr, #low(1f) \n" \ | ||
32 | " st lr, @%4 ; store old LR \n" \ | ||
33 | " ld lr, @%5 ; load new LR \n" \ | ||
34 | M32R_PUSH_FP \ | ||
35 | " st sp, @%2 ; store old SP \n" \ | ||
36 | " ld sp, @%3 ; load new SP \n" \ | ||
37 | " push %1 ; store `prev' on new stack \n" \ | ||
38 | " jmp lr \n" \ | ||
39 | " .fillinsn \n" \ | ||
40 | "1: \n" \ | ||
41 | " pop %0 ; restore `__last' from new stack \n" \ | ||
42 | M32R_POP_FP \ | ||
43 | : "=r" (last) \ | ||
44 | : "0" (prev), \ | ||
45 | "r" (&(prev->thread.sp)), "r" (&(next->thread.sp)), \ | ||
46 | "r" (&(prev->thread.lr)), "r" (&(next->thread.lr)) \ | ||
47 | : "memory", "lr" \ | ||
48 | ); \ | ||
49 | } while(0) | ||
50 | |||
51 | #endif /* _ASM_M32R_SWITCH_TO_H */ | ||
diff --git a/arch/m32r/include/asm/system.h b/arch/m32r/include/asm/system.h deleted file mode 100644 index 13c46794ccb1..000000000000 --- a/arch/m32r/include/asm/system.h +++ /dev/null | |||
@@ -1,367 +0,0 @@ | |||
1 | #ifndef _ASM_M32R_SYSTEM_H | ||
2 | #define _ASM_M32R_SYSTEM_H | ||
3 | |||
4 | /* | ||
5 | * This file is subject to the terms and conditions of the GNU General Public | ||
6 | * License. See the file "COPYING" in the main directory of this archive | ||
7 | * for more details. | ||
8 | * | ||
9 | * Copyright (C) 2001 Hiroyuki Kondo, Hirokazu Takata, and Hitoshi Yamamoto | ||
10 | * Copyright (C) 2004, 2006 Hirokazu Takata <takata at linux-m32r.org> | ||
11 | */ | ||
12 | |||
13 | #include <linux/compiler.h> | ||
14 | #include <linux/irqflags.h> | ||
15 | #include <asm/assembler.h> | ||
16 | |||
17 | #ifdef __KERNEL__ | ||
18 | |||
19 | /* | ||
20 | * switch_to(prev, next) should switch from task `prev' to `next' | ||
21 | * `prev' will never be the same as `next'. | ||
22 | * | ||
23 | * `next' and `prev' should be struct task_struct, but it isn't always defined | ||
24 | */ | ||
25 | |||
26 | #if defined(CONFIG_FRAME_POINTER) || \ | ||
27 | !defined(CONFIG_SCHED_OMIT_FRAME_POINTER) | ||
28 | #define M32R_PUSH_FP " push fp\n" | ||
29 | #define M32R_POP_FP " pop fp\n" | ||
30 | #else | ||
31 | #define M32R_PUSH_FP "" | ||
32 | #define M32R_POP_FP "" | ||
33 | #endif | ||
34 | |||
35 | #define switch_to(prev, next, last) do { \ | ||
36 | __asm__ __volatile__ ( \ | ||
37 | " seth lr, #high(1f) \n" \ | ||
38 | " or3 lr, lr, #low(1f) \n" \ | ||
39 | " st lr, @%4 ; store old LR \n" \ | ||
40 | " ld lr, @%5 ; load new LR \n" \ | ||
41 | M32R_PUSH_FP \ | ||
42 | " st sp, @%2 ; store old SP \n" \ | ||
43 | " ld sp, @%3 ; load new SP \n" \ | ||
44 | " push %1 ; store `prev' on new stack \n" \ | ||
45 | " jmp lr \n" \ | ||
46 | " .fillinsn \n" \ | ||
47 | "1: \n" \ | ||
48 | " pop %0 ; restore `__last' from new stack \n" \ | ||
49 | M32R_POP_FP \ | ||
50 | : "=r" (last) \ | ||
51 | : "0" (prev), \ | ||
52 | "r" (&(prev->thread.sp)), "r" (&(next->thread.sp)), \ | ||
53 | "r" (&(prev->thread.lr)), "r" (&(next->thread.lr)) \ | ||
54 | : "memory", "lr" \ | ||
55 | ); \ | ||
56 | } while(0) | ||
57 | |||
58 | #define nop() __asm__ __volatile__ ("nop" : : ) | ||
59 | |||
60 | #define xchg(ptr, x) \ | ||
61 | ((__typeof__(*(ptr)))__xchg((unsigned long)(x), (ptr), sizeof(*(ptr)))) | ||
62 | #define xchg_local(ptr, x) \ | ||
63 | ((__typeof__(*(ptr)))__xchg_local((unsigned long)(x), (ptr), \ | ||
64 | sizeof(*(ptr)))) | ||
65 | |||
66 | extern void __xchg_called_with_bad_pointer(void); | ||
67 | |||
68 | #ifdef CONFIG_CHIP_M32700_TS1 | ||
69 | #define DCACHE_CLEAR(reg0, reg1, addr) \ | ||
70 | "seth "reg1", #high(dcache_dummy); \n\t" \ | ||
71 | "or3 "reg1", "reg1", #low(dcache_dummy); \n\t" \ | ||
72 | "lock "reg0", @"reg1"; \n\t" \ | ||
73 | "add3 "reg0", "addr", #0x1000; \n\t" \ | ||
74 | "ld "reg0", @"reg0"; \n\t" \ | ||
75 | "add3 "reg0", "addr", #0x2000; \n\t" \ | ||
76 | "ld "reg0", @"reg0"; \n\t" \ | ||
77 | "unlock "reg0", @"reg1"; \n\t" | ||
78 | /* FIXME: This workaround code cannot handle kernel modules | ||
79 | * correctly under SMP environment. | ||
80 | */ | ||
81 | #else /* CONFIG_CHIP_M32700_TS1 */ | ||
82 | #define DCACHE_CLEAR(reg0, reg1, addr) | ||
83 | #endif /* CONFIG_CHIP_M32700_TS1 */ | ||
84 | |||
85 | static __always_inline unsigned long | ||
86 | __xchg(unsigned long x, volatile void *ptr, int size) | ||
87 | { | ||
88 | unsigned long flags; | ||
89 | unsigned long tmp = 0; | ||
90 | |||
91 | local_irq_save(flags); | ||
92 | |||
93 | switch (size) { | ||
94 | #ifndef CONFIG_SMP | ||
95 | case 1: | ||
96 | __asm__ __volatile__ ( | ||
97 | "ldb %0, @%2 \n\t" | ||
98 | "stb %1, @%2 \n\t" | ||
99 | : "=&r" (tmp) : "r" (x), "r" (ptr) : "memory"); | ||
100 | break; | ||
101 | case 2: | ||
102 | __asm__ __volatile__ ( | ||
103 | "ldh %0, @%2 \n\t" | ||
104 | "sth %1, @%2 \n\t" | ||
105 | : "=&r" (tmp) : "r" (x), "r" (ptr) : "memory"); | ||
106 | break; | ||
107 | case 4: | ||
108 | __asm__ __volatile__ ( | ||
109 | "ld %0, @%2 \n\t" | ||
110 | "st %1, @%2 \n\t" | ||
111 | : "=&r" (tmp) : "r" (x), "r" (ptr) : "memory"); | ||
112 | break; | ||
113 | #else /* CONFIG_SMP */ | ||
114 | case 4: | ||
115 | __asm__ __volatile__ ( | ||
116 | DCACHE_CLEAR("%0", "r4", "%2") | ||
117 | "lock %0, @%2; \n\t" | ||
118 | "unlock %1, @%2; \n\t" | ||
119 | : "=&r" (tmp) : "r" (x), "r" (ptr) | ||
120 | : "memory" | ||
121 | #ifdef CONFIG_CHIP_M32700_TS1 | ||
122 | , "r4" | ||
123 | #endif /* CONFIG_CHIP_M32700_TS1 */ | ||
124 | ); | ||
125 | break; | ||
126 | #endif /* CONFIG_SMP */ | ||
127 | default: | ||
128 | __xchg_called_with_bad_pointer(); | ||
129 | } | ||
130 | |||
131 | local_irq_restore(flags); | ||
132 | |||
133 | return (tmp); | ||
134 | } | ||
135 | |||
136 | static __always_inline unsigned long | ||
137 | __xchg_local(unsigned long x, volatile void *ptr, int size) | ||
138 | { | ||
139 | unsigned long flags; | ||
140 | unsigned long tmp = 0; | ||
141 | |||
142 | local_irq_save(flags); | ||
143 | |||
144 | switch (size) { | ||
145 | case 1: | ||
146 | __asm__ __volatile__ ( | ||
147 | "ldb %0, @%2 \n\t" | ||
148 | "stb %1, @%2 \n\t" | ||
149 | : "=&r" (tmp) : "r" (x), "r" (ptr) : "memory"); | ||
150 | break; | ||
151 | case 2: | ||
152 | __asm__ __volatile__ ( | ||
153 | "ldh %0, @%2 \n\t" | ||
154 | "sth %1, @%2 \n\t" | ||
155 | : "=&r" (tmp) : "r" (x), "r" (ptr) : "memory"); | ||
156 | break; | ||
157 | case 4: | ||
158 | __asm__ __volatile__ ( | ||
159 | "ld %0, @%2 \n\t" | ||
160 | "st %1, @%2 \n\t" | ||
161 | : "=&r" (tmp) : "r" (x), "r" (ptr) : "memory"); | ||
162 | break; | ||
163 | default: | ||
164 | __xchg_called_with_bad_pointer(); | ||
165 | } | ||
166 | |||
167 | local_irq_restore(flags); | ||
168 | |||
169 | return (tmp); | ||
170 | } | ||
171 | |||
172 | #define __HAVE_ARCH_CMPXCHG 1 | ||
173 | |||
174 | static inline unsigned long | ||
175 | __cmpxchg_u32(volatile unsigned int *p, unsigned int old, unsigned int new) | ||
176 | { | ||
177 | unsigned long flags; | ||
178 | unsigned int retval; | ||
179 | |||
180 | local_irq_save(flags); | ||
181 | __asm__ __volatile__ ( | ||
182 | DCACHE_CLEAR("%0", "r4", "%1") | ||
183 | M32R_LOCK" %0, @%1; \n" | ||
184 | " bne %0, %2, 1f; \n" | ||
185 | M32R_UNLOCK" %3, @%1; \n" | ||
186 | " bra 2f; \n" | ||
187 | " .fillinsn \n" | ||
188 | "1:" | ||
189 | M32R_UNLOCK" %0, @%1; \n" | ||
190 | " .fillinsn \n" | ||
191 | "2:" | ||
192 | : "=&r" (retval) | ||
193 | : "r" (p), "r" (old), "r" (new) | ||
194 | : "cbit", "memory" | ||
195 | #ifdef CONFIG_CHIP_M32700_TS1 | ||
196 | , "r4" | ||
197 | #endif /* CONFIG_CHIP_M32700_TS1 */ | ||
198 | ); | ||
199 | local_irq_restore(flags); | ||
200 | |||
201 | return retval; | ||
202 | } | ||
203 | |||
204 | static inline unsigned long | ||
205 | __cmpxchg_local_u32(volatile unsigned int *p, unsigned int old, | ||
206 | unsigned int new) | ||
207 | { | ||
208 | unsigned long flags; | ||
209 | unsigned int retval; | ||
210 | |||
211 | local_irq_save(flags); | ||
212 | __asm__ __volatile__ ( | ||
213 | DCACHE_CLEAR("%0", "r4", "%1") | ||
214 | "ld %0, @%1; \n" | ||
215 | " bne %0, %2, 1f; \n" | ||
216 | "st %3, @%1; \n" | ||
217 | " bra 2f; \n" | ||
218 | " .fillinsn \n" | ||
219 | "1:" | ||
220 | "st %0, @%1; \n" | ||
221 | " .fillinsn \n" | ||
222 | "2:" | ||
223 | : "=&r" (retval) | ||
224 | : "r" (p), "r" (old), "r" (new) | ||
225 | : "cbit", "memory" | ||
226 | #ifdef CONFIG_CHIP_M32700_TS1 | ||
227 | , "r4" | ||
228 | #endif /* CONFIG_CHIP_M32700_TS1 */ | ||
229 | ); | ||
230 | local_irq_restore(flags); | ||
231 | |||
232 | return retval; | ||
233 | } | ||
234 | |||
235 | /* This function doesn't exist, so you'll get a linker error | ||
236 | if something tries to do an invalid cmpxchg(). */ | ||
237 | extern void __cmpxchg_called_with_bad_pointer(void); | ||
238 | |||
239 | static inline unsigned long | ||
240 | __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size) | ||
241 | { | ||
242 | switch (size) { | ||
243 | case 4: | ||
244 | return __cmpxchg_u32(ptr, old, new); | ||
245 | #if 0 /* we don't have __cmpxchg_u64 */ | ||
246 | case 8: | ||
247 | return __cmpxchg_u64(ptr, old, new); | ||
248 | #endif /* 0 */ | ||
249 | } | ||
250 | __cmpxchg_called_with_bad_pointer(); | ||
251 | return old; | ||
252 | } | ||
253 | |||
254 | #define cmpxchg(ptr, o, n) \ | ||
255 | ((__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)(o), \ | ||
256 | (unsigned long)(n), sizeof(*(ptr)))) | ||
257 | |||
258 | #include <asm-generic/cmpxchg-local.h> | ||
259 | |||
260 | static inline unsigned long __cmpxchg_local(volatile void *ptr, | ||
261 | unsigned long old, | ||
262 | unsigned long new, int size) | ||
263 | { | ||
264 | switch (size) { | ||
265 | case 4: | ||
266 | return __cmpxchg_local_u32(ptr, old, new); | ||
267 | default: | ||
268 | return __cmpxchg_local_generic(ptr, old, new, size); | ||
269 | } | ||
270 | |||
271 | return old; | ||
272 | } | ||
273 | |||
274 | /* | ||
275 | * cmpxchg_local and cmpxchg64_local are atomic wrt current CPU. Always make | ||
276 | * them available. | ||
277 | */ | ||
278 | #define cmpxchg_local(ptr, o, n) \ | ||
279 | ((__typeof__(*(ptr)))__cmpxchg_local((ptr), (unsigned long)(o), \ | ||
280 | (unsigned long)(n), sizeof(*(ptr)))) | ||
281 | #define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) | ||
282 | |||
283 | #endif /* __KERNEL__ */ | ||
284 | |||
285 | /* | ||
286 | * Memory barrier. | ||
287 | * | ||
288 | * mb() prevents loads and stores being reordered across this point. | ||
289 | * rmb() prevents loads being reordered across this point. | ||
290 | * wmb() prevents stores being reordered across this point. | ||
291 | */ | ||
292 | #define mb() barrier() | ||
293 | #define rmb() mb() | ||
294 | #define wmb() mb() | ||
295 | |||
296 | /** | ||
297 | * read_barrier_depends - Flush all pending reads that subsequents reads | ||
298 | * depend on. | ||
299 | * | ||
300 | * No data-dependent reads from memory-like regions are ever reordered | ||
301 | * over this barrier. All reads preceding this primitive are guaranteed | ||
302 | * to access memory (but not necessarily other CPUs' caches) before any | ||
303 | * reads following this primitive that depend on the data return by | ||
304 | * any of the preceding reads. This primitive is much lighter weight than | ||
305 | * rmb() on most CPUs, and is never heavier weight than is | ||
306 | * rmb(). | ||
307 | * | ||
308 | * These ordering constraints are respected by both the local CPU | ||
309 | * and the compiler. | ||
310 | * | ||
311 | * Ordering is not guaranteed by anything other than these primitives, | ||
312 | * not even by data dependencies. See the documentation for | ||
313 | * memory_barrier() for examples and URLs to more information. | ||
314 | * | ||
315 | * For example, the following code would force ordering (the initial | ||
316 | * value of "a" is zero, "b" is one, and "p" is "&a"): | ||
317 | * | ||
318 | * <programlisting> | ||
319 | * CPU 0 CPU 1 | ||
320 | * | ||
321 | * b = 2; | ||
322 | * memory_barrier(); | ||
323 | * p = &b; q = p; | ||
324 | * read_barrier_depends(); | ||
325 | * d = *q; | ||
326 | * </programlisting> | ||
327 | * | ||
328 | * | ||
329 | * because the read of "*q" depends on the read of "p" and these | ||
330 | * two reads are separated by a read_barrier_depends(). However, | ||
331 | * the following code, with the same initial values for "a" and "b": | ||
332 | * | ||
333 | * <programlisting> | ||
334 | * CPU 0 CPU 1 | ||
335 | * | ||
336 | * a = 2; | ||
337 | * memory_barrier(); | ||
338 | * b = 3; y = b; | ||
339 | * read_barrier_depends(); | ||
340 | * x = a; | ||
341 | * </programlisting> | ||
342 | * | ||
343 | * does not enforce ordering, since there is no data dependency between | ||
344 | * the read of "a" and the read of "b". Therefore, on some CPUs, such | ||
345 | * as Alpha, "y" could be set to 3 and "x" to 0. Use rmb() | ||
346 | * in cases like this where there are no data dependencies. | ||
347 | **/ | ||
348 | |||
349 | #define read_barrier_depends() do { } while (0) | ||
350 | |||
351 | #ifdef CONFIG_SMP | ||
352 | #define smp_mb() mb() | ||
353 | #define smp_rmb() rmb() | ||
354 | #define smp_wmb() wmb() | ||
355 | #define smp_read_barrier_depends() read_barrier_depends() | ||
356 | #define set_mb(var, value) do { (void) xchg(&var, value); } while (0) | ||
357 | #else | ||
358 | #define smp_mb() barrier() | ||
359 | #define smp_rmb() barrier() | ||
360 | #define smp_wmb() barrier() | ||
361 | #define smp_read_barrier_depends() do { } while (0) | ||
362 | #define set_mb(var, value) do { var = value; barrier(); } while (0) | ||
363 | #endif | ||
364 | |||
365 | #define arch_align_stack(x) (x) | ||
366 | |||
367 | #endif /* _ASM_M32R_SYSTEM_H */ | ||
diff --git a/arch/m32r/kernel/ptrace.c b/arch/m32r/kernel/ptrace.c index 20743754f2b2..4c03361537aa 100644 --- a/arch/m32r/kernel/ptrace.c +++ b/arch/m32r/kernel/ptrace.c | |||
@@ -29,7 +29,6 @@ | |||
29 | #include <asm/io.h> | 29 | #include <asm/io.h> |
30 | #include <asm/uaccess.h> | 30 | #include <asm/uaccess.h> |
31 | #include <asm/pgtable.h> | 31 | #include <asm/pgtable.h> |
32 | #include <asm/system.h> | ||
33 | #include <asm/processor.h> | 32 | #include <asm/processor.h> |
34 | #include <asm/mmu_context.h> | 33 | #include <asm/mmu_context.h> |
35 | 34 | ||
diff --git a/arch/m32r/kernel/traps.c b/arch/m32r/kernel/traps.c index ee6a9199561c..3bcb207e5b6d 100644 --- a/arch/m32r/kernel/traps.c +++ b/arch/m32r/kernel/traps.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <asm/page.h> | 18 | #include <asm/page.h> |
19 | #include <asm/processor.h> | 19 | #include <asm/processor.h> |
20 | 20 | ||
21 | #include <asm/system.h> | ||
22 | #include <asm/uaccess.h> | 21 | #include <asm/uaccess.h> |
23 | #include <asm/io.h> | 22 | #include <asm/io.h> |
24 | #include <linux/atomic.h> | 23 | #include <linux/atomic.h> |
diff --git a/arch/m32r/mm/fault-nommu.c b/arch/m32r/mm/fault-nommu.c index 888aab1157ed..80f18cc6f547 100644 --- a/arch/m32r/mm/fault-nommu.c +++ b/arch/m32r/mm/fault-nommu.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <linux/vt_kern.h> /* For unblank_screen() */ | 22 | #include <linux/vt_kern.h> /* For unblank_screen() */ |
23 | 23 | ||
24 | #include <asm/m32r.h> | 24 | #include <asm/m32r.h> |
25 | #include <asm/system.h> | ||
26 | #include <asm/uaccess.h> | 25 | #include <asm/uaccess.h> |
27 | #include <asm/pgalloc.h> | 26 | #include <asm/pgalloc.h> |
28 | #include <asm/pgtable.h> | 27 | #include <asm/pgtable.h> |
diff --git a/arch/m32r/mm/fault.c b/arch/m32r/mm/fault.c index 2c9aeb453847..3cdfa9c1d091 100644 --- a/arch/m32r/mm/fault.c +++ b/arch/m32r/mm/fault.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include <linux/module.h> | 26 | #include <linux/module.h> |
27 | 27 | ||
28 | #include <asm/m32r.h> | 28 | #include <asm/m32r.h> |
29 | #include <asm/system.h> | ||
30 | #include <asm/uaccess.h> | 29 | #include <asm/uaccess.h> |
31 | #include <asm/hardirq.h> | 30 | #include <asm/hardirq.h> |
32 | #include <asm/mmu_context.h> | 31 | #include <asm/mmu_context.h> |
diff --git a/arch/m32r/platforms/m32104ut/setup.c b/arch/m32r/platforms/m32104ut/setup.c index 34671d32cefc..e2dd778aeac7 100644 --- a/arch/m32r/platforms/m32104ut/setup.c +++ b/arch/m32r/platforms/m32104ut/setup.c | |||
@@ -13,7 +13,6 @@ | |||
13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
14 | #include <linux/device.h> | 14 | #include <linux/device.h> |
15 | 15 | ||
16 | #include <asm/system.h> | ||
17 | #include <asm/m32r.h> | 16 | #include <asm/m32r.h> |
18 | #include <asm/io.h> | 17 | #include <asm/io.h> |
19 | 18 | ||
diff --git a/arch/m32r/platforms/m32700ut/setup.c b/arch/m32r/platforms/m32700ut/setup.c index 1053e1cb7401..9a4ba8a8589d 100644 --- a/arch/m32r/platforms/m32700ut/setup.c +++ b/arch/m32r/platforms/m32700ut/setup.c | |||
@@ -16,7 +16,6 @@ | |||
16 | #include <linux/init.h> | 16 | #include <linux/init.h> |
17 | #include <linux/platform_device.h> | 17 | #include <linux/platform_device.h> |
18 | 18 | ||
19 | #include <asm/system.h> | ||
20 | #include <asm/m32r.h> | 19 | #include <asm/m32r.h> |
21 | #include <asm/io.h> | 20 | #include <asm/io.h> |
22 | 21 | ||
diff --git a/arch/m32r/platforms/mappi/setup.c b/arch/m32r/platforms/mappi/setup.c index 35130ac3f8d1..767d2f4d6ded 100644 --- a/arch/m32r/platforms/mappi/setup.c +++ b/arch/m32r/platforms/mappi/setup.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/platform_device.h> | 13 | #include <linux/platform_device.h> |
14 | 14 | ||
15 | #include <asm/system.h> | ||
16 | #include <asm/m32r.h> | 15 | #include <asm/m32r.h> |
17 | #include <asm/io.h> | 16 | #include <asm/io.h> |
18 | 17 | ||
diff --git a/arch/m32r/platforms/mappi2/setup.c b/arch/m32r/platforms/mappi2/setup.c index f3ed6b60a5f8..76d665abf51e 100644 --- a/arch/m32r/platforms/mappi2/setup.c +++ b/arch/m32r/platforms/mappi2/setup.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/platform_device.h> | 13 | #include <linux/platform_device.h> |
14 | 14 | ||
15 | #include <asm/system.h> | ||
16 | #include <asm/m32r.h> | 15 | #include <asm/m32r.h> |
17 | #include <asm/io.h> | 16 | #include <asm/io.h> |
18 | 17 | ||
diff --git a/arch/m32r/platforms/mappi3/setup.c b/arch/m32r/platforms/mappi3/setup.c index 2408e356ad10..a3646d4b05bd 100644 --- a/arch/m32r/platforms/mappi3/setup.c +++ b/arch/m32r/platforms/mappi3/setup.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/platform_device.h> | 13 | #include <linux/platform_device.h> |
14 | 14 | ||
15 | #include <asm/system.h> | ||
16 | #include <asm/m32r.h> | 15 | #include <asm/m32r.h> |
17 | #include <asm/io.h> | 16 | #include <asm/io.h> |
18 | 17 | ||
diff --git a/arch/m32r/platforms/oaks32r/setup.c b/arch/m32r/platforms/oaks32r/setup.c index 83b46b067a17..f8373c069524 100644 --- a/arch/m32r/platforms/oaks32r/setup.c +++ b/arch/m32r/platforms/oaks32r/setup.c | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | 13 | ||
14 | #include <asm/system.h> | ||
15 | #include <asm/m32r.h> | 14 | #include <asm/m32r.h> |
16 | #include <asm/io.h> | 15 | #include <asm/io.h> |
17 | 16 | ||
diff --git a/arch/m32r/platforms/opsput/setup.c b/arch/m32r/platforms/opsput/setup.c index 32660705f5fd..cd0170483e83 100644 --- a/arch/m32r/platforms/opsput/setup.c +++ b/arch/m32r/platforms/opsput/setup.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
18 | #include <linux/platform_device.h> | 18 | #include <linux/platform_device.h> |
19 | 19 | ||
20 | #include <asm/system.h> | ||
21 | #include <asm/m32r.h> | 20 | #include <asm/m32r.h> |
22 | #include <asm/io.h> | 21 | #include <asm/io.h> |
23 | 22 | ||
diff --git a/arch/m32r/platforms/usrv/setup.c b/arch/m32r/platforms/usrv/setup.c index 0c7a1e8c77b0..dcde0ec777f6 100644 --- a/arch/m32r/platforms/usrv/setup.c +++ b/arch/m32r/platforms/usrv/setup.c | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | 13 | ||
14 | #include <asm/system.h> | ||
15 | #include <asm/m32r.h> | 14 | #include <asm/m32r.h> |
16 | #include <asm/io.h> | 15 | #include <asm/io.h> |
17 | 16 | ||
diff --git a/arch/m68k/amiga/amisound.c b/arch/m68k/amiga/amisound.c index 61e5c54625ae..2559eefc6aff 100644 --- a/arch/m68k/amiga/amisound.c +++ b/arch/m68k/amiga/amisound.c | |||
@@ -14,7 +14,6 @@ | |||
14 | #include <linux/string.h> | 14 | #include <linux/string.h> |
15 | #include <linux/module.h> | 15 | #include <linux/module.h> |
16 | 16 | ||
17 | #include <asm/system.h> | ||
18 | #include <asm/amigahw.h> | 17 | #include <asm/amigahw.h> |
19 | 18 | ||
20 | static unsigned short *snd_data; | 19 | static unsigned short *snd_data; |
diff --git a/arch/m68k/amiga/config.c b/arch/m68k/amiga/config.c index b95a451b1c3a..ee01b7a38e58 100644 --- a/arch/m68k/amiga/config.c +++ b/arch/m68k/amiga/config.c | |||
@@ -29,7 +29,6 @@ | |||
29 | 29 | ||
30 | #include <asm/bootinfo.h> | 30 | #include <asm/bootinfo.h> |
31 | #include <asm/setup.h> | 31 | #include <asm/setup.h> |
32 | #include <asm/system.h> | ||
33 | #include <asm/pgtable.h> | 32 | #include <asm/pgtable.h> |
34 | #include <asm/amigahw.h> | 33 | #include <asm/amigahw.h> |
35 | #include <asm/amigaints.h> | 34 | #include <asm/amigaints.h> |
diff --git a/arch/m68k/apollo/config.c b/arch/m68k/apollo/config.c index 8d3eafab1ffe..0a30406b9442 100644 --- a/arch/m68k/apollo/config.c +++ b/arch/m68k/apollo/config.c | |||
@@ -9,7 +9,6 @@ | |||
9 | 9 | ||
10 | #include <asm/setup.h> | 10 | #include <asm/setup.h> |
11 | #include <asm/bootinfo.h> | 11 | #include <asm/bootinfo.h> |
12 | #include <asm/system.h> | ||
13 | #include <asm/pgtable.h> | 12 | #include <asm/pgtable.h> |
14 | #include <asm/apollohw.h> | 13 | #include <asm/apollohw.h> |
15 | #include <asm/irq.h> | 14 | #include <asm/irq.h> |
diff --git a/arch/m68k/atari/ataints.c b/arch/m68k/atari/ataints.c index 8048e1b7e552..783d8f02360d 100644 --- a/arch/m68k/atari/ataints.c +++ b/arch/m68k/atari/ataints.c | |||
@@ -42,7 +42,6 @@ | |||
42 | #include <linux/seq_file.h> | 42 | #include <linux/seq_file.h> |
43 | #include <linux/module.h> | 43 | #include <linux/module.h> |
44 | 44 | ||
45 | #include <asm/system.h> | ||
46 | #include <asm/traps.h> | 45 | #include <asm/traps.h> |
47 | 46 | ||
48 | #include <asm/atarihw.h> | 47 | #include <asm/atarihw.h> |
diff --git a/arch/m68k/atari/atasound.c b/arch/m68k/atari/atasound.c index d266fe89c125..1c1181ebb947 100644 --- a/arch/m68k/atari/atasound.c +++ b/arch/m68k/atari/atasound.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include <linux/module.h> | 25 | #include <linux/module.h> |
26 | 26 | ||
27 | #include <asm/atarihw.h> | 27 | #include <asm/atarihw.h> |
28 | #include <asm/system.h> | ||
29 | #include <asm/irq.h> | 28 | #include <asm/irq.h> |
30 | #include <asm/pgtable.h> | 29 | #include <asm/pgtable.h> |
31 | #include <asm/atariints.h> | 30 | #include <asm/atariints.h> |
diff --git a/arch/m68k/atari/config.c b/arch/m68k/atari/config.c index c4ac15c4f065..d8eb32747ac5 100644 --- a/arch/m68k/atari/config.c +++ b/arch/m68k/atari/config.c | |||
@@ -39,7 +39,6 @@ | |||
39 | #include <asm/atarihw.h> | 39 | #include <asm/atarihw.h> |
40 | #include <asm/atariints.h> | 40 | #include <asm/atariints.h> |
41 | #include <asm/atari_stram.h> | 41 | #include <asm/atari_stram.h> |
42 | #include <asm/system.h> | ||
43 | #include <asm/machdep.h> | 42 | #include <asm/machdep.h> |
44 | #include <asm/hwtest.h> | 43 | #include <asm/hwtest.h> |
45 | #include <asm/io.h> | 44 | #include <asm/io.h> |
diff --git a/arch/m68k/bvme6000/config.c b/arch/m68k/bvme6000/config.c index 81286476f740..0bf850a20ea2 100644 --- a/arch/m68k/bvme6000/config.c +++ b/arch/m68k/bvme6000/config.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <linux/bcd.h> | 28 | #include <linux/bcd.h> |
29 | 29 | ||
30 | #include <asm/bootinfo.h> | 30 | #include <asm/bootinfo.h> |
31 | #include <asm/system.h> | ||
32 | #include <asm/pgtable.h> | 31 | #include <asm/pgtable.h> |
33 | #include <asm/setup.h> | 32 | #include <asm/setup.h> |
34 | #include <asm/irq.h> | 33 | #include <asm/irq.h> |
diff --git a/arch/m68k/bvme6000/rtc.c b/arch/m68k/bvme6000/rtc.c index 1c4d4c7bf4d4..cf12a17dc289 100644 --- a/arch/m68k/bvme6000/rtc.c +++ b/arch/m68k/bvme6000/rtc.c | |||
@@ -21,7 +21,6 @@ | |||
21 | 21 | ||
22 | #include <asm/io.h> | 22 | #include <asm/io.h> |
23 | #include <asm/uaccess.h> | 23 | #include <asm/uaccess.h> |
24 | #include <asm/system.h> | ||
25 | #include <asm/setup.h> | 24 | #include <asm/setup.h> |
26 | 25 | ||
27 | /* | 26 | /* |
diff --git a/arch/m68k/hp300/time.c b/arch/m68k/hp300/time.c index c87fe69b0728..29a71be9fa5b 100644 --- a/arch/m68k/hp300/time.c +++ b/arch/m68k/hp300/time.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <asm/machdep.h> | 15 | #include <asm/machdep.h> |
16 | #include <asm/irq.h> | 16 | #include <asm/irq.h> |
17 | #include <asm/io.h> | 17 | #include <asm/io.h> |
18 | #include <asm/system.h> | ||
19 | #include <asm/traps.h> | 18 | #include <asm/traps.h> |
20 | #include <asm/blinken.h> | 19 | #include <asm/blinken.h> |
21 | 20 | ||
diff --git a/arch/m68k/include/asm/atomic.h b/arch/m68k/include/asm/atomic.h index 4eba796c00d4..336e6173794f 100644 --- a/arch/m68k/include/asm/atomic.h +++ b/arch/m68k/include/asm/atomic.h | |||
@@ -2,7 +2,7 @@ | |||
2 | #define __ARCH_M68K_ATOMIC__ | 2 | #define __ARCH_M68K_ATOMIC__ |
3 | 3 | ||
4 | #include <linux/types.h> | 4 | #include <linux/types.h> |
5 | #include <asm/system.h> | 5 | #include <linux/irqflags.h> |
6 | 6 | ||
7 | /* | 7 | /* |
8 | * Atomic operations that C can't guarantee us. Useful for | 8 | * Atomic operations that C can't guarantee us. Useful for |
diff --git a/arch/m68k/include/asm/barrier.h b/arch/m68k/include/asm/barrier.h new file mode 100644 index 000000000000..445ce22c23cb --- /dev/null +++ b/arch/m68k/include/asm/barrier.h | |||
@@ -0,0 +1,20 @@ | |||
1 | #ifndef _M68K_BARRIER_H | ||
2 | #define _M68K_BARRIER_H | ||
3 | |||
4 | /* | ||
5 | * Force strict CPU ordering. | ||
6 | * Not really required on m68k... | ||
7 | */ | ||
8 | #define nop() do { asm volatile ("nop"); barrier(); } while (0) | ||
9 | #define mb() barrier() | ||
10 | #define rmb() barrier() | ||
11 | #define wmb() barrier() | ||
12 | #define read_barrier_depends() ((void)0) | ||
13 | #define set_mb(var, value) ({ (var) = (value); wmb(); }) | ||
14 | |||
15 | #define smp_mb() barrier() | ||
16 | #define smp_rmb() barrier() | ||
17 | #define smp_wmb() barrier() | ||
18 | #define smp_read_barrier_depends() ((void)0) | ||
19 | |||
20 | #endif /* _M68K_BARRIER_H */ | ||
diff --git a/arch/m68k/include/asm/system.h b/arch/m68k/include/asm/cmpxchg.h index 8dc68178716c..5c81d0eae5cf 100644 --- a/arch/m68k/include/asm/system.h +++ b/arch/m68k/include/asm/cmpxchg.h | |||
@@ -1,74 +1,13 @@ | |||
1 | #ifndef _M68K_SYSTEM_H | 1 | #ifndef __ARCH_M68K_CMPXCHG__ |
2 | #define _M68K_SYSTEM_H | 2 | #define __ARCH_M68K_CMPXCHG__ |
3 | 3 | ||
4 | #include <linux/linkage.h> | ||
5 | #include <linux/kernel.h> | ||
6 | #include <linux/bug.h> | ||
7 | #include <linux/irqflags.h> | 4 | #include <linux/irqflags.h> |
8 | #include <asm/segment.h> | ||
9 | #include <asm/entry.h> | ||
10 | |||
11 | #ifdef __KERNEL__ | ||
12 | |||
13 | /* | ||
14 | * switch_to(n) should switch tasks to task ptr, first checking that | ||
15 | * ptr isn't the current task, in which case it does nothing. This | ||
16 | * also clears the TS-flag if the task we switched to has used the | ||
17 | * math co-processor latest. | ||
18 | */ | ||
19 | /* | ||
20 | * switch_to() saves the extra registers, that are not saved | ||
21 | * automatically by SAVE_SWITCH_STACK in resume(), ie. d0-d5 and | ||
22 | * a0-a1. Some of these are used by schedule() and its predecessors | ||
23 | * and so we might get see unexpected behaviors when a task returns | ||
24 | * with unexpected register values. | ||
25 | * | ||
26 | * syscall stores these registers itself and none of them are used | ||
27 | * by syscall after the function in the syscall has been called. | ||
28 | * | ||
29 | * Beware that resume now expects *next to be in d1 and the offset of | ||
30 | * tss to be in a1. This saves a few instructions as we no longer have | ||
31 | * to push them onto the stack and read them back right after. | ||
32 | * | ||
33 | * 02/17/96 - Jes Sorensen (jds@kom.auc.dk) | ||
34 | * | ||
35 | * Changed 96/09/19 by Andreas Schwab | ||
36 | * pass prev in a0, next in a1 | ||
37 | */ | ||
38 | asmlinkage void resume(void); | ||
39 | #define switch_to(prev,next,last) do { \ | ||
40 | register void *_prev __asm__ ("a0") = (prev); \ | ||
41 | register void *_next __asm__ ("a1") = (next); \ | ||
42 | register void *_last __asm__ ("d1"); \ | ||
43 | __asm__ __volatile__("jbsr resume" \ | ||
44 | : "=a" (_prev), "=a" (_next), "=d" (_last) \ | ||
45 | : "0" (_prev), "1" (_next) \ | ||
46 | : "d0", "d2", "d3", "d4", "d5"); \ | ||
47 | (last) = _last; \ | ||
48 | } while (0) | ||
49 | |||
50 | |||
51 | /* | ||
52 | * Force strict CPU ordering. | ||
53 | * Not really required on m68k... | ||
54 | */ | ||
55 | #define nop() do { asm volatile ("nop"); barrier(); } while (0) | ||
56 | #define mb() barrier() | ||
57 | #define rmb() barrier() | ||
58 | #define wmb() barrier() | ||
59 | #define read_barrier_depends() ((void)0) | ||
60 | #define set_mb(var, value) ({ (var) = (value); wmb(); }) | ||
61 | |||
62 | #define smp_mb() barrier() | ||
63 | #define smp_rmb() barrier() | ||
64 | #define smp_wmb() barrier() | ||
65 | #define smp_read_barrier_depends() ((void)0) | ||
66 | |||
67 | #define xchg(ptr,x) ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr)))) | ||
68 | 5 | ||
69 | struct __xchg_dummy { unsigned long a[100]; }; | 6 | struct __xchg_dummy { unsigned long a[100]; }; |
70 | #define __xg(x) ((volatile struct __xchg_dummy *)(x)) | 7 | #define __xg(x) ((volatile struct __xchg_dummy *)(x)) |
71 | 8 | ||
9 | extern unsigned long __invalid_xchg_size(unsigned long, volatile void *, int); | ||
10 | |||
72 | #ifndef CONFIG_RMW_INSNS | 11 | #ifndef CONFIG_RMW_INSNS |
73 | static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int size) | 12 | static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int size) |
74 | { | 13 | { |
@@ -93,7 +32,8 @@ static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int siz | |||
93 | x = tmp; | 32 | x = tmp; |
94 | break; | 33 | break; |
95 | default: | 34 | default: |
96 | BUG(); | 35 | tmp = __invalid_xchg_size(x, ptr, size); |
36 | break; | ||
97 | } | 37 | } |
98 | 38 | ||
99 | local_irq_restore(flags); | 39 | local_irq_restore(flags); |
@@ -103,7 +43,7 @@ static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int siz | |||
103 | static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int size) | 43 | static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int size) |
104 | { | 44 | { |
105 | switch (size) { | 45 | switch (size) { |
106 | case 1: | 46 | case 1: |
107 | __asm__ __volatile__ | 47 | __asm__ __volatile__ |
108 | ("moveb %2,%0\n\t" | 48 | ("moveb %2,%0\n\t" |
109 | "1:\n\t" | 49 | "1:\n\t" |
@@ -111,7 +51,7 @@ static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int siz | |||
111 | "jne 1b" | 51 | "jne 1b" |
112 | : "=&d" (x) : "d" (x), "m" (*__xg(ptr)) : "memory"); | 52 | : "=&d" (x) : "d" (x), "m" (*__xg(ptr)) : "memory"); |
113 | break; | 53 | break; |
114 | case 2: | 54 | case 2: |
115 | __asm__ __volatile__ | 55 | __asm__ __volatile__ |
116 | ("movew %2,%0\n\t" | 56 | ("movew %2,%0\n\t" |
117 | "1:\n\t" | 57 | "1:\n\t" |
@@ -119,7 +59,7 @@ static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int siz | |||
119 | "jne 1b" | 59 | "jne 1b" |
120 | : "=&d" (x) : "d" (x), "m" (*__xg(ptr)) : "memory"); | 60 | : "=&d" (x) : "d" (x), "m" (*__xg(ptr)) : "memory"); |
121 | break; | 61 | break; |
122 | case 4: | 62 | case 4: |
123 | __asm__ __volatile__ | 63 | __asm__ __volatile__ |
124 | ("movel %2,%0\n\t" | 64 | ("movel %2,%0\n\t" |
125 | "1:\n\t" | 65 | "1:\n\t" |
@@ -127,15 +67,23 @@ static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int siz | |||
127 | "jne 1b" | 67 | "jne 1b" |
128 | : "=&d" (x) : "d" (x), "m" (*__xg(ptr)) : "memory"); | 68 | : "=&d" (x) : "d" (x), "m" (*__xg(ptr)) : "memory"); |
129 | break; | 69 | break; |
70 | default: | ||
71 | x = __invalid_xchg_size(x, ptr, size); | ||
72 | break; | ||
130 | } | 73 | } |
131 | return x; | 74 | return x; |
132 | } | 75 | } |
133 | #endif | 76 | #endif |
134 | 77 | ||
78 | #define xchg(ptr,x) ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr)))) | ||
79 | |||
135 | #include <asm-generic/cmpxchg-local.h> | 80 | #include <asm-generic/cmpxchg-local.h> |
136 | 81 | ||
137 | #define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) | 82 | #define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) |
138 | 83 | ||
84 | extern unsigned long __invalid_cmpxchg_size(volatile void *, | ||
85 | unsigned long, unsigned long, int); | ||
86 | |||
139 | /* | 87 | /* |
140 | * Atomic compare and exchange. Compare OLD with MEM, if identical, | 88 | * Atomic compare and exchange. Compare OLD with MEM, if identical, |
141 | * store NEW in MEM. Return the initial value in MEM. Success is | 89 | * store NEW in MEM. Return the initial value in MEM. Success is |
@@ -163,6 +111,9 @@ static inline unsigned long __cmpxchg(volatile void *p, unsigned long old, | |||
163 | : "=d" (old), "=m" (*(int *)p) | 111 | : "=d" (old), "=m" (*(int *)p) |
164 | : "d" (new), "0" (old), "m" (*(int *)p)); | 112 | : "d" (new), "0" (old), "m" (*(int *)p)); |
165 | break; | 113 | break; |
114 | default: | ||
115 | old = __invalid_cmpxchg_size(p, old, new, size); | ||
116 | break; | ||
166 | } | 117 | } |
167 | return old; | 118 | return old; |
168 | } | 119 | } |
@@ -187,8 +138,4 @@ static inline unsigned long __cmpxchg(volatile void *p, unsigned long old, | |||
187 | 138 | ||
188 | #endif | 139 | #endif |
189 | 140 | ||
190 | #define arch_align_stack(x) (x) | 141 | #endif /* __ARCH_M68K_CMPXCHG__ */ |
191 | |||
192 | #endif /* __KERNEL__ */ | ||
193 | |||
194 | #endif /* _M68K_SYSTEM_H */ | ||
diff --git a/arch/m68k/include/asm/exec.h b/arch/m68k/include/asm/exec.h new file mode 100644 index 000000000000..0499adf90230 --- /dev/null +++ b/arch/m68k/include/asm/exec.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef _M68K_EXEC_H | ||
2 | #define _M68K_EXEC_H | ||
3 | |||
4 | #define arch_align_stack(x) (x) | ||
5 | |||
6 | #endif /* _M68K_EXEC_H */ | ||
diff --git a/arch/m68k/include/asm/sun3xflop.h b/arch/m68k/include/asm/sun3xflop.h index 32c45f84ac60..95231e2f9d64 100644 --- a/arch/m68k/include/asm/sun3xflop.h +++ b/arch/m68k/include/asm/sun3xflop.h | |||
@@ -11,7 +11,6 @@ | |||
11 | 11 | ||
12 | #include <asm/page.h> | 12 | #include <asm/page.h> |
13 | #include <asm/pgtable.h> | 13 | #include <asm/pgtable.h> |
14 | #include <asm/system.h> | ||
15 | #include <asm/irq.h> | 14 | #include <asm/irq.h> |
16 | #include <asm/sun3x.h> | 15 | #include <asm/sun3x.h> |
17 | 16 | ||
diff --git a/arch/m68k/include/asm/switch_to.h b/arch/m68k/include/asm/switch_to.h new file mode 100644 index 000000000000..16fd6b634982 --- /dev/null +++ b/arch/m68k/include/asm/switch_to.h | |||
@@ -0,0 +1,41 @@ | |||
1 | #ifndef _M68K_SWITCH_TO_H | ||
2 | #define _M68K_SWITCH_TO_H | ||
3 | |||
4 | /* | ||
5 | * switch_to(n) should switch tasks to task ptr, first checking that | ||
6 | * ptr isn't the current task, in which case it does nothing. This | ||
7 | * also clears the TS-flag if the task we switched to has used the | ||
8 | * math co-processor latest. | ||
9 | */ | ||
10 | /* | ||
11 | * switch_to() saves the extra registers, that are not saved | ||
12 | * automatically by SAVE_SWITCH_STACK in resume(), ie. d0-d5 and | ||
13 | * a0-a1. Some of these are used by schedule() and its predecessors | ||
14 | * and so we might get see unexpected behaviors when a task returns | ||
15 | * with unexpected register values. | ||
16 | * | ||
17 | * syscall stores these registers itself and none of them are used | ||
18 | * by syscall after the function in the syscall has been called. | ||
19 | * | ||
20 | * Beware that resume now expects *next to be in d1 and the offset of | ||
21 | * tss to be in a1. This saves a few instructions as we no longer have | ||
22 | * to push them onto the stack and read them back right after. | ||
23 | * | ||
24 | * 02/17/96 - Jes Sorensen (jds@kom.auc.dk) | ||
25 | * | ||
26 | * Changed 96/09/19 by Andreas Schwab | ||
27 | * pass prev in a0, next in a1 | ||
28 | */ | ||
29 | asmlinkage void resume(void); | ||
30 | #define switch_to(prev,next,last) do { \ | ||
31 | register void *_prev __asm__ ("a0") = (prev); \ | ||
32 | register void *_next __asm__ ("a1") = (next); \ | ||
33 | register void *_last __asm__ ("d1"); \ | ||
34 | __asm__ __volatile__("jbsr resume" \ | ||
35 | : "=a" (_prev), "=a" (_next), "=d" (_last) \ | ||
36 | : "0" (_prev), "1" (_next) \ | ||
37 | : "d0", "d2", "d3", "d4", "d5"); \ | ||
38 | (last) = _last; \ | ||
39 | } while (0) | ||
40 | |||
41 | #endif /* _M68K_SWITCH_TO_H */ | ||
diff --git a/arch/m68k/kernel/ints.c b/arch/m68k/kernel/ints.c index 74fefac00899..6b32b64bac35 100644 --- a/arch/m68k/kernel/ints.c +++ b/arch/m68k/kernel/ints.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <linux/init.h> | 15 | #include <linux/init.h> |
16 | 16 | ||
17 | #include <asm/setup.h> | 17 | #include <asm/setup.h> |
18 | #include <asm/system.h> | ||
19 | #include <asm/irq.h> | 18 | #include <asm/irq.h> |
20 | #include <asm/traps.h> | 19 | #include <asm/traps.h> |
21 | #include <asm/page.h> | 20 | #include <asm/page.h> |
diff --git a/arch/m68k/kernel/irq.c b/arch/m68k/kernel/irq.c index c73988cfa90f..9ab4f550342e 100644 --- a/arch/m68k/kernel/irq.c +++ b/arch/m68k/kernel/irq.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <linux/interrupt.h> | 15 | #include <linux/interrupt.h> |
16 | #include <linux/irq.h> | 16 | #include <linux/irq.h> |
17 | #include <linux/seq_file.h> | 17 | #include <linux/seq_file.h> |
18 | #include <asm/system.h> | ||
19 | #include <asm/traps.h> | 18 | #include <asm/traps.h> |
20 | 19 | ||
21 | asmlinkage void do_IRQ(int irq, struct pt_regs *regs) | 20 | asmlinkage void do_IRQ(int irq, struct pt_regs *regs) |
diff --git a/arch/m68k/kernel/process.c b/arch/m68k/kernel/process.c index c54ef927e483..c488e3cfab53 100644 --- a/arch/m68k/kernel/process.c +++ b/arch/m68k/kernel/process.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <linux/mqueue.h> | 27 | #include <linux/mqueue.h> |
28 | 28 | ||
29 | #include <asm/uaccess.h> | 29 | #include <asm/uaccess.h> |
30 | #include <asm/system.h> | ||
31 | #include <asm/traps.h> | 30 | #include <asm/traps.h> |
32 | #include <asm/machdep.h> | 31 | #include <asm/machdep.h> |
33 | #include <asm/setup.h> | 32 | #include <asm/setup.h> |
diff --git a/arch/m68k/kernel/ptrace.c b/arch/m68k/kernel/ptrace.c index 149a05f8b9ee..8b4a2222e658 100644 --- a/arch/m68k/kernel/ptrace.c +++ b/arch/m68k/kernel/ptrace.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include <asm/uaccess.h> | 23 | #include <asm/uaccess.h> |
24 | #include <asm/page.h> | 24 | #include <asm/page.h> |
25 | #include <asm/pgtable.h> | 25 | #include <asm/pgtable.h> |
26 | #include <asm/system.h> | ||
27 | #include <asm/processor.h> | 26 | #include <asm/processor.h> |
28 | 27 | ||
29 | /* | 28 | /* |
diff --git a/arch/m68k/kernel/traps.c b/arch/m68k/kernel/traps.c index daaa9187654c..388e5cc89599 100644 --- a/arch/m68k/kernel/traps.c +++ b/arch/m68k/kernel/traps.c | |||
@@ -32,7 +32,6 @@ | |||
32 | 32 | ||
33 | #include <asm/setup.h> | 33 | #include <asm/setup.h> |
34 | #include <asm/fpu.h> | 34 | #include <asm/fpu.h> |
35 | #include <asm/system.h> | ||
36 | #include <asm/uaccess.h> | 35 | #include <asm/uaccess.h> |
37 | #include <asm/traps.h> | 36 | #include <asm/traps.h> |
38 | #include <asm/pgalloc.h> | 37 | #include <asm/pgalloc.h> |
diff --git a/arch/m68k/kernel/vectors.c b/arch/m68k/kernel/vectors.c index 147b03fbc71e..322c977bb9ec 100644 --- a/arch/m68k/kernel/vectors.c +++ b/arch/m68k/kernel/vectors.c | |||
@@ -25,7 +25,6 @@ | |||
25 | 25 | ||
26 | #include <asm/setup.h> | 26 | #include <asm/setup.h> |
27 | #include <asm/fpu.h> | 27 | #include <asm/fpu.h> |
28 | #include <asm/system.h> | ||
29 | #include <asm/traps.h> | 28 | #include <asm/traps.h> |
30 | 29 | ||
31 | /* assembler routines */ | 30 | /* assembler routines */ |
diff --git a/arch/m68k/mac/config.c b/arch/m68k/mac/config.c index f60ff5f59205..96fa6ed7e799 100644 --- a/arch/m68k/mac/config.c +++ b/arch/m68k/mac/config.c | |||
@@ -30,7 +30,6 @@ | |||
30 | #include <asm/setup.h> | 30 | #include <asm/setup.h> |
31 | #include <asm/bootinfo.h> | 31 | #include <asm/bootinfo.h> |
32 | 32 | ||
33 | #include <asm/system.h> | ||
34 | #include <asm/io.h> | 33 | #include <asm/io.h> |
35 | #include <asm/irq.h> | 34 | #include <asm/irq.h> |
36 | #include <asm/pgtable.h> | 35 | #include <asm/pgtable.h> |
diff --git a/arch/m68k/mac/misc.c b/arch/m68k/mac/misc.c index eb915551de69..5e085554ac7f 100644 --- a/arch/m68k/mac/misc.c +++ b/arch/m68k/mac/misc.c | |||
@@ -19,7 +19,6 @@ | |||
19 | #include <asm/uaccess.h> | 19 | #include <asm/uaccess.h> |
20 | #include <asm/io.h> | 20 | #include <asm/io.h> |
21 | #include <asm/rtc.h> | 21 | #include <asm/rtc.h> |
22 | #include <asm/system.h> | ||
23 | #include <asm/segment.h> | 22 | #include <asm/segment.h> |
24 | #include <asm/setup.h> | 23 | #include <asm/setup.h> |
25 | #include <asm/macintosh.h> | 24 | #include <asm/macintosh.h> |
diff --git a/arch/m68k/mm/fault.c b/arch/m68k/mm/fault.c index 2db6099784ba..6b020a8461e7 100644 --- a/arch/m68k/mm/fault.c +++ b/arch/m68k/mm/fault.c | |||
@@ -13,7 +13,6 @@ | |||
13 | 13 | ||
14 | #include <asm/setup.h> | 14 | #include <asm/setup.h> |
15 | #include <asm/traps.h> | 15 | #include <asm/traps.h> |
16 | #include <asm/system.h> | ||
17 | #include <asm/uaccess.h> | 16 | #include <asm/uaccess.h> |
18 | #include <asm/pgalloc.h> | 17 | #include <asm/pgalloc.h> |
19 | 18 | ||
diff --git a/arch/m68k/mm/init_mm.c b/arch/m68k/mm/init_mm.c index 89f3b203814b..f77f258dce3a 100644 --- a/arch/m68k/mm/init_mm.c +++ b/arch/m68k/mm/init_mm.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include <asm/uaccess.h> | 23 | #include <asm/uaccess.h> |
24 | #include <asm/page.h> | 24 | #include <asm/page.h> |
25 | #include <asm/pgalloc.h> | 25 | #include <asm/pgalloc.h> |
26 | #include <asm/system.h> | ||
27 | #include <asm/traps.h> | 26 | #include <asm/traps.h> |
28 | #include <asm/machdep.h> | 27 | #include <asm/machdep.h> |
29 | #include <asm/io.h> | 28 | #include <asm/io.h> |
diff --git a/arch/m68k/mm/init_no.c b/arch/m68k/mm/init_no.c index 1e33d39ca9a0..345ec0d83e3d 100644 --- a/arch/m68k/mm/init_no.c +++ b/arch/m68k/mm/init_no.c | |||
@@ -36,7 +36,6 @@ | |||
36 | #include <asm/segment.h> | 36 | #include <asm/segment.h> |
37 | #include <asm/page.h> | 37 | #include <asm/page.h> |
38 | #include <asm/pgtable.h> | 38 | #include <asm/pgtable.h> |
39 | #include <asm/system.h> | ||
40 | #include <asm/machdep.h> | 39 | #include <asm/machdep.h> |
41 | 40 | ||
42 | /* | 41 | /* |
diff --git a/arch/m68k/mm/kmap.c b/arch/m68k/mm/kmap.c index 1cc2bed4c3dd..568cfad3ceb8 100644 --- a/arch/m68k/mm/kmap.c +++ b/arch/m68k/mm/kmap.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include <asm/page.h> | 20 | #include <asm/page.h> |
21 | #include <asm/pgalloc.h> | 21 | #include <asm/pgalloc.h> |
22 | #include <asm/io.h> | 22 | #include <asm/io.h> |
23 | #include <asm/system.h> | ||
24 | 23 | ||
25 | #undef DEBUG | 24 | #undef DEBUG |
26 | 25 | ||
diff --git a/arch/m68k/mm/memory.c b/arch/m68k/mm/memory.c index a5dbb74fe1de..250b8b786f4f 100644 --- a/arch/m68k/mm/memory.c +++ b/arch/m68k/mm/memory.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <asm/segment.h> | 17 | #include <asm/segment.h> |
18 | #include <asm/page.h> | 18 | #include <asm/page.h> |
19 | #include <asm/pgalloc.h> | 19 | #include <asm/pgalloc.h> |
20 | #include <asm/system.h> | ||
21 | #include <asm/traps.h> | 20 | #include <asm/traps.h> |
22 | #include <asm/machdep.h> | 21 | #include <asm/machdep.h> |
23 | 22 | ||
diff --git a/arch/m68k/mm/motorola.c b/arch/m68k/mm/motorola.c index 8b3db1c587fc..0dafa693515b 100644 --- a/arch/m68k/mm/motorola.c +++ b/arch/m68k/mm/motorola.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include <asm/uaccess.h> | 24 | #include <asm/uaccess.h> |
25 | #include <asm/page.h> | 25 | #include <asm/page.h> |
26 | #include <asm/pgalloc.h> | 26 | #include <asm/pgalloc.h> |
27 | #include <asm/system.h> | ||
28 | #include <asm/machdep.h> | 27 | #include <asm/machdep.h> |
29 | #include <asm/io.h> | 28 | #include <asm/io.h> |
30 | #include <asm/dma.h> | 29 | #include <asm/dma.h> |
diff --git a/arch/m68k/mm/sun3mmu.c b/arch/m68k/mm/sun3mmu.c index 1b902dbd4376..e0804060501e 100644 --- a/arch/m68k/mm/sun3mmu.c +++ b/arch/m68k/mm/sun3mmu.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <asm/uaccess.h> | 21 | #include <asm/uaccess.h> |
22 | #include <asm/page.h> | 22 | #include <asm/page.h> |
23 | #include <asm/pgtable.h> | 23 | #include <asm/pgtable.h> |
24 | #include <asm/system.h> | ||
25 | #include <asm/machdep.h> | 24 | #include <asm/machdep.h> |
26 | #include <asm/io.h> | 25 | #include <asm/io.h> |
27 | 26 | ||
diff --git a/arch/m68k/mvme147/config.c b/arch/m68k/mvme147/config.c index 5de924ef42ed..a41c09149e23 100644 --- a/arch/m68k/mvme147/config.c +++ b/arch/m68k/mvme147/config.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include <linux/interrupt.h> | 26 | #include <linux/interrupt.h> |
27 | 27 | ||
28 | #include <asm/bootinfo.h> | 28 | #include <asm/bootinfo.h> |
29 | #include <asm/system.h> | ||
30 | #include <asm/pgtable.h> | 29 | #include <asm/pgtable.h> |
31 | #include <asm/setup.h> | 30 | #include <asm/setup.h> |
32 | #include <asm/irq.h> | 31 | #include <asm/irq.h> |
diff --git a/arch/m68k/mvme16x/config.c b/arch/m68k/mvme16x/config.c index c3fb3bdd7ed9..b6d7d8a7a3dd 100644 --- a/arch/m68k/mvme16x/config.c +++ b/arch/m68k/mvme16x/config.c | |||
@@ -29,7 +29,6 @@ | |||
29 | #include <linux/module.h> | 29 | #include <linux/module.h> |
30 | 30 | ||
31 | #include <asm/bootinfo.h> | 31 | #include <asm/bootinfo.h> |
32 | #include <asm/system.h> | ||
33 | #include <asm/pgtable.h> | 32 | #include <asm/pgtable.h> |
34 | #include <asm/setup.h> | 33 | #include <asm/setup.h> |
35 | #include <asm/irq.h> | 34 | #include <asm/irq.h> |
diff --git a/arch/m68k/mvme16x/rtc.c b/arch/m68k/mvme16x/rtc.c index 39c79ebcd18a..6ef7a81a3b12 100644 --- a/arch/m68k/mvme16x/rtc.c +++ b/arch/m68k/mvme16x/rtc.c | |||
@@ -20,7 +20,6 @@ | |||
20 | 20 | ||
21 | #include <asm/io.h> | 21 | #include <asm/io.h> |
22 | #include <asm/uaccess.h> | 22 | #include <asm/uaccess.h> |
23 | #include <asm/system.h> | ||
24 | #include <asm/setup.h> | 23 | #include <asm/setup.h> |
25 | 24 | ||
26 | /* | 25 | /* |
diff --git a/arch/m68k/platform/68328/config.c b/arch/m68k/platform/68328/config.c index 44b866544314..8c20e891e981 100644 --- a/arch/m68k/platform/68328/config.c +++ b/arch/m68k/platform/68328/config.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <linux/types.h> | 18 | #include <linux/types.h> |
19 | #include <linux/kernel.h> | 19 | #include <linux/kernel.h> |
20 | #include <linux/rtc.h> | 20 | #include <linux/rtc.h> |
21 | #include <asm/system.h> | ||
22 | #include <asm/machdep.h> | 21 | #include <asm/machdep.h> |
23 | #include <asm/MC68328.h> | 22 | #include <asm/MC68328.h> |
24 | #if defined(CONFIG_PILOT) || defined(CONFIG_INIT_LCD) | 23 | #if defined(CONFIG_PILOT) || defined(CONFIG_INIT_LCD) |
diff --git a/arch/m68k/platform/68328/timers.c b/arch/m68k/platform/68328/timers.c index b15ddef1ec76..c801c172b822 100644 --- a/arch/m68k/platform/68328/timers.c +++ b/arch/m68k/platform/68328/timers.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <linux/clocksource.h> | 22 | #include <linux/clocksource.h> |
23 | #include <linux/rtc.h> | 23 | #include <linux/rtc.h> |
24 | #include <asm/setup.h> | 24 | #include <asm/setup.h> |
25 | #include <asm/system.h> | ||
26 | #include <asm/pgtable.h> | 25 | #include <asm/pgtable.h> |
27 | #include <asm/machdep.h> | 26 | #include <asm/machdep.h> |
28 | #include <asm/MC68VZ328.h> | 27 | #include <asm/MC68VZ328.h> |
diff --git a/arch/m68k/platform/68360/config.c b/arch/m68k/platform/68360/config.c index 599a5949f320..255fc03913e9 100644 --- a/arch/m68k/platform/68360/config.c +++ b/arch/m68k/platform/68360/config.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <linux/irq.h> | 18 | #include <linux/irq.h> |
19 | 19 | ||
20 | #include <asm/setup.h> | 20 | #include <asm/setup.h> |
21 | #include <asm/system.h> | ||
22 | #include <asm/pgtable.h> | 21 | #include <asm/pgtable.h> |
23 | #include <asm/machdep.h> | 22 | #include <asm/machdep.h> |
24 | #include <asm/m68360.h> | 23 | #include <asm/m68360.h> |
diff --git a/arch/m68k/platform/68EZ328/config.c b/arch/m68k/platform/68EZ328/config.c index dd2c53554341..4f158d551f02 100644 --- a/arch/m68k/platform/68EZ328/config.c +++ b/arch/m68k/platform/68EZ328/config.c | |||
@@ -16,7 +16,6 @@ | |||
16 | #include <linux/types.h> | 16 | #include <linux/types.h> |
17 | #include <linux/kernel.h> | 17 | #include <linux/kernel.h> |
18 | #include <linux/rtc.h> | 18 | #include <linux/rtc.h> |
19 | #include <asm/system.h> | ||
20 | #include <asm/pgtable.h> | 19 | #include <asm/pgtable.h> |
21 | #include <asm/machdep.h> | 20 | #include <asm/machdep.h> |
22 | #include <asm/MC68EZ328.h> | 21 | #include <asm/MC68EZ328.h> |
diff --git a/arch/m68k/platform/68VZ328/config.c b/arch/m68k/platform/68VZ328/config.c index 25ec673edc25..2ed8dc305e42 100644 --- a/arch/m68k/platform/68VZ328/config.c +++ b/arch/m68k/platform/68VZ328/config.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <linux/irq.h> | 22 | #include <linux/irq.h> |
23 | #include <linux/rtc.h> | 23 | #include <linux/rtc.h> |
24 | 24 | ||
25 | #include <asm/system.h> | ||
26 | #include <asm/pgtable.h> | 25 | #include <asm/pgtable.h> |
27 | #include <asm/machdep.h> | 26 | #include <asm/machdep.h> |
28 | #include <asm/MC68VZ328.h> | 27 | #include <asm/MC68VZ328.h> |
diff --git a/arch/m68k/q40/config.c b/arch/m68k/q40/config.c index be936480b964..512adb64f7dd 100644 --- a/arch/m68k/q40/config.c +++ b/arch/m68k/q40/config.c | |||
@@ -29,7 +29,6 @@ | |||
29 | #include <asm/io.h> | 29 | #include <asm/io.h> |
30 | #include <asm/rtc.h> | 30 | #include <asm/rtc.h> |
31 | #include <asm/bootinfo.h> | 31 | #include <asm/bootinfo.h> |
32 | #include <asm/system.h> | ||
33 | #include <asm/pgtable.h> | 32 | #include <asm/pgtable.h> |
34 | #include <asm/setup.h> | 33 | #include <asm/setup.h> |
35 | #include <asm/irq.h> | 34 | #include <asm/irq.h> |
diff --git a/arch/m68k/q40/q40ints.c b/arch/m68k/q40/q40ints.c index 2b888491f29a..513f9bb17b9c 100644 --- a/arch/m68k/q40/q40ints.c +++ b/arch/m68k/q40/q40ints.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <linux/irq.h> | 18 | #include <linux/irq.h> |
19 | 19 | ||
20 | #include <asm/ptrace.h> | 20 | #include <asm/ptrace.h> |
21 | #include <asm/system.h> | ||
22 | #include <asm/traps.h> | 21 | #include <asm/traps.h> |
23 | 22 | ||
24 | #include <asm/q40_master.h> | 23 | #include <asm/q40_master.h> |
diff --git a/arch/m68k/sun3/intersil.c b/arch/m68k/sun3/intersil.c index 0116d208d300..94fe8016f1f0 100644 --- a/arch/m68k/sun3/intersil.c +++ b/arch/m68k/sun3/intersil.c | |||
@@ -14,7 +14,6 @@ | |||
14 | #include <linux/rtc.h> | 14 | #include <linux/rtc.h> |
15 | 15 | ||
16 | #include <asm/errno.h> | 16 | #include <asm/errno.h> |
17 | #include <asm/system.h> | ||
18 | #include <asm/rtc.h> | 17 | #include <asm/rtc.h> |
19 | #include <asm/intersil.h> | 18 | #include <asm/intersil.h> |
20 | 19 | ||
diff --git a/arch/m68k/sun3/mmu_emu.c b/arch/m68k/sun3/mmu_emu.c index 94f81ecfe3f8..8edc510a21be 100644 --- a/arch/m68k/sun3/mmu_emu.c +++ b/arch/m68k/sun3/mmu_emu.c | |||
@@ -17,7 +17,6 @@ | |||
17 | 17 | ||
18 | #include <asm/setup.h> | 18 | #include <asm/setup.h> |
19 | #include <asm/traps.h> | 19 | #include <asm/traps.h> |
20 | #include <asm/system.h> | ||
21 | #include <asm/uaccess.h> | 20 | #include <asm/uaccess.h> |
22 | #include <asm/page.h> | 21 | #include <asm/page.h> |
23 | #include <asm/pgtable.h> | 22 | #include <asm/pgtable.h> |
diff --git a/arch/m68k/sun3/prom/console.c b/arch/m68k/sun3/prom/console.c index 2bcb6e4bfe54..e92364373b07 100644 --- a/arch/m68k/sun3/prom/console.c +++ b/arch/m68k/sun3/prom/console.c | |||
@@ -10,7 +10,6 @@ | |||
10 | #include <linux/sched.h> | 10 | #include <linux/sched.h> |
11 | #include <asm/openprom.h> | 11 | #include <asm/openprom.h> |
12 | #include <asm/oplib.h> | 12 | #include <asm/oplib.h> |
13 | #include <asm/system.h> | ||
14 | #include <linux/string.h> | 13 | #include <linux/string.h> |
15 | 14 | ||
16 | /* Non blocking get character from console input device, returns -1 | 15 | /* Non blocking get character from console input device, returns -1 |
diff --git a/arch/m68k/sun3x/config.c b/arch/m68k/sun3x/config.c index fc599fad4a54..dd306c84d36d 100644 --- a/arch/m68k/sun3x/config.c +++ b/arch/m68k/sun3x/config.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <linux/console.h> | 12 | #include <linux/console.h> |
13 | #include <linux/init.h> | 13 | #include <linux/init.h> |
14 | 14 | ||
15 | #include <asm/system.h> | ||
16 | #include <asm/machdep.h> | 15 | #include <asm/machdep.h> |
17 | #include <asm/irq.h> | 16 | #include <asm/irq.h> |
18 | #include <asm/sun3xprom.h> | 17 | #include <asm/sun3xprom.h> |
diff --git a/arch/m68k/sun3x/time.c b/arch/m68k/sun3x/time.c index 536a04aaf22f..1d0a72480409 100644 --- a/arch/m68k/sun3x/time.c +++ b/arch/m68k/sun3x/time.c | |||
@@ -15,7 +15,6 @@ | |||
15 | 15 | ||
16 | #include <asm/irq.h> | 16 | #include <asm/irq.h> |
17 | #include <asm/io.h> | 17 | #include <asm/io.h> |
18 | #include <asm/system.h> | ||
19 | #include <asm/traps.h> | 18 | #include <asm/traps.h> |
20 | #include <asm/sun3x.h> | 19 | #include <asm/sun3x.h> |
21 | #include <asm/sun3ints.h> | 20 | #include <asm/sun3ints.h> |
diff --git a/arch/microblaze/include/asm/atomic.h b/arch/microblaze/include/asm/atomic.h index 615f53992c65..472d8bf726df 100644 --- a/arch/microblaze/include/asm/atomic.h +++ b/arch/microblaze/include/asm/atomic.h | |||
@@ -1,6 +1,7 @@ | |||
1 | #ifndef _ASM_MICROBLAZE_ATOMIC_H | 1 | #ifndef _ASM_MICROBLAZE_ATOMIC_H |
2 | #define _ASM_MICROBLAZE_ATOMIC_H | 2 | #define _ASM_MICROBLAZE_ATOMIC_H |
3 | 3 | ||
4 | #include <asm/cmpxchg.h> | ||
4 | #include <asm-generic/atomic.h> | 5 | #include <asm-generic/atomic.h> |
5 | #include <asm-generic/atomic64.h> | 6 | #include <asm-generic/atomic64.h> |
6 | 7 | ||
diff --git a/arch/microblaze/include/asm/barrier.h b/arch/microblaze/include/asm/barrier.h new file mode 100644 index 000000000000..df5be3e87044 --- /dev/null +++ b/arch/microblaze/include/asm/barrier.h | |||
@@ -0,0 +1,27 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2006 Atmark Techno, Inc. | ||
3 | * | ||
4 | * This file is subject to the terms and conditions of the GNU General Public | ||
5 | * License. See the file "COPYING" in the main directory of this archive | ||
6 | * for more details. | ||
7 | */ | ||
8 | |||
9 | #ifndef _ASM_MICROBLAZE_BARRIER_H | ||
10 | #define _ASM_MICROBLAZE_BARRIER_H | ||
11 | |||
12 | #define nop() asm volatile ("nop") | ||
13 | |||
14 | #define smp_read_barrier_depends() do {} while (0) | ||
15 | #define read_barrier_depends() do {} while (0) | ||
16 | |||
17 | #define mb() barrier() | ||
18 | #define rmb() mb() | ||
19 | #define wmb() mb() | ||
20 | #define set_mb(var, value) do { var = value; mb(); } while (0) | ||
21 | #define set_wmb(var, value) do { var = value; wmb(); } while (0) | ||
22 | |||
23 | #define smp_mb() mb() | ||
24 | #define smp_rmb() rmb() | ||
25 | #define smp_wmb() wmb() | ||
26 | |||
27 | #endif /* _ASM_MICROBLAZE_BARRIER_H */ | ||
diff --git a/arch/microblaze/include/asm/cmpxchg.h b/arch/microblaze/include/asm/cmpxchg.h new file mode 100644 index 000000000000..0094859abd9b --- /dev/null +++ b/arch/microblaze/include/asm/cmpxchg.h | |||
@@ -0,0 +1,40 @@ | |||
1 | #ifndef _ASM_MICROBLAZE_CMPXCHG_H | ||
2 | #define _ASM_MICROBLAZE_CMPXCHG_H | ||
3 | |||
4 | void __bad_xchg(volatile void *ptr, int size); | ||
5 | |||
6 | static inline unsigned long __xchg(unsigned long x, volatile void *ptr, | ||
7 | int size) | ||
8 | { | ||
9 | unsigned long ret; | ||
10 | unsigned long flags; | ||
11 | |||
12 | switch (size) { | ||
13 | case 1: | ||
14 | local_irq_save(flags); | ||
15 | ret = *(volatile unsigned char *)ptr; | ||
16 | *(volatile unsigned char *)ptr = x; | ||
17 | local_irq_restore(flags); | ||
18 | break; | ||
19 | |||
20 | case 4: | ||
21 | local_irq_save(flags); | ||
22 | ret = *(volatile unsigned long *)ptr; | ||
23 | *(volatile unsigned long *)ptr = x; | ||
24 | local_irq_restore(flags); | ||
25 | break; | ||
26 | default: | ||
27 | __bad_xchg(ptr, size), ret = 0; | ||
28 | break; | ||
29 | } | ||
30 | |||
31 | return ret; | ||
32 | } | ||
33 | |||
34 | #define xchg(ptr, x) \ | ||
35 | ((__typeof__(*(ptr))) __xchg((unsigned long)(x), (ptr), sizeof(*(ptr)))) | ||
36 | |||
37 | #include <asm-generic/cmpxchg.h> | ||
38 | #include <asm-generic/cmpxchg-local.h> | ||
39 | |||
40 | #endif /* _ASM_MICROBLAZE_CMPXCHG_H */ | ||
diff --git a/arch/microblaze/include/asm/exec.h b/arch/microblaze/include/asm/exec.h new file mode 100644 index 000000000000..e750de1fe8fb --- /dev/null +++ b/arch/microblaze/include/asm/exec.h | |||
@@ -0,0 +1,14 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2006 Atmark Techno, Inc. | ||
3 | * | ||
4 | * This file is subject to the terms and conditions of the GNU General Public | ||
5 | * License. See the file "COPYING" in the main directory of this archive | ||
6 | * for more details. | ||
7 | */ | ||
8 | |||
9 | #ifndef _ASM_MICROBLAZE_EXEC_H | ||
10 | #define _ASM_MICROBLAZE_EXEC_H | ||
11 | |||
12 | #define arch_align_stack(x) (x) | ||
13 | |||
14 | #endif /* _ASM_MICROBLAZE_EXEC_H */ | ||
diff --git a/arch/microblaze/include/asm/page.h b/arch/microblaze/include/asm/page.h index 352cc2352bd5..287c5485d286 100644 --- a/arch/microblaze/include/asm/page.h +++ b/arch/microblaze/include/asm/page.h | |||
@@ -138,6 +138,8 @@ extern unsigned long memory_start; | |||
138 | extern unsigned long memory_size; | 138 | extern unsigned long memory_size; |
139 | extern unsigned long lowmem_size; | 139 | extern unsigned long lowmem_size; |
140 | 140 | ||
141 | extern unsigned long kernel_tlb; | ||
142 | |||
141 | extern int page_is_ram(unsigned long pfn); | 143 | extern int page_is_ram(unsigned long pfn); |
142 | 144 | ||
143 | # define phys_to_pfn(phys) (PFN_DOWN(phys)) | 145 | # define phys_to_pfn(phys) (PFN_DOWN(phys)) |
diff --git a/arch/microblaze/include/asm/processor.h b/arch/microblaze/include/asm/processor.h index 7283bfb2f7e4..510a8e1c16ba 100644 --- a/arch/microblaze/include/asm/processor.h +++ b/arch/microblaze/include/asm/processor.h | |||
@@ -125,7 +125,6 @@ struct thread_struct { | |||
125 | .pgdir = swapper_pg_dir, \ | 125 | .pgdir = swapper_pg_dir, \ |
126 | } | 126 | } |
127 | 127 | ||
128 | |||
129 | /* Free all resources held by a thread. */ | 128 | /* Free all resources held by a thread. */ |
130 | extern inline void release_thread(struct task_struct *dead_task) | 129 | extern inline void release_thread(struct task_struct *dead_task) |
131 | { | 130 | { |
@@ -144,6 +143,8 @@ static inline void exit_thread(void) | |||
144 | 143 | ||
145 | unsigned long get_wchan(struct task_struct *p); | 144 | unsigned long get_wchan(struct task_struct *p); |
146 | 145 | ||
146 | extern void ret_from_fork(void); | ||
147 | |||
147 | /* The size allocated for kernel stacks. This _must_ be a power of two! */ | 148 | /* The size allocated for kernel stacks. This _must_ be a power of two! */ |
148 | # define KERNEL_STACK_SIZE 0x2000 | 149 | # define KERNEL_STACK_SIZE 0x2000 |
149 | 150 | ||
@@ -166,6 +167,14 @@ unsigned long get_wchan(struct task_struct *p); | |||
166 | # define STACK_TOP TASK_SIZE | 167 | # define STACK_TOP TASK_SIZE |
167 | # define STACK_TOP_MAX STACK_TOP | 168 | # define STACK_TOP_MAX STACK_TOP |
168 | 169 | ||
170 | void disable_hlt(void); | ||
171 | void enable_hlt(void); | ||
172 | void default_idle(void); | ||
173 | |||
174 | #ifdef CONFIG_DEBUG_FS | ||
175 | extern struct dentry *of_debugfs_root; | ||
176 | #endif | ||
177 | |||
169 | # endif /* __ASSEMBLY__ */ | 178 | # endif /* __ASSEMBLY__ */ |
170 | # endif /* CONFIG_MMU */ | 179 | # endif /* CONFIG_MMU */ |
171 | #endif /* _ASM_MICROBLAZE_PROCESSOR_H */ | 180 | #endif /* _ASM_MICROBLAZE_PROCESSOR_H */ |
diff --git a/arch/microblaze/include/asm/setup.h b/arch/microblaze/include/asm/setup.h index 9f195c094731..0061aa13a340 100644 --- a/arch/microblaze/include/asm/setup.h +++ b/arch/microblaze/include/asm/setup.h | |||
@@ -20,6 +20,8 @@ extern unsigned int boot_cpuid; /* move to smp.h */ | |||
20 | 20 | ||
21 | extern char cmd_line[COMMAND_LINE_SIZE]; | 21 | extern char cmd_line[COMMAND_LINE_SIZE]; |
22 | 22 | ||
23 | extern char *klimit; | ||
24 | |||
23 | void early_printk(const char *fmt, ...); | 25 | void early_printk(const char *fmt, ...); |
24 | 26 | ||
25 | int setup_early_printk(char *opt); | 27 | int setup_early_printk(char *opt); |
@@ -47,6 +49,10 @@ void machine_shutdown(void); | |||
47 | void machine_halt(void); | 49 | void machine_halt(void); |
48 | void machine_power_off(void); | 50 | void machine_power_off(void); |
49 | 51 | ||
52 | void free_init_pages(char *what, unsigned long begin, unsigned long end); | ||
53 | extern void *alloc_maybe_bootmem(size_t size, gfp_t mask); | ||
54 | extern void *zalloc_maybe_bootmem(size_t size, gfp_t mask); | ||
55 | |||
50 | # endif/* __KERNEL__ */ | 56 | # endif/* __KERNEL__ */ |
51 | # endif /* __ASSEMBLY__ */ | 57 | # endif /* __ASSEMBLY__ */ |
52 | #endif /* _ASM_MICROBLAZE_SETUP_H */ | 58 | #endif /* _ASM_MICROBLAZE_SETUP_H */ |
diff --git a/arch/microblaze/include/asm/switch_to.h b/arch/microblaze/include/asm/switch_to.h new file mode 100644 index 000000000000..f45baa2c5e09 --- /dev/null +++ b/arch/microblaze/include/asm/switch_to.h | |||
@@ -0,0 +1,24 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2006 Atmark Techno, Inc. | ||
3 | * | ||
4 | * This file is subject to the terms and conditions of the GNU General Public | ||
5 | * License. See the file "COPYING" in the main directory of this archive | ||
6 | * for more details. | ||
7 | */ | ||
8 | |||
9 | #ifndef _ASM_MICROBLAZE_SWITCH_TO_H | ||
10 | #define _ASM_MICROBLAZE_SWITCH_TO_H | ||
11 | |||
12 | struct task_struct; | ||
13 | struct thread_info; | ||
14 | |||
15 | extern struct task_struct *_switch_to(struct thread_info *prev, | ||
16 | struct thread_info *next); | ||
17 | |||
18 | #define switch_to(prev, next, last) \ | ||
19 | do { \ | ||
20 | (last) = _switch_to(task_thread_info(prev), \ | ||
21 | task_thread_info(next)); \ | ||
22 | } while (0) | ||
23 | |||
24 | #endif /* _ASM_MICROBLAZE_SWITCH_TO_H */ | ||
diff --git a/arch/microblaze/include/asm/system.h b/arch/microblaze/include/asm/system.h deleted file mode 100644 index 01228d2b1351..000000000000 --- a/arch/microblaze/include/asm/system.h +++ /dev/null | |||
@@ -1,98 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2006 Atmark Techno, Inc. | ||
3 | * | ||
4 | * This file is subject to the terms and conditions of the GNU General Public | ||
5 | * License. See the file "COPYING" in the main directory of this archive | ||
6 | * for more details. | ||
7 | */ | ||
8 | |||
9 | #ifndef _ASM_MICROBLAZE_SYSTEM_H | ||
10 | #define _ASM_MICROBLAZE_SYSTEM_H | ||
11 | |||
12 | #include <asm/registers.h> | ||
13 | #include <asm/setup.h> | ||
14 | #include <asm/irqflags.h> | ||
15 | #include <asm/cache.h> | ||
16 | |||
17 | #include <asm-generic/cmpxchg.h> | ||
18 | #include <asm-generic/cmpxchg-local.h> | ||
19 | |||
20 | struct task_struct; | ||
21 | struct thread_info; | ||
22 | |||
23 | extern struct task_struct *_switch_to(struct thread_info *prev, | ||
24 | struct thread_info *next); | ||
25 | |||
26 | #define switch_to(prev, next, last) \ | ||
27 | do { \ | ||
28 | (last) = _switch_to(task_thread_info(prev), \ | ||
29 | task_thread_info(next)); \ | ||
30 | } while (0) | ||
31 | |||
32 | #define smp_read_barrier_depends() do {} while (0) | ||
33 | #define read_barrier_depends() do {} while (0) | ||
34 | |||
35 | #define nop() asm volatile ("nop") | ||
36 | #define mb() barrier() | ||
37 | #define rmb() mb() | ||
38 | #define wmb() mb() | ||
39 | #define set_mb(var, value) do { var = value; mb(); } while (0) | ||
40 | #define set_wmb(var, value) do { var = value; wmb(); } while (0) | ||
41 | |||
42 | #define smp_mb() mb() | ||
43 | #define smp_rmb() rmb() | ||
44 | #define smp_wmb() wmb() | ||
45 | |||
46 | void __bad_xchg(volatile void *ptr, int size); | ||
47 | |||
48 | static inline unsigned long __xchg(unsigned long x, volatile void *ptr, | ||
49 | int size) | ||
50 | { | ||
51 | unsigned long ret; | ||
52 | unsigned long flags; | ||
53 | |||
54 | switch (size) { | ||
55 | case 1: | ||
56 | local_irq_save(flags); | ||
57 | ret = *(volatile unsigned char *)ptr; | ||
58 | *(volatile unsigned char *)ptr = x; | ||
59 | local_irq_restore(flags); | ||
60 | break; | ||
61 | |||
62 | case 4: | ||
63 | local_irq_save(flags); | ||
64 | ret = *(volatile unsigned long *)ptr; | ||
65 | *(volatile unsigned long *)ptr = x; | ||
66 | local_irq_restore(flags); | ||
67 | break; | ||
68 | default: | ||
69 | __bad_xchg(ptr, size), ret = 0; | ||
70 | break; | ||
71 | } | ||
72 | |||
73 | return ret; | ||
74 | } | ||
75 | |||
76 | void disable_hlt(void); | ||
77 | void enable_hlt(void); | ||
78 | void default_idle(void); | ||
79 | |||
80 | #define xchg(ptr, x) \ | ||
81 | ((__typeof__(*(ptr))) __xchg((unsigned long)(x), (ptr), sizeof(*(ptr)))) | ||
82 | |||
83 | void free_init_pages(char *what, unsigned long begin, unsigned long end); | ||
84 | void free_initmem(void); | ||
85 | extern char *klimit; | ||
86 | extern unsigned long kernel_tlb; | ||
87 | extern void ret_from_fork(void); | ||
88 | |||
89 | extern void *alloc_maybe_bootmem(size_t size, gfp_t mask); | ||
90 | extern void *zalloc_maybe_bootmem(size_t size, gfp_t mask); | ||
91 | |||
92 | #ifdef CONFIG_DEBUG_FS | ||
93 | extern struct dentry *of_debugfs_root; | ||
94 | #endif | ||
95 | |||
96 | #define arch_align_stack(x) (x) | ||
97 | |||
98 | #endif /* _ASM_MICROBLAZE_SYSTEM_H */ | ||
diff --git a/arch/microblaze/kernel/cpu/pvr.c b/arch/microblaze/kernel/cpu/pvr.c index 488c1ed24e38..3a749d5e71fd 100644 --- a/arch/microblaze/kernel/cpu/pvr.c +++ b/arch/microblaze/kernel/cpu/pvr.c | |||
@@ -12,7 +12,6 @@ | |||
12 | 12 | ||
13 | #include <linux/kernel.h> | 13 | #include <linux/kernel.h> |
14 | #include <linux/compiler.h> | 14 | #include <linux/compiler.h> |
15 | #include <asm/system.h> | ||
16 | #include <asm/exceptions.h> | 15 | #include <asm/exceptions.h> |
17 | #include <asm/pvr.h> | 16 | #include <asm/pvr.h> |
18 | 17 | ||
diff --git a/arch/microblaze/kernel/microblaze_ksyms.c b/arch/microblaze/kernel/microblaze_ksyms.c index 49faeb429599..bb4907c828dc 100644 --- a/arch/microblaze/kernel/microblaze_ksyms.c +++ b/arch/microblaze/kernel/microblaze_ksyms.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <asm/cacheflush.h> | 18 | #include <asm/cacheflush.h> |
19 | #include <linux/io.h> | 19 | #include <linux/io.h> |
20 | #include <asm/page.h> | 20 | #include <asm/page.h> |
21 | #include <asm/system.h> | ||
22 | #include <linux/ftrace.h> | 21 | #include <linux/ftrace.h> |
23 | #include <linux/uaccess.h> | 22 | #include <linux/uaccess.h> |
24 | 23 | ||
diff --git a/arch/microblaze/kernel/process.c b/arch/microblaze/kernel/process.c index 9155f7d92669..883b92789cdf 100644 --- a/arch/microblaze/kernel/process.c +++ b/arch/microblaze/kernel/process.c | |||
@@ -13,7 +13,6 @@ | |||
13 | #include <linux/pm.h> | 13 | #include <linux/pm.h> |
14 | #include <linux/tick.h> | 14 | #include <linux/tick.h> |
15 | #include <linux/bitops.h> | 15 | #include <linux/bitops.h> |
16 | #include <asm/system.h> | ||
17 | #include <asm/pgalloc.h> | 16 | #include <asm/pgalloc.h> |
18 | #include <asm/uaccess.h> /* for USER_DS macros */ | 17 | #include <asm/uaccess.h> /* for USER_DS macros */ |
19 | #include <asm/cacheflush.h> | 18 | #include <asm/cacheflush.h> |
diff --git a/arch/microblaze/kernel/prom.c b/arch/microblaze/kernel/prom.c index 80d314e81901..4a764ccb9f26 100644 --- a/arch/microblaze/kernel/prom.c +++ b/arch/microblaze/kernel/prom.c | |||
@@ -36,7 +36,6 @@ | |||
36 | #include <asm/processor.h> | 36 | #include <asm/processor.h> |
37 | #include <asm/irq.h> | 37 | #include <asm/irq.h> |
38 | #include <linux/io.h> | 38 | #include <linux/io.h> |
39 | #include <asm/system.h> | ||
40 | #include <asm/mmu.h> | 39 | #include <asm/mmu.h> |
41 | #include <asm/pgtable.h> | 40 | #include <asm/pgtable.h> |
42 | #include <asm/sections.h> | 41 | #include <asm/sections.h> |
diff --git a/arch/microblaze/kernel/setup.c b/arch/microblaze/kernel/setup.c index 9f79fb3bbfa0..71af974aa24a 100644 --- a/arch/microblaze/kernel/setup.c +++ b/arch/microblaze/kernel/setup.c | |||
@@ -30,7 +30,6 @@ | |||
30 | #include <asm/entry.h> | 30 | #include <asm/entry.h> |
31 | #include <asm/cpuinfo.h> | 31 | #include <asm/cpuinfo.h> |
32 | 32 | ||
33 | #include <asm/system.h> | ||
34 | #include <asm/prom.h> | 33 | #include <asm/prom.h> |
35 | #include <asm/pgtable.h> | 34 | #include <asm/pgtable.h> |
36 | 35 | ||
diff --git a/arch/microblaze/kernel/timer.c b/arch/microblaze/kernel/timer.c index cadfd5608afb..522defa7d41f 100644 --- a/arch/microblaze/kernel/timer.c +++ b/arch/microblaze/kernel/timer.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <asm/setup.h> | 27 | #include <asm/setup.h> |
28 | #include <asm/prom.h> | 28 | #include <asm/prom.h> |
29 | #include <asm/irq.h> | 29 | #include <asm/irq.h> |
30 | #include <asm/system.h> | ||
31 | #include <linux/cnt32_to_63.h> | 30 | #include <linux/cnt32_to_63.h> |
32 | 31 | ||
33 | #ifdef CONFIG_SELFMOD_TIMER | 32 | #ifdef CONFIG_SELFMOD_TIMER |
diff --git a/arch/microblaze/kernel/traps.c b/arch/microblaze/kernel/traps.c index ba034d421ec2..5541ac559593 100644 --- a/arch/microblaze/kernel/traps.c +++ b/arch/microblaze/kernel/traps.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <linux/debug_locks.h> | 15 | #include <linux/debug_locks.h> |
16 | 16 | ||
17 | #include <asm/exceptions.h> | 17 | #include <asm/exceptions.h> |
18 | #include <asm/system.h> | ||
19 | #include <asm/unwind.h> | 18 | #include <asm/unwind.h> |
20 | 19 | ||
21 | void trap_init(void) | 20 | void trap_init(void) |
diff --git a/arch/microblaze/lib/memcpy.c b/arch/microblaze/lib/memcpy.c index 52746e718dfa..fe9c53fafdea 100644 --- a/arch/microblaze/lib/memcpy.c +++ b/arch/microblaze/lib/memcpy.c | |||
@@ -30,7 +30,6 @@ | |||
30 | #include <linux/module.h> | 30 | #include <linux/module.h> |
31 | 31 | ||
32 | #include <linux/string.h> | 32 | #include <linux/string.h> |
33 | #include <asm/system.h> | ||
34 | 33 | ||
35 | #ifdef __HAVE_ARCH_MEMCPY | 34 | #ifdef __HAVE_ARCH_MEMCPY |
36 | #ifndef CONFIG_OPT_LIB_FUNCTION | 35 | #ifndef CONFIG_OPT_LIB_FUNCTION |
diff --git a/arch/microblaze/mm/fault.c b/arch/microblaze/mm/fault.c index ae97d2ccdc22..c38a265846de 100644 --- a/arch/microblaze/mm/fault.c +++ b/arch/microblaze/mm/fault.c | |||
@@ -33,7 +33,6 @@ | |||
33 | #include <asm/pgtable.h> | 33 | #include <asm/pgtable.h> |
34 | #include <asm/mmu.h> | 34 | #include <asm/mmu.h> |
35 | #include <asm/mmu_context.h> | 35 | #include <asm/mmu_context.h> |
36 | #include <asm/system.h> | ||
37 | #include <linux/uaccess.h> | 36 | #include <linux/uaccess.h> |
38 | #include <asm/exceptions.h> | 37 | #include <asm/exceptions.h> |
39 | 38 | ||
diff --git a/arch/mips/cavium-octeon/setup.c b/arch/mips/cavium-octeon/setup.c index 260b27367347..d3a9f012aa0a 100644 --- a/arch/mips/cavium-octeon/setup.c +++ b/arch/mips/cavium-octeon/setup.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include <asm/processor.h> | 24 | #include <asm/processor.h> |
25 | #include <asm/reboot.h> | 25 | #include <asm/reboot.h> |
26 | #include <asm/smp-ops.h> | 26 | #include <asm/smp-ops.h> |
27 | #include <asm/system.h> | ||
28 | #include <asm/irq_cpu.h> | 27 | #include <asm/irq_cpu.h> |
29 | #include <asm/mipsregs.h> | 28 | #include <asm/mipsregs.h> |
30 | #include <asm/bootinfo.h> | 29 | #include <asm/bootinfo.h> |
diff --git a/arch/mips/cavium-octeon/smp.c b/arch/mips/cavium-octeon/smp.c index b1535fe409d4..c3e2b85c3b02 100644 --- a/arch/mips/cavium-octeon/smp.c +++ b/arch/mips/cavium-octeon/smp.c | |||
@@ -15,8 +15,8 @@ | |||
15 | #include <linux/module.h> | 15 | #include <linux/module.h> |
16 | 16 | ||
17 | #include <asm/mmu_context.h> | 17 | #include <asm/mmu_context.h> |
18 | #include <asm/system.h> | ||
19 | #include <asm/time.h> | 18 | #include <asm/time.h> |
19 | #include <asm/setup.h> | ||
20 | 20 | ||
21 | #include <asm/octeon/octeon.h> | 21 | #include <asm/octeon/octeon.h> |
22 | 22 | ||
diff --git a/arch/mips/dec/ecc-berr.c b/arch/mips/dec/ecc-berr.c index 7abce661b90f..5abf4e894216 100644 --- a/arch/mips/dec/ecc-berr.c +++ b/arch/mips/dec/ecc-berr.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include <asm/irq_regs.h> | 24 | #include <asm/irq_regs.h> |
25 | #include <asm/processor.h> | 25 | #include <asm/processor.h> |
26 | #include <asm/ptrace.h> | 26 | #include <asm/ptrace.h> |
27 | #include <asm/system.h> | ||
28 | #include <asm/traps.h> | 27 | #include <asm/traps.h> |
29 | 28 | ||
30 | #include <asm/dec/ecc.h> | 29 | #include <asm/dec/ecc.h> |
diff --git a/arch/mips/dec/kn01-berr.c b/arch/mips/dec/kn01-berr.c index 94d23b4a7dc3..44d8a87a8a68 100644 --- a/arch/mips/dec/kn01-berr.c +++ b/arch/mips/dec/kn01-berr.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <asm/mipsregs.h> | 22 | #include <asm/mipsregs.h> |
23 | #include <asm/page.h> | 23 | #include <asm/page.h> |
24 | #include <asm/ptrace.h> | 24 | #include <asm/ptrace.h> |
25 | #include <asm/system.h> | ||
26 | #include <asm/traps.h> | 25 | #include <asm/traps.h> |
27 | #include <asm/uaccess.h> | 26 | #include <asm/uaccess.h> |
28 | 27 | ||
diff --git a/arch/mips/dec/kn02xa-berr.c b/arch/mips/dec/kn02xa-berr.c index 07ca5405d48d..ebb73c51d821 100644 --- a/arch/mips/dec/kn02xa-berr.c +++ b/arch/mips/dec/kn02xa-berr.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <asm/addrspace.h> | 21 | #include <asm/addrspace.h> |
22 | #include <asm/irq_regs.h> | 22 | #include <asm/irq_regs.h> |
23 | #include <asm/ptrace.h> | 23 | #include <asm/ptrace.h> |
24 | #include <asm/system.h> | ||
25 | #include <asm/traps.h> | 24 | #include <asm/traps.h> |
26 | 25 | ||
27 | #include <asm/dec/kn02ca.h> | 26 | #include <asm/dec/kn02ca.h> |
diff --git a/arch/mips/dec/wbflush.c b/arch/mips/dec/wbflush.c index 925c0525344b..43feddd5e19c 100644 --- a/arch/mips/dec/wbflush.c +++ b/arch/mips/dec/wbflush.c | |||
@@ -17,8 +17,8 @@ | |||
17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
18 | 18 | ||
19 | #include <asm/bootinfo.h> | 19 | #include <asm/bootinfo.h> |
20 | #include <asm/system.h> | ||
21 | #include <asm/wbflush.h> | 20 | #include <asm/wbflush.h> |
21 | #include <asm/barrier.h> | ||
22 | 22 | ||
23 | static void wbflush_kn01(void); | 23 | static void wbflush_kn01(void); |
24 | static void wbflush_kn210(void); | 24 | static void wbflush_kn210(void); |
diff --git a/arch/mips/emma/markeins/irq.c b/arch/mips/emma/markeins/irq.c index 7798887a1288..b5f08255d9c7 100644 --- a/arch/mips/emma/markeins/irq.c +++ b/arch/mips/emma/markeins/irq.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <linux/delay.h> | 27 | #include <linux/delay.h> |
28 | 28 | ||
29 | #include <asm/irq_cpu.h> | 29 | #include <asm/irq_cpu.h> |
30 | #include <asm/system.h> | ||
31 | #include <asm/mipsregs.h> | 30 | #include <asm/mipsregs.h> |
32 | #include <asm/addrspace.h> | 31 | #include <asm/addrspace.h> |
33 | #include <asm/bootinfo.h> | 32 | #include <asm/bootinfo.h> |
diff --git a/arch/mips/fw/arc/misc.c b/arch/mips/fw/arc/misc.c index 29627fbae7ad..7cf80ca2c1d2 100644 --- a/arch/mips/fw/arc/misc.c +++ b/arch/mips/fw/arc/misc.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <asm/fw/arc/types.h> | 17 | #include <asm/fw/arc/types.h> |
18 | #include <asm/sgialib.h> | 18 | #include <asm/sgialib.h> |
19 | #include <asm/bootinfo.h> | 19 | #include <asm/bootinfo.h> |
20 | #include <asm/system.h> | ||
21 | 20 | ||
22 | VOID | 21 | VOID |
23 | ArcHalt(VOID) | 22 | ArcHalt(VOID) |
diff --git a/arch/mips/include/asm/atomic.h b/arch/mips/include/asm/atomic.h index 1d93f81d57e7..3f4c5cb6433e 100644 --- a/arch/mips/include/asm/atomic.h +++ b/arch/mips/include/asm/atomic.h | |||
@@ -18,8 +18,8 @@ | |||
18 | #include <linux/types.h> | 18 | #include <linux/types.h> |
19 | #include <asm/barrier.h> | 19 | #include <asm/barrier.h> |
20 | #include <asm/cpu-features.h> | 20 | #include <asm/cpu-features.h> |
21 | #include <asm/cmpxchg.h> | ||
21 | #include <asm/war.h> | 22 | #include <asm/war.h> |
22 | #include <asm/system.h> | ||
23 | 23 | ||
24 | #define ATOMIC_INIT(i) { (i) } | 24 | #define ATOMIC_INIT(i) { (i) } |
25 | 25 | ||
diff --git a/arch/mips/include/asm/barrier.h b/arch/mips/include/asm/barrier.h index c0884f02d3a6..f7fdc24e972d 100644 --- a/arch/mips/include/asm/barrier.h +++ b/arch/mips/include/asm/barrier.h | |||
@@ -8,6 +8,8 @@ | |||
8 | #ifndef __ASM_BARRIER_H | 8 | #ifndef __ASM_BARRIER_H |
9 | #define __ASM_BARRIER_H | 9 | #define __ASM_BARRIER_H |
10 | 10 | ||
11 | #include <asm/addrspace.h> | ||
12 | |||
11 | /* | 13 | /* |
12 | * read_barrier_depends - Flush all pending reads that subsequents reads | 14 | * read_barrier_depends - Flush all pending reads that subsequents reads |
13 | * depend on. | 15 | * depend on. |
diff --git a/arch/mips/include/asm/cmpxchg.h b/arch/mips/include/asm/cmpxchg.h index d8d1c2805ac7..285a41fa0b18 100644 --- a/arch/mips/include/asm/cmpxchg.h +++ b/arch/mips/include/asm/cmpxchg.h | |||
@@ -9,6 +9,130 @@ | |||
9 | #define __ASM_CMPXCHG_H | 9 | #define __ASM_CMPXCHG_H |
10 | 10 | ||
11 | #include <linux/irqflags.h> | 11 | #include <linux/irqflags.h> |
12 | #include <asm/war.h> | ||
13 | |||
14 | static inline unsigned long __xchg_u32(volatile int * m, unsigned int val) | ||
15 | { | ||
16 | __u32 retval; | ||
17 | |||
18 | smp_mb__before_llsc(); | ||
19 | |||
20 | if (kernel_uses_llsc && R10000_LLSC_WAR) { | ||
21 | unsigned long dummy; | ||
22 | |||
23 | __asm__ __volatile__( | ||
24 | " .set mips3 \n" | ||
25 | "1: ll %0, %3 # xchg_u32 \n" | ||
26 | " .set mips0 \n" | ||
27 | " move %2, %z4 \n" | ||
28 | " .set mips3 \n" | ||
29 | " sc %2, %1 \n" | ||
30 | " beqzl %2, 1b \n" | ||
31 | " .set mips0 \n" | ||
32 | : "=&r" (retval), "=m" (*m), "=&r" (dummy) | ||
33 | : "R" (*m), "Jr" (val) | ||
34 | : "memory"); | ||
35 | } else if (kernel_uses_llsc) { | ||
36 | unsigned long dummy; | ||
37 | |||
38 | do { | ||
39 | __asm__ __volatile__( | ||
40 | " .set mips3 \n" | ||
41 | " ll %0, %3 # xchg_u32 \n" | ||
42 | " .set mips0 \n" | ||
43 | " move %2, %z4 \n" | ||
44 | " .set mips3 \n" | ||
45 | " sc %2, %1 \n" | ||
46 | " .set mips0 \n" | ||
47 | : "=&r" (retval), "=m" (*m), "=&r" (dummy) | ||
48 | : "R" (*m), "Jr" (val) | ||
49 | : "memory"); | ||
50 | } while (unlikely(!dummy)); | ||
51 | } else { | ||
52 | unsigned long flags; | ||
53 | |||
54 | raw_local_irq_save(flags); | ||
55 | retval = *m; | ||
56 | *m = val; | ||
57 | raw_local_irq_restore(flags); /* implies memory barrier */ | ||
58 | } | ||
59 | |||
60 | smp_llsc_mb(); | ||
61 | |||
62 | return retval; | ||
63 | } | ||
64 | |||
65 | #ifdef CONFIG_64BIT | ||
66 | static inline __u64 __xchg_u64(volatile __u64 * m, __u64 val) | ||
67 | { | ||
68 | __u64 retval; | ||
69 | |||
70 | smp_mb__before_llsc(); | ||
71 | |||
72 | if (kernel_uses_llsc && R10000_LLSC_WAR) { | ||
73 | unsigned long dummy; | ||
74 | |||
75 | __asm__ __volatile__( | ||
76 | " .set mips3 \n" | ||
77 | "1: lld %0, %3 # xchg_u64 \n" | ||
78 | " move %2, %z4 \n" | ||
79 | " scd %2, %1 \n" | ||
80 | " beqzl %2, 1b \n" | ||
81 | " .set mips0 \n" | ||
82 | : "=&r" (retval), "=m" (*m), "=&r" (dummy) | ||
83 | : "R" (*m), "Jr" (val) | ||
84 | : "memory"); | ||
85 | } else if (kernel_uses_llsc) { | ||
86 | unsigned long dummy; | ||
87 | |||
88 | do { | ||
89 | __asm__ __volatile__( | ||
90 | " .set mips3 \n" | ||
91 | " lld %0, %3 # xchg_u64 \n" | ||
92 | " move %2, %z4 \n" | ||
93 | " scd %2, %1 \n" | ||
94 | " .set mips0 \n" | ||
95 | : "=&r" (retval), "=m" (*m), "=&r" (dummy) | ||
96 | : "R" (*m), "Jr" (val) | ||
97 | : "memory"); | ||
98 | } while (unlikely(!dummy)); | ||
99 | } else { | ||
100 | unsigned long flags; | ||
101 | |||
102 | raw_local_irq_save(flags); | ||
103 | retval = *m; | ||
104 | *m = val; | ||
105 | raw_local_irq_restore(flags); /* implies memory barrier */ | ||
106 | } | ||
107 | |||
108 | smp_llsc_mb(); | ||
109 | |||
110 | return retval; | ||
111 | } | ||
112 | #else | ||
113 | extern __u64 __xchg_u64_unsupported_on_32bit_kernels(volatile __u64 * m, __u64 val); | ||
114 | #define __xchg_u64 __xchg_u64_unsupported_on_32bit_kernels | ||
115 | #endif | ||
116 | |||
117 | static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int size) | ||
118 | { | ||
119 | switch (size) { | ||
120 | case 4: | ||
121 | return __xchg_u32(ptr, x); | ||
122 | case 8: | ||
123 | return __xchg_u64(ptr, x); | ||
124 | } | ||
125 | |||
126 | return x; | ||
127 | } | ||
128 | |||
129 | #define xchg(ptr, x) \ | ||
130 | ({ \ | ||
131 | BUILD_BUG_ON(sizeof(*(ptr)) & ~0xc); \ | ||
132 | \ | ||
133 | ((__typeof__(*(ptr))) \ | ||
134 | __xchg((unsigned long)(x), (ptr), sizeof(*(ptr)))); \ | ||
135 | }) | ||
12 | 136 | ||
13 | #define __HAVE_ARCH_CMPXCHG 1 | 137 | #define __HAVE_ARCH_CMPXCHG 1 |
14 | 138 | ||
diff --git a/arch/mips/include/asm/dma.h b/arch/mips/include/asm/dma.h index 2d47da62d5a7..f5097f65a8ab 100644 --- a/arch/mips/include/asm/dma.h +++ b/arch/mips/include/asm/dma.h | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <asm/io.h> /* need byte IO */ | 15 | #include <asm/io.h> /* need byte IO */ |
16 | #include <linux/spinlock.h> /* And spinlocks */ | 16 | #include <linux/spinlock.h> /* And spinlocks */ |
17 | #include <linux/delay.h> | 17 | #include <linux/delay.h> |
18 | #include <asm/system.h> | ||
19 | 18 | ||
20 | 19 | ||
21 | #ifdef HAVE_REALLY_SLOW_DMA_CONTROLLER | 20 | #ifdef HAVE_REALLY_SLOW_DMA_CONTROLLER |
diff --git a/arch/mips/include/asm/exec.h b/arch/mips/include/asm/exec.h new file mode 100644 index 000000000000..c1f6afa4bc4f --- /dev/null +++ b/arch/mips/include/asm/exec.h | |||
@@ -0,0 +1,17 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (C) 1994, 95, 96, 97, 98, 99, 2003, 06 by Ralf Baechle | ||
7 | * Copyright (C) 1996 by Paul M. Antoine | ||
8 | * Copyright (C) 1999 Silicon Graphics | ||
9 | * Kevin D. Kissell, kevink@mips.org and Carsten Langgaard, carstenl@mips.com | ||
10 | * Copyright (C) 2000 MIPS Technologies, Inc. | ||
11 | */ | ||
12 | #ifndef _ASM_EXEC_H | ||
13 | #define _ASM_EXEC_H | ||
14 | |||
15 | extern unsigned long arch_align_stack(unsigned long sp); | ||
16 | |||
17 | #endif /* _ASM_EXEC_H */ | ||
diff --git a/arch/mips/include/asm/mach-au1x00/au1000_dma.h b/arch/mips/include/asm/mach-au1x00/au1000_dma.h index 59f5b55b2200..ba4cf0e91c8b 100644 --- a/arch/mips/include/asm/mach-au1x00/au1000_dma.h +++ b/arch/mips/include/asm/mach-au1x00/au1000_dma.h | |||
@@ -33,7 +33,6 @@ | |||
33 | #include <linux/io.h> /* need byte IO */ | 33 | #include <linux/io.h> /* need byte IO */ |
34 | #include <linux/spinlock.h> /* And spinlocks */ | 34 | #include <linux/spinlock.h> /* And spinlocks */ |
35 | #include <linux/delay.h> | 35 | #include <linux/delay.h> |
36 | #include <asm/system.h> | ||
37 | 36 | ||
38 | #define NUM_AU1000_DMA_CHANNELS 8 | 37 | #define NUM_AU1000_DMA_CHANNELS 8 |
39 | 38 | ||
diff --git a/arch/mips/include/asm/processor.h b/arch/mips/include/asm/processor.h index c104f1039a69..20e9dcf42b27 100644 --- a/arch/mips/include/asm/processor.h +++ b/arch/mips/include/asm/processor.h | |||
@@ -19,7 +19,6 @@ | |||
19 | #include <asm/cpu-info.h> | 19 | #include <asm/cpu-info.h> |
20 | #include <asm/mipsregs.h> | 20 | #include <asm/mipsregs.h> |
21 | #include <asm/prefetch.h> | 21 | #include <asm/prefetch.h> |
22 | #include <asm/system.h> | ||
23 | 22 | ||
24 | /* | 23 | /* |
25 | * Return current * instruction pointer ("program counter"). | 24 | * Return current * instruction pointer ("program counter"). |
@@ -356,6 +355,12 @@ unsigned long get_wchan(struct task_struct *p); | |||
356 | #define ARCH_HAS_PREFETCHW | 355 | #define ARCH_HAS_PREFETCHW |
357 | #define prefetchw(x) __builtin_prefetch((x), 1, 1) | 356 | #define prefetchw(x) __builtin_prefetch((x), 1, 1) |
358 | 357 | ||
358 | /* | ||
359 | * See Documentation/scheduler/sched-arch.txt; prevents deadlock on SMP | ||
360 | * systems. | ||
361 | */ | ||
362 | #define __ARCH_WANT_UNLOCKED_CTXSW | ||
363 | |||
359 | #endif | 364 | #endif |
360 | 365 | ||
361 | #endif /* _ASM_PROCESSOR_H */ | 366 | #endif /* _ASM_PROCESSOR_H */ |
diff --git a/arch/mips/include/asm/setup.h b/arch/mips/include/asm/setup.h index 50511aac04e9..6dce6d8d09ab 100644 --- a/arch/mips/include/asm/setup.h +++ b/arch/mips/include/asm/setup.h | |||
@@ -5,6 +5,17 @@ | |||
5 | 5 | ||
6 | #ifdef __KERNEL__ | 6 | #ifdef __KERNEL__ |
7 | extern void setup_early_printk(void); | 7 | extern void setup_early_printk(void); |
8 | |||
9 | extern void set_handler(unsigned long offset, void *addr, unsigned long len); | ||
10 | extern void set_uncached_handler(unsigned long offset, void *addr, unsigned long len); | ||
11 | |||
12 | typedef void (*vi_handler_t)(void); | ||
13 | extern void *set_vi_handler(int n, vi_handler_t addr); | ||
14 | |||
15 | extern void *set_except_vector(int n, void *addr); | ||
16 | extern unsigned long ebase; | ||
17 | extern void per_cpu_trap_init(void); | ||
18 | |||
8 | #endif /* __KERNEL__ */ | 19 | #endif /* __KERNEL__ */ |
9 | 20 | ||
10 | #endif /* __SETUP_H */ | 21 | #endif /* __SETUP_H */ |
diff --git a/arch/mips/include/asm/switch_to.h b/arch/mips/include/asm/switch_to.h new file mode 100644 index 000000000000..5d33621b5658 --- /dev/null +++ b/arch/mips/include/asm/switch_to.h | |||
@@ -0,0 +1,85 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (C) 1994, 95, 96, 97, 98, 99, 2003, 06 by Ralf Baechle | ||
7 | * Copyright (C) 1996 by Paul M. Antoine | ||
8 | * Copyright (C) 1999 Silicon Graphics | ||
9 | * Kevin D. Kissell, kevink@mips.org and Carsten Langgaard, carstenl@mips.com | ||
10 | * Copyright (C) 2000 MIPS Technologies, Inc. | ||
11 | */ | ||
12 | #ifndef _ASM_SWITCH_TO_H | ||
13 | #define _ASM_SWITCH_TO_H | ||
14 | |||
15 | #include <asm/cpu-features.h> | ||
16 | #include <asm/watch.h> | ||
17 | #include <asm/dsp.h> | ||
18 | |||
19 | struct task_struct; | ||
20 | |||
21 | /* | ||
22 | * switch_to(n) should switch tasks to task nr n, first | ||
23 | * checking that n isn't the current task, in which case it does nothing. | ||
24 | */ | ||
25 | extern asmlinkage void *resume(void *last, void *next, void *next_ti); | ||
26 | |||
27 | extern unsigned int ll_bit; | ||
28 | extern struct task_struct *ll_task; | ||
29 | |||
30 | #ifdef CONFIG_MIPS_MT_FPAFF | ||
31 | |||
32 | /* | ||
33 | * Handle the scheduler resume end of FPU affinity management. We do this | ||
34 | * inline to try to keep the overhead down. If we have been forced to run on | ||
35 | * a "CPU" with an FPU because of a previous high level of FP computation, | ||
36 | * but did not actually use the FPU during the most recent time-slice (CU1 | ||
37 | * isn't set), we undo the restriction on cpus_allowed. | ||
38 | * | ||
39 | * We're not calling set_cpus_allowed() here, because we have no need to | ||
40 | * force prompt migration - we're already switching the current CPU to a | ||
41 | * different thread. | ||
42 | */ | ||
43 | |||
44 | #define __mips_mt_fpaff_switch_to(prev) \ | ||
45 | do { \ | ||
46 | struct thread_info *__prev_ti = task_thread_info(prev); \ | ||
47 | \ | ||
48 | if (cpu_has_fpu && \ | ||
49 | test_ti_thread_flag(__prev_ti, TIF_FPUBOUND) && \ | ||
50 | (!(KSTK_STATUS(prev) & ST0_CU1))) { \ | ||
51 | clear_ti_thread_flag(__prev_ti, TIF_FPUBOUND); \ | ||
52 | prev->cpus_allowed = prev->thread.user_cpus_allowed; \ | ||
53 | } \ | ||
54 | next->thread.emulated_fp = 0; \ | ||
55 | } while(0) | ||
56 | |||
57 | #else | ||
58 | #define __mips_mt_fpaff_switch_to(prev) do { (void) (prev); } while (0) | ||
59 | #endif | ||
60 | |||
61 | #define __clear_software_ll_bit() \ | ||
62 | do { \ | ||
63 | if (!__builtin_constant_p(cpu_has_llsc) || !cpu_has_llsc) \ | ||
64 | ll_bit = 0; \ | ||
65 | } while (0) | ||
66 | |||
67 | #define switch_to(prev, next, last) \ | ||
68 | do { \ | ||
69 | __mips_mt_fpaff_switch_to(prev); \ | ||
70 | if (cpu_has_dsp) \ | ||
71 | __save_dsp(prev); \ | ||
72 | __clear_software_ll_bit(); \ | ||
73 | (last) = resume(prev, next, task_thread_info(next)); \ | ||
74 | } while (0) | ||
75 | |||
76 | #define finish_arch_switch(prev) \ | ||
77 | do { \ | ||
78 | if (cpu_has_dsp) \ | ||
79 | __restore_dsp(current); \ | ||
80 | if (cpu_has_userlocal) \ | ||
81 | write_c0_userlocal(current_thread_info()->tp_value); \ | ||
82 | __restore_watch(); \ | ||
83 | } while (0) | ||
84 | |||
85 | #endif /* _ASM_SWITCH_TO_H */ | ||
diff --git a/arch/mips/include/asm/system.h b/arch/mips/include/asm/system.h deleted file mode 100644 index 6018c80ce37a..000000000000 --- a/arch/mips/include/asm/system.h +++ /dev/null | |||
@@ -1,235 +0,0 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (C) 1994, 95, 96, 97, 98, 99, 2003, 06 by Ralf Baechle | ||
7 | * Copyright (C) 1996 by Paul M. Antoine | ||
8 | * Copyright (C) 1999 Silicon Graphics | ||
9 | * Kevin D. Kissell, kevink@mips.org and Carsten Langgaard, carstenl@mips.com | ||
10 | * Copyright (C) 2000 MIPS Technologies, Inc. | ||
11 | */ | ||
12 | #ifndef _ASM_SYSTEM_H | ||
13 | #define _ASM_SYSTEM_H | ||
14 | |||
15 | #include <linux/kernel.h> | ||
16 | #include <linux/types.h> | ||
17 | #include <linux/irqflags.h> | ||
18 | |||
19 | #include <asm/addrspace.h> | ||
20 | #include <asm/barrier.h> | ||
21 | #include <asm/cmpxchg.h> | ||
22 | #include <asm/cpu-features.h> | ||
23 | #include <asm/dsp.h> | ||
24 | #include <asm/watch.h> | ||
25 | #include <asm/war.h> | ||
26 | |||
27 | |||
28 | /* | ||
29 | * switch_to(n) should switch tasks to task nr n, first | ||
30 | * checking that n isn't the current task, in which case it does nothing. | ||
31 | */ | ||
32 | extern asmlinkage void *resume(void *last, void *next, void *next_ti); | ||
33 | |||
34 | struct task_struct; | ||
35 | |||
36 | extern unsigned int ll_bit; | ||
37 | extern struct task_struct *ll_task; | ||
38 | |||
39 | #ifdef CONFIG_MIPS_MT_FPAFF | ||
40 | |||
41 | /* | ||
42 | * Handle the scheduler resume end of FPU affinity management. We do this | ||
43 | * inline to try to keep the overhead down. If we have been forced to run on | ||
44 | * a "CPU" with an FPU because of a previous high level of FP computation, | ||
45 | * but did not actually use the FPU during the most recent time-slice (CU1 | ||
46 | * isn't set), we undo the restriction on cpus_allowed. | ||
47 | * | ||
48 | * We're not calling set_cpus_allowed() here, because we have no need to | ||
49 | * force prompt migration - we're already switching the current CPU to a | ||
50 | * different thread. | ||
51 | */ | ||
52 | |||
53 | #define __mips_mt_fpaff_switch_to(prev) \ | ||
54 | do { \ | ||
55 | struct thread_info *__prev_ti = task_thread_info(prev); \ | ||
56 | \ | ||
57 | if (cpu_has_fpu && \ | ||
58 | test_ti_thread_flag(__prev_ti, TIF_FPUBOUND) && \ | ||
59 | (!(KSTK_STATUS(prev) & ST0_CU1))) { \ | ||
60 | clear_ti_thread_flag(__prev_ti, TIF_FPUBOUND); \ | ||
61 | prev->cpus_allowed = prev->thread.user_cpus_allowed; \ | ||
62 | } \ | ||
63 | next->thread.emulated_fp = 0; \ | ||
64 | } while(0) | ||
65 | |||
66 | #else | ||
67 | #define __mips_mt_fpaff_switch_to(prev) do { (void) (prev); } while (0) | ||
68 | #endif | ||
69 | |||
70 | #define __clear_software_ll_bit() \ | ||
71 | do { \ | ||
72 | if (!__builtin_constant_p(cpu_has_llsc) || !cpu_has_llsc) \ | ||
73 | ll_bit = 0; \ | ||
74 | } while (0) | ||
75 | |||
76 | #define switch_to(prev, next, last) \ | ||
77 | do { \ | ||
78 | __mips_mt_fpaff_switch_to(prev); \ | ||
79 | if (cpu_has_dsp) \ | ||
80 | __save_dsp(prev); \ | ||
81 | __clear_software_ll_bit(); \ | ||
82 | (last) = resume(prev, next, task_thread_info(next)); \ | ||
83 | } while (0) | ||
84 | |||
85 | #define finish_arch_switch(prev) \ | ||
86 | do { \ | ||
87 | if (cpu_has_dsp) \ | ||
88 | __restore_dsp(current); \ | ||
89 | if (cpu_has_userlocal) \ | ||
90 | write_c0_userlocal(current_thread_info()->tp_value); \ | ||
91 | __restore_watch(); \ | ||
92 | } while (0) | ||
93 | |||
94 | static inline unsigned long __xchg_u32(volatile int * m, unsigned int val) | ||
95 | { | ||
96 | __u32 retval; | ||
97 | |||
98 | smp_mb__before_llsc(); | ||
99 | |||
100 | if (kernel_uses_llsc && R10000_LLSC_WAR) { | ||
101 | unsigned long dummy; | ||
102 | |||
103 | __asm__ __volatile__( | ||
104 | " .set mips3 \n" | ||
105 | "1: ll %0, %3 # xchg_u32 \n" | ||
106 | " .set mips0 \n" | ||
107 | " move %2, %z4 \n" | ||
108 | " .set mips3 \n" | ||
109 | " sc %2, %1 \n" | ||
110 | " beqzl %2, 1b \n" | ||
111 | " .set mips0 \n" | ||
112 | : "=&r" (retval), "=m" (*m), "=&r" (dummy) | ||
113 | : "R" (*m), "Jr" (val) | ||
114 | : "memory"); | ||
115 | } else if (kernel_uses_llsc) { | ||
116 | unsigned long dummy; | ||
117 | |||
118 | do { | ||
119 | __asm__ __volatile__( | ||
120 | " .set mips3 \n" | ||
121 | " ll %0, %3 # xchg_u32 \n" | ||
122 | " .set mips0 \n" | ||
123 | " move %2, %z4 \n" | ||
124 | " .set mips3 \n" | ||
125 | " sc %2, %1 \n" | ||
126 | " .set mips0 \n" | ||
127 | : "=&r" (retval), "=m" (*m), "=&r" (dummy) | ||
128 | : "R" (*m), "Jr" (val) | ||
129 | : "memory"); | ||
130 | } while (unlikely(!dummy)); | ||
131 | } else { | ||
132 | unsigned long flags; | ||
133 | |||
134 | raw_local_irq_save(flags); | ||
135 | retval = *m; | ||
136 | *m = val; | ||
137 | raw_local_irq_restore(flags); /* implies memory barrier */ | ||
138 | } | ||
139 | |||
140 | smp_llsc_mb(); | ||
141 | |||
142 | return retval; | ||
143 | } | ||
144 | |||
145 | #ifdef CONFIG_64BIT | ||
146 | static inline __u64 __xchg_u64(volatile __u64 * m, __u64 val) | ||
147 | { | ||
148 | __u64 retval; | ||
149 | |||
150 | smp_mb__before_llsc(); | ||
151 | |||
152 | if (kernel_uses_llsc && R10000_LLSC_WAR) { | ||
153 | unsigned long dummy; | ||
154 | |||
155 | __asm__ __volatile__( | ||
156 | " .set mips3 \n" | ||
157 | "1: lld %0, %3 # xchg_u64 \n" | ||
158 | " move %2, %z4 \n" | ||
159 | " scd %2, %1 \n" | ||
160 | " beqzl %2, 1b \n" | ||
161 | " .set mips0 \n" | ||
162 | : "=&r" (retval), "=m" (*m), "=&r" (dummy) | ||
163 | : "R" (*m), "Jr" (val) | ||
164 | : "memory"); | ||
165 | } else if (kernel_uses_llsc) { | ||
166 | unsigned long dummy; | ||
167 | |||
168 | do { | ||
169 | __asm__ __volatile__( | ||
170 | " .set mips3 \n" | ||
171 | " lld %0, %3 # xchg_u64 \n" | ||
172 | " move %2, %z4 \n" | ||
173 | " scd %2, %1 \n" | ||
174 | " .set mips0 \n" | ||
175 | : "=&r" (retval), "=m" (*m), "=&r" (dummy) | ||
176 | : "R" (*m), "Jr" (val) | ||
177 | : "memory"); | ||
178 | } while (unlikely(!dummy)); | ||
179 | } else { | ||
180 | unsigned long flags; | ||
181 | |||
182 | raw_local_irq_save(flags); | ||
183 | retval = *m; | ||
184 | *m = val; | ||
185 | raw_local_irq_restore(flags); /* implies memory barrier */ | ||
186 | } | ||
187 | |||
188 | smp_llsc_mb(); | ||
189 | |||
190 | return retval; | ||
191 | } | ||
192 | #else | ||
193 | extern __u64 __xchg_u64_unsupported_on_32bit_kernels(volatile __u64 * m, __u64 val); | ||
194 | #define __xchg_u64 __xchg_u64_unsupported_on_32bit_kernels | ||
195 | #endif | ||
196 | |||
197 | static inline unsigned long __xchg(unsigned long x, volatile void * ptr, int size) | ||
198 | { | ||
199 | switch (size) { | ||
200 | case 4: | ||
201 | return __xchg_u32(ptr, x); | ||
202 | case 8: | ||
203 | return __xchg_u64(ptr, x); | ||
204 | } | ||
205 | |||
206 | return x; | ||
207 | } | ||
208 | |||
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 | }) | ||
216 | |||
217 | extern void set_handler(unsigned long offset, void *addr, unsigned long len); | ||
218 | extern void set_uncached_handler(unsigned long offset, void *addr, unsigned long len); | ||
219 | |||
220 | typedef void (*vi_handler_t)(void); | ||
221 | extern void *set_vi_handler(int n, vi_handler_t addr); | ||
222 | |||
223 | extern void *set_except_vector(int n, void *addr); | ||
224 | extern unsigned long ebase; | ||
225 | extern void per_cpu_trap_init(void); | ||
226 | |||
227 | /* | ||
228 | * See include/asm-ia64/system.h; prevents deadlock on SMP | ||
229 | * systems. | ||
230 | */ | ||
231 | #define __ARCH_WANT_UNLOCKED_CTXSW | ||
232 | |||
233 | extern unsigned long arch_align_stack(unsigned long sp); | ||
234 | |||
235 | #endif /* _ASM_SYSTEM_H */ | ||
diff --git a/arch/mips/include/asm/txx9/jmr3927.h b/arch/mips/include/asm/txx9/jmr3927.h index a409c446bf18..8808d7f82da0 100644 --- a/arch/mips/include/asm/txx9/jmr3927.h +++ b/arch/mips/include/asm/txx9/jmr3927.h | |||
@@ -12,7 +12,6 @@ | |||
12 | 12 | ||
13 | #include <asm/txx9/tx3927.h> | 13 | #include <asm/txx9/tx3927.h> |
14 | #include <asm/addrspace.h> | 14 | #include <asm/addrspace.h> |
15 | #include <asm/system.h> | ||
16 | #include <asm/txx9irq.h> | 15 | #include <asm/txx9irq.h> |
17 | 16 | ||
18 | /* CS */ | 17 | /* CS */ |
diff --git a/arch/mips/kernel/cpu-bugs64.c b/arch/mips/kernel/cpu-bugs64.c index f305ca14351b..d6a18644365a 100644 --- a/arch/mips/kernel/cpu-bugs64.c +++ b/arch/mips/kernel/cpu-bugs64.c | |||
@@ -16,7 +16,7 @@ | |||
16 | #include <asm/cpu.h> | 16 | #include <asm/cpu.h> |
17 | #include <asm/fpu.h> | 17 | #include <asm/fpu.h> |
18 | #include <asm/mipsregs.h> | 18 | #include <asm/mipsregs.h> |
19 | #include <asm/system.h> | 19 | #include <asm/setup.h> |
20 | 20 | ||
21 | static char bug64hit[] __initdata = | 21 | static char bug64hit[] __initdata = |
22 | "reliable operation impossible!\n%s"; | 22 | "reliable operation impossible!\n%s"; |
diff --git a/arch/mips/kernel/cpu-probe.c b/arch/mips/kernel/cpu-probe.c index 0bab464b8e33..5099201fb7bc 100644 --- a/arch/mips/kernel/cpu-probe.c +++ b/arch/mips/kernel/cpu-probe.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <asm/cpu.h> | 22 | #include <asm/cpu.h> |
23 | #include <asm/fpu.h> | 23 | #include <asm/fpu.h> |
24 | #include <asm/mipsregs.h> | 24 | #include <asm/mipsregs.h> |
25 | #include <asm/system.h> | ||
26 | #include <asm/watch.h> | 25 | #include <asm/watch.h> |
27 | #include <asm/elf.h> | 26 | #include <asm/elf.h> |
28 | #include <asm/spram.h> | 27 | #include <asm/spram.h> |
diff --git a/arch/mips/kernel/irq-rm7000.c b/arch/mips/kernel/irq-rm7000.c index a8a8977d5887..b0662cf97ea8 100644 --- a/arch/mips/kernel/irq-rm7000.c +++ b/arch/mips/kernel/irq-rm7000.c | |||
@@ -16,7 +16,6 @@ | |||
16 | 16 | ||
17 | #include <asm/irq_cpu.h> | 17 | #include <asm/irq_cpu.h> |
18 | #include <asm/mipsregs.h> | 18 | #include <asm/mipsregs.h> |
19 | #include <asm/system.h> | ||
20 | 19 | ||
21 | static inline void unmask_rm7k_irq(struct irq_data *d) | 20 | static inline void unmask_rm7k_irq(struct irq_data *d) |
22 | { | 21 | { |
diff --git a/arch/mips/kernel/irq-rm9000.c b/arch/mips/kernel/irq-rm9000.c index 38874a4b9255..1282b9ae81c4 100644 --- a/arch/mips/kernel/irq-rm9000.c +++ b/arch/mips/kernel/irq-rm9000.c | |||
@@ -17,7 +17,6 @@ | |||
17 | 17 | ||
18 | #include <asm/irq_cpu.h> | 18 | #include <asm/irq_cpu.h> |
19 | #include <asm/mipsregs.h> | 19 | #include <asm/mipsregs.h> |
20 | #include <asm/system.h> | ||
21 | 20 | ||
22 | static inline void unmask_rm9k_irq(struct irq_data *d) | 21 | static inline void unmask_rm9k_irq(struct irq_data *d) |
23 | { | 22 | { |
diff --git a/arch/mips/kernel/irq.c b/arch/mips/kernel/irq.c index 7f50318061b5..a5aa43d07c8e 100644 --- a/arch/mips/kernel/irq.c +++ b/arch/mips/kernel/irq.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include <linux/ftrace.h> | 23 | #include <linux/ftrace.h> |
24 | 24 | ||
25 | #include <linux/atomic.h> | 25 | #include <linux/atomic.h> |
26 | #include <asm/system.h> | ||
27 | #include <asm/uaccess.h> | 26 | #include <asm/uaccess.h> |
28 | 27 | ||
29 | #ifdef CONFIG_KGDB | 28 | #ifdef CONFIG_KGDB |
diff --git a/arch/mips/kernel/irq_cpu.c b/arch/mips/kernel/irq_cpu.c index 191eb52228c4..972263bcf403 100644 --- a/arch/mips/kernel/irq_cpu.c +++ b/arch/mips/kernel/irq_cpu.c | |||
@@ -35,7 +35,6 @@ | |||
35 | #include <asm/irq_cpu.h> | 35 | #include <asm/irq_cpu.h> |
36 | #include <asm/mipsregs.h> | 36 | #include <asm/mipsregs.h> |
37 | #include <asm/mipsmtregs.h> | 37 | #include <asm/mipsmtregs.h> |
38 | #include <asm/system.h> | ||
39 | 38 | ||
40 | static inline void unmask_mips_irq(struct irq_data *d) | 39 | static inline void unmask_mips_irq(struct irq_data *d) |
41 | { | 40 | { |
diff --git a/arch/mips/kernel/mips-mt.c b/arch/mips/kernel/mips-mt.c index c23d11f6851d..7f3376b1c219 100644 --- a/arch/mips/kernel/mips-mt.c +++ b/arch/mips/kernel/mips-mt.c | |||
@@ -13,7 +13,6 @@ | |||
13 | #include <asm/cpu.h> | 13 | #include <asm/cpu.h> |
14 | #include <asm/processor.h> | 14 | #include <asm/processor.h> |
15 | #include <linux/atomic.h> | 15 | #include <linux/atomic.h> |
16 | #include <asm/system.h> | ||
17 | #include <asm/hardirq.h> | 16 | #include <asm/hardirq.h> |
18 | #include <asm/mmu_context.h> | 17 | #include <asm/mmu_context.h> |
19 | #include <asm/mipsmtregs.h> | 18 | #include <asm/mipsmtregs.h> |
diff --git a/arch/mips/kernel/process.c b/arch/mips/kernel/process.c index 61f1cb45a1d5..e9a5fd7277f4 100644 --- a/arch/mips/kernel/process.c +++ b/arch/mips/kernel/process.c | |||
@@ -32,7 +32,6 @@ | |||
32 | #include <asm/dsp.h> | 32 | #include <asm/dsp.h> |
33 | #include <asm/fpu.h> | 33 | #include <asm/fpu.h> |
34 | #include <asm/pgtable.h> | 34 | #include <asm/pgtable.h> |
35 | #include <asm/system.h> | ||
36 | #include <asm/mipsregs.h> | 35 | #include <asm/mipsregs.h> |
37 | #include <asm/processor.h> | 36 | #include <asm/processor.h> |
38 | #include <asm/uaccess.h> | 37 | #include <asm/uaccess.h> |
diff --git a/arch/mips/kernel/ptrace.c b/arch/mips/kernel/ptrace.c index 7786b608d932..7c24c2973c6d 100644 --- a/arch/mips/kernel/ptrace.c +++ b/arch/mips/kernel/ptrace.c | |||
@@ -34,7 +34,6 @@ | |||
34 | #include <asm/mipsmtregs.h> | 34 | #include <asm/mipsmtregs.h> |
35 | #include <asm/pgtable.h> | 35 | #include <asm/pgtable.h> |
36 | #include <asm/page.h> | 36 | #include <asm/page.h> |
37 | #include <asm/system.h> | ||
38 | #include <asm/uaccess.h> | 37 | #include <asm/uaccess.h> |
39 | #include <asm/bootinfo.h> | 38 | #include <asm/bootinfo.h> |
40 | #include <asm/reg.h> | 39 | #include <asm/reg.h> |
diff --git a/arch/mips/kernel/ptrace32.c b/arch/mips/kernel/ptrace32.c index 32644b4a0714..a3b017815eff 100644 --- a/arch/mips/kernel/ptrace32.c +++ b/arch/mips/kernel/ptrace32.c | |||
@@ -32,7 +32,6 @@ | |||
32 | #include <asm/mipsmtregs.h> | 32 | #include <asm/mipsmtregs.h> |
33 | #include <asm/pgtable.h> | 33 | #include <asm/pgtable.h> |
34 | #include <asm/page.h> | 34 | #include <asm/page.h> |
35 | #include <asm/system.h> | ||
36 | #include <asm/uaccess.h> | 35 | #include <asm/uaccess.h> |
37 | #include <asm/bootinfo.h> | 36 | #include <asm/bootinfo.h> |
38 | 37 | ||
diff --git a/arch/mips/kernel/rtlx.c b/arch/mips/kernel/rtlx.c index a9d801dec6b0..b8c18dcdd2c4 100644 --- a/arch/mips/kernel/rtlx.c +++ b/arch/mips/kernel/rtlx.c | |||
@@ -38,7 +38,6 @@ | |||
38 | #include <linux/atomic.h> | 38 | #include <linux/atomic.h> |
39 | #include <asm/cpu.h> | 39 | #include <asm/cpu.h> |
40 | #include <asm/processor.h> | 40 | #include <asm/processor.h> |
41 | #include <asm/system.h> | ||
42 | #include <asm/vpe.h> | 41 | #include <asm/vpe.h> |
43 | #include <asm/rtlx.h> | 42 | #include <asm/rtlx.h> |
44 | 43 | ||
diff --git a/arch/mips/kernel/setup.c b/arch/mips/kernel/setup.c index 058e964e7303..c504b212f8f3 100644 --- a/arch/mips/kernel/setup.c +++ b/arch/mips/kernel/setup.c | |||
@@ -31,7 +31,6 @@ | |||
31 | #include <asm/sections.h> | 31 | #include <asm/sections.h> |
32 | #include <asm/setup.h> | 32 | #include <asm/setup.h> |
33 | #include <asm/smp-ops.h> | 33 | #include <asm/smp-ops.h> |
34 | #include <asm/system.h> | ||
35 | #include <asm/prom.h> | 34 | #include <asm/prom.h> |
36 | 35 | ||
37 | struct cpuinfo_mips cpu_data[NR_CPUS] __read_mostly; | 36 | struct cpuinfo_mips cpu_data[NR_CPUS] __read_mostly; |
diff --git a/arch/mips/kernel/signal.c b/arch/mips/kernel/signal.c index f8524003676a..185ca00c4c84 100644 --- a/arch/mips/kernel/signal.c +++ b/arch/mips/kernel/signal.c | |||
@@ -34,6 +34,7 @@ | |||
34 | #include <asm/cpu-features.h> | 34 | #include <asm/cpu-features.h> |
35 | #include <asm/war.h> | 35 | #include <asm/war.h> |
36 | #include <asm/vdso.h> | 36 | #include <asm/vdso.h> |
37 | #include <asm/dsp.h> | ||
37 | 38 | ||
38 | #include "signal-common.h" | 39 | #include "signal-common.h" |
39 | 40 | ||
diff --git a/arch/mips/kernel/signal32.c b/arch/mips/kernel/signal32.c index aae986613795..06b5da392e24 100644 --- a/arch/mips/kernel/signal32.c +++ b/arch/mips/kernel/signal32.c | |||
@@ -29,10 +29,10 @@ | |||
29 | #include <asm/cacheflush.h> | 29 | #include <asm/cacheflush.h> |
30 | #include <asm/sim.h> | 30 | #include <asm/sim.h> |
31 | #include <asm/ucontext.h> | 31 | #include <asm/ucontext.h> |
32 | #include <asm/system.h> | ||
33 | #include <asm/fpu.h> | 32 | #include <asm/fpu.h> |
34 | #include <asm/war.h> | 33 | #include <asm/war.h> |
35 | #include <asm/vdso.h> | 34 | #include <asm/vdso.h> |
35 | #include <asm/dsp.h> | ||
36 | 36 | ||
37 | #include "signal-common.h" | 37 | #include "signal-common.h" |
38 | 38 | ||
diff --git a/arch/mips/kernel/signal_n32.c b/arch/mips/kernel/signal_n32.c index ee24d814d5b9..ae29e894ab8d 100644 --- a/arch/mips/kernel/signal_n32.c +++ b/arch/mips/kernel/signal_n32.c | |||
@@ -35,7 +35,6 @@ | |||
35 | #include <asm/sim.h> | 35 | #include <asm/sim.h> |
36 | #include <asm/uaccess.h> | 36 | #include <asm/uaccess.h> |
37 | #include <asm/ucontext.h> | 37 | #include <asm/ucontext.h> |
38 | #include <asm/system.h> | ||
39 | #include <asm/fpu.h> | 38 | #include <asm/fpu.h> |
40 | #include <asm/cpu-features.h> | 39 | #include <asm/cpu-features.h> |
41 | #include <asm/war.h> | 40 | #include <asm/war.h> |
diff --git a/arch/mips/kernel/smp-bmips.c b/arch/mips/kernel/smp-bmips.c index d5e950ab8527..ca673569fd24 100644 --- a/arch/mips/kernel/smp-bmips.c +++ b/arch/mips/kernel/smp-bmips.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <asm/time.h> | 28 | #include <asm/time.h> |
29 | #include <asm/pgtable.h> | 29 | #include <asm/pgtable.h> |
30 | #include <asm/processor.h> | 30 | #include <asm/processor.h> |
31 | #include <asm/system.h> | ||
32 | #include <asm/bootinfo.h> | 31 | #include <asm/bootinfo.h> |
33 | #include <asm/pmon.h> | 32 | #include <asm/pmon.h> |
34 | #include <asm/cacheflush.h> | 33 | #include <asm/cacheflush.h> |
diff --git a/arch/mips/kernel/smp-cmp.c b/arch/mips/kernel/smp-cmp.c index fe3095160655..e7e03ecf5495 100644 --- a/arch/mips/kernel/smp-cmp.c +++ b/arch/mips/kernel/smp-cmp.c | |||
@@ -29,7 +29,6 @@ | |||
29 | #include <asm/cacheflush.h> | 29 | #include <asm/cacheflush.h> |
30 | #include <asm/cpu.h> | 30 | #include <asm/cpu.h> |
31 | #include <asm/processor.h> | 31 | #include <asm/processor.h> |
32 | #include <asm/system.h> | ||
33 | #include <asm/hardirq.h> | 32 | #include <asm/hardirq.h> |
34 | #include <asm/mmu_context.h> | 33 | #include <asm/mmu_context.h> |
35 | #include <asm/smp.h> | 34 | #include <asm/smp.h> |
diff --git a/arch/mips/kernel/smp-mt.c b/arch/mips/kernel/smp-mt.c index ce9e286f0a74..ff17868734cf 100644 --- a/arch/mips/kernel/smp-mt.c +++ b/arch/mips/kernel/smp-mt.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <asm/cacheflush.h> | 28 | #include <asm/cacheflush.h> |
29 | #include <asm/cpu.h> | 29 | #include <asm/cpu.h> |
30 | #include <asm/processor.h> | 30 | #include <asm/processor.h> |
31 | #include <asm/system.h> | ||
32 | #include <asm/hardirq.h> | 31 | #include <asm/hardirq.h> |
33 | #include <asm/mmu_context.h> | 32 | #include <asm/mmu_context.h> |
34 | #include <asm/time.h> | 33 | #include <asm/time.h> |
diff --git a/arch/mips/kernel/smp.c b/arch/mips/kernel/smp.c index 32c1e954cd37..9c1cce9de35f 100644 --- a/arch/mips/kernel/smp.c +++ b/arch/mips/kernel/smp.c | |||
@@ -38,9 +38,9 @@ | |||
38 | #include <asm/cpu.h> | 38 | #include <asm/cpu.h> |
39 | #include <asm/processor.h> | 39 | #include <asm/processor.h> |
40 | #include <asm/r4k-timer.h> | 40 | #include <asm/r4k-timer.h> |
41 | #include <asm/system.h> | ||
42 | #include <asm/mmu_context.h> | 41 | #include <asm/mmu_context.h> |
43 | #include <asm/time.h> | 42 | #include <asm/time.h> |
43 | #include <asm/setup.h> | ||
44 | 44 | ||
45 | #ifdef CONFIG_MIPS_MT_SMTC | 45 | #ifdef CONFIG_MIPS_MT_SMTC |
46 | #include <asm/mipsmtregs.h> | 46 | #include <asm/mipsmtregs.h> |
diff --git a/arch/mips/kernel/smtc-proc.c b/arch/mips/kernel/smtc-proc.c index 928a5a61e1a6..145771c0ed7a 100644 --- a/arch/mips/kernel/smtc-proc.c +++ b/arch/mips/kernel/smtc-proc.c | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <asm/cpu.h> | 11 | #include <asm/cpu.h> |
12 | #include <asm/processor.h> | 12 | #include <asm/processor.h> |
13 | #include <linux/atomic.h> | 13 | #include <linux/atomic.h> |
14 | #include <asm/system.h> | ||
15 | #include <asm/hardirq.h> | 14 | #include <asm/hardirq.h> |
16 | #include <asm/mmu_context.h> | 15 | #include <asm/mmu_context.h> |
17 | #include <asm/mipsregs.h> | 16 | #include <asm/mipsregs.h> |
diff --git a/arch/mips/kernel/smtc.c b/arch/mips/kernel/smtc.c index 0a42ff3ff6a1..c4f75bbc0bd6 100644 --- a/arch/mips/kernel/smtc.c +++ b/arch/mips/kernel/smtc.c | |||
@@ -31,7 +31,6 @@ | |||
31 | #include <asm/cpu.h> | 31 | #include <asm/cpu.h> |
32 | #include <asm/processor.h> | 32 | #include <asm/processor.h> |
33 | #include <linux/atomic.h> | 33 | #include <linux/atomic.h> |
34 | #include <asm/system.h> | ||
35 | #include <asm/hardirq.h> | 34 | #include <asm/hardirq.h> |
36 | #include <asm/hazards.h> | 35 | #include <asm/hazards.h> |
37 | #include <asm/irq.h> | 36 | #include <asm/irq.h> |
diff --git a/arch/mips/kernel/spram.c b/arch/mips/kernel/spram.c index 1821d12a6410..6af08d896e20 100644 --- a/arch/mips/kernel/spram.c +++ b/arch/mips/kernel/spram.c | |||
@@ -15,7 +15,6 @@ | |||
15 | 15 | ||
16 | #include <asm/fpu.h> | 16 | #include <asm/fpu.h> |
17 | #include <asm/mipsregs.h> | 17 | #include <asm/mipsregs.h> |
18 | #include <asm/system.h> | ||
19 | #include <asm/r4kcache.h> | 18 | #include <asm/r4kcache.h> |
20 | #include <asm/hazards.h> | 19 | #include <asm/hazards.h> |
21 | 20 | ||
diff --git a/arch/mips/kernel/syscall.c b/arch/mips/kernel/syscall.c index d02765708ddb..b08220c82113 100644 --- a/arch/mips/kernel/syscall.c +++ b/arch/mips/kernel/syscall.c | |||
@@ -37,6 +37,7 @@ | |||
37 | #include <asm/shmparam.h> | 37 | #include <asm/shmparam.h> |
38 | #include <asm/sysmips.h> | 38 | #include <asm/sysmips.h> |
39 | #include <asm/uaccess.h> | 39 | #include <asm/uaccess.h> |
40 | #include <asm/switch_to.h> | ||
40 | 41 | ||
41 | /* | 42 | /* |
42 | * For historic reasons the pipe(2) syscall on MIPS has an unusual calling | 43 | * For historic reasons the pipe(2) syscall on MIPS has an unusual calling |
diff --git a/arch/mips/kernel/traps.c b/arch/mips/kernel/traps.c index d79ae5437b58..cfdaaa4cffc0 100644 --- a/arch/mips/kernel/traps.c +++ b/arch/mips/kernel/traps.c | |||
@@ -45,7 +45,6 @@ | |||
45 | #include <asm/pgtable.h> | 45 | #include <asm/pgtable.h> |
46 | #include <asm/ptrace.h> | 46 | #include <asm/ptrace.h> |
47 | #include <asm/sections.h> | 47 | #include <asm/sections.h> |
48 | #include <asm/system.h> | ||
49 | #include <asm/tlbdebug.h> | 48 | #include <asm/tlbdebug.h> |
50 | #include <asm/traps.h> | 49 | #include <asm/traps.h> |
51 | #include <asm/uaccess.h> | 50 | #include <asm/uaccess.h> |
diff --git a/arch/mips/kernel/unaligned.c b/arch/mips/kernel/unaligned.c index aedb8941caa5..9c58bdf58f23 100644 --- a/arch/mips/kernel/unaligned.c +++ b/arch/mips/kernel/unaligned.c | |||
@@ -85,7 +85,6 @@ | |||
85 | #include <asm/cop2.h> | 85 | #include <asm/cop2.h> |
86 | #include <asm/inst.h> | 86 | #include <asm/inst.h> |
87 | #include <asm/uaccess.h> | 87 | #include <asm/uaccess.h> |
88 | #include <asm/system.h> | ||
89 | 88 | ||
90 | #define STR(x) __STR(x) | 89 | #define STR(x) __STR(x) |
91 | #define __STR(x) #x | 90 | #define __STR(x) #x |
diff --git a/arch/mips/kernel/vpe.c b/arch/mips/kernel/vpe.c index bfa12a4f97b9..f6f91523cb1c 100644 --- a/arch/mips/kernel/vpe.c +++ b/arch/mips/kernel/vpe.c | |||
@@ -49,7 +49,6 @@ | |||
49 | #include <asm/cpu.h> | 49 | #include <asm/cpu.h> |
50 | #include <asm/mips_mt.h> | 50 | #include <asm/mips_mt.h> |
51 | #include <asm/processor.h> | 51 | #include <asm/processor.h> |
52 | #include <asm/system.h> | ||
53 | #include <asm/vpe.h> | 52 | #include <asm/vpe.h> |
54 | #include <asm/kspd.h> | 53 | #include <asm/kspd.h> |
55 | 54 | ||
diff --git a/arch/mips/lasat/reset.c b/arch/mips/lasat/reset.c index b1e7a89fb730..e21f0b9a586e 100644 --- a/arch/mips/lasat/reset.c +++ b/arch/mips/lasat/reset.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <linux/pm.h> | 21 | #include <linux/pm.h> |
22 | 22 | ||
23 | #include <asm/reboot.h> | 23 | #include <asm/reboot.h> |
24 | #include <asm/system.h> | ||
25 | #include <asm/lasat/lasat.h> | 24 | #include <asm/lasat/lasat.h> |
26 | 25 | ||
27 | #include "picvue.h" | 26 | #include "picvue.h" |
diff --git a/arch/mips/math-emu/dsemul.c b/arch/mips/math-emu/dsemul.c index 3c4a8c5ba7f2..384a3b0091ea 100644 --- a/arch/mips/math-emu/dsemul.c +++ b/arch/mips/math-emu/dsemul.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <asm/uaccess.h> | 12 | #include <asm/uaccess.h> |
13 | #include <asm/branch.h> | 13 | #include <asm/branch.h> |
14 | #include <asm/mipsregs.h> | 14 | #include <asm/mipsregs.h> |
15 | #include <asm/system.h> | ||
16 | #include <asm/cacheflush.h> | 15 | #include <asm/cacheflush.h> |
17 | 16 | ||
18 | #include <asm/fpu_emulator.h> | 17 | #include <asm/fpu_emulator.h> |
diff --git a/arch/mips/mipssim/sim_smtc.c b/arch/mips/mipssim/sim_smtc.c index 915063991f6e..3c104abd8aa5 100644 --- a/arch/mips/mipssim/sim_smtc.c +++ b/arch/mips/mipssim/sim_smtc.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <asm/cpu.h> | 28 | #include <asm/cpu.h> |
29 | #include <asm/processor.h> | 29 | #include <asm/processor.h> |
30 | #include <asm/smtc.h> | 30 | #include <asm/smtc.h> |
31 | #include <asm/system.h> | ||
32 | #include <asm/mmu_context.h> | 31 | #include <asm/mmu_context.h> |
33 | #include <asm/smtc_ipi.h> | 32 | #include <asm/smtc_ipi.h> |
34 | 33 | ||
diff --git a/arch/mips/mipssim/sim_time.c b/arch/mips/mipssim/sim_time.c index 5492c42f7650..77bad3c04280 100644 --- a/arch/mips/mipssim/sim_time.c +++ b/arch/mips/mipssim/sim_time.c | |||
@@ -11,6 +11,7 @@ | |||
11 | #include <asm/hardirq.h> | 11 | #include <asm/hardirq.h> |
12 | #include <asm/div64.h> | 12 | #include <asm/div64.h> |
13 | #include <asm/cpu.h> | 13 | #include <asm/cpu.h> |
14 | #include <asm/setup.h> | ||
14 | #include <asm/time.h> | 15 | #include <asm/time.h> |
15 | #include <asm/irq.h> | 16 | #include <asm/irq.h> |
16 | #include <asm/mc146818-time.h> | 17 | #include <asm/mc146818-time.h> |
diff --git a/arch/mips/mm/c-octeon.c b/arch/mips/mm/c-octeon.c index cf7895db0739..1f9ca07f53c8 100644 --- a/arch/mips/mm/c-octeon.c +++ b/arch/mips/mm/c-octeon.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <asm/page.h> | 21 | #include <asm/page.h> |
22 | #include <asm/pgtable.h> | 22 | #include <asm/pgtable.h> |
23 | #include <asm/r4kcache.h> | 23 | #include <asm/r4kcache.h> |
24 | #include <asm/system.h> | ||
25 | #include <asm/mmu_context.h> | 24 | #include <asm/mmu_context.h> |
26 | #include <asm/war.h> | 25 | #include <asm/war.h> |
27 | 26 | ||
diff --git a/arch/mips/mm/c-r3k.c b/arch/mips/mm/c-r3k.c index 0765583d0c92..031c4c2cdf2e 100644 --- a/arch/mips/mm/c-r3k.c +++ b/arch/mips/mm/c-r3k.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <asm/page.h> | 18 | #include <asm/page.h> |
19 | #include <asm/pgtable.h> | 19 | #include <asm/pgtable.h> |
20 | #include <asm/mmu_context.h> | 20 | #include <asm/mmu_context.h> |
21 | #include <asm/system.h> | ||
22 | #include <asm/isadep.h> | 21 | #include <asm/isadep.h> |
23 | #include <asm/io.h> | 22 | #include <asm/io.h> |
24 | #include <asm/bootinfo.h> | 23 | #include <asm/bootinfo.h> |
diff --git a/arch/mips/mm/c-r4k.c b/arch/mips/mm/c-r4k.c index c97087d12d07..bda8eb26ece7 100644 --- a/arch/mips/mm/c-r4k.c +++ b/arch/mips/mm/c-r4k.c | |||
@@ -29,7 +29,6 @@ | |||
29 | #include <asm/pgtable.h> | 29 | #include <asm/pgtable.h> |
30 | #include <asm/r4kcache.h> | 30 | #include <asm/r4kcache.h> |
31 | #include <asm/sections.h> | 31 | #include <asm/sections.h> |
32 | #include <asm/system.h> | ||
33 | #include <asm/mmu_context.h> | 32 | #include <asm/mmu_context.h> |
34 | #include <asm/war.h> | 33 | #include <asm/war.h> |
35 | #include <asm/cacheflush.h> /* for run_uncached() */ | 34 | #include <asm/cacheflush.h> /* for run_uncached() */ |
diff --git a/arch/mips/mm/c-tx39.c b/arch/mips/mm/c-tx39.c index a43c197ccf8c..87d23cada6d6 100644 --- a/arch/mips/mm/c-tx39.c +++ b/arch/mips/mm/c-tx39.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <asm/page.h> | 18 | #include <asm/page.h> |
19 | #include <asm/pgtable.h> | 19 | #include <asm/pgtable.h> |
20 | #include <asm/mmu_context.h> | 20 | #include <asm/mmu_context.h> |
21 | #include <asm/system.h> | ||
22 | #include <asm/isadep.h> | 21 | #include <asm/isadep.h> |
23 | #include <asm/io.h> | 22 | #include <asm/io.h> |
24 | #include <asm/bootinfo.h> | 23 | #include <asm/bootinfo.h> |
diff --git a/arch/mips/mm/fault.c b/arch/mips/mm/fault.c index 69ebd586d7ff..c14f6dfed995 100644 --- a/arch/mips/mm/fault.c +++ b/arch/mips/mm/fault.c | |||
@@ -22,7 +22,6 @@ | |||
22 | 22 | ||
23 | #include <asm/branch.h> | 23 | #include <asm/branch.h> |
24 | #include <asm/mmu_context.h> | 24 | #include <asm/mmu_context.h> |
25 | #include <asm/system.h> | ||
26 | #include <asm/uaccess.h> | 25 | #include <asm/uaccess.h> |
27 | #include <asm/ptrace.h> | 26 | #include <asm/ptrace.h> |
28 | #include <asm/highmem.h> /* For VMALLOC_END */ | 27 | #include <asm/highmem.h> /* For VMALLOC_END */ |
diff --git a/arch/mips/mm/page.c b/arch/mips/mm/page.c index 36272f7d3744..cc0b626858b3 100644 --- a/arch/mips/mm/page.c +++ b/arch/mips/mm/page.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <asm/page.h> | 22 | #include <asm/page.h> |
23 | #include <asm/pgtable.h> | 23 | #include <asm/pgtable.h> |
24 | #include <asm/prefetch.h> | 24 | #include <asm/prefetch.h> |
25 | #include <asm/system.h> | ||
26 | #include <asm/bootinfo.h> | 25 | #include <asm/bootinfo.h> |
27 | #include <asm/mipsregs.h> | 26 | #include <asm/mipsregs.h> |
28 | #include <asm/mmu_context.h> | 27 | #include <asm/mmu_context.h> |
diff --git a/arch/mips/mm/sc-ip22.c b/arch/mips/mm/sc-ip22.c index a6bd11fba7bf..1eb708ef75ff 100644 --- a/arch/mips/mm/sc-ip22.c +++ b/arch/mips/mm/sc-ip22.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <asm/bcache.h> | 12 | #include <asm/bcache.h> |
13 | #include <asm/page.h> | 13 | #include <asm/page.h> |
14 | #include <asm/pgtable.h> | 14 | #include <asm/pgtable.h> |
15 | #include <asm/system.h> | ||
16 | #include <asm/bootinfo.h> | 15 | #include <asm/bootinfo.h> |
17 | #include <asm/sgi/ip22.h> | 16 | #include <asm/sgi/ip22.h> |
18 | #include <asm/sgi/mc.h> | 17 | #include <asm/sgi/mc.h> |
diff --git a/arch/mips/mm/sc-mips.c b/arch/mips/mm/sc-mips.c index 9cca8de00545..93d937b4b1ba 100644 --- a/arch/mips/mm/sc-mips.c +++ b/arch/mips/mm/sc-mips.c | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <asm/cacheops.h> | 11 | #include <asm/cacheops.h> |
12 | #include <asm/page.h> | 12 | #include <asm/page.h> |
13 | #include <asm/pgtable.h> | 13 | #include <asm/pgtable.h> |
14 | #include <asm/system.h> | ||
15 | #include <asm/mmu_context.h> | 14 | #include <asm/mmu_context.h> |
16 | #include <asm/r4kcache.h> | 15 | #include <asm/r4kcache.h> |
17 | 16 | ||
diff --git a/arch/mips/mm/sc-r5k.c b/arch/mips/mm/sc-r5k.c index ae1e533a096e..8d90ff25b123 100644 --- a/arch/mips/mm/sc-r5k.c +++ b/arch/mips/mm/sc-r5k.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <asm/cacheops.h> | 12 | #include <asm/cacheops.h> |
13 | #include <asm/page.h> | 13 | #include <asm/page.h> |
14 | #include <asm/pgtable.h> | 14 | #include <asm/pgtable.h> |
15 | #include <asm/system.h> | ||
16 | #include <asm/mmu_context.h> | 15 | #include <asm/mmu_context.h> |
17 | #include <asm/r4kcache.h> | 16 | #include <asm/r4kcache.h> |
18 | 17 | ||
diff --git a/arch/mips/mm/tlb-r3k.c b/arch/mips/mm/tlb-r3k.c index ed1fa460f84e..a63d1ed0827f 100644 --- a/arch/mips/mm/tlb-r3k.c +++ b/arch/mips/mm/tlb-r3k.c | |||
@@ -19,7 +19,6 @@ | |||
19 | #include <asm/page.h> | 19 | #include <asm/page.h> |
20 | #include <asm/pgtable.h> | 20 | #include <asm/pgtable.h> |
21 | #include <asm/mmu_context.h> | 21 | #include <asm/mmu_context.h> |
22 | #include <asm/system.h> | ||
23 | #include <asm/tlbmisc.h> | 22 | #include <asm/tlbmisc.h> |
24 | #include <asm/isadep.h> | 23 | #include <asm/isadep.h> |
25 | #include <asm/io.h> | 24 | #include <asm/io.h> |
diff --git a/arch/mips/mm/tlb-r4k.c b/arch/mips/mm/tlb-r4k.c index 2dc625346c40..d2572cb232db 100644 --- a/arch/mips/mm/tlb-r4k.c +++ b/arch/mips/mm/tlb-r4k.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <asm/bootinfo.h> | 18 | #include <asm/bootinfo.h> |
19 | #include <asm/mmu_context.h> | 19 | #include <asm/mmu_context.h> |
20 | #include <asm/pgtable.h> | 20 | #include <asm/pgtable.h> |
21 | #include <asm/system.h> | ||
22 | #include <asm/tlbmisc.h> | 21 | #include <asm/tlbmisc.h> |
23 | 22 | ||
24 | extern void build_tlb_refill_handler(void); | 23 | extern void build_tlb_refill_handler(void); |
diff --git a/arch/mips/mm/tlb-r8k.c b/arch/mips/mm/tlb-r8k.c index 3d95f76c106b..91c2499f806a 100644 --- a/arch/mips/mm/tlb-r8k.c +++ b/arch/mips/mm/tlb-r8k.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <asm/bootinfo.h> | 17 | #include <asm/bootinfo.h> |
18 | #include <asm/mmu_context.h> | 18 | #include <asm/mmu_context.h> |
19 | #include <asm/pgtable.h> | 19 | #include <asm/pgtable.h> |
20 | #include <asm/system.h> | ||
21 | 20 | ||
22 | extern void build_tlb_refill_handler(void); | 21 | extern void build_tlb_refill_handler(void); |
23 | 22 | ||
diff --git a/arch/mips/mm/tlbex.c b/arch/mips/mm/tlbex.c index e06370f58ef3..0bc485b3cd60 100644 --- a/arch/mips/mm/tlbex.c +++ b/arch/mips/mm/tlbex.c | |||
@@ -32,6 +32,7 @@ | |||
32 | #include <asm/pgtable.h> | 32 | #include <asm/pgtable.h> |
33 | #include <asm/war.h> | 33 | #include <asm/war.h> |
34 | #include <asm/uasm.h> | 34 | #include <asm/uasm.h> |
35 | #include <asm/setup.h> | ||
35 | 36 | ||
36 | /* | 37 | /* |
37 | * TLB load/store/modify handlers. | 38 | * TLB load/store/modify handlers. |
diff --git a/arch/mips/mti-malta/malta-init.c b/arch/mips/mti-malta/malta-init.c index 4b988b9a30d5..27a6cdb36e37 100644 --- a/arch/mips/mti-malta/malta-init.c +++ b/arch/mips/mti-malta/malta-init.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include <asm/bootinfo.h> | 26 | #include <asm/bootinfo.h> |
27 | #include <asm/gt64120.h> | 27 | #include <asm/gt64120.h> |
28 | #include <asm/io.h> | 28 | #include <asm/io.h> |
29 | #include <asm/system.h> | ||
30 | #include <asm/cacheflush.h> | 29 | #include <asm/cacheflush.h> |
31 | #include <asm/smp-ops.h> | 30 | #include <asm/smp-ops.h> |
32 | #include <asm/traps.h> | 31 | #include <asm/traps.h> |
diff --git a/arch/mips/mti-malta/malta-int.c b/arch/mips/mti-malta/malta-int.c index a588b5cef8d2..7b13a4caeea4 100644 --- a/arch/mips/mti-malta/malta-int.c +++ b/arch/mips/mti-malta/malta-int.c | |||
@@ -44,6 +44,7 @@ | |||
44 | #include <asm/msc01_ic.h> | 44 | #include <asm/msc01_ic.h> |
45 | #include <asm/gic.h> | 45 | #include <asm/gic.h> |
46 | #include <asm/gcmpregs.h> | 46 | #include <asm/gcmpregs.h> |
47 | #include <asm/setup.h> | ||
47 | 48 | ||
48 | int gcmp_present = -1; | 49 | int gcmp_present = -1; |
49 | int gic_present; | 50 | int gic_present; |
diff --git a/arch/mips/mti-malta/malta-time.c b/arch/mips/mti-malta/malta-time.c index f8ee945ee411..115f5bc06003 100644 --- a/arch/mips/mti-malta/malta-time.c +++ b/arch/mips/mti-malta/malta-time.c | |||
@@ -35,6 +35,7 @@ | |||
35 | #include <asm/irq.h> | 35 | #include <asm/irq.h> |
36 | #include <asm/div64.h> | 36 | #include <asm/div64.h> |
37 | #include <asm/cpu.h> | 37 | #include <asm/cpu.h> |
38 | #include <asm/setup.h> | ||
38 | #include <asm/time.h> | 39 | #include <asm/time.h> |
39 | #include <asm/mc146818-time.h> | 40 | #include <asm/mc146818-time.h> |
40 | #include <asm/msc01_ic.h> | 41 | #include <asm/msc01_ic.h> |
diff --git a/arch/mips/netlogic/common/irq.c b/arch/mips/netlogic/common/irq.c index 49a4f6cf71e5..e52bfcbce093 100644 --- a/arch/mips/netlogic/common/irq.c +++ b/arch/mips/netlogic/common/irq.c | |||
@@ -43,7 +43,6 @@ | |||
43 | 43 | ||
44 | #include <asm/errno.h> | 44 | #include <asm/errno.h> |
45 | #include <asm/signal.h> | 45 | #include <asm/signal.h> |
46 | #include <asm/system.h> | ||
47 | #include <asm/ptrace.h> | 46 | #include <asm/ptrace.h> |
48 | #include <asm/mipsregs.h> | 47 | #include <asm/mipsregs.h> |
49 | #include <asm/thread_info.h> | 48 | #include <asm/thread_info.h> |
diff --git a/arch/mips/pmc-sierra/msp71xx/msp_irq_cic.c b/arch/mips/pmc-sierra/msp71xx/msp_irq_cic.c index c4fa2d775d8b..2e6f7cab24c1 100644 --- a/arch/mips/pmc-sierra/msp71xx/msp_irq_cic.c +++ b/arch/mips/pmc-sierra/msp71xx/msp_irq_cic.c | |||
@@ -16,7 +16,6 @@ | |||
16 | #include <linux/irq.h> | 16 | #include <linux/irq.h> |
17 | 17 | ||
18 | #include <asm/mipsregs.h> | 18 | #include <asm/mipsregs.h> |
19 | #include <asm/system.h> | ||
20 | 19 | ||
21 | #include <msp_cic_int.h> | 20 | #include <msp_cic_int.h> |
22 | #include <msp_regs.h> | 21 | #include <msp_regs.h> |
diff --git a/arch/mips/pmc-sierra/msp71xx/msp_irq_per.c b/arch/mips/pmc-sierra/msp71xx/msp_irq_per.c index 98fd0099d964..598b6a66b970 100644 --- a/arch/mips/pmc-sierra/msp71xx/msp_irq_per.c +++ b/arch/mips/pmc-sierra/msp71xx/msp_irq_per.c | |||
@@ -16,7 +16,6 @@ | |||
16 | #include <linux/bitops.h> | 16 | #include <linux/bitops.h> |
17 | 17 | ||
18 | #include <asm/mipsregs.h> | 18 | #include <asm/mipsregs.h> |
19 | #include <asm/system.h> | ||
20 | 19 | ||
21 | #include <msp_cic_int.h> | 20 | #include <msp_cic_int.h> |
22 | #include <msp_regs.h> | 21 | #include <msp_regs.h> |
diff --git a/arch/mips/pmc-sierra/msp71xx/msp_irq_slp.c b/arch/mips/pmc-sierra/msp71xx/msp_irq_slp.c index 5bbcc47da6b9..83a1c5eae3f8 100644 --- a/arch/mips/pmc-sierra/msp71xx/msp_irq_slp.c +++ b/arch/mips/pmc-sierra/msp71xx/msp_irq_slp.c | |||
@@ -16,7 +16,6 @@ | |||
16 | #include <linux/bitops.h> | 16 | #include <linux/bitops.h> |
17 | 17 | ||
18 | #include <asm/mipsregs.h> | 18 | #include <asm/mipsregs.h> |
19 | #include <asm/system.h> | ||
20 | 19 | ||
21 | #include <msp_slp_int.h> | 20 | #include <msp_slp_int.h> |
22 | #include <msp_regs.h> | 21 | #include <msp_regs.h> |
diff --git a/arch/mips/pmc-sierra/yosemite/irq.c b/arch/mips/pmc-sierra/yosemite/irq.c index 25bbbf428be9..6590812daa56 100644 --- a/arch/mips/pmc-sierra/yosemite/irq.c +++ b/arch/mips/pmc-sierra/yosemite/irq.c | |||
@@ -44,7 +44,6 @@ | |||
44 | #include <asm/irq.h> | 44 | #include <asm/irq.h> |
45 | #include <asm/irq_cpu.h> | 45 | #include <asm/irq_cpu.h> |
46 | #include <asm/mipsregs.h> | 46 | #include <asm/mipsregs.h> |
47 | #include <asm/system.h> | ||
48 | #include <asm/titan_dep.h> | 47 | #include <asm/titan_dep.h> |
49 | 48 | ||
50 | /* Hypertransport specific */ | 49 | /* Hypertransport specific */ |
diff --git a/arch/mips/pmc-sierra/yosemite/prom.c b/arch/mips/pmc-sierra/yosemite/prom.c index dcc926e06fce..6a2754c4f106 100644 --- a/arch/mips/pmc-sierra/yosemite/prom.c +++ b/arch/mips/pmc-sierra/yosemite/prom.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include <asm/processor.h> | 20 | #include <asm/processor.h> |
21 | #include <asm/reboot.h> | 21 | #include <asm/reboot.h> |
22 | #include <asm/smp-ops.h> | 22 | #include <asm/smp-ops.h> |
23 | #include <asm/system.h> | ||
24 | #include <asm/bootinfo.h> | 23 | #include <asm/bootinfo.h> |
25 | #include <asm/pmon.h> | 24 | #include <asm/pmon.h> |
26 | 25 | ||
diff --git a/arch/mips/pnx833x/common/interrupts.c b/arch/mips/pnx833x/common/interrupts.c index adc171c8846f..a86d5d5fceb0 100644 --- a/arch/mips/pnx833x/common/interrupts.c +++ b/arch/mips/pnx833x/common/interrupts.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <linux/interrupt.h> | 25 | #include <linux/interrupt.h> |
26 | #include <asm/mipsregs.h> | 26 | #include <asm/mipsregs.h> |
27 | #include <asm/irq_cpu.h> | 27 | #include <asm/irq_cpu.h> |
28 | #include <asm/setup.h> | ||
28 | #include <irq.h> | 29 | #include <irq.h> |
29 | #include <irq-mapping.h> | 30 | #include <irq-mapping.h> |
30 | #include <gpio.h> | 31 | #include <gpio.h> |
diff --git a/arch/mips/powertv/asic/asic_int.c b/arch/mips/powertv/asic/asic_int.c index 529c44a52d64..99d82e10000b 100644 --- a/arch/mips/powertv/asic/asic_int.c +++ b/arch/mips/powertv/asic/asic_int.c | |||
@@ -34,6 +34,7 @@ | |||
34 | #include <asm/irq_cpu.h> | 34 | #include <asm/irq_cpu.h> |
35 | #include <linux/io.h> | 35 | #include <linux/io.h> |
36 | #include <asm/irq_regs.h> | 36 | #include <asm/irq_regs.h> |
37 | #include <asm/setup.h> | ||
37 | #include <asm/mips-boards/generic.h> | 38 | #include <asm/mips-boards/generic.h> |
38 | 39 | ||
39 | #include <asm/mach-powertv/asic_regs.h> | 40 | #include <asm/mach-powertv/asic_regs.h> |
diff --git a/arch/mips/powertv/asic/irq_asic.c b/arch/mips/powertv/asic/irq_asic.c index 7fb97fb0931e..fa9ae9584710 100644 --- a/arch/mips/powertv/asic/irq_asic.c +++ b/arch/mips/powertv/asic/irq_asic.c | |||
@@ -17,7 +17,6 @@ | |||
17 | 17 | ||
18 | #include <asm/irq_cpu.h> | 18 | #include <asm/irq_cpu.h> |
19 | #include <asm/mipsregs.h> | 19 | #include <asm/mipsregs.h> |
20 | #include <asm/system.h> | ||
21 | 20 | ||
22 | #include <asm/mach-powertv/asic_regs.h> | 21 | #include <asm/mach-powertv/asic_regs.h> |
23 | 22 | ||
diff --git a/arch/mips/powertv/init.c b/arch/mips/powertv/init.c index 83552288e802..1cf5abbef715 100644 --- a/arch/mips/powertv/init.c +++ b/arch/mips/powertv/init.c | |||
@@ -26,7 +26,6 @@ | |||
26 | 26 | ||
27 | #include <asm/bootinfo.h> | 27 | #include <asm/bootinfo.h> |
28 | #include <linux/io.h> | 28 | #include <linux/io.h> |
29 | #include <asm/system.h> | ||
30 | #include <asm/cacheflush.h> | 29 | #include <asm/cacheflush.h> |
31 | #include <asm/traps.h> | 30 | #include <asm/traps.h> |
32 | 31 | ||
diff --git a/arch/mips/rb532/irq.c b/arch/mips/rb532/irq.c index 7c6db74e3fad..f298430cff07 100644 --- a/arch/mips/rb532/irq.c +++ b/arch/mips/rb532/irq.c | |||
@@ -42,7 +42,6 @@ | |||
42 | #include <asm/bootinfo.h> | 42 | #include <asm/bootinfo.h> |
43 | #include <asm/time.h> | 43 | #include <asm/time.h> |
44 | #include <asm/mipsregs.h> | 44 | #include <asm/mipsregs.h> |
45 | #include <asm/system.h> | ||
46 | 45 | ||
47 | #include <asm/mach-rc32434/irq.h> | 46 | #include <asm/mach-rc32434/irq.h> |
48 | #include <asm/mach-rc32434/gpio.h> | 47 | #include <asm/mach-rc32434/gpio.h> |
diff --git a/arch/mips/sgi-ip22/ip22-berr.c b/arch/mips/sgi-ip22/ip22-berr.c index 911d3999c0c7..3f6ccd53c15d 100644 --- a/arch/mips/sgi-ip22/ip22-berr.c +++ b/arch/mips/sgi-ip22/ip22-berr.c | |||
@@ -9,7 +9,6 @@ | |||
9 | #include <linux/sched.h> | 9 | #include <linux/sched.h> |
10 | 10 | ||
11 | #include <asm/addrspace.h> | 11 | #include <asm/addrspace.h> |
12 | #include <asm/system.h> | ||
13 | #include <asm/traps.h> | 12 | #include <asm/traps.h> |
14 | #include <asm/branch.h> | 13 | #include <asm/branch.h> |
15 | #include <asm/irq_regs.h> | 14 | #include <asm/irq_regs.h> |
diff --git a/arch/mips/sgi-ip22/ip22-reset.c b/arch/mips/sgi-ip22/ip22-reset.c index 45b6694c2079..20363d29cb58 100644 --- a/arch/mips/sgi-ip22/ip22-reset.c +++ b/arch/mips/sgi-ip22/ip22-reset.c | |||
@@ -18,7 +18,6 @@ | |||
18 | 18 | ||
19 | #include <asm/io.h> | 19 | #include <asm/io.h> |
20 | #include <asm/irq.h> | 20 | #include <asm/irq.h> |
21 | #include <asm/system.h> | ||
22 | #include <asm/reboot.h> | 21 | #include <asm/reboot.h> |
23 | #include <asm/sgialib.h> | 22 | #include <asm/sgialib.h> |
24 | #include <asm/sgi/ioc.h> | 23 | #include <asm/sgi/ioc.h> |
diff --git a/arch/mips/sgi-ip22/ip28-berr.c b/arch/mips/sgi-ip22/ip28-berr.c index 88c684e05a3d..0626555fd1a3 100644 --- a/arch/mips/sgi-ip22/ip28-berr.c +++ b/arch/mips/sgi-ip22/ip28-berr.c | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <linux/seq_file.h> | 11 | #include <linux/seq_file.h> |
12 | 12 | ||
13 | #include <asm/addrspace.h> | 13 | #include <asm/addrspace.h> |
14 | #include <asm/system.h> | ||
15 | #include <asm/traps.h> | 14 | #include <asm/traps.h> |
16 | #include <asm/branch.h> | 15 | #include <asm/branch.h> |
17 | #include <asm/irq_regs.h> | 16 | #include <asm/irq_regs.h> |
diff --git a/arch/mips/sgi-ip27/ip27-irq.c b/arch/mips/sgi-ip27/ip27-irq.c index 23642238c689..69a939ae65e4 100644 --- a/arch/mips/sgi-ip27/ip27-irq.c +++ b/arch/mips/sgi-ip27/ip27-irq.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <asm/bootinfo.h> | 27 | #include <asm/bootinfo.h> |
28 | #include <asm/io.h> | 28 | #include <asm/io.h> |
29 | #include <asm/mipsregs.h> | 29 | #include <asm/mipsregs.h> |
30 | #include <asm/system.h> | ||
31 | 30 | ||
32 | #include <asm/processor.h> | 31 | #include <asm/processor.h> |
33 | #include <asm/pci/bridge.h> | 32 | #include <asm/pci/bridge.h> |
diff --git a/arch/mips/sgi-ip27/ip27-reset.c b/arch/mips/sgi-ip27/ip27-reset.c index c17076108d47..f347bc6b7954 100644 --- a/arch/mips/sgi-ip27/ip27-reset.c +++ b/arch/mips/sgi-ip27/ip27-reset.c | |||
@@ -19,7 +19,6 @@ | |||
19 | #include <asm/io.h> | 19 | #include <asm/io.h> |
20 | #include <asm/irq.h> | 20 | #include <asm/irq.h> |
21 | #include <asm/reboot.h> | 21 | #include <asm/reboot.h> |
22 | #include <asm/system.h> | ||
23 | #include <asm/sgialib.h> | 22 | #include <asm/sgialib.h> |
24 | #include <asm/sn/addrs.h> | 23 | #include <asm/sn/addrs.h> |
25 | #include <asm/sn/arch.h> | 24 | #include <asm/sn/arch.h> |
diff --git a/arch/mips/sgi-ip32/ip32-irq.c b/arch/mips/sgi-ip32/ip32-irq.c index a092860d5196..e7d5054de8c8 100644 --- a/arch/mips/sgi-ip32/ip32-irq.c +++ b/arch/mips/sgi-ip32/ip32-irq.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <asm/irq_cpu.h> | 22 | #include <asm/irq_cpu.h> |
23 | #include <asm/mipsregs.h> | 23 | #include <asm/mipsregs.h> |
24 | #include <asm/signal.h> | 24 | #include <asm/signal.h> |
25 | #include <asm/system.h> | ||
26 | #include <asm/time.h> | 25 | #include <asm/time.h> |
27 | #include <asm/ip32/crime.h> | 26 | #include <asm/ip32/crime.h> |
28 | #include <asm/ip32/mace.h> | 27 | #include <asm/ip32/mace.h> |
diff --git a/arch/mips/sgi-ip32/ip32-reset.c b/arch/mips/sgi-ip32/ip32-reset.c index 9b95d80ebc6e..1f823da4c77b 100644 --- a/arch/mips/sgi-ip32/ip32-reset.c +++ b/arch/mips/sgi-ip32/ip32-reset.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include <asm/addrspace.h> | 20 | #include <asm/addrspace.h> |
21 | #include <asm/irq.h> | 21 | #include <asm/irq.h> |
22 | #include <asm/reboot.h> | 22 | #include <asm/reboot.h> |
23 | #include <asm/system.h> | ||
24 | #include <asm/wbflush.h> | 23 | #include <asm/wbflush.h> |
25 | #include <asm/ip32/mace.h> | 24 | #include <asm/ip32/mace.h> |
26 | #include <asm/ip32/crime.h> | 25 | #include <asm/ip32/crime.h> |
diff --git a/arch/mips/sibyte/bcm1480/irq.c b/arch/mips/sibyte/bcm1480/irq.c index 09740d60e187..215713e1f3c4 100644 --- a/arch/mips/sibyte/bcm1480/irq.c +++ b/arch/mips/sibyte/bcm1480/irq.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <asm/errno.h> | 27 | #include <asm/errno.h> |
28 | #include <asm/irq_regs.h> | 28 | #include <asm/irq_regs.h> |
29 | #include <asm/signal.h> | 29 | #include <asm/signal.h> |
30 | #include <asm/system.h> | ||
31 | #include <asm/io.h> | 30 | #include <asm/io.h> |
32 | 31 | ||
33 | #include <asm/sibyte/bcm1480_regs.h> | 32 | #include <asm/sibyte/bcm1480_regs.h> |
diff --git a/arch/mips/sibyte/common/sb_tbprof.c b/arch/mips/sibyte/common/sb_tbprof.c index 48853ab5bcf0..e8c4538c5f61 100644 --- a/arch/mips/sibyte/common/sb_tbprof.c +++ b/arch/mips/sibyte/common/sb_tbprof.c | |||
@@ -53,7 +53,6 @@ | |||
53 | #define K_INT_PERF_CNT K_BCM1480_INT_PERF_CNT | 53 | #define K_INT_PERF_CNT K_BCM1480_INT_PERF_CNT |
54 | #endif | 54 | #endif |
55 | 55 | ||
56 | #include <asm/system.h> | ||
57 | #include <asm/uaccess.h> | 56 | #include <asm/uaccess.h> |
58 | 57 | ||
59 | #define SBPROF_TB_MAJOR 240 | 58 | #define SBPROF_TB_MAJOR 240 |
diff --git a/arch/mips/sibyte/sb1250/bus_watcher.c b/arch/mips/sibyte/sb1250/bus_watcher.c index 45274bd3cd8b..86e6e54dd15d 100644 --- a/arch/mips/sibyte/sb1250/bus_watcher.c +++ b/arch/mips/sibyte/sb1250/bus_watcher.c | |||
@@ -30,7 +30,6 @@ | |||
30 | #include <linux/interrupt.h> | 30 | #include <linux/interrupt.h> |
31 | #include <linux/sched.h> | 31 | #include <linux/sched.h> |
32 | #include <linux/proc_fs.h> | 32 | #include <linux/proc_fs.h> |
33 | #include <asm/system.h> | ||
34 | #include <asm/io.h> | 33 | #include <asm/io.h> |
35 | 34 | ||
36 | #include <asm/sibyte/sb1250.h> | 35 | #include <asm/sibyte/sb1250.h> |
diff --git a/arch/mips/sibyte/sb1250/irq.c b/arch/mips/sibyte/sb1250/irq.c index 76ee045e2ce4..340aaf626659 100644 --- a/arch/mips/sibyte/sb1250/irq.c +++ b/arch/mips/sibyte/sb1250/irq.c | |||
@@ -26,7 +26,6 @@ | |||
26 | 26 | ||
27 | #include <asm/errno.h> | 27 | #include <asm/errno.h> |
28 | #include <asm/signal.h> | 28 | #include <asm/signal.h> |
29 | #include <asm/system.h> | ||
30 | #include <asm/time.h> | 29 | #include <asm/time.h> |
31 | #include <asm/io.h> | 30 | #include <asm/io.h> |
32 | 31 | ||
diff --git a/arch/mips/sni/reset.c b/arch/mips/sni/reset.c index 79f8d70f48c9..244f9427625b 100644 --- a/arch/mips/sni/reset.c +++ b/arch/mips/sni/reset.c | |||
@@ -5,7 +5,6 @@ | |||
5 | */ | 5 | */ |
6 | #include <asm/io.h> | 6 | #include <asm/io.h> |
7 | #include <asm/reboot.h> | 7 | #include <asm/reboot.h> |
8 | #include <asm/system.h> | ||
9 | #include <asm/sni.h> | 8 | #include <asm/sni.h> |
10 | 9 | ||
11 | /* | 10 | /* |
diff --git a/arch/mips/vr41xx/common/irq.c b/arch/mips/vr41xx/common/irq.c index fad2bef432cd..ae0e4ee6c617 100644 --- a/arch/mips/vr41xx/common/irq.c +++ b/arch/mips/vr41xx/common/irq.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <linux/irq.h> | 22 | #include <linux/irq.h> |
23 | 23 | ||
24 | #include <asm/irq_cpu.h> | 24 | #include <asm/irq_cpu.h> |
25 | #include <asm/system.h> | ||
26 | #include <asm/vr41xx/irq.h> | 25 | #include <asm/vr41xx/irq.h> |
27 | 26 | ||
28 | typedef struct irq_cascade { | 27 | typedef struct irq_cascade { |
diff --git a/arch/mips/vr41xx/common/pmu.c b/arch/mips/vr41xx/common/pmu.c index 692b4e85b7fc..9fbf5f0d1faf 100644 --- a/arch/mips/vr41xx/common/pmu.c +++ b/arch/mips/vr41xx/common/pmu.c | |||
@@ -30,7 +30,6 @@ | |||
30 | #include <asm/io.h> | 30 | #include <asm/io.h> |
31 | #include <asm/processor.h> | 31 | #include <asm/processor.h> |
32 | #include <asm/reboot.h> | 32 | #include <asm/reboot.h> |
33 | #include <asm/system.h> | ||
34 | 33 | ||
35 | #define PMU_TYPE1_BASE 0x0b0000a0UL | 34 | #define PMU_TYPE1_BASE 0x0b0000a0UL |
36 | #define PMU_TYPE1_SIZE 0x0eUL | 35 | #define PMU_TYPE1_SIZE 0x0eUL |
diff --git a/arch/mn10300/include/asm/atomic.h b/arch/mn10300/include/asm/atomic.h index b9a8f8461262..975e1841ca64 100644 --- a/arch/mn10300/include/asm/atomic.h +++ b/arch/mn10300/include/asm/atomic.h | |||
@@ -12,112 +12,7 @@ | |||
12 | #define _ASM_ATOMIC_H | 12 | #define _ASM_ATOMIC_H |
13 | 13 | ||
14 | #include <asm/irqflags.h> | 14 | #include <asm/irqflags.h> |
15 | 15 | #include <asm/cmpxchg.h> | |
16 | #ifndef __ASSEMBLY__ | ||
17 | |||
18 | #ifdef CONFIG_SMP | ||
19 | #ifdef CONFIG_MN10300_HAS_ATOMIC_OPS_UNIT | ||
20 | static inline | ||
21 | unsigned long __xchg(volatile unsigned long *m, unsigned long val) | ||
22 | { | ||
23 | unsigned long status; | ||
24 | unsigned long oldval; | ||
25 | |||
26 | asm volatile( | ||
27 | "1: mov %4,(_AAR,%3) \n" | ||
28 | " mov (_ADR,%3),%1 \n" | ||
29 | " mov %5,(_ADR,%3) \n" | ||
30 | " mov (_ADR,%3),%0 \n" /* flush */ | ||
31 | " mov (_ASR,%3),%0 \n" | ||
32 | " or %0,%0 \n" | ||
33 | " bne 1b \n" | ||
34 | : "=&r"(status), "=&r"(oldval), "=m"(*m) | ||
35 | : "a"(ATOMIC_OPS_BASE_ADDR), "r"(m), "r"(val) | ||
36 | : "memory", "cc"); | ||
37 | |||
38 | return oldval; | ||
39 | } | ||
40 | |||
41 | static inline unsigned long __cmpxchg(volatile unsigned long *m, | ||
42 | unsigned long old, unsigned long new) | ||
43 | { | ||
44 | unsigned long status; | ||
45 | unsigned long oldval; | ||
46 | |||
47 | asm volatile( | ||
48 | "1: mov %4,(_AAR,%3) \n" | ||
49 | " mov (_ADR,%3),%1 \n" | ||
50 | " cmp %5,%1 \n" | ||
51 | " bne 2f \n" | ||
52 | " mov %6,(_ADR,%3) \n" | ||
53 | "2: mov (_ADR,%3),%0 \n" /* flush */ | ||
54 | " mov (_ASR,%3),%0 \n" | ||
55 | " or %0,%0 \n" | ||
56 | " bne 1b \n" | ||
57 | : "=&r"(status), "=&r"(oldval), "=m"(*m) | ||
58 | : "a"(ATOMIC_OPS_BASE_ADDR), "r"(m), | ||
59 | "r"(old), "r"(new) | ||
60 | : "memory", "cc"); | ||
61 | |||
62 | return oldval; | ||
63 | } | ||
64 | #else /* CONFIG_MN10300_HAS_ATOMIC_OPS_UNIT */ | ||
65 | #error "No SMP atomic operation support!" | ||
66 | #endif /* CONFIG_MN10300_HAS_ATOMIC_OPS_UNIT */ | ||
67 | |||
68 | #else /* CONFIG_SMP */ | ||
69 | |||
70 | /* | ||
71 | * Emulate xchg for non-SMP MN10300 | ||
72 | */ | ||
73 | struct __xchg_dummy { unsigned long a[100]; }; | ||
74 | #define __xg(x) ((struct __xchg_dummy *)(x)) | ||
75 | |||
76 | static inline | ||
77 | unsigned long __xchg(volatile unsigned long *m, unsigned long val) | ||
78 | { | ||
79 | unsigned long oldval; | ||
80 | unsigned long flags; | ||
81 | |||
82 | flags = arch_local_cli_save(); | ||
83 | oldval = *m; | ||
84 | *m = val; | ||
85 | arch_local_irq_restore(flags); | ||
86 | return oldval; | ||
87 | } | ||
88 | |||
89 | /* | ||
90 | * Emulate cmpxchg for non-SMP MN10300 | ||
91 | */ | ||
92 | static inline unsigned long __cmpxchg(volatile unsigned long *m, | ||
93 | unsigned long old, unsigned long new) | ||
94 | { | ||
95 | unsigned long oldval; | ||
96 | unsigned long flags; | ||
97 | |||
98 | flags = arch_local_cli_save(); | ||
99 | oldval = *m; | ||
100 | if (oldval == old) | ||
101 | *m = new; | ||
102 | arch_local_irq_restore(flags); | ||
103 | return oldval; | ||
104 | } | ||
105 | |||
106 | #endif /* CONFIG_SMP */ | ||
107 | |||
108 | #define xchg(ptr, v) \ | ||
109 | ((__typeof__(*(ptr))) __xchg((unsigned long *)(ptr), \ | ||
110 | (unsigned long)(v))) | ||
111 | |||
112 | #define cmpxchg(ptr, o, n) \ | ||
113 | ((__typeof__(*(ptr))) __cmpxchg((unsigned long *)(ptr), \ | ||
114 | (unsigned long)(o), \ | ||
115 | (unsigned long)(n))) | ||
116 | |||
117 | #define atomic_xchg(ptr, v) (xchg(&(ptr)->counter, (v))) | ||
118 | #define atomic_cmpxchg(v, old, new) (cmpxchg(&((v)->counter), (old), (new))) | ||
119 | |||
120 | #endif /* !__ASSEMBLY__ */ | ||
121 | 16 | ||
122 | #ifndef CONFIG_SMP | 17 | #ifndef CONFIG_SMP |
123 | #include <asm-generic/atomic.h> | 18 | #include <asm-generic/atomic.h> |
@@ -269,6 +164,8 @@ static inline void atomic_dec(atomic_t *v) | |||
269 | c; \ | 164 | c; \ |
270 | }) | 165 | }) |
271 | 166 | ||
167 | #define atomic_xchg(ptr, v) (xchg(&(ptr)->counter, (v))) | ||
168 | #define atomic_cmpxchg(v, old, new) (cmpxchg(&((v)->counter), (old), (new))) | ||
272 | 169 | ||
273 | /** | 170 | /** |
274 | * atomic_clear_mask - Atomically clear bits in memory | 171 | * atomic_clear_mask - Atomically clear bits in memory |
diff --git a/arch/mn10300/include/asm/barrier.h b/arch/mn10300/include/asm/barrier.h new file mode 100644 index 000000000000..2bd97a5c8af7 --- /dev/null +++ b/arch/mn10300/include/asm/barrier.h | |||
@@ -0,0 +1,37 @@ | |||
1 | /* MN10300 memory barrier definitions | ||
2 | * | ||
3 | * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved. | ||
4 | * Written by David Howells (dhowells@redhat.com) | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or | ||
7 | * modify it under the terms of the GNU General Public Licence | ||
8 | * as published by the Free Software Foundation; either version | ||
9 | * 2 of the Licence, or (at your option) any later version. | ||
10 | */ | ||
11 | #ifndef _ASM_BARRIER_H | ||
12 | #define _ASM_BARRIER_H | ||
13 | |||
14 | #define nop() asm volatile ("nop") | ||
15 | |||
16 | #define mb() asm volatile ("": : :"memory") | ||
17 | #define rmb() mb() | ||
18 | #define wmb() asm volatile ("": : :"memory") | ||
19 | |||
20 | #ifdef CONFIG_SMP | ||
21 | #define smp_mb() mb() | ||
22 | #define smp_rmb() rmb() | ||
23 | #define smp_wmb() wmb() | ||
24 | #define set_mb(var, value) do { xchg(&var, value); } while (0) | ||
25 | #else /* CONFIG_SMP */ | ||
26 | #define smp_mb() barrier() | ||
27 | #define smp_rmb() barrier() | ||
28 | #define smp_wmb() barrier() | ||
29 | #define set_mb(var, value) do { var = value; mb(); } while (0) | ||
30 | #endif /* CONFIG_SMP */ | ||
31 | |||
32 | #define set_wmb(var, value) do { var = value; wmb(); } while (0) | ||
33 | |||
34 | #define read_barrier_depends() do {} while (0) | ||
35 | #define smp_read_barrier_depends() do {} while (0) | ||
36 | |||
37 | #endif /* _ASM_BARRIER_H */ | ||
diff --git a/arch/mn10300/include/asm/cmpxchg.h b/arch/mn10300/include/asm/cmpxchg.h new file mode 100644 index 000000000000..97a4aaf387a6 --- /dev/null +++ b/arch/mn10300/include/asm/cmpxchg.h | |||
@@ -0,0 +1,115 @@ | |||
1 | /* MN10300 Atomic xchg/cmpxchg operations | ||
2 | * | ||
3 | * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved. | ||
4 | * Written by David Howells (dhowells@redhat.com) | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or | ||
7 | * modify it under the terms of the GNU General Public Licence | ||
8 | * as published by the Free Software Foundation; either version | ||
9 | * 2 of the Licence, or (at your option) any later version. | ||
10 | */ | ||
11 | #ifndef _ASM_CMPXCHG_H | ||
12 | #define _ASM_CMPXCHG_H | ||
13 | |||
14 | #include <asm/irqflags.h> | ||
15 | |||
16 | #ifdef CONFIG_SMP | ||
17 | #ifdef CONFIG_MN10300_HAS_ATOMIC_OPS_UNIT | ||
18 | static inline | ||
19 | unsigned long __xchg(volatile unsigned long *m, unsigned long val) | ||
20 | { | ||
21 | unsigned long status; | ||
22 | unsigned long oldval; | ||
23 | |||
24 | asm volatile( | ||
25 | "1: mov %4,(_AAR,%3) \n" | ||
26 | " mov (_ADR,%3),%1 \n" | ||
27 | " mov %5,(_ADR,%3) \n" | ||
28 | " mov (_ADR,%3),%0 \n" /* flush */ | ||
29 | " mov (_ASR,%3),%0 \n" | ||
30 | " or %0,%0 \n" | ||
31 | " bne 1b \n" | ||
32 | : "=&r"(status), "=&r"(oldval), "=m"(*m) | ||
33 | : "a"(ATOMIC_OPS_BASE_ADDR), "r"(m), "r"(val) | ||
34 | : "memory", "cc"); | ||
35 | |||
36 | return oldval; | ||
37 | } | ||
38 | |||
39 | static inline unsigned long __cmpxchg(volatile unsigned long *m, | ||
40 | unsigned long old, unsigned long new) | ||
41 | { | ||
42 | unsigned long status; | ||
43 | unsigned long oldval; | ||
44 | |||
45 | asm volatile( | ||
46 | "1: mov %4,(_AAR,%3) \n" | ||
47 | " mov (_ADR,%3),%1 \n" | ||
48 | " cmp %5,%1 \n" | ||
49 | " bne 2f \n" | ||
50 | " mov %6,(_ADR,%3) \n" | ||
51 | "2: mov (_ADR,%3),%0 \n" /* flush */ | ||
52 | " mov (_ASR,%3),%0 \n" | ||
53 | " or %0,%0 \n" | ||
54 | " bne 1b \n" | ||
55 | : "=&r"(status), "=&r"(oldval), "=m"(*m) | ||
56 | : "a"(ATOMIC_OPS_BASE_ADDR), "r"(m), | ||
57 | "r"(old), "r"(new) | ||
58 | : "memory", "cc"); | ||
59 | |||
60 | return oldval; | ||
61 | } | ||
62 | #else /* CONFIG_MN10300_HAS_ATOMIC_OPS_UNIT */ | ||
63 | #error "No SMP atomic operation support!" | ||
64 | #endif /* CONFIG_MN10300_HAS_ATOMIC_OPS_UNIT */ | ||
65 | |||
66 | #else /* CONFIG_SMP */ | ||
67 | |||
68 | /* | ||
69 | * Emulate xchg for non-SMP MN10300 | ||
70 | */ | ||
71 | struct __xchg_dummy { unsigned long a[100]; }; | ||
72 | #define __xg(x) ((struct __xchg_dummy *)(x)) | ||
73 | |||
74 | static inline | ||
75 | unsigned long __xchg(volatile unsigned long *m, unsigned long val) | ||
76 | { | ||
77 | unsigned long oldval; | ||
78 | unsigned long flags; | ||
79 | |||
80 | flags = arch_local_cli_save(); | ||
81 | oldval = *m; | ||
82 | *m = val; | ||
83 | arch_local_irq_restore(flags); | ||
84 | return oldval; | ||
85 | } | ||
86 | |||
87 | /* | ||
88 | * Emulate cmpxchg for non-SMP MN10300 | ||
89 | */ | ||
90 | static inline unsigned long __cmpxchg(volatile unsigned long *m, | ||
91 | unsigned long old, unsigned long new) | ||
92 | { | ||
93 | unsigned long oldval; | ||
94 | unsigned long flags; | ||
95 | |||
96 | flags = arch_local_cli_save(); | ||
97 | oldval = *m; | ||
98 | if (oldval == old) | ||
99 | *m = new; | ||
100 | arch_local_irq_restore(flags); | ||
101 | return oldval; | ||
102 | } | ||
103 | |||
104 | #endif /* CONFIG_SMP */ | ||
105 | |||
106 | #define xchg(ptr, v) \ | ||
107 | ((__typeof__(*(ptr))) __xchg((unsigned long *)(ptr), \ | ||
108 | (unsigned long)(v))) | ||
109 | |||
110 | #define cmpxchg(ptr, o, n) \ | ||
111 | ((__typeof__(*(ptr))) __cmpxchg((unsigned long *)(ptr), \ | ||
112 | (unsigned long)(o), \ | ||
113 | (unsigned long)(n))) | ||
114 | |||
115 | #endif /* _ASM_CMPXCHG_H */ | ||
diff --git a/arch/mn10300/include/asm/dma.h b/arch/mn10300/include/asm/dma.h index 098df2e617ab..10b77d4628c2 100644 --- a/arch/mn10300/include/asm/dma.h +++ b/arch/mn10300/include/asm/dma.h | |||
@@ -11,7 +11,6 @@ | |||
11 | #ifndef _ASM_DMA_H | 11 | #ifndef _ASM_DMA_H |
12 | #define _ASM_DMA_H | 12 | #define _ASM_DMA_H |
13 | 13 | ||
14 | #include <asm/system.h> | ||
15 | #include <linux/spinlock.h> | 14 | #include <linux/spinlock.h> |
16 | #include <asm/io.h> | 15 | #include <asm/io.h> |
17 | #include <linux/delay.h> | 16 | #include <linux/delay.h> |
diff --git a/arch/mn10300/include/asm/exec.h b/arch/mn10300/include/asm/exec.h new file mode 100644 index 000000000000..c74e367f4b9d --- /dev/null +++ b/arch/mn10300/include/asm/exec.h | |||
@@ -0,0 +1,16 @@ | |||
1 | /* MN10300 process execution definitions | ||
2 | * | ||
3 | * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved. | ||
4 | * Written by David Howells (dhowells@redhat.com) | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or | ||
7 | * modify it under the terms of the GNU General Public Licence | ||
8 | * as published by the Free Software Foundation; either version | ||
9 | * 2 of the Licence, or (at your option) any later version. | ||
10 | */ | ||
11 | #ifndef _ASM_EXEC_H | ||
12 | #define _ASM_EXEC_H | ||
13 | |||
14 | #define arch_align_stack(x) (x) | ||
15 | |||
16 | #endif /* _ASM_EXEC_H */ | ||
diff --git a/arch/mn10300/include/asm/switch_to.h b/arch/mn10300/include/asm/switch_to.h new file mode 100644 index 000000000000..393d311735c8 --- /dev/null +++ b/arch/mn10300/include/asm/switch_to.h | |||
@@ -0,0 +1,49 @@ | |||
1 | /* MN10300 task switching definitions | ||
2 | * | ||
3 | * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved. | ||
4 | * Written by David Howells (dhowells@redhat.com) | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or | ||
7 | * modify it under the terms of the GNU General Public Licence | ||
8 | * as published by the Free Software Foundation; either version | ||
9 | * 2 of the Licence, or (at your option) any later version. | ||
10 | */ | ||
11 | #ifndef _ASM_SWITCH_TO_H | ||
12 | #define _ASM_SWITCH_TO_H | ||
13 | |||
14 | #include <asm/barrier.h> | ||
15 | |||
16 | struct task_struct; | ||
17 | struct thread_struct; | ||
18 | |||
19 | #if !defined(CONFIG_LAZY_SAVE_FPU) | ||
20 | struct fpu_state_struct; | ||
21 | extern asmlinkage void fpu_save(struct fpu_state_struct *); | ||
22 | #define switch_fpu(prev, next) \ | ||
23 | do { \ | ||
24 | if ((prev)->thread.fpu_flags & THREAD_HAS_FPU) { \ | ||
25 | (prev)->thread.fpu_flags &= ~THREAD_HAS_FPU; \ | ||
26 | (prev)->thread.uregs->epsw &= ~EPSW_FE; \ | ||
27 | fpu_save(&(prev)->thread.fpu_state); \ | ||
28 | } \ | ||
29 | } while (0) | ||
30 | #else | ||
31 | #define switch_fpu(prev, next) do {} while (0) | ||
32 | #endif | ||
33 | |||
34 | /* context switching is now performed out-of-line in switch_to.S */ | ||
35 | extern asmlinkage | ||
36 | struct task_struct *__switch_to(struct thread_struct *prev, | ||
37 | struct thread_struct *next, | ||
38 | struct task_struct *prev_task); | ||
39 | |||
40 | #define switch_to(prev, next, last) \ | ||
41 | do { \ | ||
42 | switch_fpu(prev, next); \ | ||
43 | current->thread.wchan = (u_long) __builtin_return_address(0); \ | ||
44 | (last) = __switch_to(&(prev)->thread, &(next)->thread, (prev)); \ | ||
45 | mb(); \ | ||
46 | current->thread.wchan = 0; \ | ||
47 | } while (0) | ||
48 | |||
49 | #endif /* _ASM_SWITCH_TO_H */ | ||
diff --git a/arch/mn10300/include/asm/system.h b/arch/mn10300/include/asm/system.h deleted file mode 100644 index 94b4c5e1491b..000000000000 --- a/arch/mn10300/include/asm/system.h +++ /dev/null | |||
@@ -1,102 +0,0 @@ | |||
1 | /* MN10300 System definitions | ||
2 | * | ||
3 | * Copyright (C) 2007 Red Hat, Inc. All Rights Reserved. | ||
4 | * Written by David Howells (dhowells@redhat.com) | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or | ||
7 | * modify it under the terms of the GNU General Public Licence | ||
8 | * as published by the Free Software Foundation; either version | ||
9 | * 2 of the Licence, or (at your option) any later version. | ||
10 | */ | ||
11 | #ifndef _ASM_SYSTEM_H | ||
12 | #define _ASM_SYSTEM_H | ||
13 | |||
14 | #include <asm/cpu-regs.h> | ||
15 | #include <asm/intctl-regs.h> | ||
16 | |||
17 | #ifdef __KERNEL__ | ||
18 | #ifndef __ASSEMBLY__ | ||
19 | |||
20 | #include <linux/kernel.h> | ||
21 | #include <linux/irqflags.h> | ||
22 | #include <linux/atomic.h> | ||
23 | |||
24 | #if !defined(CONFIG_LAZY_SAVE_FPU) | ||
25 | struct fpu_state_struct; | ||
26 | extern asmlinkage void fpu_save(struct fpu_state_struct *); | ||
27 | #define switch_fpu(prev, next) \ | ||
28 | do { \ | ||
29 | if ((prev)->thread.fpu_flags & THREAD_HAS_FPU) { \ | ||
30 | (prev)->thread.fpu_flags &= ~THREAD_HAS_FPU; \ | ||
31 | (prev)->thread.uregs->epsw &= ~EPSW_FE; \ | ||
32 | fpu_save(&(prev)->thread.fpu_state); \ | ||
33 | } \ | ||
34 | } while (0) | ||
35 | #else | ||
36 | #define switch_fpu(prev, next) do {} while (0) | ||
37 | #endif | ||
38 | |||
39 | struct task_struct; | ||
40 | struct thread_struct; | ||
41 | |||
42 | extern asmlinkage | ||
43 | struct task_struct *__switch_to(struct thread_struct *prev, | ||
44 | struct thread_struct *next, | ||
45 | struct task_struct *prev_task); | ||
46 | |||
47 | /* context switching is now performed out-of-line in switch_to.S */ | ||
48 | #define switch_to(prev, next, last) \ | ||
49 | do { \ | ||
50 | switch_fpu(prev, next); \ | ||
51 | current->thread.wchan = (u_long) __builtin_return_address(0); \ | ||
52 | (last) = __switch_to(&(prev)->thread, &(next)->thread, (prev)); \ | ||
53 | mb(); \ | ||
54 | current->thread.wchan = 0; \ | ||
55 | } while (0) | ||
56 | |||
57 | #define arch_align_stack(x) (x) | ||
58 | |||
59 | #define nop() asm volatile ("nop") | ||
60 | |||
61 | /* | ||
62 | * Force strict CPU ordering. | ||
63 | * And yes, this is required on UP too when we're talking | ||
64 | * to devices. | ||
65 | * | ||
66 | * For now, "wmb()" doesn't actually do anything, as all | ||
67 | * Intel CPU's follow what Intel calls a *Processor Order*, | ||
68 | * in which all writes are seen in the program order even | ||
69 | * outside the CPU. | ||
70 | * | ||
71 | * I expect future Intel CPU's to have a weaker ordering, | ||
72 | * but I'd also expect them to finally get their act together | ||
73 | * and add some real memory barriers if so. | ||
74 | * | ||
75 | * Some non intel clones support out of order store. wmb() ceases to be a | ||
76 | * nop for these. | ||
77 | */ | ||
78 | |||
79 | #define mb() asm volatile ("": : :"memory") | ||
80 | #define rmb() mb() | ||
81 | #define wmb() asm volatile ("": : :"memory") | ||
82 | |||
83 | #ifdef CONFIG_SMP | ||
84 | #define smp_mb() mb() | ||
85 | #define smp_rmb() rmb() | ||
86 | #define smp_wmb() wmb() | ||
87 | #define set_mb(var, value) do { xchg(&var, value); } while (0) | ||
88 | #else /* CONFIG_SMP */ | ||
89 | #define smp_mb() barrier() | ||
90 | #define smp_rmb() barrier() | ||
91 | #define smp_wmb() barrier() | ||
92 | #define set_mb(var, value) do { var = value; mb(); } while (0) | ||
93 | #endif /* CONFIG_SMP */ | ||
94 | |||
95 | #define set_wmb(var, value) do { var = value; wmb(); } while (0) | ||
96 | |||
97 | #define read_barrier_depends() do {} while (0) | ||
98 | #define smp_read_barrier_depends() do {} while (0) | ||
99 | |||
100 | #endif /* !__ASSEMBLY__ */ | ||
101 | #endif /* __KERNEL__ */ | ||
102 | #endif /* _ASM_SYSTEM_H */ | ||
diff --git a/arch/mn10300/kernel/entry.S b/arch/mn10300/kernel/entry.S index 3e3620d9fc45..8e11f9f48999 100644 --- a/arch/mn10300/kernel/entry.S +++ b/arch/mn10300/kernel/entry.S | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <linux/sys.h> | 15 | #include <linux/sys.h> |
16 | #include <linux/linkage.h> | 16 | #include <linux/linkage.h> |
17 | #include <asm/smp.h> | 17 | #include <asm/smp.h> |
18 | #include <asm/system.h> | ||
19 | #include <asm/irqflags.h> | 18 | #include <asm/irqflags.h> |
20 | #include <asm/thread_info.h> | 19 | #include <asm/thread_info.h> |
21 | #include <asm/intctl-regs.h> | 20 | #include <asm/intctl-regs.h> |
diff --git a/arch/mn10300/kernel/fpu.c b/arch/mn10300/kernel/fpu.c index bb5fa7df6c44..064fa194de2b 100644 --- a/arch/mn10300/kernel/fpu.c +++ b/arch/mn10300/kernel/fpu.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <asm/fpu.h> | 12 | #include <asm/fpu.h> |
13 | #include <asm/elf.h> | 13 | #include <asm/elf.h> |
14 | #include <asm/exceptions.h> | 14 | #include <asm/exceptions.h> |
15 | #include <asm/system.h> | ||
16 | 15 | ||
17 | #ifdef CONFIG_LAZY_SAVE_FPU | 16 | #ifdef CONFIG_LAZY_SAVE_FPU |
18 | struct task_struct *fpu_state_owner; | 17 | struct task_struct *fpu_state_owner; |
diff --git a/arch/mn10300/kernel/gdb-io-serial.c b/arch/mn10300/kernel/gdb-io-serial.c index f28dc99c6f72..df51242744cc 100644 --- a/arch/mn10300/kernel/gdb-io-serial.c +++ b/arch/mn10300/kernel/gdb-io-serial.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <linux/nmi.h> | 18 | #include <linux/nmi.h> |
19 | 19 | ||
20 | #include <asm/pgtable.h> | 20 | #include <asm/pgtable.h> |
21 | #include <asm/system.h> | ||
22 | #include <asm/gdb-stub.h> | 21 | #include <asm/gdb-stub.h> |
23 | #include <asm/exceptions.h> | 22 | #include <asm/exceptions.h> |
24 | #include <asm/serial-regs.h> | 23 | #include <asm/serial-regs.h> |
diff --git a/arch/mn10300/kernel/gdb-io-ttysm.c b/arch/mn10300/kernel/gdb-io-ttysm.c index c859cacbb9c3..caae8cac9db1 100644 --- a/arch/mn10300/kernel/gdb-io-ttysm.c +++ b/arch/mn10300/kernel/gdb-io-ttysm.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
18 | #include <linux/tty.h> | 18 | #include <linux/tty.h> |
19 | #include <asm/pgtable.h> | 19 | #include <asm/pgtable.h> |
20 | #include <asm/system.h> | ||
21 | #include <asm/gdb-stub.h> | 20 | #include <asm/gdb-stub.h> |
22 | #include <asm/exceptions.h> | 21 | #include <asm/exceptions.h> |
23 | #include <unit/clock.h> | 22 | #include <unit/clock.h> |
diff --git a/arch/mn10300/kernel/gdb-stub.c b/arch/mn10300/kernel/gdb-stub.c index 522eb8a9b60d..a128c57b586b 100644 --- a/arch/mn10300/kernel/gdb-stub.c +++ b/arch/mn10300/kernel/gdb-stub.c | |||
@@ -130,7 +130,6 @@ | |||
130 | #include <linux/bug.h> | 130 | #include <linux/bug.h> |
131 | 131 | ||
132 | #include <asm/pgtable.h> | 132 | #include <asm/pgtable.h> |
133 | #include <asm/system.h> | ||
134 | #include <asm/gdb-stub.h> | 133 | #include <asm/gdb-stub.h> |
135 | #include <asm/exceptions.h> | 134 | #include <asm/exceptions.h> |
136 | #include <asm/debugger.h> | 135 | #include <asm/debugger.h> |
diff --git a/arch/mn10300/kernel/mn10300-serial.c b/arch/mn10300/kernel/mn10300-serial.c index 94901c56baf1..339cef4c8256 100644 --- a/arch/mn10300/kernel/mn10300-serial.c +++ b/arch/mn10300/kernel/mn10300-serial.c | |||
@@ -36,7 +36,6 @@ static const char serial_revdate[] = "2007-11-06"; | |||
36 | #include <linux/console.h> | 36 | #include <linux/console.h> |
37 | #include <linux/sysrq.h> | 37 | #include <linux/sysrq.h> |
38 | 38 | ||
39 | #include <asm/system.h> | ||
40 | #include <asm/io.h> | 39 | #include <asm/io.h> |
41 | #include <asm/irq.h> | 40 | #include <asm/irq.h> |
42 | #include <asm/bitops.h> | 41 | #include <asm/bitops.h> |
diff --git a/arch/mn10300/kernel/mn10300-watchdog.c b/arch/mn10300/kernel/mn10300-watchdog.c index a45f0c7549a6..db64a7166c09 100644 --- a/arch/mn10300/kernel/mn10300-watchdog.c +++ b/arch/mn10300/kernel/mn10300-watchdog.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <linux/kernel_stat.h> | 18 | #include <linux/kernel_stat.h> |
19 | #include <linux/nmi.h> | 19 | #include <linux/nmi.h> |
20 | #include <asm/processor.h> | 20 | #include <asm/processor.h> |
21 | #include <asm/system.h> | ||
22 | #include <linux/atomic.h> | 21 | #include <linux/atomic.h> |
23 | #include <asm/intctl-regs.h> | 22 | #include <asm/intctl-regs.h> |
24 | #include <asm/rtc-regs.h> | 23 | #include <asm/rtc-regs.h> |
diff --git a/arch/mn10300/kernel/process.c b/arch/mn10300/kernel/process.c index cac401d37f75..14707f25153b 100644 --- a/arch/mn10300/kernel/process.c +++ b/arch/mn10300/kernel/process.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <linux/slab.h> | 27 | #include <linux/slab.h> |
28 | #include <asm/uaccess.h> | 28 | #include <asm/uaccess.h> |
29 | #include <asm/pgtable.h> | 29 | #include <asm/pgtable.h> |
30 | #include <asm/system.h> | ||
31 | #include <asm/io.h> | 30 | #include <asm/io.h> |
32 | #include <asm/processor.h> | 31 | #include <asm/processor.h> |
33 | #include <asm/mmu_context.h> | 32 | #include <asm/mmu_context.h> |
diff --git a/arch/mn10300/kernel/ptrace.c b/arch/mn10300/kernel/ptrace.c index 5c0b07e61006..5bd58514e739 100644 --- a/arch/mn10300/kernel/ptrace.c +++ b/arch/mn10300/kernel/ptrace.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <linux/tracehook.h> | 21 | #include <linux/tracehook.h> |
22 | #include <asm/uaccess.h> | 22 | #include <asm/uaccess.h> |
23 | #include <asm/pgtable.h> | 23 | #include <asm/pgtable.h> |
24 | #include <asm/system.h> | ||
25 | #include <asm/processor.h> | 24 | #include <asm/processor.h> |
26 | #include <asm/cacheflush.h> | 25 | #include <asm/cacheflush.h> |
27 | #include <asm/fpu.h> | 26 | #include <asm/fpu.h> |
diff --git a/arch/mn10300/kernel/setup.c b/arch/mn10300/kernel/setup.c index 9e7a3209a3e1..33c3bd1e5c6d 100644 --- a/arch/mn10300/kernel/setup.c +++ b/arch/mn10300/kernel/setup.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include <asm/processor.h> | 26 | #include <asm/processor.h> |
27 | #include <linux/console.h> | 27 | #include <linux/console.h> |
28 | #include <asm/uaccess.h> | 28 | #include <asm/uaccess.h> |
29 | #include <asm/system.h> | ||
30 | #include <asm/setup.h> | 29 | #include <asm/setup.h> |
31 | #include <asm/io.h> | 30 | #include <asm/io.h> |
32 | #include <asm/smp.h> | 31 | #include <asm/smp.h> |
diff --git a/arch/mn10300/kernel/smp-low.S b/arch/mn10300/kernel/smp-low.S index 72938cefc05e..71f1b2faaa0b 100644 --- a/arch/mn10300/kernel/smp-low.S +++ b/arch/mn10300/kernel/smp-low.S | |||
@@ -13,9 +13,9 @@ | |||
13 | #include <linux/sys.h> | 13 | #include <linux/sys.h> |
14 | #include <linux/linkage.h> | 14 | #include <linux/linkage.h> |
15 | #include <asm/smp.h> | 15 | #include <asm/smp.h> |
16 | #include <asm/system.h> | ||
17 | #include <asm/thread_info.h> | 16 | #include <asm/thread_info.h> |
18 | #include <asm/cpu-regs.h> | 17 | #include <asm/cpu-regs.h> |
18 | #include <asm/intctl-regs.h> | ||
19 | #include <proc/smp-regs.h> | 19 | #include <proc/smp-regs.h> |
20 | #include <asm/asm-offsets.h> | 20 | #include <asm/asm-offsets.h> |
21 | #include <asm/frame.inc> | 21 | #include <asm/frame.inc> |
diff --git a/arch/mn10300/kernel/smp.c b/arch/mn10300/kernel/smp.c index 9242e9fcc564..910dddf65e44 100644 --- a/arch/mn10300/kernel/smp.c +++ b/arch/mn10300/kernel/smp.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include <linux/profile.h> | 25 | #include <linux/profile.h> |
26 | #include <linux/smp.h> | 26 | #include <linux/smp.h> |
27 | #include <asm/tlbflush.h> | 27 | #include <asm/tlbflush.h> |
28 | #include <asm/system.h> | ||
29 | #include <asm/bitops.h> | 28 | #include <asm/bitops.h> |
30 | #include <asm/processor.h> | 29 | #include <asm/processor.h> |
31 | #include <asm/bug.h> | 30 | #include <asm/bug.h> |
diff --git a/arch/mn10300/kernel/traps.c b/arch/mn10300/kernel/traps.c index 9220a75a7b43..94a9c6d53e1b 100644 --- a/arch/mn10300/kernel/traps.c +++ b/arch/mn10300/kernel/traps.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <linux/bug.h> | 27 | #include <linux/bug.h> |
28 | #include <linux/irq.h> | 28 | #include <linux/irq.h> |
29 | #include <asm/processor.h> | 29 | #include <asm/processor.h> |
30 | #include <asm/system.h> | ||
31 | #include <linux/uaccess.h> | 30 | #include <linux/uaccess.h> |
32 | #include <asm/io.h> | 31 | #include <asm/io.h> |
33 | #include <linux/atomic.h> | 32 | #include <linux/atomic.h> |
diff --git a/arch/mn10300/lib/bitops.c b/arch/mn10300/lib/bitops.c index a66c6cdaf442..37309cdb7584 100644 --- a/arch/mn10300/lib/bitops.c +++ b/arch/mn10300/lib/bitops.c | |||
@@ -10,7 +10,6 @@ | |||
10 | */ | 10 | */ |
11 | #include <linux/module.h> | 11 | #include <linux/module.h> |
12 | #include <asm/bitops.h> | 12 | #include <asm/bitops.h> |
13 | #include <asm/system.h> | ||
14 | 13 | ||
15 | /* | 14 | /* |
16 | * try flipping a bit using BSET and BCLR | 15 | * try flipping a bit using BSET and BCLR |
diff --git a/arch/mn10300/mm/fault.c b/arch/mn10300/mm/fault.c index 0945409a8022..90f346f7392d 100644 --- a/arch/mn10300/mm/fault.c +++ b/arch/mn10300/mm/fault.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include <linux/init.h> | 24 | #include <linux/init.h> |
25 | #include <linux/vt_kern.h> /* For unblank_screen() */ | 25 | #include <linux/vt_kern.h> /* For unblank_screen() */ |
26 | 26 | ||
27 | #include <asm/system.h> | ||
28 | #include <asm/uaccess.h> | 27 | #include <asm/uaccess.h> |
29 | #include <asm/pgalloc.h> | 28 | #include <asm/pgalloc.h> |
30 | #include <asm/hardirq.h> | 29 | #include <asm/hardirq.h> |
diff --git a/arch/mn10300/mm/init.c b/arch/mn10300/mm/init.c index 13801824e3ee..e57e5bc23562 100644 --- a/arch/mn10300/mm/init.c +++ b/arch/mn10300/mm/init.c | |||
@@ -29,7 +29,6 @@ | |||
29 | #include <linux/gfp.h> | 29 | #include <linux/gfp.h> |
30 | 30 | ||
31 | #include <asm/processor.h> | 31 | #include <asm/processor.h> |
32 | #include <asm/system.h> | ||
33 | #include <asm/uaccess.h> | 32 | #include <asm/uaccess.h> |
34 | #include <asm/pgtable.h> | 33 | #include <asm/pgtable.h> |
35 | #include <asm/pgalloc.h> | 34 | #include <asm/pgalloc.h> |
diff --git a/arch/mn10300/mm/misalignment.c b/arch/mn10300/mm/misalignment.c index f9bb8cb1c14a..b9920b1edd5a 100644 --- a/arch/mn10300/mm/misalignment.c +++ b/arch/mn10300/mm/misalignment.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include <linux/interrupt.h> | 23 | #include <linux/interrupt.h> |
24 | #include <linux/pci.h> | 24 | #include <linux/pci.h> |
25 | #include <asm/processor.h> | 25 | #include <asm/processor.h> |
26 | #include <asm/system.h> | ||
27 | #include <asm/uaccess.h> | 26 | #include <asm/uaccess.h> |
28 | #include <asm/io.h> | 27 | #include <asm/io.h> |
29 | #include <linux/atomic.h> | 28 | #include <linux/atomic.h> |
diff --git a/arch/mn10300/mm/pgtable.c b/arch/mn10300/mm/pgtable.c index 450f7ba3f8f2..4ebf117c3285 100644 --- a/arch/mn10300/mm/pgtable.c +++ b/arch/mn10300/mm/pgtable.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <linux/spinlock.h> | 21 | #include <linux/spinlock.h> |
22 | #include <linux/quicklist.h> | 22 | #include <linux/quicklist.h> |
23 | 23 | ||
24 | #include <asm/system.h> | ||
25 | #include <asm/pgtable.h> | 24 | #include <asm/pgtable.h> |
26 | #include <asm/pgalloc.h> | 25 | #include <asm/pgalloc.h> |
27 | #include <asm/tlb.h> | 26 | #include <asm/tlb.h> |
diff --git a/arch/mn10300/mm/tlb-smp.c b/arch/mn10300/mm/tlb-smp.c index 9a777498a916..3e57faf04083 100644 --- a/arch/mn10300/mm/tlb-smp.c +++ b/arch/mn10300/mm/tlb-smp.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include <linux/profile.h> | 24 | #include <linux/profile.h> |
25 | #include <linux/smp.h> | 25 | #include <linux/smp.h> |
26 | #include <asm/tlbflush.h> | 26 | #include <asm/tlbflush.h> |
27 | #include <asm/system.h> | ||
28 | #include <asm/bitops.h> | 27 | #include <asm/bitops.h> |
29 | #include <asm/processor.h> | 28 | #include <asm/processor.h> |
30 | #include <asm/bug.h> | 29 | #include <asm/bug.h> |
diff --git a/arch/mn10300/proc-mn2ws0050/proc-init.c b/arch/mn10300/proc-mn2ws0050/proc-init.c index fe6e24906ffc..ee6d03dbc8d8 100644 --- a/arch/mn10300/proc-mn2ws0050/proc-init.c +++ b/arch/mn10300/proc-mn2ws0050/proc-init.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <linux/interrupt.h> | 15 | #include <linux/interrupt.h> |
16 | 16 | ||
17 | #include <asm/processor.h> | 17 | #include <asm/processor.h> |
18 | #include <asm/system.h> | ||
19 | #include <asm/uaccess.h> | 18 | #include <asm/uaccess.h> |
20 | #include <asm/io.h> | 19 | #include <asm/io.h> |
21 | #include <linux/atomic.h> | 20 | #include <linux/atomic.h> |
diff --git a/arch/openrisc/include/asm/Kbuild b/arch/openrisc/include/asm/Kbuild index 11162e6c878f..dcea5a0308ae 100644 --- a/arch/openrisc/include/asm/Kbuild +++ b/arch/openrisc/include/asm/Kbuild | |||
@@ -4,6 +4,7 @@ header-y += spr_defs.h | |||
4 | 4 | ||
5 | generic-y += atomic.h | 5 | generic-y += atomic.h |
6 | generic-y += auxvec.h | 6 | generic-y += auxvec.h |
7 | generic-y += barrier.h | ||
7 | generic-y += bitsperlong.h | 8 | generic-y += bitsperlong.h |
8 | generic-y += bug.h | 9 | generic-y += bug.h |
9 | generic-y += bugs.h | 10 | generic-y += bugs.h |
@@ -19,6 +20,7 @@ generic-y += div64.h | |||
19 | generic-y += dma.h | 20 | generic-y += dma.h |
20 | generic-y += emergency-restart.h | 21 | generic-y += emergency-restart.h |
21 | generic-y += errno.h | 22 | generic-y += errno.h |
23 | generic-y += exec.h | ||
22 | generic-y += fb.h | 24 | generic-y += fb.h |
23 | generic-y += fcntl.h | 25 | generic-y += fcntl.h |
24 | generic-y += ftrace.h | 26 | generic-y += ftrace.h |
@@ -55,6 +57,7 @@ generic-y += sockios.h | |||
55 | generic-y += statfs.h | 57 | generic-y += statfs.h |
56 | generic-y += stat.h | 58 | generic-y += stat.h |
57 | generic-y += string.h | 59 | generic-y += string.h |
60 | generic-y += switch_to.h | ||
58 | generic-y += swab.h | 61 | generic-y += swab.h |
59 | generic-y += termbits.h | 62 | generic-y += termbits.h |
60 | generic-y += termios.h | 63 | generic-y += termios.h |
diff --git a/arch/openrisc/include/asm/system.h b/arch/openrisc/include/asm/system.h deleted file mode 100644 index cf658882186b..000000000000 --- a/arch/openrisc/include/asm/system.h +++ /dev/null | |||
@@ -1,35 +0,0 @@ | |||
1 | /* | ||
2 | * OpenRISC Linux | ||
3 | * | ||
4 | * Linux architectural port borrowing liberally from similar works of | ||
5 | * others. All original copyrights apply as per the original source | ||
6 | * declaration. | ||
7 | * | ||
8 | * OpenRISC implementation: | ||
9 | * Copyright (C) 2003 Matjaz Breskvar <phoenix@bsemi.com> | ||
10 | * Copyright (C) 2010-2011 Jonas Bonn <jonas@southpole.se> | ||
11 | * et al. | ||
12 | * | ||
13 | * This program is free software; you can redistribute it and/or modify | ||
14 | * it under the terms of the GNU General Public License as published by | ||
15 | * the Free Software Foundation; either version 2 of the License, or | ||
16 | * (at your option) any later version. | ||
17 | */ | ||
18 | |||
19 | #ifndef __ASM_OPENRISC_SYSTEM_H | ||
20 | #define __ASM_OPENRISC_SYSTEM_H | ||
21 | |||
22 | #ifdef __KERNEL__ | ||
23 | #ifndef __ASSEMBLY__ | ||
24 | |||
25 | #include <asm/spr.h> | ||
26 | #include <asm-generic/system.h> | ||
27 | |||
28 | /* We probably need this definition, but the generic system.h provides it | ||
29 | * and it's not used on our arch anyway... | ||
30 | */ | ||
31 | /*#define nop() __asm__ __volatile__ ("l.nop"::)*/ | ||
32 | |||
33 | #endif /* __ASSEMBLY__ */ | ||
34 | #endif /* __KERNEL__ */ | ||
35 | #endif /* __ASM_OPENRISC_SYSTEM_H */ | ||
diff --git a/arch/openrisc/kernel/idle.c b/arch/openrisc/kernel/idle.c index e5fc78877830..7d618feb1b72 100644 --- a/arch/openrisc/kernel/idle.c +++ b/arch/openrisc/kernel/idle.c | |||
@@ -31,7 +31,6 @@ | |||
31 | 31 | ||
32 | #include <asm/pgtable.h> | 32 | #include <asm/pgtable.h> |
33 | #include <asm/uaccess.h> | 33 | #include <asm/uaccess.h> |
34 | #include <asm/system.h> | ||
35 | #include <asm/io.h> | 34 | #include <asm/io.h> |
36 | #include <asm/processor.h> | 35 | #include <asm/processor.h> |
37 | #include <asm/mmu.h> | 36 | #include <asm/mmu.h> |
diff --git a/arch/openrisc/kernel/process.c b/arch/openrisc/kernel/process.c index e4209af879ec..55210f37d1a3 100644 --- a/arch/openrisc/kernel/process.c +++ b/arch/openrisc/kernel/process.c | |||
@@ -38,7 +38,6 @@ | |||
38 | 38 | ||
39 | #include <asm/uaccess.h> | 39 | #include <asm/uaccess.h> |
40 | #include <asm/pgtable.h> | 40 | #include <asm/pgtable.h> |
41 | #include <asm/system.h> | ||
42 | #include <asm/io.h> | 41 | #include <asm/io.h> |
43 | #include <asm/processor.h> | 42 | #include <asm/processor.h> |
44 | #include <asm/spr_defs.h> | 43 | #include <asm/spr_defs.h> |
diff --git a/arch/openrisc/kernel/prom.c b/arch/openrisc/kernel/prom.c index 3d4478f6c942..5869e3fa5dd3 100644 --- a/arch/openrisc/kernel/prom.c +++ b/arch/openrisc/kernel/prom.c | |||
@@ -42,7 +42,6 @@ | |||
42 | #include <asm/processor.h> | 42 | #include <asm/processor.h> |
43 | #include <asm/irq.h> | 43 | #include <asm/irq.h> |
44 | #include <linux/io.h> | 44 | #include <linux/io.h> |
45 | #include <asm/system.h> | ||
46 | #include <asm/mmu.h> | 45 | #include <asm/mmu.h> |
47 | #include <asm/pgtable.h> | 46 | #include <asm/pgtable.h> |
48 | #include <asm/sections.h> | 47 | #include <asm/sections.h> |
diff --git a/arch/openrisc/kernel/ptrace.c b/arch/openrisc/kernel/ptrace.c index 6deacb6b95a4..e71781d24b0e 100644 --- a/arch/openrisc/kernel/ptrace.c +++ b/arch/openrisc/kernel/ptrace.c | |||
@@ -33,7 +33,6 @@ | |||
33 | #include <asm/segment.h> | 33 | #include <asm/segment.h> |
34 | #include <asm/page.h> | 34 | #include <asm/page.h> |
35 | #include <asm/pgtable.h> | 35 | #include <asm/pgtable.h> |
36 | #include <asm/system.h> | ||
37 | 36 | ||
38 | /* | 37 | /* |
39 | * Copy the thread state to a regset that can be interpreted by userspace. | 38 | * Copy the thread state to a regset that can be interpreted by userspace. |
diff --git a/arch/openrisc/kernel/setup.c b/arch/openrisc/kernel/setup.c index bf5eba22ce9e..f4d5bedc3b4f 100644 --- a/arch/openrisc/kernel/setup.c +++ b/arch/openrisc/kernel/setup.c | |||
@@ -41,7 +41,6 @@ | |||
41 | #include <linux/of_platform.h> | 41 | #include <linux/of_platform.h> |
42 | 42 | ||
43 | #include <asm/segment.h> | 43 | #include <asm/segment.h> |
44 | #include <asm/system.h> | ||
45 | #include <asm/pgtable.h> | 44 | #include <asm/pgtable.h> |
46 | #include <asm/types.h> | 45 | #include <asm/types.h> |
47 | #include <asm/setup.h> | 46 | #include <asm/setup.h> |
diff --git a/arch/openrisc/kernel/traps.c b/arch/openrisc/kernel/traps.c index a2ee12948f40..5cce396016d0 100644 --- a/arch/openrisc/kernel/traps.c +++ b/arch/openrisc/kernel/traps.c | |||
@@ -33,7 +33,6 @@ | |||
33 | #include <linux/kallsyms.h> | 33 | #include <linux/kallsyms.h> |
34 | #include <asm/uaccess.h> | 34 | #include <asm/uaccess.h> |
35 | 35 | ||
36 | #include <asm/system.h> | ||
37 | #include <asm/segment.h> | 36 | #include <asm/segment.h> |
38 | #include <asm/io.h> | 37 | #include <asm/io.h> |
39 | #include <asm/pgtable.h> | 38 | #include <asm/pgtable.h> |
diff --git a/arch/openrisc/mm/init.c b/arch/openrisc/mm/init.c index 736f6b2f30af..79dea9740a3c 100644 --- a/arch/openrisc/mm/init.c +++ b/arch/openrisc/mm/init.c | |||
@@ -33,7 +33,6 @@ | |||
33 | #include <linux/pagemap.h> | 33 | #include <linux/pagemap.h> |
34 | #include <linux/memblock.h> | 34 | #include <linux/memblock.h> |
35 | 35 | ||
36 | #include <asm/system.h> | ||
37 | #include <asm/segment.h> | 36 | #include <asm/segment.h> |
38 | #include <asm/pgalloc.h> | 37 | #include <asm/pgalloc.h> |
39 | #include <asm/pgtable.h> | 38 | #include <asm/pgtable.h> |
diff --git a/arch/openrisc/mm/tlb.c b/arch/openrisc/mm/tlb.c index 56b0b89624af..683bd4d31c7c 100644 --- a/arch/openrisc/mm/tlb.c +++ b/arch/openrisc/mm/tlb.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include <linux/mm.h> | 26 | #include <linux/mm.h> |
27 | #include <linux/init.h> | 27 | #include <linux/init.h> |
28 | 28 | ||
29 | #include <asm/system.h> | ||
30 | #include <asm/segment.h> | 29 | #include <asm/segment.h> |
31 | #include <asm/tlbflush.h> | 30 | #include <asm/tlbflush.h> |
32 | #include <asm/pgtable.h> | 31 | #include <asm/pgtable.h> |
diff --git a/arch/parisc/include/asm/atomic.h b/arch/parisc/include/asm/atomic.h index 4054b31e0fa9..3ae56073cc3d 100644 --- a/arch/parisc/include/asm/atomic.h +++ b/arch/parisc/include/asm/atomic.h | |||
@@ -6,7 +6,6 @@ | |||
6 | #define _ASM_PARISC_ATOMIC_H_ | 6 | #define _ASM_PARISC_ATOMIC_H_ |
7 | 7 | ||
8 | #include <linux/types.h> | 8 | #include <linux/types.h> |
9 | #include <asm/system.h> | ||
10 | 9 | ||
11 | /* | 10 | /* |
12 | * Atomic operations that C can't guarantee us. Useful for | 11 | * Atomic operations that C can't guarantee us. Useful for |
diff --git a/arch/parisc/include/asm/barrier.h b/arch/parisc/include/asm/barrier.h new file mode 100644 index 000000000000..e77d834aa803 --- /dev/null +++ b/arch/parisc/include/asm/barrier.h | |||
@@ -0,0 +1,35 @@ | |||
1 | #ifndef __PARISC_BARRIER_H | ||
2 | #define __PARISC_BARRIER_H | ||
3 | |||
4 | /* | ||
5 | ** This is simply the barrier() macro from linux/kernel.h but when serial.c | ||
6 | ** uses tqueue.h uses smp_mb() defined using barrier(), linux/kernel.h | ||
7 | ** hasn't yet been included yet so it fails, thus repeating the macro here. | ||
8 | ** | ||
9 | ** PA-RISC architecture allows for weakly ordered memory accesses although | ||
10 | ** none of the processors use it. There is a strong ordered bit that is | ||
11 | ** set in the O-bit of the page directory entry. Operating systems that | ||
12 | ** can not tolerate out of order accesses should set this bit when mapping | ||
13 | ** pages. The O-bit of the PSW should also be set to 1 (I don't believe any | ||
14 | ** of the processor implemented the PSW O-bit). The PCX-W ERS states that | ||
15 | ** the TLB O-bit is not implemented so the page directory does not need to | ||
16 | ** have the O-bit set when mapping pages (section 3.1). This section also | ||
17 | ** states that the PSW Y, Z, G, and O bits are not implemented. | ||
18 | ** So it looks like nothing needs to be done for parisc-linux (yet). | ||
19 | ** (thanks to chada for the above comment -ggg) | ||
20 | ** | ||
21 | ** The __asm__ op below simple prevents gcc/ld from reordering | ||
22 | ** instructions across the mb() "call". | ||
23 | */ | ||
24 | #define mb() __asm__ __volatile__("":::"memory") /* barrier() */ | ||
25 | #define rmb() mb() | ||
26 | #define wmb() mb() | ||
27 | #define smp_mb() mb() | ||
28 | #define smp_rmb() mb() | ||
29 | #define smp_wmb() mb() | ||
30 | #define smp_read_barrier_depends() do { } while(0) | ||
31 | #define read_barrier_depends() do { } while(0) | ||
32 | |||
33 | #define set_mb(var, value) do { var = value; mb(); } while (0) | ||
34 | |||
35 | #endif /* __PARISC_BARRIER_H */ | ||
diff --git a/arch/parisc/include/asm/delay.h b/arch/parisc/include/asm/delay.h index 7a75e984674b..912ee7e6a579 100644 --- a/arch/parisc/include/asm/delay.h +++ b/arch/parisc/include/asm/delay.h | |||
@@ -1,7 +1,7 @@ | |||
1 | #ifndef _PARISC_DELAY_H | 1 | #ifndef _PARISC_DELAY_H |
2 | #define _PARISC_DELAY_H | 2 | #define _PARISC_DELAY_H |
3 | 3 | ||
4 | #include <asm/system.h> /* for mfctl() */ | 4 | #include <asm/special_insns.h> /* for mfctl() */ |
5 | #include <asm/processor.h> /* for boot_cpu_data */ | 5 | #include <asm/processor.h> /* for boot_cpu_data */ |
6 | 6 | ||
7 | 7 | ||
diff --git a/arch/parisc/include/asm/dma.h b/arch/parisc/include/asm/dma.h index f7a18f968703..fd48ae2de950 100644 --- a/arch/parisc/include/asm/dma.h +++ b/arch/parisc/include/asm/dma.h | |||
@@ -9,7 +9,6 @@ | |||
9 | #define _ASM_DMA_H | 9 | #define _ASM_DMA_H |
10 | 10 | ||
11 | #include <asm/io.h> /* need byte IO */ | 11 | #include <asm/io.h> /* need byte IO */ |
12 | #include <asm/system.h> | ||
13 | 12 | ||
14 | #define dma_outb outb | 13 | #define dma_outb outb |
15 | #define dma_inb inb | 14 | #define dma_inb inb |
diff --git a/arch/parisc/include/asm/exec.h b/arch/parisc/include/asm/exec.h new file mode 100644 index 000000000000..6bb5af75b17a --- /dev/null +++ b/arch/parisc/include/asm/exec.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __PARISC_EXEC_H | ||
2 | #define __PARISC_EXEC_H | ||
3 | |||
4 | #define arch_align_stack(x) (x) | ||
5 | |||
6 | #endif /* __PARISC_EXEC_H */ | ||
diff --git a/arch/parisc/include/asm/ldcw.h b/arch/parisc/include/asm/ldcw.h new file mode 100644 index 000000000000..d2d11b7055ba --- /dev/null +++ b/arch/parisc/include/asm/ldcw.h | |||
@@ -0,0 +1,48 @@ | |||
1 | #ifndef __PARISC_LDCW_H | ||
2 | #define __PARISC_LDCW_H | ||
3 | |||
4 | #ifndef CONFIG_PA20 | ||
5 | /* Because kmalloc only guarantees 8-byte alignment for kmalloc'd data, | ||
6 | and GCC only guarantees 8-byte alignment for stack locals, we can't | ||
7 | be assured of 16-byte alignment for atomic lock data even if we | ||
8 | specify "__attribute ((aligned(16)))" in the type declaration. So, | ||
9 | we use a struct containing an array of four ints for the atomic lock | ||
10 | type and dynamically select the 16-byte aligned int from the array | ||
11 | for the semaphore. */ | ||
12 | |||
13 | #define __PA_LDCW_ALIGNMENT 16 | ||
14 | #define __ldcw_align(a) ({ \ | ||
15 | unsigned long __ret = (unsigned long) &(a)->lock[0]; \ | ||
16 | __ret = (__ret + __PA_LDCW_ALIGNMENT - 1) \ | ||
17 | & ~(__PA_LDCW_ALIGNMENT - 1); \ | ||
18 | (volatile unsigned int *) __ret; \ | ||
19 | }) | ||
20 | #define __LDCW "ldcw" | ||
21 | |||
22 | #else /*CONFIG_PA20*/ | ||
23 | /* From: "Jim Hull" <jim.hull of hp.com> | ||
24 | I've attached a summary of the change, but basically, for PA 2.0, as | ||
25 | long as the ",CO" (coherent operation) completer is specified, then the | ||
26 | 16-byte alignment requirement for ldcw and ldcd is relaxed, and instead | ||
27 | they only require "natural" alignment (4-byte for ldcw, 8-byte for | ||
28 | ldcd). */ | ||
29 | |||
30 | #define __PA_LDCW_ALIGNMENT 4 | ||
31 | #define __ldcw_align(a) (&(a)->slock) | ||
32 | #define __LDCW "ldcw,co" | ||
33 | |||
34 | #endif /*!CONFIG_PA20*/ | ||
35 | |||
36 | /* LDCW, the only atomic read-write operation PA-RISC has. *sigh*. */ | ||
37 | #define __ldcw(a) ({ \ | ||
38 | unsigned __ret; \ | ||
39 | __asm__ __volatile__(__LDCW " 0(%2),%0" \ | ||
40 | : "=r" (__ret), "+m" (*(a)) : "r" (a)); \ | ||
41 | __ret; \ | ||
42 | }) | ||
43 | |||
44 | #ifdef CONFIG_SMP | ||
45 | # define __lock_aligned __attribute__((__section__(".data..lock_aligned"))) | ||
46 | #endif | ||
47 | |||
48 | #endif /* __PARISC_LDCW_H */ | ||
diff --git a/arch/parisc/include/asm/processor.h b/arch/parisc/include/asm/processor.h index 7213ec9e594c..acdf4cad6125 100644 --- a/arch/parisc/include/asm/processor.h +++ b/arch/parisc/include/asm/processor.h | |||
@@ -16,7 +16,6 @@ | |||
16 | #include <asm/pdc.h> | 16 | #include <asm/pdc.h> |
17 | #include <asm/ptrace.h> | 17 | #include <asm/ptrace.h> |
18 | #include <asm/types.h> | 18 | #include <asm/types.h> |
19 | #include <asm/system.h> | ||
20 | #include <asm/percpu.h> | 19 | #include <asm/percpu.h> |
21 | 20 | ||
22 | #endif /* __ASSEMBLY__ */ | 21 | #endif /* __ASSEMBLY__ */ |
@@ -169,6 +168,7 @@ struct thread_struct { | |||
169 | * Return saved PC of a blocked thread. This is used by ps mostly. | 168 | * Return saved PC of a blocked thread. This is used by ps mostly. |
170 | */ | 169 | */ |
171 | 170 | ||
171 | struct task_struct; | ||
172 | unsigned long thread_saved_pc(struct task_struct *t); | 172 | unsigned long thread_saved_pc(struct task_struct *t); |
173 | void show_trace(struct task_struct *task, unsigned long *stack); | 173 | void show_trace(struct task_struct *task, unsigned long *stack); |
174 | 174 | ||
diff --git a/arch/parisc/include/asm/psw.h b/arch/parisc/include/asm/psw.h index 5a3e23c9ce63..ad69a35e9c0f 100644 --- a/arch/parisc/include/asm/psw.h +++ b/arch/parisc/include/asm/psw.h | |||
@@ -59,4 +59,45 @@ | |||
59 | #define USER_PSW_MASK (WIDE_PSW | PSW_T | PSW_N | PSW_X | PSW_B | PSW_V | PSW_CB) | 59 | #define USER_PSW_MASK (WIDE_PSW | PSW_T | PSW_N | PSW_X | PSW_B | PSW_V | PSW_CB) |
60 | #define USER_PSW (PSW_C | PSW_Q | PSW_P | PSW_D | PSW_I) | 60 | #define USER_PSW (PSW_C | PSW_Q | PSW_P | PSW_D | PSW_I) |
61 | 61 | ||
62 | #ifndef __ASSEMBLY__ | ||
63 | |||
64 | /* The program status word as bitfields. */ | ||
65 | struct pa_psw { | ||
66 | unsigned int y:1; | ||
67 | unsigned int z:1; | ||
68 | unsigned int rv:2; | ||
69 | unsigned int w:1; | ||
70 | unsigned int e:1; | ||
71 | unsigned int s:1; | ||
72 | unsigned int t:1; | ||
73 | |||
74 | unsigned int h:1; | ||
75 | unsigned int l:1; | ||
76 | unsigned int n:1; | ||
77 | unsigned int x:1; | ||
78 | unsigned int b:1; | ||
79 | unsigned int c:1; | ||
80 | unsigned int v:1; | ||
81 | unsigned int m:1; | ||
82 | |||
83 | unsigned int cb:8; | ||
84 | |||
85 | unsigned int o:1; | ||
86 | unsigned int g:1; | ||
87 | unsigned int f:1; | ||
88 | unsigned int r:1; | ||
89 | unsigned int q:1; | ||
90 | unsigned int p:1; | ||
91 | unsigned int d:1; | ||
92 | unsigned int i:1; | ||
93 | }; | ||
94 | |||
95 | #ifdef CONFIG_64BIT | ||
96 | #define pa_psw(task) ((struct pa_psw *) ((char *) (task) + TASK_PT_PSW + 4)) | ||
97 | #else | ||
98 | #define pa_psw(task) ((struct pa_psw *) ((char *) (task) + TASK_PT_PSW)) | ||
99 | #endif | ||
100 | |||
101 | #endif /* !__ASSEMBLY__ */ | ||
102 | |||
62 | #endif | 103 | #endif |
diff --git a/arch/parisc/include/asm/special_insns.h b/arch/parisc/include/asm/special_insns.h new file mode 100644 index 000000000000..d306b75bc77f --- /dev/null +++ b/arch/parisc/include/asm/special_insns.h | |||
@@ -0,0 +1,40 @@ | |||
1 | #ifndef __PARISC_SPECIAL_INSNS_H | ||
2 | #define __PARISC_SPECIAL_INSNS_H | ||
3 | |||
4 | #define mfctl(reg) ({ \ | ||
5 | unsigned long cr; \ | ||
6 | __asm__ __volatile__( \ | ||
7 | "mfctl " #reg ",%0" : \ | ||
8 | "=r" (cr) \ | ||
9 | ); \ | ||
10 | cr; \ | ||
11 | }) | ||
12 | |||
13 | #define mtctl(gr, cr) \ | ||
14 | __asm__ __volatile__("mtctl %0,%1" \ | ||
15 | : /* no outputs */ \ | ||
16 | : "r" (gr), "i" (cr) : "memory") | ||
17 | |||
18 | /* these are here to de-mystefy the calling code, and to provide hooks */ | ||
19 | /* which I needed for debugging EIEM problems -PB */ | ||
20 | #define get_eiem() mfctl(15) | ||
21 | static inline void set_eiem(unsigned long val) | ||
22 | { | ||
23 | mtctl(val, 15); | ||
24 | } | ||
25 | |||
26 | #define mfsp(reg) ({ \ | ||
27 | unsigned long cr; \ | ||
28 | __asm__ __volatile__( \ | ||
29 | "mfsp " #reg ",%0" : \ | ||
30 | "=r" (cr) \ | ||
31 | ); \ | ||
32 | cr; \ | ||
33 | }) | ||
34 | |||
35 | #define mtsp(gr, cr) \ | ||
36 | __asm__ __volatile__("mtsp %0,%1" \ | ||
37 | : /* no outputs */ \ | ||
38 | : "r" (gr), "i" (cr) : "memory") | ||
39 | |||
40 | #endif /* __PARISC_SPECIAL_INSNS_H */ | ||
diff --git a/arch/parisc/include/asm/spinlock.h b/arch/parisc/include/asm/spinlock.h index 74036f436a3b..804aa28ab1d6 100644 --- a/arch/parisc/include/asm/spinlock.h +++ b/arch/parisc/include/asm/spinlock.h | |||
@@ -1,7 +1,6 @@ | |||
1 | #ifndef __ASM_SPINLOCK_H | 1 | #ifndef __ASM_SPINLOCK_H |
2 | #define __ASM_SPINLOCK_H | 2 | #define __ASM_SPINLOCK_H |
3 | 3 | ||
4 | #include <asm/system.h> | ||
5 | #include <asm/processor.h> | 4 | #include <asm/processor.h> |
6 | #include <asm/spinlock_types.h> | 5 | #include <asm/spinlock_types.h> |
7 | 6 | ||
diff --git a/arch/parisc/include/asm/switch_to.h b/arch/parisc/include/asm/switch_to.h new file mode 100644 index 000000000000..8ed8fea1e784 --- /dev/null +++ b/arch/parisc/include/asm/switch_to.h | |||
@@ -0,0 +1,12 @@ | |||
1 | #ifndef __PARISC_SWITCH_TO_H | ||
2 | #define __PARISC_SWITCH_TO_H | ||
3 | |||
4 | struct task_struct; | ||
5 | |||
6 | extern struct task_struct *_switch_to(struct task_struct *, struct task_struct *); | ||
7 | |||
8 | #define switch_to(prev, next, last) do { \ | ||
9 | (last) = _switch_to(prev, next); \ | ||
10 | } while(0) | ||
11 | |||
12 | #endif /* __PARISC_SWITCH_TO_H */ | ||
diff --git a/arch/parisc/include/asm/system.h b/arch/parisc/include/asm/system.h deleted file mode 100644 index b19e63a8e848..000000000000 --- a/arch/parisc/include/asm/system.h +++ /dev/null | |||
@@ -1,165 +0,0 @@ | |||
1 | #ifndef __PARISC_SYSTEM_H | ||
2 | #define __PARISC_SYSTEM_H | ||
3 | |||
4 | #include <linux/irqflags.h> | ||
5 | |||
6 | /* The program status word as bitfields. */ | ||
7 | struct pa_psw { | ||
8 | unsigned int y:1; | ||
9 | unsigned int z:1; | ||
10 | unsigned int rv:2; | ||
11 | unsigned int w:1; | ||
12 | unsigned int e:1; | ||
13 | unsigned int s:1; | ||
14 | unsigned int t:1; | ||
15 | |||
16 | unsigned int h:1; | ||
17 | unsigned int l:1; | ||
18 | unsigned int n:1; | ||
19 | unsigned int x:1; | ||
20 | unsigned int b:1; | ||
21 | unsigned int c:1; | ||
22 | unsigned int v:1; | ||
23 | unsigned int m:1; | ||
24 | |||
25 | unsigned int cb:8; | ||
26 | |||
27 | unsigned int o:1; | ||
28 | unsigned int g:1; | ||
29 | unsigned int f:1; | ||
30 | unsigned int r:1; | ||
31 | unsigned int q:1; | ||
32 | unsigned int p:1; | ||
33 | unsigned int d:1; | ||
34 | unsigned int i:1; | ||
35 | }; | ||
36 | |||
37 | #ifdef CONFIG_64BIT | ||
38 | #define pa_psw(task) ((struct pa_psw *) ((char *) (task) + TASK_PT_PSW + 4)) | ||
39 | #else | ||
40 | #define pa_psw(task) ((struct pa_psw *) ((char *) (task) + TASK_PT_PSW)) | ||
41 | #endif | ||
42 | |||
43 | struct task_struct; | ||
44 | |||
45 | extern struct task_struct *_switch_to(struct task_struct *, struct task_struct *); | ||
46 | |||
47 | #define switch_to(prev, next, last) do { \ | ||
48 | (last) = _switch_to(prev, next); \ | ||
49 | } while(0) | ||
50 | |||
51 | #define mfctl(reg) ({ \ | ||
52 | unsigned long cr; \ | ||
53 | __asm__ __volatile__( \ | ||
54 | "mfctl " #reg ",%0" : \ | ||
55 | "=r" (cr) \ | ||
56 | ); \ | ||
57 | cr; \ | ||
58 | }) | ||
59 | |||
60 | #define mtctl(gr, cr) \ | ||
61 | __asm__ __volatile__("mtctl %0,%1" \ | ||
62 | : /* no outputs */ \ | ||
63 | : "r" (gr), "i" (cr) : "memory") | ||
64 | |||
65 | /* these are here to de-mystefy the calling code, and to provide hooks */ | ||
66 | /* which I needed for debugging EIEM problems -PB */ | ||
67 | #define get_eiem() mfctl(15) | ||
68 | static inline void set_eiem(unsigned long val) | ||
69 | { | ||
70 | mtctl(val, 15); | ||
71 | } | ||
72 | |||
73 | #define mfsp(reg) ({ \ | ||
74 | unsigned long cr; \ | ||
75 | __asm__ __volatile__( \ | ||
76 | "mfsp " #reg ",%0" : \ | ||
77 | "=r" (cr) \ | ||
78 | ); \ | ||
79 | cr; \ | ||
80 | }) | ||
81 | |||
82 | #define mtsp(gr, cr) \ | ||
83 | __asm__ __volatile__("mtsp %0,%1" \ | ||
84 | : /* no outputs */ \ | ||
85 | : "r" (gr), "i" (cr) : "memory") | ||
86 | |||
87 | |||
88 | /* | ||
89 | ** This is simply the barrier() macro from linux/kernel.h but when serial.c | ||
90 | ** uses tqueue.h uses smp_mb() defined using barrier(), linux/kernel.h | ||
91 | ** hasn't yet been included yet so it fails, thus repeating the macro here. | ||
92 | ** | ||
93 | ** PA-RISC architecture allows for weakly ordered memory accesses although | ||
94 | ** none of the processors use it. There is a strong ordered bit that is | ||
95 | ** set in the O-bit of the page directory entry. Operating systems that | ||
96 | ** can not tolerate out of order accesses should set this bit when mapping | ||
97 | ** pages. The O-bit of the PSW should also be set to 1 (I don't believe any | ||
98 | ** of the processor implemented the PSW O-bit). The PCX-W ERS states that | ||
99 | ** the TLB O-bit is not implemented so the page directory does not need to | ||
100 | ** have the O-bit set when mapping pages (section 3.1). This section also | ||
101 | ** states that the PSW Y, Z, G, and O bits are not implemented. | ||
102 | ** So it looks like nothing needs to be done for parisc-linux (yet). | ||
103 | ** (thanks to chada for the above comment -ggg) | ||
104 | ** | ||
105 | ** The __asm__ op below simple prevents gcc/ld from reordering | ||
106 | ** instructions across the mb() "call". | ||
107 | */ | ||
108 | #define mb() __asm__ __volatile__("":::"memory") /* barrier() */ | ||
109 | #define rmb() mb() | ||
110 | #define wmb() mb() | ||
111 | #define smp_mb() mb() | ||
112 | #define smp_rmb() mb() | ||
113 | #define smp_wmb() mb() | ||
114 | #define smp_read_barrier_depends() do { } while(0) | ||
115 | #define read_barrier_depends() do { } while(0) | ||
116 | |||
117 | #define set_mb(var, value) do { var = value; mb(); } while (0) | ||
118 | |||
119 | #ifndef CONFIG_PA20 | ||
120 | /* Because kmalloc only guarantees 8-byte alignment for kmalloc'd data, | ||
121 | and GCC only guarantees 8-byte alignment for stack locals, we can't | ||
122 | be assured of 16-byte alignment for atomic lock data even if we | ||
123 | specify "__attribute ((aligned(16)))" in the type declaration. So, | ||
124 | we use a struct containing an array of four ints for the atomic lock | ||
125 | type and dynamically select the 16-byte aligned int from the array | ||
126 | for the semaphore. */ | ||
127 | |||
128 | #define __PA_LDCW_ALIGNMENT 16 | ||
129 | #define __ldcw_align(a) ({ \ | ||
130 | unsigned long __ret = (unsigned long) &(a)->lock[0]; \ | ||
131 | __ret = (__ret + __PA_LDCW_ALIGNMENT - 1) \ | ||
132 | & ~(__PA_LDCW_ALIGNMENT - 1); \ | ||
133 | (volatile unsigned int *) __ret; \ | ||
134 | }) | ||
135 | #define __LDCW "ldcw" | ||
136 | |||
137 | #else /*CONFIG_PA20*/ | ||
138 | /* From: "Jim Hull" <jim.hull of hp.com> | ||
139 | I've attached a summary of the change, but basically, for PA 2.0, as | ||
140 | long as the ",CO" (coherent operation) completer is specified, then the | ||
141 | 16-byte alignment requirement for ldcw and ldcd is relaxed, and instead | ||
142 | they only require "natural" alignment (4-byte for ldcw, 8-byte for | ||
143 | ldcd). */ | ||
144 | |||
145 | #define __PA_LDCW_ALIGNMENT 4 | ||
146 | #define __ldcw_align(a) (&(a)->slock) | ||
147 | #define __LDCW "ldcw,co" | ||
148 | |||
149 | #endif /*!CONFIG_PA20*/ | ||
150 | |||
151 | /* LDCW, the only atomic read-write operation PA-RISC has. *sigh*. */ | ||
152 | #define __ldcw(a) ({ \ | ||
153 | unsigned __ret; \ | ||
154 | __asm__ __volatile__(__LDCW " 0(%2),%0" \ | ||
155 | : "=r" (__ret), "+m" (*(a)) : "r" (a)); \ | ||
156 | __ret; \ | ||
157 | }) | ||
158 | |||
159 | #ifdef CONFIG_SMP | ||
160 | # define __lock_aligned __attribute__((__section__(".data..lock_aligned"))) | ||
161 | #endif | ||
162 | |||
163 | #define arch_align_stack(x) (x) | ||
164 | |||
165 | #endif | ||
diff --git a/arch/parisc/include/asm/thread_info.h b/arch/parisc/include/asm/thread_info.h index 6d9c7c7973d0..83ae7dd4d99e 100644 --- a/arch/parisc/include/asm/thread_info.h +++ b/arch/parisc/include/asm/thread_info.h | |||
@@ -5,6 +5,7 @@ | |||
5 | 5 | ||
6 | #ifndef __ASSEMBLY__ | 6 | #ifndef __ASSEMBLY__ |
7 | #include <asm/processor.h> | 7 | #include <asm/processor.h> |
8 | #include <asm/special_insns.h> | ||
8 | 9 | ||
9 | struct thread_info { | 10 | struct thread_info { |
10 | struct task_struct *task; /* main task structure */ | 11 | struct task_struct *task; /* main task structure */ |
diff --git a/arch/parisc/include/asm/timex.h b/arch/parisc/include/asm/timex.h index 3b68d77273d9..2bd51f6d832b 100644 --- a/arch/parisc/include/asm/timex.h +++ b/arch/parisc/include/asm/timex.h | |||
@@ -6,7 +6,6 @@ | |||
6 | #ifndef _ASMPARISC_TIMEX_H | 6 | #ifndef _ASMPARISC_TIMEX_H |
7 | #define _ASMPARISC_TIMEX_H | 7 | #define _ASMPARISC_TIMEX_H |
8 | 8 | ||
9 | #include <asm/system.h> | ||
10 | 9 | ||
11 | #define CLOCK_TICK_RATE 1193180 /* Underlying HZ */ | 10 | #define CLOCK_TICK_RATE 1193180 /* Underlying HZ */ |
12 | 11 | ||
diff --git a/arch/parisc/include/asm/uaccess.h b/arch/parisc/include/asm/uaccess.h index ff4cf9dab8d2..9ac066086f03 100644 --- a/arch/parisc/include/asm/uaccess.h +++ b/arch/parisc/include/asm/uaccess.h | |||
@@ -5,7 +5,6 @@ | |||
5 | * User space memory access functions | 5 | * User space memory access functions |
6 | */ | 6 | */ |
7 | #include <asm/page.h> | 7 | #include <asm/page.h> |
8 | #include <asm/system.h> | ||
9 | #include <asm/cache.h> | 8 | #include <asm/cache.h> |
10 | #include <asm/errno.h> | 9 | #include <asm/errno.h> |
11 | #include <asm-generic/uaccess-unaligned.h> | 10 | #include <asm-generic/uaccess-unaligned.h> |
diff --git a/arch/parisc/kernel/cache.c b/arch/parisc/kernel/cache.c index 83335f3da5fc..9d181890a7e3 100644 --- a/arch/parisc/kernel/cache.c +++ b/arch/parisc/kernel/cache.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <asm/cache.h> | 22 | #include <asm/cache.h> |
23 | #include <asm/cacheflush.h> | 23 | #include <asm/cacheflush.h> |
24 | #include <asm/tlbflush.h> | 24 | #include <asm/tlbflush.h> |
25 | #include <asm/system.h> | ||
26 | #include <asm/page.h> | 25 | #include <asm/page.h> |
27 | #include <asm/pgalloc.h> | 26 | #include <asm/pgalloc.h> |
28 | #include <asm/processor.h> | 27 | #include <asm/processor.h> |
diff --git a/arch/parisc/kernel/firmware.c b/arch/parisc/kernel/firmware.c index 4896ed090585..f65fa480c905 100644 --- a/arch/parisc/kernel/firmware.c +++ b/arch/parisc/kernel/firmware.c | |||
@@ -67,7 +67,6 @@ | |||
67 | #include <asm/page.h> | 67 | #include <asm/page.h> |
68 | #include <asm/pdc.h> | 68 | #include <asm/pdc.h> |
69 | #include <asm/pdcpat.h> | 69 | #include <asm/pdcpat.h> |
70 | #include <asm/system.h> | ||
71 | #include <asm/processor.h> /* for boot_cpu_data */ | 70 | #include <asm/processor.h> /* for boot_cpu_data */ |
72 | 71 | ||
73 | static DEFINE_SPINLOCK(pdc_lock); | 72 | static DEFINE_SPINLOCK(pdc_lock); |
diff --git a/arch/parisc/kernel/pci.c b/arch/parisc/kernel/pci.c index 74d544b1cd22..24644aca10cb 100644 --- a/arch/parisc/kernel/pci.c +++ b/arch/parisc/kernel/pci.c | |||
@@ -16,7 +16,6 @@ | |||
16 | #include <linux/types.h> | 16 | #include <linux/types.h> |
17 | 17 | ||
18 | #include <asm/io.h> | 18 | #include <asm/io.h> |
19 | #include <asm/system.h> | ||
20 | #include <asm/superio.h> | 19 | #include <asm/superio.h> |
21 | 20 | ||
22 | #define DEBUG_RESOURCES 0 | 21 | #define DEBUG_RESOURCES 0 |
diff --git a/arch/parisc/kernel/ptrace.c b/arch/parisc/kernel/ptrace.c index 2905b1f52d30..857c2f545470 100644 --- a/arch/parisc/kernel/ptrace.c +++ b/arch/parisc/kernel/ptrace.c | |||
@@ -22,7 +22,6 @@ | |||
22 | 22 | ||
23 | #include <asm/uaccess.h> | 23 | #include <asm/uaccess.h> |
24 | #include <asm/pgtable.h> | 24 | #include <asm/pgtable.h> |
25 | #include <asm/system.h> | ||
26 | #include <asm/processor.h> | 25 | #include <asm/processor.h> |
27 | #include <asm/asm-offsets.h> | 26 | #include <asm/asm-offsets.h> |
28 | 27 | ||
diff --git a/arch/parisc/kernel/smp.c b/arch/parisc/kernel/smp.c index 32d588488f04..5006e8ea3051 100644 --- a/arch/parisc/kernel/smp.c +++ b/arch/parisc/kernel/smp.c | |||
@@ -32,7 +32,6 @@ | |||
32 | #include <linux/bitops.h> | 32 | #include <linux/bitops.h> |
33 | #include <linux/ftrace.h> | 33 | #include <linux/ftrace.h> |
34 | 34 | ||
35 | #include <asm/system.h> | ||
36 | #include <linux/atomic.h> | 35 | #include <linux/atomic.h> |
37 | #include <asm/current.h> | 36 | #include <asm/current.h> |
38 | #include <asm/delay.h> | 37 | #include <asm/delay.h> |
diff --git a/arch/parisc/kernel/traps.c b/arch/parisc/kernel/traps.c index f19e6604026a..45ba99f5080b 100644 --- a/arch/parisc/kernel/traps.c +++ b/arch/parisc/kernel/traps.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <linux/bug.h> | 27 | #include <linux/bug.h> |
28 | 28 | ||
29 | #include <asm/assembly.h> | 29 | #include <asm/assembly.h> |
30 | #include <asm/system.h> | ||
31 | #include <asm/uaccess.h> | 30 | #include <asm/uaccess.h> |
32 | #include <asm/io.h> | 31 | #include <asm/io.h> |
33 | #include <asm/irq.h> | 32 | #include <asm/irq.h> |
diff --git a/arch/parisc/lib/bitops.c b/arch/parisc/lib/bitops.c index a8bffd8af77d..187118841af1 100644 --- a/arch/parisc/lib/bitops.c +++ b/arch/parisc/lib/bitops.c | |||
@@ -8,7 +8,6 @@ | |||
8 | 8 | ||
9 | #include <linux/kernel.h> | 9 | #include <linux/kernel.h> |
10 | #include <linux/spinlock.h> | 10 | #include <linux/spinlock.h> |
11 | #include <asm/system.h> | ||
12 | #include <linux/atomic.h> | 11 | #include <linux/atomic.h> |
13 | 12 | ||
14 | #ifdef CONFIG_SMP | 13 | #ifdef CONFIG_SMP |
diff --git a/arch/powerpc/include/asm/atomic.h b/arch/powerpc/include/asm/atomic.h index 14174e838ad9..da29032ae38f 100644 --- a/arch/powerpc/include/asm/atomic.h +++ b/arch/powerpc/include/asm/atomic.h | |||
@@ -5,13 +5,9 @@ | |||
5 | * PowerPC atomic operations | 5 | * PowerPC atomic operations |
6 | */ | 6 | */ |
7 | 7 | ||
8 | #include <linux/types.h> | ||
9 | |||
10 | #ifdef __KERNEL__ | 8 | #ifdef __KERNEL__ |
11 | #include <linux/compiler.h> | 9 | #include <linux/types.h> |
12 | #include <asm/synch.h> | 10 | #include <asm/cmpxchg.h> |
13 | #include <asm/asm-compat.h> | ||
14 | #include <asm/system.h> | ||
15 | 11 | ||
16 | #define ATOMIC_INIT(i) { (i) } | 12 | #define ATOMIC_INIT(i) { (i) } |
17 | 13 | ||
diff --git a/arch/powerpc/include/asm/auxvec.h b/arch/powerpc/include/asm/auxvec.h index 19a099b62cd6..ce17d2c9eb4e 100644 --- a/arch/powerpc/include/asm/auxvec.h +++ b/arch/powerpc/include/asm/auxvec.h | |||
@@ -16,4 +16,6 @@ | |||
16 | */ | 16 | */ |
17 | #define AT_SYSINFO_EHDR 33 | 17 | #define AT_SYSINFO_EHDR 33 |
18 | 18 | ||
19 | #define AT_VECTOR_SIZE_ARCH 6 /* entries in ARCH_DLINFO */ | ||
20 | |||
19 | #endif | 21 | #endif |
diff --git a/arch/powerpc/include/asm/barrier.h b/arch/powerpc/include/asm/barrier.h new file mode 100644 index 000000000000..ae782254e731 --- /dev/null +++ b/arch/powerpc/include/asm/barrier.h | |||
@@ -0,0 +1,68 @@ | |||
1 | /* | ||
2 | * Copyright (C) 1999 Cort Dougan <cort@cs.nmt.edu> | ||
3 | */ | ||
4 | #ifndef _ASM_POWERPC_BARRIER_H | ||
5 | #define _ASM_POWERPC_BARRIER_H | ||
6 | |||
7 | /* | ||
8 | * Memory barrier. | ||
9 | * The sync instruction guarantees that all memory accesses initiated | ||
10 | * by this processor have been performed (with respect to all other | ||
11 | * mechanisms that access memory). The eieio instruction is a barrier | ||
12 | * providing an ordering (separately) for (a) cacheable stores and (b) | ||
13 | * loads and stores to non-cacheable memory (e.g. I/O devices). | ||
14 | * | ||
15 | * mb() prevents loads and stores being reordered across this point. | ||
16 | * rmb() prevents loads being reordered across this point. | ||
17 | * wmb() prevents stores being reordered across this point. | ||
18 | * read_barrier_depends() prevents data-dependent loads being reordered | ||
19 | * across this point (nop on PPC). | ||
20 | * | ||
21 | * *mb() variants without smp_ prefix must order all types of memory | ||
22 | * operations with one another. sync is the only instruction sufficient | ||
23 | * to do this. | ||
24 | * | ||
25 | * For the smp_ barriers, ordering is for cacheable memory operations | ||
26 | * only. We have to use the sync instruction for smp_mb(), since lwsync | ||
27 | * doesn't order loads with respect to previous stores. Lwsync can be | ||
28 | * used for smp_rmb() and smp_wmb(). | ||
29 | * | ||
30 | * However, on CPUs that don't support lwsync, lwsync actually maps to a | ||
31 | * heavy-weight sync, so smp_wmb() can be a lighter-weight eieio. | ||
32 | */ | ||
33 | #define mb() __asm__ __volatile__ ("sync" : : : "memory") | ||
34 | #define rmb() __asm__ __volatile__ ("sync" : : : "memory") | ||
35 | #define wmb() __asm__ __volatile__ ("sync" : : : "memory") | ||
36 | #define read_barrier_depends() do { } while(0) | ||
37 | |||
38 | #define set_mb(var, value) do { var = value; mb(); } while (0) | ||
39 | |||
40 | #ifdef CONFIG_SMP | ||
41 | |||
42 | #ifdef __SUBARCH_HAS_LWSYNC | ||
43 | # define SMPWMB LWSYNC | ||
44 | #else | ||
45 | # define SMPWMB eieio | ||
46 | #endif | ||
47 | |||
48 | #define smp_mb() mb() | ||
49 | #define smp_rmb() __asm__ __volatile__ (stringify_in_c(LWSYNC) : : :"memory") | ||
50 | #define smp_wmb() __asm__ __volatile__ (stringify_in_c(SMPWMB) : : :"memory") | ||
51 | #define smp_read_barrier_depends() read_barrier_depends() | ||
52 | #else | ||
53 | #define smp_mb() barrier() | ||
54 | #define smp_rmb() barrier() | ||
55 | #define smp_wmb() barrier() | ||
56 | #define smp_read_barrier_depends() do { } while(0) | ||
57 | #endif /* CONFIG_SMP */ | ||
58 | |||
59 | /* | ||
60 | * This is a barrier which prevents following instructions from being | ||
61 | * started until the value of the argument x is known. For example, if | ||
62 | * x is a variable loaded from memory, this prevents following | ||
63 | * instructions from being executed until the load has been performed. | ||
64 | */ | ||
65 | #define data_barrier(x) \ | ||
66 | asm volatile("twi 0,%0,0; isync" : : "r" (x) : "memory"); | ||
67 | |||
68 | #endif /* _ASM_POWERPC_BARRIER_H */ | ||
diff --git a/arch/powerpc/include/asm/bug.h b/arch/powerpc/include/asm/bug.h index 065c590c991d..3eb53d741070 100644 --- a/arch/powerpc/include/asm/bug.h +++ b/arch/powerpc/include/asm/bug.h | |||
@@ -126,5 +126,16 @@ | |||
126 | 126 | ||
127 | #include <asm-generic/bug.h> | 127 | #include <asm-generic/bug.h> |
128 | 128 | ||
129 | #ifndef __ASSEMBLY__ | ||
130 | |||
131 | struct pt_regs; | ||
132 | extern int do_page_fault(struct pt_regs *, unsigned long, unsigned long); | ||
133 | extern void bad_page_fault(struct pt_regs *, unsigned long, int); | ||
134 | extern void _exception(int, struct pt_regs *, int, unsigned long); | ||
135 | extern void die(const char *, struct pt_regs *, long); | ||
136 | extern void print_backtrace(unsigned long *); | ||
137 | |||
138 | #endif /* !__ASSEMBLY__ */ | ||
139 | |||
129 | #endif /* __KERNEL__ */ | 140 | #endif /* __KERNEL__ */ |
130 | #endif /* _ASM_POWERPC_BUG_H */ | 141 | #endif /* _ASM_POWERPC_BUG_H */ |
diff --git a/arch/powerpc/include/asm/cache.h b/arch/powerpc/include/asm/cache.h index 4b509411ad8a..9e495c9a6a88 100644 --- a/arch/powerpc/include/asm/cache.h +++ b/arch/powerpc/include/asm/cache.h | |||
@@ -42,8 +42,24 @@ extern struct ppc64_caches ppc64_caches; | |||
42 | #endif /* __powerpc64__ && ! __ASSEMBLY__ */ | 42 | #endif /* __powerpc64__ && ! __ASSEMBLY__ */ |
43 | 43 | ||
44 | #if !defined(__ASSEMBLY__) | 44 | #if !defined(__ASSEMBLY__) |
45 | |||
45 | #define __read_mostly __attribute__((__section__(".data..read_mostly"))) | 46 | #define __read_mostly __attribute__((__section__(".data..read_mostly"))) |
47 | |||
48 | #ifdef CONFIG_6xx | ||
49 | extern long _get_L2CR(void); | ||
50 | extern long _get_L3CR(void); | ||
51 | extern void _set_L2CR(unsigned long); | ||
52 | extern void _set_L3CR(unsigned long); | ||
53 | #else | ||
54 | #define _get_L2CR() 0L | ||
55 | #define _get_L3CR() 0L | ||
56 | #define _set_L2CR(val) do { } while(0) | ||
57 | #define _set_L3CR(val) do { } while(0) | ||
46 | #endif | 58 | #endif |
47 | 59 | ||
60 | extern void cacheable_memzero(void *p, unsigned int nb); | ||
61 | extern void *cacheable_memcpy(void *, const void *, unsigned int); | ||
62 | |||
63 | #endif /* !__ASSEMBLY__ */ | ||
48 | #endif /* __KERNEL__ */ | 64 | #endif /* __KERNEL__ */ |
49 | #endif /* _ASM_POWERPC_CACHE_H */ | 65 | #endif /* _ASM_POWERPC_CACHE_H */ |
diff --git a/arch/powerpc/include/asm/cmpxchg.h b/arch/powerpc/include/asm/cmpxchg.h new file mode 100644 index 000000000000..e245aab7f191 --- /dev/null +++ b/arch/powerpc/include/asm/cmpxchg.h | |||
@@ -0,0 +1,309 @@ | |||
1 | #ifndef _ASM_POWERPC_CMPXCHG_H_ | ||
2 | #define _ASM_POWERPC_CMPXCHG_H_ | ||
3 | |||
4 | #ifdef __KERNEL__ | ||
5 | #include <linux/compiler.h> | ||
6 | #include <asm/synch.h> | ||
7 | #include <asm/asm-compat.h> | ||
8 | |||
9 | /* | ||
10 | * Atomic exchange | ||
11 | * | ||
12 | * Changes the memory location '*ptr' to be val and returns | ||
13 | * the previous value stored there. | ||
14 | */ | ||
15 | static __always_inline unsigned long | ||
16 | __xchg_u32(volatile void *p, unsigned long val) | ||
17 | { | ||
18 | unsigned long prev; | ||
19 | |||
20 | __asm__ __volatile__( | ||
21 | PPC_RELEASE_BARRIER | ||
22 | "1: lwarx %0,0,%2 \n" | ||
23 | PPC405_ERR77(0,%2) | ||
24 | " stwcx. %3,0,%2 \n\ | ||
25 | bne- 1b" | ||
26 | PPC_ACQUIRE_BARRIER | ||
27 | : "=&r" (prev), "+m" (*(volatile unsigned int *)p) | ||
28 | : "r" (p), "r" (val) | ||
29 | : "cc", "memory"); | ||
30 | |||
31 | return prev; | ||
32 | } | ||
33 | |||
34 | /* | ||
35 | * Atomic exchange | ||
36 | * | ||
37 | * Changes the memory location '*ptr' to be val and returns | ||
38 | * the previous value stored there. | ||
39 | */ | ||
40 | static __always_inline unsigned long | ||
41 | __xchg_u32_local(volatile void *p, unsigned long val) | ||
42 | { | ||
43 | unsigned long prev; | ||
44 | |||
45 | __asm__ __volatile__( | ||
46 | "1: lwarx %0,0,%2 \n" | ||
47 | PPC405_ERR77(0,%2) | ||
48 | " stwcx. %3,0,%2 \n\ | ||
49 | bne- 1b" | ||
50 | : "=&r" (prev), "+m" (*(volatile unsigned int *)p) | ||
51 | : "r" (p), "r" (val) | ||
52 | : "cc", "memory"); | ||
53 | |||
54 | return prev; | ||
55 | } | ||
56 | |||
57 | #ifdef CONFIG_PPC64 | ||
58 | static __always_inline unsigned long | ||
59 | __xchg_u64(volatile void *p, unsigned long val) | ||
60 | { | ||
61 | unsigned long prev; | ||
62 | |||
63 | __asm__ __volatile__( | ||
64 | PPC_RELEASE_BARRIER | ||
65 | "1: ldarx %0,0,%2 \n" | ||
66 | PPC405_ERR77(0,%2) | ||
67 | " stdcx. %3,0,%2 \n\ | ||
68 | bne- 1b" | ||
69 | PPC_ACQUIRE_BARRIER | ||
70 | : "=&r" (prev), "+m" (*(volatile unsigned long *)p) | ||
71 | : "r" (p), "r" (val) | ||
72 | : "cc", "memory"); | ||
73 | |||
74 | return prev; | ||
75 | } | ||
76 | |||
77 | static __always_inline unsigned long | ||
78 | __xchg_u64_local(volatile void *p, unsigned long val) | ||
79 | { | ||
80 | unsigned long prev; | ||
81 | |||
82 | __asm__ __volatile__( | ||
83 | "1: ldarx %0,0,%2 \n" | ||
84 | PPC405_ERR77(0,%2) | ||
85 | " stdcx. %3,0,%2 \n\ | ||
86 | bne- 1b" | ||
87 | : "=&r" (prev), "+m" (*(volatile unsigned long *)p) | ||
88 | : "r" (p), "r" (val) | ||
89 | : "cc", "memory"); | ||
90 | |||
91 | return prev; | ||
92 | } | ||
93 | #endif | ||
94 | |||
95 | /* | ||
96 | * This function doesn't exist, so you'll get a linker error | ||
97 | * if something tries to do an invalid xchg(). | ||
98 | */ | ||
99 | extern void __xchg_called_with_bad_pointer(void); | ||
100 | |||
101 | static __always_inline unsigned long | ||
102 | __xchg(volatile void *ptr, unsigned long x, unsigned int size) | ||
103 | { | ||
104 | switch (size) { | ||
105 | case 4: | ||
106 | return __xchg_u32(ptr, x); | ||
107 | #ifdef CONFIG_PPC64 | ||
108 | case 8: | ||
109 | return __xchg_u64(ptr, x); | ||
110 | #endif | ||
111 | } | ||
112 | __xchg_called_with_bad_pointer(); | ||
113 | return x; | ||
114 | } | ||
115 | |||
116 | static __always_inline unsigned long | ||
117 | __xchg_local(volatile void *ptr, unsigned long x, unsigned int size) | ||
118 | { | ||
119 | switch (size) { | ||
120 | case 4: | ||
121 | return __xchg_u32_local(ptr, x); | ||
122 | #ifdef CONFIG_PPC64 | ||
123 | case 8: | ||
124 | return __xchg_u64_local(ptr, x); | ||
125 | #endif | ||
126 | } | ||
127 | __xchg_called_with_bad_pointer(); | ||
128 | return x; | ||
129 | } | ||
130 | #define xchg(ptr,x) \ | ||
131 | ({ \ | ||
132 | __typeof__(*(ptr)) _x_ = (x); \ | ||
133 | (__typeof__(*(ptr))) __xchg((ptr), (unsigned long)_x_, sizeof(*(ptr))); \ | ||
134 | }) | ||
135 | |||
136 | #define xchg_local(ptr,x) \ | ||
137 | ({ \ | ||
138 | __typeof__(*(ptr)) _x_ = (x); \ | ||
139 | (__typeof__(*(ptr))) __xchg_local((ptr), \ | ||
140 | (unsigned long)_x_, sizeof(*(ptr))); \ | ||
141 | }) | ||
142 | |||
143 | /* | ||
144 | * Compare and exchange - if *p == old, set it to new, | ||
145 | * and return the old value of *p. | ||
146 | */ | ||
147 | #define __HAVE_ARCH_CMPXCHG 1 | ||
148 | |||
149 | static __always_inline unsigned long | ||
150 | __cmpxchg_u32(volatile unsigned int *p, unsigned long old, unsigned long new) | ||
151 | { | ||
152 | unsigned int prev; | ||
153 | |||
154 | __asm__ __volatile__ ( | ||
155 | PPC_RELEASE_BARRIER | ||
156 | "1: lwarx %0,0,%2 # __cmpxchg_u32\n\ | ||
157 | cmpw 0,%0,%3\n\ | ||
158 | bne- 2f\n" | ||
159 | PPC405_ERR77(0,%2) | ||
160 | " stwcx. %4,0,%2\n\ | ||
161 | bne- 1b" | ||
162 | PPC_ACQUIRE_BARRIER | ||
163 | "\n\ | ||
164 | 2:" | ||
165 | : "=&r" (prev), "+m" (*p) | ||
166 | : "r" (p), "r" (old), "r" (new) | ||
167 | : "cc", "memory"); | ||
168 | |||
169 | return prev; | ||
170 | } | ||
171 | |||
172 | static __always_inline unsigned long | ||
173 | __cmpxchg_u32_local(volatile unsigned int *p, unsigned long old, | ||
174 | unsigned long new) | ||
175 | { | ||
176 | unsigned int prev; | ||
177 | |||
178 | __asm__ __volatile__ ( | ||
179 | "1: lwarx %0,0,%2 # __cmpxchg_u32\n\ | ||
180 | cmpw 0,%0,%3\n\ | ||
181 | bne- 2f\n" | ||
182 | PPC405_ERR77(0,%2) | ||
183 | " stwcx. %4,0,%2\n\ | ||
184 | bne- 1b" | ||
185 | "\n\ | ||
186 | 2:" | ||
187 | : "=&r" (prev), "+m" (*p) | ||
188 | : "r" (p), "r" (old), "r" (new) | ||
189 | : "cc", "memory"); | ||
190 | |||
191 | return prev; | ||
192 | } | ||
193 | |||
194 | #ifdef CONFIG_PPC64 | ||
195 | static __always_inline unsigned long | ||
196 | __cmpxchg_u64(volatile unsigned long *p, unsigned long old, unsigned long new) | ||
197 | { | ||
198 | unsigned long prev; | ||
199 | |||
200 | __asm__ __volatile__ ( | ||
201 | PPC_RELEASE_BARRIER | ||
202 | "1: ldarx %0,0,%2 # __cmpxchg_u64\n\ | ||
203 | cmpd 0,%0,%3\n\ | ||
204 | bne- 2f\n\ | ||
205 | stdcx. %4,0,%2\n\ | ||
206 | bne- 1b" | ||
207 | PPC_ACQUIRE_BARRIER | ||
208 | "\n\ | ||
209 | 2:" | ||
210 | : "=&r" (prev), "+m" (*p) | ||
211 | : "r" (p), "r" (old), "r" (new) | ||
212 | : "cc", "memory"); | ||
213 | |||
214 | return prev; | ||
215 | } | ||
216 | |||
217 | static __always_inline unsigned long | ||
218 | __cmpxchg_u64_local(volatile unsigned long *p, unsigned long old, | ||
219 | unsigned long new) | ||
220 | { | ||
221 | unsigned long prev; | ||
222 | |||
223 | __asm__ __volatile__ ( | ||
224 | "1: ldarx %0,0,%2 # __cmpxchg_u64\n\ | ||
225 | cmpd 0,%0,%3\n\ | ||
226 | bne- 2f\n\ | ||
227 | stdcx. %4,0,%2\n\ | ||
228 | bne- 1b" | ||
229 | "\n\ | ||
230 | 2:" | ||
231 | : "=&r" (prev), "+m" (*p) | ||
232 | : "r" (p), "r" (old), "r" (new) | ||
233 | : "cc", "memory"); | ||
234 | |||
235 | return prev; | ||
236 | } | ||
237 | #endif | ||
238 | |||
239 | /* This function doesn't exist, so you'll get a linker error | ||
240 | if something tries to do an invalid cmpxchg(). */ | ||
241 | extern void __cmpxchg_called_with_bad_pointer(void); | ||
242 | |||
243 | static __always_inline unsigned long | ||
244 | __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, | ||
245 | unsigned int size) | ||
246 | { | ||
247 | switch (size) { | ||
248 | case 4: | ||
249 | return __cmpxchg_u32(ptr, old, new); | ||
250 | #ifdef CONFIG_PPC64 | ||
251 | case 8: | ||
252 | return __cmpxchg_u64(ptr, old, new); | ||
253 | #endif | ||
254 | } | ||
255 | __cmpxchg_called_with_bad_pointer(); | ||
256 | return old; | ||
257 | } | ||
258 | |||
259 | static __always_inline unsigned long | ||
260 | __cmpxchg_local(volatile void *ptr, unsigned long old, unsigned long new, | ||
261 | unsigned int size) | ||
262 | { | ||
263 | switch (size) { | ||
264 | case 4: | ||
265 | return __cmpxchg_u32_local(ptr, old, new); | ||
266 | #ifdef CONFIG_PPC64 | ||
267 | case 8: | ||
268 | return __cmpxchg_u64_local(ptr, old, new); | ||
269 | #endif | ||
270 | } | ||
271 | __cmpxchg_called_with_bad_pointer(); | ||
272 | return old; | ||
273 | } | ||
274 | |||
275 | #define cmpxchg(ptr, o, n) \ | ||
276 | ({ \ | ||
277 | __typeof__(*(ptr)) _o_ = (o); \ | ||
278 | __typeof__(*(ptr)) _n_ = (n); \ | ||
279 | (__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_, \ | ||
280 | (unsigned long)_n_, sizeof(*(ptr))); \ | ||
281 | }) | ||
282 | |||
283 | |||
284 | #define cmpxchg_local(ptr, o, n) \ | ||
285 | ({ \ | ||
286 | __typeof__(*(ptr)) _o_ = (o); \ | ||
287 | __typeof__(*(ptr)) _n_ = (n); \ | ||
288 | (__typeof__(*(ptr))) __cmpxchg_local((ptr), (unsigned long)_o_, \ | ||
289 | (unsigned long)_n_, sizeof(*(ptr))); \ | ||
290 | }) | ||
291 | |||
292 | #ifdef CONFIG_PPC64 | ||
293 | #define cmpxchg64(ptr, o, n) \ | ||
294 | ({ \ | ||
295 | BUILD_BUG_ON(sizeof(*(ptr)) != 8); \ | ||
296 | cmpxchg((ptr), (o), (n)); \ | ||
297 | }) | ||
298 | #define cmpxchg64_local(ptr, o, n) \ | ||
299 | ({ \ | ||
300 | BUILD_BUG_ON(sizeof(*(ptr)) != 8); \ | ||
301 | cmpxchg_local((ptr), (o), (n)); \ | ||
302 | }) | ||
303 | #else | ||
304 | #include <asm-generic/cmpxchg-local.h> | ||
305 | #define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) | ||
306 | #endif | ||
307 | |||
308 | #endif /* __KERNEL__ */ | ||
309 | #endif /* _ASM_POWERPC_CMPXCHG_H_ */ | ||
diff --git a/arch/powerpc/include/asm/debug.h b/arch/powerpc/include/asm/debug.h new file mode 100644 index 000000000000..716d2f089eb6 --- /dev/null +++ b/arch/powerpc/include/asm/debug.h | |||
@@ -0,0 +1,56 @@ | |||
1 | /* | ||
2 | * Copyright (C) 1999 Cort Dougan <cort@cs.nmt.edu> | ||
3 | */ | ||
4 | #ifndef _ASM_POWERPC_DEBUG_H | ||
5 | #define _ASM_POWERPC_DEBUG_H | ||
6 | |||
7 | struct pt_regs; | ||
8 | |||
9 | extern struct dentry *powerpc_debugfs_root; | ||
10 | |||
11 | #if defined(CONFIG_DEBUGGER) || defined(CONFIG_KEXEC) | ||
12 | |||
13 | extern int (*__debugger)(struct pt_regs *regs); | ||
14 | extern int (*__debugger_ipi)(struct pt_regs *regs); | ||
15 | extern int (*__debugger_bpt)(struct pt_regs *regs); | ||
16 | extern int (*__debugger_sstep)(struct pt_regs *regs); | ||
17 | extern int (*__debugger_iabr_match)(struct pt_regs *regs); | ||
18 | extern int (*__debugger_dabr_match)(struct pt_regs *regs); | ||
19 | extern int (*__debugger_fault_handler)(struct pt_regs *regs); | ||
20 | |||
21 | #define DEBUGGER_BOILERPLATE(__NAME) \ | ||
22 | static inline int __NAME(struct pt_regs *regs) \ | ||
23 | { \ | ||
24 | if (unlikely(__ ## __NAME)) \ | ||
25 | return __ ## __NAME(regs); \ | ||
26 | return 0; \ | ||
27 | } | ||
28 | |||
29 | DEBUGGER_BOILERPLATE(debugger) | ||
30 | DEBUGGER_BOILERPLATE(debugger_ipi) | ||
31 | DEBUGGER_BOILERPLATE(debugger_bpt) | ||
32 | DEBUGGER_BOILERPLATE(debugger_sstep) | ||
33 | DEBUGGER_BOILERPLATE(debugger_iabr_match) | ||
34 | DEBUGGER_BOILERPLATE(debugger_dabr_match) | ||
35 | DEBUGGER_BOILERPLATE(debugger_fault_handler) | ||
36 | |||
37 | #else | ||
38 | static inline int debugger(struct pt_regs *regs) { return 0; } | ||
39 | static inline int debugger_ipi(struct pt_regs *regs) { return 0; } | ||
40 | static inline int debugger_bpt(struct pt_regs *regs) { return 0; } | ||
41 | static inline int debugger_sstep(struct pt_regs *regs) { return 0; } | ||
42 | static inline int debugger_iabr_match(struct pt_regs *regs) { return 0; } | ||
43 | static inline int debugger_dabr_match(struct pt_regs *regs) { return 0; } | ||
44 | static inline int debugger_fault_handler(struct pt_regs *regs) { return 0; } | ||
45 | #endif | ||
46 | |||
47 | extern int set_dabr(unsigned long dabr); | ||
48 | #ifdef CONFIG_PPC_ADV_DEBUG_REGS | ||
49 | extern void do_send_trap(struct pt_regs *regs, unsigned long address, | ||
50 | unsigned long error_code, int signal_code, int brkpt); | ||
51 | #else | ||
52 | extern void do_dabr(struct pt_regs *regs, unsigned long address, | ||
53 | unsigned long error_code); | ||
54 | #endif | ||
55 | |||
56 | #endif /* _ASM_POWERPC_DEBUG_H */ | ||
diff --git a/arch/powerpc/include/asm/dma.h b/arch/powerpc/include/asm/dma.h index adadb9943610..f6813e919bb2 100644 --- a/arch/powerpc/include/asm/dma.h +++ b/arch/powerpc/include/asm/dma.h | |||
@@ -24,7 +24,6 @@ | |||
24 | 24 | ||
25 | #include <asm/io.h> | 25 | #include <asm/io.h> |
26 | #include <linux/spinlock.h> | 26 | #include <linux/spinlock.h> |
27 | #include <asm/system.h> | ||
28 | 27 | ||
29 | #ifndef MAX_DMA_CHANNELS | 28 | #ifndef MAX_DMA_CHANNELS |
30 | #define MAX_DMA_CHANNELS 8 | 29 | #define MAX_DMA_CHANNELS 8 |
diff --git a/arch/powerpc/include/asm/exec.h b/arch/powerpc/include/asm/exec.h new file mode 100644 index 000000000000..8196e9c7d7e8 --- /dev/null +++ b/arch/powerpc/include/asm/exec.h | |||
@@ -0,0 +1,9 @@ | |||
1 | /* | ||
2 | * Copyright (C) 1999 Cort Dougan <cort@cs.nmt.edu> | ||
3 | */ | ||
4 | #ifndef _ASM_POWERPC_EXEC_H | ||
5 | #define _ASM_POWERPC_EXEC_H | ||
6 | |||
7 | extern unsigned long arch_align_stack(unsigned long sp); | ||
8 | |||
9 | #endif /* _ASM_POWERPC_EXEC_H */ | ||
diff --git a/arch/powerpc/include/asm/hw_breakpoint.h b/arch/powerpc/include/asm/hw_breakpoint.h index 80fd4d2b4a62..be04330af751 100644 --- a/arch/powerpc/include/asm/hw_breakpoint.h +++ b/arch/powerpc/include/asm/hw_breakpoint.h | |||
@@ -35,7 +35,7 @@ struct arch_hw_breakpoint { | |||
35 | 35 | ||
36 | #include <linux/kdebug.h> | 36 | #include <linux/kdebug.h> |
37 | #include <asm/reg.h> | 37 | #include <asm/reg.h> |
38 | #include <asm/system.h> | 38 | #include <asm/debug.h> |
39 | 39 | ||
40 | struct perf_event; | 40 | struct perf_event; |
41 | struct pmu; | 41 | struct pmu; |
diff --git a/arch/powerpc/include/asm/processor.h b/arch/powerpc/include/asm/processor.h index b585bff1a022..8e2d0371fe1e 100644 --- a/arch/powerpc/include/asm/processor.h +++ b/arch/powerpc/include/asm/processor.h | |||
@@ -385,6 +385,36 @@ static inline unsigned long get_clean_sp(struct pt_regs *regs, int is_32) | |||
385 | extern unsigned long cpuidle_disable; | 385 | extern unsigned long cpuidle_disable; |
386 | enum idle_boot_override {IDLE_NO_OVERRIDE = 0, IDLE_POWERSAVE_OFF}; | 386 | enum idle_boot_override {IDLE_NO_OVERRIDE = 0, IDLE_POWERSAVE_OFF}; |
387 | 387 | ||
388 | extern int powersave_nap; /* set if nap mode can be used in idle loop */ | ||
389 | void cpu_idle_wait(void); | ||
390 | |||
391 | #ifdef CONFIG_PSERIES_IDLE | ||
392 | extern void update_smt_snooze_delay(int snooze); | ||
393 | extern int pseries_notify_cpuidle_add_cpu(int cpu); | ||
394 | #else | ||
395 | static inline void update_smt_snooze_delay(int snooze) {} | ||
396 | static inline int pseries_notify_cpuidle_add_cpu(int cpu) { return 0; } | ||
397 | #endif | ||
398 | |||
399 | extern void flush_instruction_cache(void); | ||
400 | extern void hard_reset_now(void); | ||
401 | extern void poweroff_now(void); | ||
402 | extern int fix_alignment(struct pt_regs *); | ||
403 | extern void cvt_fd(float *from, double *to); | ||
404 | extern void cvt_df(double *from, float *to); | ||
405 | extern void _nmask_and_or_msr(unsigned long nmask, unsigned long or_val); | ||
406 | |||
407 | #ifdef CONFIG_PPC64 | ||
408 | /* | ||
409 | * We handle most unaligned accesses in hardware. On the other hand | ||
410 | * unaligned DMA can be very expensive on some ppc64 IO chips (it does | ||
411 | * powers of 2 writes until it reaches sufficient alignment). | ||
412 | * | ||
413 | * Based on this we disable the IP header alignment in network drivers. | ||
414 | */ | ||
415 | #define NET_IP_ALIGN 0 | ||
416 | #endif | ||
417 | |||
388 | #endif /* __KERNEL__ */ | 418 | #endif /* __KERNEL__ */ |
389 | #endif /* __ASSEMBLY__ */ | 419 | #endif /* __ASSEMBLY__ */ |
390 | #endif /* _ASM_POWERPC_PROCESSOR_H */ | 420 | #endif /* _ASM_POWERPC_PROCESSOR_H */ |
diff --git a/arch/powerpc/include/asm/reg_booke.h b/arch/powerpc/include/asm/reg_booke.h index 8a97aa7289d3..b86faa9107da 100644 --- a/arch/powerpc/include/asm/reg_booke.h +++ b/arch/powerpc/include/asm/reg_booke.h | |||
@@ -15,6 +15,11 @@ | |||
15 | #ifndef __ASM_POWERPC_REG_BOOKE_H__ | 15 | #ifndef __ASM_POWERPC_REG_BOOKE_H__ |
16 | #define __ASM_POWERPC_REG_BOOKE_H__ | 16 | #define __ASM_POWERPC_REG_BOOKE_H__ |
17 | 17 | ||
18 | #ifdef CONFIG_BOOKE_WDT | ||
19 | extern u32 booke_wdt_enabled; | ||
20 | extern u32 booke_wdt_period; | ||
21 | #endif /* CONFIG_BOOKE_WDT */ | ||
22 | |||
18 | /* Machine State Register (MSR) Fields */ | 23 | /* Machine State Register (MSR) Fields */ |
19 | #define MSR_GS (1<<28) /* Guest state */ | 24 | #define MSR_GS (1<<28) /* Guest state */ |
20 | #define MSR_UCLE (1<<26) /* User-mode cache lock enable */ | 25 | #define MSR_UCLE (1<<26) /* User-mode cache lock enable */ |
diff --git a/arch/powerpc/include/asm/rtas.h b/arch/powerpc/include/asm/rtas.h index f0a4db31ecb6..557cff845dee 100644 --- a/arch/powerpc/include/asm/rtas.h +++ b/arch/powerpc/include/asm/rtas.h | |||
@@ -357,5 +357,7 @@ static inline int page_is_rtas_user_buf(unsigned long pfn) | |||
357 | static inline int page_is_rtas_user_buf(unsigned long pfn) { return 0;} | 357 | static inline int page_is_rtas_user_buf(unsigned long pfn) { return 0;} |
358 | #endif | 358 | #endif |
359 | 359 | ||
360 | extern int call_rtas(const char *, int, int, unsigned long *, ...); | ||
361 | |||
360 | #endif /* __KERNEL__ */ | 362 | #endif /* __KERNEL__ */ |
361 | #endif /* _POWERPC_RTAS_H */ | 363 | #endif /* _POWERPC_RTAS_H */ |
diff --git a/arch/powerpc/include/asm/runlatch.h b/arch/powerpc/include/asm/runlatch.h new file mode 100644 index 000000000000..54e9b963876e --- /dev/null +++ b/arch/powerpc/include/asm/runlatch.h | |||
@@ -0,0 +1,45 @@ | |||
1 | /* | ||
2 | * Copyright (C) 1999 Cort Dougan <cort@cs.nmt.edu> | ||
3 | */ | ||
4 | #ifndef _ASM_POWERPC_RUNLATCH_H | ||
5 | #define _ASM_POWERPC_RUNLATCH_H | ||
6 | |||
7 | #ifdef CONFIG_PPC64 | ||
8 | |||
9 | extern void __ppc64_runlatch_on(void); | ||
10 | extern void __ppc64_runlatch_off(void); | ||
11 | |||
12 | /* | ||
13 | * We manually hard enable-disable, this is called | ||
14 | * in the idle loop and we don't want to mess up | ||
15 | * with soft-disable/enable & interrupt replay. | ||
16 | */ | ||
17 | #define ppc64_runlatch_off() \ | ||
18 | do { \ | ||
19 | if (cpu_has_feature(CPU_FTR_CTRL) && \ | ||
20 | test_thread_local_flags(_TLF_RUNLATCH)) { \ | ||
21 | unsigned long msr = mfmsr(); \ | ||
22 | __hard_irq_disable(); \ | ||
23 | __ppc64_runlatch_off(); \ | ||
24 | if (msr & MSR_EE) \ | ||
25 | __hard_irq_enable(); \ | ||
26 | } \ | ||
27 | } while (0) | ||
28 | |||
29 | #define ppc64_runlatch_on() \ | ||
30 | do { \ | ||
31 | if (cpu_has_feature(CPU_FTR_CTRL) && \ | ||
32 | !test_thread_local_flags(_TLF_RUNLATCH)) { \ | ||
33 | unsigned long msr = mfmsr(); \ | ||
34 | __hard_irq_disable(); \ | ||
35 | __ppc64_runlatch_on(); \ | ||
36 | if (msr & MSR_EE) \ | ||
37 | __hard_irq_enable(); \ | ||
38 | } \ | ||
39 | } while (0) | ||
40 | #else | ||
41 | #define ppc64_runlatch_on() | ||
42 | #define ppc64_runlatch_off() | ||
43 | #endif /* CONFIG_PPC64 */ | ||
44 | |||
45 | #endif /* _ASM_POWERPC_RUNLATCH_H */ | ||
diff --git a/arch/powerpc/include/asm/setup.h b/arch/powerpc/include/asm/setup.h index 186e0fb835bd..d084ce195fc3 100644 --- a/arch/powerpc/include/asm/setup.h +++ b/arch/powerpc/include/asm/setup.h | |||
@@ -5,6 +5,28 @@ | |||
5 | 5 | ||
6 | #ifndef __ASSEMBLY__ | 6 | #ifndef __ASSEMBLY__ |
7 | extern void ppc_printk_progress(char *s, unsigned short hex); | 7 | extern void ppc_printk_progress(char *s, unsigned short hex); |
8 | #endif | 8 | |
9 | extern unsigned int rtas_data; | ||
10 | extern int mem_init_done; /* set on boot once kmalloc can be called */ | ||
11 | extern int init_bootmem_done; /* set once bootmem is available */ | ||
12 | extern phys_addr_t memory_limit; | ||
13 | extern unsigned long klimit; | ||
14 | extern void *zalloc_maybe_bootmem(size_t size, gfp_t mask); | ||
15 | |||
16 | extern void via_cuda_init(void); | ||
17 | extern void read_rtc_time(void); | ||
18 | extern void pmac_find_display(void); | ||
19 | |||
20 | struct device_node; | ||
21 | extern void note_scsi_host(struct device_node *, void *); | ||
22 | |||
23 | /* Used in very early kernel initialization. */ | ||
24 | extern unsigned long reloc_offset(void); | ||
25 | extern unsigned long add_reloc_offset(unsigned long); | ||
26 | extern void reloc_got2(unsigned long); | ||
27 | |||
28 | #define PTRRELOC(x) ((typeof(x)) add_reloc_offset((unsigned long)(x))) | ||
29 | |||
30 | #endif /* !__ASSEMBLY__ */ | ||
9 | 31 | ||
10 | #endif /* _ASM_POWERPC_SETUP_H */ | 32 | #endif /* _ASM_POWERPC_SETUP_H */ |
diff --git a/arch/powerpc/include/asm/switch_to.h b/arch/powerpc/include/asm/switch_to.h new file mode 100644 index 000000000000..caf82d0a00de --- /dev/null +++ b/arch/powerpc/include/asm/switch_to.h | |||
@@ -0,0 +1,65 @@ | |||
1 | /* | ||
2 | * Copyright (C) 1999 Cort Dougan <cort@cs.nmt.edu> | ||
3 | */ | ||
4 | #ifndef _ASM_POWERPC_SWITCH_TO_H | ||
5 | #define _ASM_POWERPC_SWITCH_TO_H | ||
6 | |||
7 | struct thread_struct; | ||
8 | struct task_struct; | ||
9 | struct pt_regs; | ||
10 | |||
11 | extern struct task_struct *__switch_to(struct task_struct *, | ||
12 | struct task_struct *); | ||
13 | #define switch_to(prev, next, last) ((last) = __switch_to((prev), (next))) | ||
14 | |||
15 | struct thread_struct; | ||
16 | extern struct task_struct *_switch(struct thread_struct *prev, | ||
17 | struct thread_struct *next); | ||
18 | |||
19 | extern void giveup_fpu(struct task_struct *); | ||
20 | extern void disable_kernel_fp(void); | ||
21 | extern void enable_kernel_fp(void); | ||
22 | extern void flush_fp_to_thread(struct task_struct *); | ||
23 | extern void enable_kernel_altivec(void); | ||
24 | extern void giveup_altivec(struct task_struct *); | ||
25 | extern void load_up_altivec(struct task_struct *); | ||
26 | extern int emulate_altivec(struct pt_regs *); | ||
27 | extern void __giveup_vsx(struct task_struct *); | ||
28 | extern void giveup_vsx(struct task_struct *); | ||
29 | extern void enable_kernel_spe(void); | ||
30 | extern void giveup_spe(struct task_struct *); | ||
31 | extern void load_up_spe(struct task_struct *); | ||
32 | |||
33 | #ifndef CONFIG_SMP | ||
34 | extern void discard_lazy_cpu_state(void); | ||
35 | #else | ||
36 | static inline void discard_lazy_cpu_state(void) | ||
37 | { | ||
38 | } | ||
39 | #endif | ||
40 | |||
41 | #ifdef CONFIG_ALTIVEC | ||
42 | extern void flush_altivec_to_thread(struct task_struct *); | ||
43 | #else | ||
44 | static inline void flush_altivec_to_thread(struct task_struct *t) | ||
45 | { | ||
46 | } | ||
47 | #endif | ||
48 | |||
49 | #ifdef CONFIG_VSX | ||
50 | extern void flush_vsx_to_thread(struct task_struct *); | ||
51 | #else | ||
52 | static inline void flush_vsx_to_thread(struct task_struct *t) | ||
53 | { | ||
54 | } | ||
55 | #endif | ||
56 | |||
57 | #ifdef CONFIG_SPE | ||
58 | extern void flush_spe_to_thread(struct task_struct *); | ||
59 | #else | ||
60 | static inline void flush_spe_to_thread(struct task_struct *t) | ||
61 | { | ||
62 | } | ||
63 | #endif | ||
64 | |||
65 | #endif /* _ASM_POWERPC_SWITCH_TO_H */ | ||
diff --git a/arch/powerpc/include/asm/system.h b/arch/powerpc/include/asm/system.h deleted file mode 100644 index a02883d5af43..000000000000 --- a/arch/powerpc/include/asm/system.h +++ /dev/null | |||
@@ -1,592 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright (C) 1999 Cort Dougan <cort@cs.nmt.edu> | ||
3 | */ | ||
4 | #ifndef _ASM_POWERPC_SYSTEM_H | ||
5 | #define _ASM_POWERPC_SYSTEM_H | ||
6 | |||
7 | #include <linux/kernel.h> | ||
8 | #include <linux/irqflags.h> | ||
9 | |||
10 | #include <asm/hw_irq.h> | ||
11 | |||
12 | /* | ||
13 | * Memory barrier. | ||
14 | * The sync instruction guarantees that all memory accesses initiated | ||
15 | * by this processor have been performed (with respect to all other | ||
16 | * mechanisms that access memory). The eieio instruction is a barrier | ||
17 | * providing an ordering (separately) for (a) cacheable stores and (b) | ||
18 | * loads and stores to non-cacheable memory (e.g. I/O devices). | ||
19 | * | ||
20 | * mb() prevents loads and stores being reordered across this point. | ||
21 | * rmb() prevents loads being reordered across this point. | ||
22 | * wmb() prevents stores being reordered across this point. | ||
23 | * read_barrier_depends() prevents data-dependent loads being reordered | ||
24 | * across this point (nop on PPC). | ||
25 | * | ||
26 | * *mb() variants without smp_ prefix must order all types of memory | ||
27 | * operations with one another. sync is the only instruction sufficient | ||
28 | * to do this. | ||
29 | * | ||
30 | * For the smp_ barriers, ordering is for cacheable memory operations | ||
31 | * only. We have to use the sync instruction for smp_mb(), since lwsync | ||
32 | * doesn't order loads with respect to previous stores. Lwsync can be | ||
33 | * used for smp_rmb() and smp_wmb(). | ||
34 | * | ||
35 | * However, on CPUs that don't support lwsync, lwsync actually maps to a | ||
36 | * heavy-weight sync, so smp_wmb() can be a lighter-weight eieio. | ||
37 | */ | ||
38 | #define mb() __asm__ __volatile__ ("sync" : : : "memory") | ||
39 | #define rmb() __asm__ __volatile__ ("sync" : : : "memory") | ||
40 | #define wmb() __asm__ __volatile__ ("sync" : : : "memory") | ||
41 | #define read_barrier_depends() do { } while(0) | ||
42 | |||
43 | #define set_mb(var, value) do { var = value; mb(); } while (0) | ||
44 | |||
45 | #ifdef __KERNEL__ | ||
46 | #define AT_VECTOR_SIZE_ARCH 6 /* entries in ARCH_DLINFO */ | ||
47 | #ifdef CONFIG_SMP | ||
48 | |||
49 | #ifdef __SUBARCH_HAS_LWSYNC | ||
50 | # define SMPWMB LWSYNC | ||
51 | #else | ||
52 | # define SMPWMB eieio | ||
53 | #endif | ||
54 | |||
55 | #define smp_mb() mb() | ||
56 | #define smp_rmb() __asm__ __volatile__ (stringify_in_c(LWSYNC) : : :"memory") | ||
57 | #define smp_wmb() __asm__ __volatile__ (stringify_in_c(SMPWMB) : : :"memory") | ||
58 | #define smp_read_barrier_depends() read_barrier_depends() | ||
59 | #else | ||
60 | #define smp_mb() barrier() | ||
61 | #define smp_rmb() barrier() | ||
62 | #define smp_wmb() barrier() | ||
63 | #define smp_read_barrier_depends() do { } while(0) | ||
64 | #endif /* CONFIG_SMP */ | ||
65 | |||
66 | /* | ||
67 | * This is a barrier which prevents following instructions from being | ||
68 | * started until the value of the argument x is known. For example, if | ||
69 | * x is a variable loaded from memory, this prevents following | ||
70 | * instructions from being executed until the load has been performed. | ||
71 | */ | ||
72 | #define data_barrier(x) \ | ||
73 | asm volatile("twi 0,%0,0; isync" : : "r" (x) : "memory"); | ||
74 | |||
75 | struct task_struct; | ||
76 | struct pt_regs; | ||
77 | |||
78 | #if defined(CONFIG_DEBUGGER) || defined(CONFIG_KEXEC) | ||
79 | |||
80 | extern int (*__debugger)(struct pt_regs *regs); | ||
81 | extern int (*__debugger_ipi)(struct pt_regs *regs); | ||
82 | extern int (*__debugger_bpt)(struct pt_regs *regs); | ||
83 | extern int (*__debugger_sstep)(struct pt_regs *regs); | ||
84 | extern int (*__debugger_iabr_match)(struct pt_regs *regs); | ||
85 | extern int (*__debugger_dabr_match)(struct pt_regs *regs); | ||
86 | extern int (*__debugger_fault_handler)(struct pt_regs *regs); | ||
87 | |||
88 | #define DEBUGGER_BOILERPLATE(__NAME) \ | ||
89 | static inline int __NAME(struct pt_regs *regs) \ | ||
90 | { \ | ||
91 | if (unlikely(__ ## __NAME)) \ | ||
92 | return __ ## __NAME(regs); \ | ||
93 | return 0; \ | ||
94 | } | ||
95 | |||
96 | DEBUGGER_BOILERPLATE(debugger) | ||
97 | DEBUGGER_BOILERPLATE(debugger_ipi) | ||
98 | DEBUGGER_BOILERPLATE(debugger_bpt) | ||
99 | DEBUGGER_BOILERPLATE(debugger_sstep) | ||
100 | DEBUGGER_BOILERPLATE(debugger_iabr_match) | ||
101 | DEBUGGER_BOILERPLATE(debugger_dabr_match) | ||
102 | DEBUGGER_BOILERPLATE(debugger_fault_handler) | ||
103 | |||
104 | #else | ||
105 | static inline int debugger(struct pt_regs *regs) { return 0; } | ||
106 | static inline int debugger_ipi(struct pt_regs *regs) { return 0; } | ||
107 | static inline int debugger_bpt(struct pt_regs *regs) { return 0; } | ||
108 | static inline int debugger_sstep(struct pt_regs *regs) { return 0; } | ||
109 | static inline int debugger_iabr_match(struct pt_regs *regs) { return 0; } | ||
110 | static inline int debugger_dabr_match(struct pt_regs *regs) { return 0; } | ||
111 | static inline int debugger_fault_handler(struct pt_regs *regs) { return 0; } | ||
112 | #endif | ||
113 | |||
114 | extern int set_dabr(unsigned long dabr); | ||
115 | #ifdef CONFIG_PPC_ADV_DEBUG_REGS | ||
116 | extern void do_send_trap(struct pt_regs *regs, unsigned long address, | ||
117 | unsigned long error_code, int signal_code, int brkpt); | ||
118 | #else | ||
119 | extern void do_dabr(struct pt_regs *regs, unsigned long address, | ||
120 | unsigned long error_code); | ||
121 | #endif | ||
122 | extern void print_backtrace(unsigned long *); | ||
123 | extern void flush_instruction_cache(void); | ||
124 | extern void hard_reset_now(void); | ||
125 | extern void poweroff_now(void); | ||
126 | |||
127 | #ifdef CONFIG_6xx | ||
128 | extern long _get_L2CR(void); | ||
129 | extern long _get_L3CR(void); | ||
130 | extern void _set_L2CR(unsigned long); | ||
131 | extern void _set_L3CR(unsigned long); | ||
132 | #else | ||
133 | #define _get_L2CR() 0L | ||
134 | #define _get_L3CR() 0L | ||
135 | #define _set_L2CR(val) do { } while(0) | ||
136 | #define _set_L3CR(val) do { } while(0) | ||
137 | #endif | ||
138 | |||
139 | extern void via_cuda_init(void); | ||
140 | extern void read_rtc_time(void); | ||
141 | extern void pmac_find_display(void); | ||
142 | extern void giveup_fpu(struct task_struct *); | ||
143 | extern void disable_kernel_fp(void); | ||
144 | extern void enable_kernel_fp(void); | ||
145 | extern void flush_fp_to_thread(struct task_struct *); | ||
146 | extern void enable_kernel_altivec(void); | ||
147 | extern void giveup_altivec(struct task_struct *); | ||
148 | extern void load_up_altivec(struct task_struct *); | ||
149 | extern int emulate_altivec(struct pt_regs *); | ||
150 | extern void __giveup_vsx(struct task_struct *); | ||
151 | extern void giveup_vsx(struct task_struct *); | ||
152 | extern void enable_kernel_spe(void); | ||
153 | extern void giveup_spe(struct task_struct *); | ||
154 | extern void load_up_spe(struct task_struct *); | ||
155 | extern int fix_alignment(struct pt_regs *); | ||
156 | extern void cvt_fd(float *from, double *to); | ||
157 | extern void cvt_df(double *from, float *to); | ||
158 | |||
159 | #ifndef CONFIG_SMP | ||
160 | extern void discard_lazy_cpu_state(void); | ||
161 | #else | ||
162 | static inline void discard_lazy_cpu_state(void) | ||
163 | { | ||
164 | } | ||
165 | #endif | ||
166 | |||
167 | #ifdef CONFIG_ALTIVEC | ||
168 | extern void flush_altivec_to_thread(struct task_struct *); | ||
169 | #else | ||
170 | static inline void flush_altivec_to_thread(struct task_struct *t) | ||
171 | { | ||
172 | } | ||
173 | #endif | ||
174 | |||
175 | #ifdef CONFIG_VSX | ||
176 | extern void flush_vsx_to_thread(struct task_struct *); | ||
177 | #else | ||
178 | static inline void flush_vsx_to_thread(struct task_struct *t) | ||
179 | { | ||
180 | } | ||
181 | #endif | ||
182 | |||
183 | #ifdef CONFIG_SPE | ||
184 | extern void flush_spe_to_thread(struct task_struct *); | ||
185 | #else | ||
186 | static inline void flush_spe_to_thread(struct task_struct *t) | ||
187 | { | ||
188 | } | ||
189 | #endif | ||
190 | |||
191 | extern int call_rtas(const char *, int, int, unsigned long *, ...); | ||
192 | extern void cacheable_memzero(void *p, unsigned int nb); | ||
193 | extern void *cacheable_memcpy(void *, const void *, unsigned int); | ||
194 | extern int do_page_fault(struct pt_regs *, unsigned long, unsigned long); | ||
195 | extern void bad_page_fault(struct pt_regs *, unsigned long, int); | ||
196 | extern void _exception(int, struct pt_regs *, int, unsigned long); | ||
197 | extern void die(const char *, struct pt_regs *, long); | ||
198 | extern void _nmask_and_or_msr(unsigned long nmask, unsigned long or_val); | ||
199 | |||
200 | #ifdef CONFIG_BOOKE_WDT | ||
201 | extern u32 booke_wdt_enabled; | ||
202 | extern u32 booke_wdt_period; | ||
203 | #endif /* CONFIG_BOOKE_WDT */ | ||
204 | |||
205 | struct device_node; | ||
206 | extern void note_scsi_host(struct device_node *, void *); | ||
207 | |||
208 | extern struct task_struct *__switch_to(struct task_struct *, | ||
209 | struct task_struct *); | ||
210 | #define switch_to(prev, next, last) ((last) = __switch_to((prev), (next))) | ||
211 | |||
212 | struct thread_struct; | ||
213 | extern struct task_struct *_switch(struct thread_struct *prev, | ||
214 | struct thread_struct *next); | ||
215 | |||
216 | extern unsigned int rtas_data; | ||
217 | extern int mem_init_done; /* set on boot once kmalloc can be called */ | ||
218 | extern int init_bootmem_done; /* set once bootmem is available */ | ||
219 | extern phys_addr_t memory_limit; | ||
220 | extern unsigned long klimit; | ||
221 | extern void *zalloc_maybe_bootmem(size_t size, gfp_t mask); | ||
222 | |||
223 | extern int powersave_nap; /* set if nap mode can be used in idle loop */ | ||
224 | void cpu_idle_wait(void); | ||
225 | |||
226 | #ifdef CONFIG_PSERIES_IDLE | ||
227 | extern void update_smt_snooze_delay(int snooze); | ||
228 | extern int pseries_notify_cpuidle_add_cpu(int cpu); | ||
229 | #else | ||
230 | static inline void update_smt_snooze_delay(int snooze) {} | ||
231 | static inline int pseries_notify_cpuidle_add_cpu(int cpu) { return 0; } | ||
232 | #endif | ||
233 | |||
234 | /* | ||
235 | * Atomic exchange | ||
236 | * | ||
237 | * Changes the memory location '*ptr' to be val and returns | ||
238 | * the previous value stored there. | ||
239 | */ | ||
240 | static __always_inline unsigned long | ||
241 | __xchg_u32(volatile void *p, unsigned long val) | ||
242 | { | ||
243 | unsigned long prev; | ||
244 | |||
245 | __asm__ __volatile__( | ||
246 | PPC_RELEASE_BARRIER | ||
247 | "1: lwarx %0,0,%2 \n" | ||
248 | PPC405_ERR77(0,%2) | ||
249 | " stwcx. %3,0,%2 \n\ | ||
250 | bne- 1b" | ||
251 | PPC_ACQUIRE_BARRIER | ||
252 | : "=&r" (prev), "+m" (*(volatile unsigned int *)p) | ||
253 | : "r" (p), "r" (val) | ||
254 | : "cc", "memory"); | ||
255 | |||
256 | return prev; | ||
257 | } | ||
258 | |||
259 | /* | ||
260 | * Atomic exchange | ||
261 | * | ||
262 | * Changes the memory location '*ptr' to be val and returns | ||
263 | * the previous value stored there. | ||
264 | */ | ||
265 | static __always_inline unsigned long | ||
266 | __xchg_u32_local(volatile void *p, unsigned long val) | ||
267 | { | ||
268 | unsigned long prev; | ||
269 | |||
270 | __asm__ __volatile__( | ||
271 | "1: lwarx %0,0,%2 \n" | ||
272 | PPC405_ERR77(0,%2) | ||
273 | " stwcx. %3,0,%2 \n\ | ||
274 | bne- 1b" | ||
275 | : "=&r" (prev), "+m" (*(volatile unsigned int *)p) | ||
276 | : "r" (p), "r" (val) | ||
277 | : "cc", "memory"); | ||
278 | |||
279 | return prev; | ||
280 | } | ||
281 | |||
282 | #ifdef CONFIG_PPC64 | ||
283 | static __always_inline unsigned long | ||
284 | __xchg_u64(volatile void *p, unsigned long val) | ||
285 | { | ||
286 | unsigned long prev; | ||
287 | |||
288 | __asm__ __volatile__( | ||
289 | PPC_RELEASE_BARRIER | ||
290 | "1: ldarx %0,0,%2 \n" | ||
291 | PPC405_ERR77(0,%2) | ||
292 | " stdcx. %3,0,%2 \n\ | ||
293 | bne- 1b" | ||
294 | PPC_ACQUIRE_BARRIER | ||
295 | : "=&r" (prev), "+m" (*(volatile unsigned long *)p) | ||
296 | : "r" (p), "r" (val) | ||
297 | : "cc", "memory"); | ||
298 | |||
299 | return prev; | ||
300 | } | ||
301 | |||
302 | static __always_inline unsigned long | ||
303 | __xchg_u64_local(volatile void *p, unsigned long val) | ||
304 | { | ||
305 | unsigned long prev; | ||
306 | |||
307 | __asm__ __volatile__( | ||
308 | "1: ldarx %0,0,%2 \n" | ||
309 | PPC405_ERR77(0,%2) | ||
310 | " stdcx. %3,0,%2 \n\ | ||
311 | bne- 1b" | ||
312 | : "=&r" (prev), "+m" (*(volatile unsigned long *)p) | ||
313 | : "r" (p), "r" (val) | ||
314 | : "cc", "memory"); | ||
315 | |||
316 | return prev; | ||
317 | } | ||
318 | #endif | ||
319 | |||
320 | /* | ||
321 | * This function doesn't exist, so you'll get a linker error | ||
322 | * if something tries to do an invalid xchg(). | ||
323 | */ | ||
324 | extern void __xchg_called_with_bad_pointer(void); | ||
325 | |||
326 | static __always_inline unsigned long | ||
327 | __xchg(volatile void *ptr, unsigned long x, unsigned int size) | ||
328 | { | ||
329 | switch (size) { | ||
330 | case 4: | ||
331 | return __xchg_u32(ptr, x); | ||
332 | #ifdef CONFIG_PPC64 | ||
333 | case 8: | ||
334 | return __xchg_u64(ptr, x); | ||
335 | #endif | ||
336 | } | ||
337 | __xchg_called_with_bad_pointer(); | ||
338 | return x; | ||
339 | } | ||
340 | |||
341 | static __always_inline unsigned long | ||
342 | __xchg_local(volatile void *ptr, unsigned long x, unsigned int size) | ||
343 | { | ||
344 | switch (size) { | ||
345 | case 4: | ||
346 | return __xchg_u32_local(ptr, x); | ||
347 | #ifdef CONFIG_PPC64 | ||
348 | case 8: | ||
349 | return __xchg_u64_local(ptr, x); | ||
350 | #endif | ||
351 | } | ||
352 | __xchg_called_with_bad_pointer(); | ||
353 | return x; | ||
354 | } | ||
355 | #define xchg(ptr,x) \ | ||
356 | ({ \ | ||
357 | __typeof__(*(ptr)) _x_ = (x); \ | ||
358 | (__typeof__(*(ptr))) __xchg((ptr), (unsigned long)_x_, sizeof(*(ptr))); \ | ||
359 | }) | ||
360 | |||
361 | #define xchg_local(ptr,x) \ | ||
362 | ({ \ | ||
363 | __typeof__(*(ptr)) _x_ = (x); \ | ||
364 | (__typeof__(*(ptr))) __xchg_local((ptr), \ | ||
365 | (unsigned long)_x_, sizeof(*(ptr))); \ | ||
366 | }) | ||
367 | |||
368 | /* | ||
369 | * Compare and exchange - if *p == old, set it to new, | ||
370 | * and return the old value of *p. | ||
371 | */ | ||
372 | #define __HAVE_ARCH_CMPXCHG 1 | ||
373 | |||
374 | static __always_inline unsigned long | ||
375 | __cmpxchg_u32(volatile unsigned int *p, unsigned long old, unsigned long new) | ||
376 | { | ||
377 | unsigned int prev; | ||
378 | |||
379 | __asm__ __volatile__ ( | ||
380 | PPC_RELEASE_BARRIER | ||
381 | "1: lwarx %0,0,%2 # __cmpxchg_u32\n\ | ||
382 | cmpw 0,%0,%3\n\ | ||
383 | bne- 2f\n" | ||
384 | PPC405_ERR77(0,%2) | ||
385 | " stwcx. %4,0,%2\n\ | ||
386 | bne- 1b" | ||
387 | PPC_ACQUIRE_BARRIER | ||
388 | "\n\ | ||
389 | 2:" | ||
390 | : "=&r" (prev), "+m" (*p) | ||
391 | : "r" (p), "r" (old), "r" (new) | ||
392 | : "cc", "memory"); | ||
393 | |||
394 | return prev; | ||
395 | } | ||
396 | |||
397 | static __always_inline unsigned long | ||
398 | __cmpxchg_u32_local(volatile unsigned int *p, unsigned long old, | ||
399 | unsigned long new) | ||
400 | { | ||
401 | unsigned int prev; | ||
402 | |||
403 | __asm__ __volatile__ ( | ||
404 | "1: lwarx %0,0,%2 # __cmpxchg_u32\n\ | ||
405 | cmpw 0,%0,%3\n\ | ||
406 | bne- 2f\n" | ||
407 | PPC405_ERR77(0,%2) | ||
408 | " stwcx. %4,0,%2\n\ | ||
409 | bne- 1b" | ||
410 | "\n\ | ||
411 | 2:" | ||
412 | : "=&r" (prev), "+m" (*p) | ||
413 | : "r" (p), "r" (old), "r" (new) | ||
414 | : "cc", "memory"); | ||
415 | |||
416 | return prev; | ||
417 | } | ||
418 | |||
419 | #ifdef CONFIG_PPC64 | ||
420 | static __always_inline unsigned long | ||
421 | __cmpxchg_u64(volatile unsigned long *p, unsigned long old, unsigned long new) | ||
422 | { | ||
423 | unsigned long prev; | ||
424 | |||
425 | __asm__ __volatile__ ( | ||
426 | PPC_RELEASE_BARRIER | ||
427 | "1: ldarx %0,0,%2 # __cmpxchg_u64\n\ | ||
428 | cmpd 0,%0,%3\n\ | ||
429 | bne- 2f\n\ | ||
430 | stdcx. %4,0,%2\n\ | ||
431 | bne- 1b" | ||
432 | PPC_ACQUIRE_BARRIER | ||
433 | "\n\ | ||
434 | 2:" | ||
435 | : "=&r" (prev), "+m" (*p) | ||
436 | : "r" (p), "r" (old), "r" (new) | ||
437 | : "cc", "memory"); | ||
438 | |||
439 | return prev; | ||
440 | } | ||
441 | |||
442 | static __always_inline unsigned long | ||
443 | __cmpxchg_u64_local(volatile unsigned long *p, unsigned long old, | ||
444 | unsigned long new) | ||
445 | { | ||
446 | unsigned long prev; | ||
447 | |||
448 | __asm__ __volatile__ ( | ||
449 | "1: ldarx %0,0,%2 # __cmpxchg_u64\n\ | ||
450 | cmpd 0,%0,%3\n\ | ||
451 | bne- 2f\n\ | ||
452 | stdcx. %4,0,%2\n\ | ||
453 | bne- 1b" | ||
454 | "\n\ | ||
455 | 2:" | ||
456 | : "=&r" (prev), "+m" (*p) | ||
457 | : "r" (p), "r" (old), "r" (new) | ||
458 | : "cc", "memory"); | ||
459 | |||
460 | return prev; | ||
461 | } | ||
462 | #endif | ||
463 | |||
464 | /* This function doesn't exist, so you'll get a linker error | ||
465 | if something tries to do an invalid cmpxchg(). */ | ||
466 | extern void __cmpxchg_called_with_bad_pointer(void); | ||
467 | |||
468 | static __always_inline unsigned long | ||
469 | __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, | ||
470 | unsigned int size) | ||
471 | { | ||
472 | switch (size) { | ||
473 | case 4: | ||
474 | return __cmpxchg_u32(ptr, old, new); | ||
475 | #ifdef CONFIG_PPC64 | ||
476 | case 8: | ||
477 | return __cmpxchg_u64(ptr, old, new); | ||
478 | #endif | ||
479 | } | ||
480 | __cmpxchg_called_with_bad_pointer(); | ||
481 | return old; | ||
482 | } | ||
483 | |||
484 | static __always_inline unsigned long | ||
485 | __cmpxchg_local(volatile void *ptr, unsigned long old, unsigned long new, | ||
486 | unsigned int size) | ||
487 | { | ||
488 | switch (size) { | ||
489 | case 4: | ||
490 | return __cmpxchg_u32_local(ptr, old, new); | ||
491 | #ifdef CONFIG_PPC64 | ||
492 | case 8: | ||
493 | return __cmpxchg_u64_local(ptr, old, new); | ||
494 | #endif | ||
495 | } | ||
496 | __cmpxchg_called_with_bad_pointer(); | ||
497 | return old; | ||
498 | } | ||
499 | |||
500 | #define cmpxchg(ptr, o, n) \ | ||
501 | ({ \ | ||
502 | __typeof__(*(ptr)) _o_ = (o); \ | ||
503 | __typeof__(*(ptr)) _n_ = (n); \ | ||
504 | (__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_, \ | ||
505 | (unsigned long)_n_, sizeof(*(ptr))); \ | ||
506 | }) | ||
507 | |||
508 | |||
509 | #define cmpxchg_local(ptr, o, n) \ | ||
510 | ({ \ | ||
511 | __typeof__(*(ptr)) _o_ = (o); \ | ||
512 | __typeof__(*(ptr)) _n_ = (n); \ | ||
513 | (__typeof__(*(ptr))) __cmpxchg_local((ptr), (unsigned long)_o_, \ | ||
514 | (unsigned long)_n_, sizeof(*(ptr))); \ | ||
515 | }) | ||
516 | |||
517 | #ifdef CONFIG_PPC64 | ||
518 | /* | ||
519 | * We handle most unaligned accesses in hardware. On the other hand | ||
520 | * unaligned DMA can be very expensive on some ppc64 IO chips (it does | ||
521 | * powers of 2 writes until it reaches sufficient alignment). | ||
522 | * | ||
523 | * Based on this we disable the IP header alignment in network drivers. | ||
524 | */ | ||
525 | #define NET_IP_ALIGN 0 | ||
526 | |||
527 | #define cmpxchg64(ptr, o, n) \ | ||
528 | ({ \ | ||
529 | BUILD_BUG_ON(sizeof(*(ptr)) != 8); \ | ||
530 | cmpxchg((ptr), (o), (n)); \ | ||
531 | }) | ||
532 | #define cmpxchg64_local(ptr, o, n) \ | ||
533 | ({ \ | ||
534 | BUILD_BUG_ON(sizeof(*(ptr)) != 8); \ | ||
535 | cmpxchg_local((ptr), (o), (n)); \ | ||
536 | }) | ||
537 | #else | ||
538 | #include <asm-generic/cmpxchg-local.h> | ||
539 | #define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) | ||
540 | #endif | ||
541 | |||
542 | extern unsigned long arch_align_stack(unsigned long sp); | ||
543 | |||
544 | /* Used in very early kernel initialization. */ | ||
545 | extern unsigned long reloc_offset(void); | ||
546 | extern unsigned long add_reloc_offset(unsigned long); | ||
547 | extern void reloc_got2(unsigned long); | ||
548 | |||
549 | #define PTRRELOC(x) ((typeof(x)) add_reloc_offset((unsigned long)(x))) | ||
550 | |||
551 | extern struct dentry *powerpc_debugfs_root; | ||
552 | |||
553 | #ifdef CONFIG_PPC64 | ||
554 | |||
555 | extern void __ppc64_runlatch_on(void); | ||
556 | extern void __ppc64_runlatch_off(void); | ||
557 | |||
558 | /* | ||
559 | * We manually hard enable-disable, this is called | ||
560 | * in the idle loop and we don't want to mess up | ||
561 | * with soft-disable/enable & interrupt replay. | ||
562 | */ | ||
563 | #define ppc64_runlatch_off() \ | ||
564 | do { \ | ||
565 | if (cpu_has_feature(CPU_FTR_CTRL) && \ | ||
566 | test_thread_local_flags(_TLF_RUNLATCH)) { \ | ||
567 | unsigned long msr = mfmsr(); \ | ||
568 | __hard_irq_disable(); \ | ||
569 | __ppc64_runlatch_off(); \ | ||
570 | if (msr & MSR_EE) \ | ||
571 | __hard_irq_enable(); \ | ||
572 | } \ | ||
573 | } while (0) | ||
574 | |||
575 | #define ppc64_runlatch_on() \ | ||
576 | do { \ | ||
577 | if (cpu_has_feature(CPU_FTR_CTRL) && \ | ||
578 | !test_thread_local_flags(_TLF_RUNLATCH)) { \ | ||
579 | unsigned long msr = mfmsr(); \ | ||
580 | __hard_irq_disable(); \ | ||
581 | __ppc64_runlatch_on(); \ | ||
582 | if (msr & MSR_EE) \ | ||
583 | __hard_irq_enable(); \ | ||
584 | } \ | ||
585 | } while (0) | ||
586 | #else | ||
587 | #define ppc64_runlatch_on() | ||
588 | #define ppc64_runlatch_off() | ||
589 | #endif /* CONFIG_PPC64 */ | ||
590 | |||
591 | #endif /* __KERNEL__ */ | ||
592 | #endif /* _ASM_POWERPC_SYSTEM_H */ | ||
diff --git a/arch/powerpc/kernel/align.c b/arch/powerpc/kernel/align.c index 8184ee97e484..ee5b690a0bed 100644 --- a/arch/powerpc/kernel/align.c +++ b/arch/powerpc/kernel/align.c | |||
@@ -21,10 +21,10 @@ | |||
21 | #include <linux/mm.h> | 21 | #include <linux/mm.h> |
22 | #include <asm/processor.h> | 22 | #include <asm/processor.h> |
23 | #include <asm/uaccess.h> | 23 | #include <asm/uaccess.h> |
24 | #include <asm/system.h> | ||
25 | #include <asm/cache.h> | 24 | #include <asm/cache.h> |
26 | #include <asm/cputable.h> | 25 | #include <asm/cputable.h> |
27 | #include <asm/emulated_ops.h> | 26 | #include <asm/emulated_ops.h> |
27 | #include <asm/switch_to.h> | ||
28 | 28 | ||
29 | struct aligninfo { | 29 | struct aligninfo { |
30 | unsigned char len; | 30 | unsigned char len; |
diff --git a/arch/powerpc/kernel/cputable.c b/arch/powerpc/kernel/cputable.c index 138ae183c440..455faa389876 100644 --- a/arch/powerpc/kernel/cputable.c +++ b/arch/powerpc/kernel/cputable.c | |||
@@ -20,6 +20,7 @@ | |||
20 | #include <asm/cputable.h> | 20 | #include <asm/cputable.h> |
21 | #include <asm/prom.h> /* for PTRRELOC on ARCH=ppc */ | 21 | #include <asm/prom.h> /* for PTRRELOC on ARCH=ppc */ |
22 | #include <asm/mmu.h> | 22 | #include <asm/mmu.h> |
23 | #include <asm/setup.h> | ||
23 | 24 | ||
24 | struct cpu_spec* cur_cpu_spec = NULL; | 25 | struct cpu_spec* cur_cpu_spec = NULL; |
25 | EXPORT_SYMBOL(cur_cpu_spec); | 26 | EXPORT_SYMBOL(cur_cpu_spec); |
diff --git a/arch/powerpc/kernel/crash.c b/arch/powerpc/kernel/crash.c index abef75176c07..fdcd8f551aff 100644 --- a/arch/powerpc/kernel/crash.c +++ b/arch/powerpc/kernel/crash.c | |||
@@ -27,8 +27,8 @@ | |||
27 | #include <asm/kdump.h> | 27 | #include <asm/kdump.h> |
28 | #include <asm/prom.h> | 28 | #include <asm/prom.h> |
29 | #include <asm/smp.h> | 29 | #include <asm/smp.h> |
30 | #include <asm/system.h> | ||
31 | #include <asm/setjmp.h> | 30 | #include <asm/setjmp.h> |
31 | #include <asm/debug.h> | ||
32 | 32 | ||
33 | /* | 33 | /* |
34 | * The primary CPU waits a while for all secondary CPUs to enter. This is to | 34 | * The primary CPU waits a while for all secondary CPUs to enter. This is to |
diff --git a/arch/powerpc/kernel/idle.c b/arch/powerpc/kernel/idle.c index e8e821146f38..6d2209ac0c44 100644 --- a/arch/powerpc/kernel/idle.c +++ b/arch/powerpc/kernel/idle.c | |||
@@ -26,11 +26,11 @@ | |||
26 | #include <linux/sysctl.h> | 26 | #include <linux/sysctl.h> |
27 | #include <linux/tick.h> | 27 | #include <linux/tick.h> |
28 | 28 | ||
29 | #include <asm/system.h> | ||
30 | #include <asm/processor.h> | 29 | #include <asm/processor.h> |
31 | #include <asm/cputable.h> | 30 | #include <asm/cputable.h> |
32 | #include <asm/time.h> | 31 | #include <asm/time.h> |
33 | #include <asm/machdep.h> | 32 | #include <asm/machdep.h> |
33 | #include <asm/runlatch.h> | ||
34 | #include <asm/smp.h> | 34 | #include <asm/smp.h> |
35 | 35 | ||
36 | #ifdef CONFIG_HOTPLUG_CPU | 36 | #ifdef CONFIG_HOTPLUG_CPU |
diff --git a/arch/powerpc/kernel/irq.c b/arch/powerpc/kernel/irq.c index cea2d9f3ae4e..243dbabfe74d 100644 --- a/arch/powerpc/kernel/irq.c +++ b/arch/powerpc/kernel/irq.c | |||
@@ -57,7 +57,6 @@ | |||
57 | #include <linux/of_irq.h> | 57 | #include <linux/of_irq.h> |
58 | 58 | ||
59 | #include <asm/uaccess.h> | 59 | #include <asm/uaccess.h> |
60 | #include <asm/system.h> | ||
61 | #include <asm/io.h> | 60 | #include <asm/io.h> |
62 | #include <asm/pgtable.h> | 61 | #include <asm/pgtable.h> |
63 | #include <asm/irq.h> | 62 | #include <asm/irq.h> |
@@ -67,6 +66,7 @@ | |||
67 | #include <asm/machdep.h> | 66 | #include <asm/machdep.h> |
68 | #include <asm/udbg.h> | 67 | #include <asm/udbg.h> |
69 | #include <asm/smp.h> | 68 | #include <asm/smp.h> |
69 | #include <asm/debug.h> | ||
70 | 70 | ||
71 | #ifdef CONFIG_PPC64 | 71 | #ifdef CONFIG_PPC64 |
72 | #include <asm/paca.h> | 72 | #include <asm/paca.h> |
diff --git a/arch/powerpc/kernel/kprobes.c b/arch/powerpc/kernel/kprobes.c index bc47352deb1f..e88c64331819 100644 --- a/arch/powerpc/kernel/kprobes.c +++ b/arch/powerpc/kernel/kprobes.c | |||
@@ -35,7 +35,6 @@ | |||
35 | #include <asm/cacheflush.h> | 35 | #include <asm/cacheflush.h> |
36 | #include <asm/sstep.h> | 36 | #include <asm/sstep.h> |
37 | #include <asm/uaccess.h> | 37 | #include <asm/uaccess.h> |
38 | #include <asm/system.h> | ||
39 | 38 | ||
40 | #ifdef CONFIG_PPC_ADV_DEBUG_REGS | 39 | #ifdef CONFIG_PPC_ADV_DEBUG_REGS |
41 | #define MSR_SINGLESTEP (MSR_DE) | 40 | #define MSR_SINGLESTEP (MSR_DE) |
diff --git a/arch/powerpc/kernel/lparcfg.c b/arch/powerpc/kernel/lparcfg.c index ac12bd80ad95..f5725bce9ed2 100644 --- a/arch/powerpc/kernel/lparcfg.c +++ b/arch/powerpc/kernel/lparcfg.c | |||
@@ -30,7 +30,6 @@ | |||
30 | #include <asm/hvcall.h> | 30 | #include <asm/hvcall.h> |
31 | #include <asm/firmware.h> | 31 | #include <asm/firmware.h> |
32 | #include <asm/rtas.h> | 32 | #include <asm/rtas.h> |
33 | #include <asm/system.h> | ||
34 | #include <asm/time.h> | 33 | #include <asm/time.h> |
35 | #include <asm/prom.h> | 34 | #include <asm/prom.h> |
36 | #include <asm/vdso_datapage.h> | 35 | #include <asm/vdso_datapage.h> |
diff --git a/arch/powerpc/kernel/ppc_ksyms.c b/arch/powerpc/kernel/ppc_ksyms.c index d3114a71dd32..786a2700ec2d 100644 --- a/arch/powerpc/kernel/ppc_ksyms.c +++ b/arch/powerpc/kernel/ppc_ksyms.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include <linux/cuda.h> | 26 | #include <linux/cuda.h> |
27 | #include <linux/pmu.h> | 27 | #include <linux/pmu.h> |
28 | #include <asm/prom.h> | 28 | #include <asm/prom.h> |
29 | #include <asm/system.h> | ||
30 | #include <asm/pci-bridge.h> | 29 | #include <asm/pci-bridge.h> |
31 | #include <asm/irq.h> | 30 | #include <asm/irq.h> |
32 | #include <asm/pmac_feature.h> | 31 | #include <asm/pmac_feature.h> |
@@ -43,6 +42,7 @@ | |||
43 | #include <asm/signal.h> | 42 | #include <asm/signal.h> |
44 | #include <asm/dcr.h> | 43 | #include <asm/dcr.h> |
45 | #include <asm/ftrace.h> | 44 | #include <asm/ftrace.h> |
45 | #include <asm/switch_to.h> | ||
46 | 46 | ||
47 | #ifdef CONFIG_PPC32 | 47 | #ifdef CONFIG_PPC32 |
48 | extern void transfer_to_handler(void); | 48 | extern void transfer_to_handler(void); |
diff --git a/arch/powerpc/kernel/process.c b/arch/powerpc/kernel/process.c index e40707032ac3..f88698c0f332 100644 --- a/arch/powerpc/kernel/process.c +++ b/arch/powerpc/kernel/process.c | |||
@@ -41,14 +41,16 @@ | |||
41 | 41 | ||
42 | #include <asm/pgtable.h> | 42 | #include <asm/pgtable.h> |
43 | #include <asm/uaccess.h> | 43 | #include <asm/uaccess.h> |
44 | #include <asm/system.h> | ||
45 | #include <asm/io.h> | 44 | #include <asm/io.h> |
46 | #include <asm/processor.h> | 45 | #include <asm/processor.h> |
47 | #include <asm/mmu.h> | 46 | #include <asm/mmu.h> |
48 | #include <asm/prom.h> | 47 | #include <asm/prom.h> |
49 | #include <asm/machdep.h> | 48 | #include <asm/machdep.h> |
50 | #include <asm/time.h> | 49 | #include <asm/time.h> |
50 | #include <asm/runlatch.h> | ||
51 | #include <asm/syscalls.h> | 51 | #include <asm/syscalls.h> |
52 | #include <asm/switch_to.h> | ||
53 | #include <asm/debug.h> | ||
52 | #ifdef CONFIG_PPC64 | 54 | #ifdef CONFIG_PPC64 |
53 | #include <asm/firmware.h> | 55 | #include <asm/firmware.h> |
54 | #endif | 56 | #endif |
diff --git a/arch/powerpc/kernel/prom.c b/arch/powerpc/kernel/prom.c index 89e850af3dd6..f191bf02943a 100644 --- a/arch/powerpc/kernel/prom.c +++ b/arch/powerpc/kernel/prom.c | |||
@@ -41,7 +41,6 @@ | |||
41 | #include <asm/io.h> | 41 | #include <asm/io.h> |
42 | #include <asm/kdump.h> | 42 | #include <asm/kdump.h> |
43 | #include <asm/smp.h> | 43 | #include <asm/smp.h> |
44 | #include <asm/system.h> | ||
45 | #include <asm/mmu.h> | 44 | #include <asm/mmu.h> |
46 | #include <asm/paca.h> | 45 | #include <asm/paca.h> |
47 | #include <asm/pgtable.h> | 46 | #include <asm/pgtable.h> |
diff --git a/arch/powerpc/kernel/prom_init.c b/arch/powerpc/kernel/prom_init.c index ea4e311e09d2..99860273211b 100644 --- a/arch/powerpc/kernel/prom_init.c +++ b/arch/powerpc/kernel/prom_init.c | |||
@@ -35,7 +35,6 @@ | |||
35 | #include <asm/irq.h> | 35 | #include <asm/irq.h> |
36 | #include <asm/io.h> | 36 | #include <asm/io.h> |
37 | #include <asm/smp.h> | 37 | #include <asm/smp.h> |
38 | #include <asm/system.h> | ||
39 | #include <asm/mmu.h> | 38 | #include <asm/mmu.h> |
40 | #include <asm/pgtable.h> | 39 | #include <asm/pgtable.h> |
41 | #include <asm/pci.h> | 40 | #include <asm/pci.h> |
diff --git a/arch/powerpc/kernel/ptrace.c b/arch/powerpc/kernel/ptrace.c index 5b43325402bc..8d8e028893be 100644 --- a/arch/powerpc/kernel/ptrace.c +++ b/arch/powerpc/kernel/ptrace.c | |||
@@ -36,7 +36,7 @@ | |||
36 | #include <asm/uaccess.h> | 36 | #include <asm/uaccess.h> |
37 | #include <asm/page.h> | 37 | #include <asm/page.h> |
38 | #include <asm/pgtable.h> | 38 | #include <asm/pgtable.h> |
39 | #include <asm/system.h> | 39 | #include <asm/switch_to.h> |
40 | 40 | ||
41 | #define CREATE_TRACE_POINTS | 41 | #define CREATE_TRACE_POINTS |
42 | #include <trace/events/syscalls.h> | 42 | #include <trace/events/syscalls.h> |
diff --git a/arch/powerpc/kernel/ptrace32.c b/arch/powerpc/kernel/ptrace32.c index 69c4be917d07..469349d14a97 100644 --- a/arch/powerpc/kernel/ptrace32.c +++ b/arch/powerpc/kernel/ptrace32.c | |||
@@ -32,7 +32,7 @@ | |||
32 | #include <asm/uaccess.h> | 32 | #include <asm/uaccess.h> |
33 | #include <asm/page.h> | 33 | #include <asm/page.h> |
34 | #include <asm/pgtable.h> | 34 | #include <asm/pgtable.h> |
35 | #include <asm/system.h> | 35 | #include <asm/switch_to.h> |
36 | 36 | ||
37 | /* | 37 | /* |
38 | * does not yet catch signals sent when the child dies. | 38 | * does not yet catch signals sent when the child dies. |
diff --git a/arch/powerpc/kernel/rtas.c b/arch/powerpc/kernel/rtas.c index 4d1a7babe342..fcec38241f79 100644 --- a/arch/powerpc/kernel/rtas.c +++ b/arch/powerpc/kernel/rtas.c | |||
@@ -33,7 +33,6 @@ | |||
33 | #include <asm/firmware.h> | 33 | #include <asm/firmware.h> |
34 | #include <asm/page.h> | 34 | #include <asm/page.h> |
35 | #include <asm/param.h> | 35 | #include <asm/param.h> |
36 | #include <asm/system.h> | ||
37 | #include <asm/delay.h> | 36 | #include <asm/delay.h> |
38 | #include <asm/uaccess.h> | 37 | #include <asm/uaccess.h> |
39 | #include <asm/udbg.h> | 38 | #include <asm/udbg.h> |
diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c index b0ebdeab9494..afd4f051f3f2 100644 --- a/arch/powerpc/kernel/setup-common.c +++ b/arch/powerpc/kernel/setup-common.c | |||
@@ -51,7 +51,6 @@ | |||
51 | #include <asm/btext.h> | 51 | #include <asm/btext.h> |
52 | #include <asm/nvram.h> | 52 | #include <asm/nvram.h> |
53 | #include <asm/setup.h> | 53 | #include <asm/setup.h> |
54 | #include <asm/system.h> | ||
55 | #include <asm/rtas.h> | 54 | #include <asm/rtas.h> |
56 | #include <asm/iommu.h> | 55 | #include <asm/iommu.h> |
57 | #include <asm/serial.h> | 56 | #include <asm/serial.h> |
diff --git a/arch/powerpc/kernel/setup_32.c b/arch/powerpc/kernel/setup_32.c index ac7610815113..9825f29d1faf 100644 --- a/arch/powerpc/kernel/setup_32.c +++ b/arch/powerpc/kernel/setup_32.c | |||
@@ -30,7 +30,6 @@ | |||
30 | #include <asm/btext.h> | 30 | #include <asm/btext.h> |
31 | #include <asm/machdep.h> | 31 | #include <asm/machdep.h> |
32 | #include <asm/uaccess.h> | 32 | #include <asm/uaccess.h> |
33 | #include <asm/system.h> | ||
34 | #include <asm/pmac_feature.h> | 33 | #include <asm/pmac_feature.h> |
35 | #include <asm/sections.h> | 34 | #include <asm/sections.h> |
36 | #include <asm/nvram.h> | 35 | #include <asm/nvram.h> |
diff --git a/arch/powerpc/kernel/setup_64.c b/arch/powerpc/kernel/setup_64.c index 4721b0c8d7b7..389bd4f0cdb1 100644 --- a/arch/powerpc/kernel/setup_64.c +++ b/arch/powerpc/kernel/setup_64.c | |||
@@ -52,7 +52,6 @@ | |||
52 | #include <asm/btext.h> | 52 | #include <asm/btext.h> |
53 | #include <asm/nvram.h> | 53 | #include <asm/nvram.h> |
54 | #include <asm/setup.h> | 54 | #include <asm/setup.h> |
55 | #include <asm/system.h> | ||
56 | #include <asm/rtas.h> | 55 | #include <asm/rtas.h> |
57 | #include <asm/iommu.h> | 56 | #include <asm/iommu.h> |
58 | #include <asm/serial.h> | 57 | #include <asm/serial.h> |
diff --git a/arch/powerpc/kernel/signal.c b/arch/powerpc/kernel/signal.c index 7006b7f4267a..651c5963662b 100644 --- a/arch/powerpc/kernel/signal.c +++ b/arch/powerpc/kernel/signal.c | |||
@@ -15,6 +15,7 @@ | |||
15 | #include <asm/hw_breakpoint.h> | 15 | #include <asm/hw_breakpoint.h> |
16 | #include <asm/uaccess.h> | 16 | #include <asm/uaccess.h> |
17 | #include <asm/unistd.h> | 17 | #include <asm/unistd.h> |
18 | #include <asm/debug.h> | ||
18 | 19 | ||
19 | #include "signal.h" | 20 | #include "signal.h" |
20 | 21 | ||
diff --git a/arch/powerpc/kernel/signal_32.c b/arch/powerpc/kernel/signal_32.c index e061ef5dd449..45eb998557f8 100644 --- a/arch/powerpc/kernel/signal_32.c +++ b/arch/powerpc/kernel/signal_32.c | |||
@@ -43,6 +43,7 @@ | |||
43 | #include <asm/syscalls.h> | 43 | #include <asm/syscalls.h> |
44 | #include <asm/sigcontext.h> | 44 | #include <asm/sigcontext.h> |
45 | #include <asm/vdso.h> | 45 | #include <asm/vdso.h> |
46 | #include <asm/switch_to.h> | ||
46 | #ifdef CONFIG_PPC64 | 47 | #ifdef CONFIG_PPC64 |
47 | #include "ppc32.h" | 48 | #include "ppc32.h" |
48 | #include <asm/unistd.h> | 49 | #include <asm/unistd.h> |
diff --git a/arch/powerpc/kernel/signal_64.c b/arch/powerpc/kernel/signal_64.c index a50b5ec281dc..2692efdb154e 100644 --- a/arch/powerpc/kernel/signal_64.c +++ b/arch/powerpc/kernel/signal_64.c | |||
@@ -33,6 +33,7 @@ | |||
33 | #include <asm/cacheflush.h> | 33 | #include <asm/cacheflush.h> |
34 | #include <asm/syscalls.h> | 34 | #include <asm/syscalls.h> |
35 | #include <asm/vdso.h> | 35 | #include <asm/vdso.h> |
36 | #include <asm/switch_to.h> | ||
36 | 37 | ||
37 | #include "signal.h" | 38 | #include "signal.h" |
38 | 39 | ||
diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c index 46695febc09f..d9f94410fd7f 100644 --- a/arch/powerpc/kernel/smp.c +++ b/arch/powerpc/kernel/smp.c | |||
@@ -43,12 +43,12 @@ | |||
43 | #include <asm/machdep.h> | 43 | #include <asm/machdep.h> |
44 | #include <asm/cputhreads.h> | 44 | #include <asm/cputhreads.h> |
45 | #include <asm/cputable.h> | 45 | #include <asm/cputable.h> |
46 | #include <asm/system.h> | ||
47 | #include <asm/mpic.h> | 46 | #include <asm/mpic.h> |
48 | #include <asm/vdso_datapage.h> | 47 | #include <asm/vdso_datapage.h> |
49 | #ifdef CONFIG_PPC64 | 48 | #ifdef CONFIG_PPC64 |
50 | #include <asm/paca.h> | 49 | #include <asm/paca.h> |
51 | #endif | 50 | #endif |
51 | #include <asm/debug.h> | ||
52 | 52 | ||
53 | #ifdef DEBUG | 53 | #ifdef DEBUG |
54 | #include <asm/udbg.h> | 54 | #include <asm/udbg.h> |
diff --git a/arch/powerpc/kernel/softemu8xx.c b/arch/powerpc/kernel/softemu8xx.c index af0e8290b4fc..29b2f81dd709 100644 --- a/arch/powerpc/kernel/softemu8xx.c +++ b/arch/powerpc/kernel/softemu8xx.c | |||
@@ -26,7 +26,6 @@ | |||
26 | 26 | ||
27 | #include <asm/pgtable.h> | 27 | #include <asm/pgtable.h> |
28 | #include <asm/uaccess.h> | 28 | #include <asm/uaccess.h> |
29 | #include <asm/system.h> | ||
30 | #include <asm/io.h> | 29 | #include <asm/io.h> |
31 | 30 | ||
32 | /* Eventually we may need a look-up table, but this works for now. | 31 | /* Eventually we may need a look-up table, but this works for now. |
diff --git a/arch/powerpc/kernel/swsusp.c b/arch/powerpc/kernel/swsusp.c index 641f9adc6205..eae33e10b65f 100644 --- a/arch/powerpc/kernel/swsusp.c +++ b/arch/powerpc/kernel/swsusp.c | |||
@@ -10,9 +10,9 @@ | |||
10 | */ | 10 | */ |
11 | 11 | ||
12 | #include <linux/sched.h> | 12 | #include <linux/sched.h> |
13 | #include <asm/system.h> | ||
14 | #include <asm/current.h> | 13 | #include <asm/current.h> |
15 | #include <asm/mmu_context.h> | 14 | #include <asm/mmu_context.h> |
15 | #include <asm/switch_to.h> | ||
16 | 16 | ||
17 | void save_processor_state(void) | 17 | void save_processor_state(void) |
18 | { | 18 | { |
diff --git a/arch/powerpc/kernel/swsusp_64.c b/arch/powerpc/kernel/swsusp_64.c index 168e88480223..0e899e47c325 100644 --- a/arch/powerpc/kernel/swsusp_64.c +++ b/arch/powerpc/kernel/swsusp_64.c | |||
@@ -6,7 +6,6 @@ | |||
6 | * GPLv2 | 6 | * GPLv2 |
7 | */ | 7 | */ |
8 | 8 | ||
9 | #include <asm/system.h> | ||
10 | #include <asm/iommu.h> | 9 | #include <asm/iommu.h> |
11 | #include <linux/irq.h> | 10 | #include <linux/irq.h> |
12 | #include <linux/sched.h> | 11 | #include <linux/sched.h> |
diff --git a/arch/powerpc/kernel/sys_ppc32.c b/arch/powerpc/kernel/sys_ppc32.c index 4e5bf1edc0f2..81c570633ead 100644 --- a/arch/powerpc/kernel/sys_ppc32.c +++ b/arch/powerpc/kernel/sys_ppc32.c | |||
@@ -50,6 +50,7 @@ | |||
50 | #include <asm/mmu_context.h> | 50 | #include <asm/mmu_context.h> |
51 | #include <asm/ppc-pci.h> | 51 | #include <asm/ppc-pci.h> |
52 | #include <asm/syscalls.h> | 52 | #include <asm/syscalls.h> |
53 | #include <asm/switch_to.h> | ||
53 | 54 | ||
54 | 55 | ||
55 | asmlinkage long ppc32_select(u32 n, compat_ulong_t __user *inp, | 56 | asmlinkage long ppc32_select(u32 n, compat_ulong_t __user *inp, |
diff --git a/arch/powerpc/kernel/sysfs.c b/arch/powerpc/kernel/sysfs.c index 0c683d376b1c..3529446c2abd 100644 --- a/arch/powerpc/kernel/sysfs.c +++ b/arch/powerpc/kernel/sysfs.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <asm/machdep.h> | 17 | #include <asm/machdep.h> |
18 | #include <asm/smp.h> | 18 | #include <asm/smp.h> |
19 | #include <asm/pmc.h> | 19 | #include <asm/pmc.h> |
20 | #include <asm/system.h> | ||
21 | 20 | ||
22 | #include "cacheinfo.h" | 21 | #include "cacheinfo.h" |
23 | 22 | ||
diff --git a/arch/powerpc/kernel/traps.c b/arch/powerpc/kernel/traps.c index a750409ccc4e..6aa0c663e247 100644 --- a/arch/powerpc/kernel/traps.c +++ b/arch/powerpc/kernel/traps.c | |||
@@ -39,7 +39,6 @@ | |||
39 | #include <asm/emulated_ops.h> | 39 | #include <asm/emulated_ops.h> |
40 | #include <asm/pgtable.h> | 40 | #include <asm/pgtable.h> |
41 | #include <asm/uaccess.h> | 41 | #include <asm/uaccess.h> |
42 | #include <asm/system.h> | ||
43 | #include <asm/io.h> | 42 | #include <asm/io.h> |
44 | #include <asm/machdep.h> | 43 | #include <asm/machdep.h> |
45 | #include <asm/rtas.h> | 44 | #include <asm/rtas.h> |
@@ -58,6 +57,8 @@ | |||
58 | #include <asm/ppc-opcode.h> | 57 | #include <asm/ppc-opcode.h> |
59 | #include <asm/rio.h> | 58 | #include <asm/rio.h> |
60 | #include <asm/fadump.h> | 59 | #include <asm/fadump.h> |
60 | #include <asm/switch_to.h> | ||
61 | #include <asm/debug.h> | ||
61 | 62 | ||
62 | #if defined(CONFIG_DEBUGGER) || defined(CONFIG_KEXEC) | 63 | #if defined(CONFIG_DEBUGGER) || defined(CONFIG_KEXEC) |
63 | int (*__debugger)(struct pt_regs *regs) __read_mostly; | 64 | int (*__debugger)(struct pt_regs *regs) __read_mostly; |
diff --git a/arch/powerpc/kernel/vdso.c b/arch/powerpc/kernel/vdso.c index 972cca278f98..9eb5b9b536a7 100644 --- a/arch/powerpc/kernel/vdso.c +++ b/arch/powerpc/kernel/vdso.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include <linux/memblock.h> | 24 | #include <linux/memblock.h> |
25 | 25 | ||
26 | #include <asm/pgtable.h> | 26 | #include <asm/pgtable.h> |
27 | #include <asm/system.h> | ||
28 | #include <asm/processor.h> | 27 | #include <asm/processor.h> |
29 | #include <asm/mmu.h> | 28 | #include <asm/mmu.h> |
30 | #include <asm/mmu_context.h> | 29 | #include <asm/mmu_context.h> |
diff --git a/arch/powerpc/kvm/book3s_hv.c b/arch/powerpc/kvm/book3s_hv.c index d386b6198bc7..01294a5099dd 100644 --- a/arch/powerpc/kvm/book3s_hv.c +++ b/arch/powerpc/kvm/book3s_hv.c | |||
@@ -45,6 +45,7 @@ | |||
45 | #include <asm/cputhreads.h> | 45 | #include <asm/cputhreads.h> |
46 | #include <asm/page.h> | 46 | #include <asm/page.h> |
47 | #include <asm/hvcall.h> | 47 | #include <asm/hvcall.h> |
48 | #include <asm/switch_to.h> | ||
48 | #include <linux/gfp.h> | 49 | #include <linux/gfp.h> |
49 | #include <linux/vmalloc.h> | 50 | #include <linux/vmalloc.h> |
50 | #include <linux/highmem.h> | 51 | #include <linux/highmem.h> |
diff --git a/arch/powerpc/lib/alloc.c b/arch/powerpc/lib/alloc.c index 13b676c20d12..da22c84a8fed 100644 --- a/arch/powerpc/lib/alloc.c +++ b/arch/powerpc/lib/alloc.c | |||
@@ -3,8 +3,8 @@ | |||
3 | #include <linux/slab.h> | 3 | #include <linux/slab.h> |
4 | #include <linux/bootmem.h> | 4 | #include <linux/bootmem.h> |
5 | #include <linux/string.h> | 5 | #include <linux/string.h> |
6 | #include <asm/setup.h> | ||
6 | 7 | ||
7 | #include <asm/system.h> | ||
8 | 8 | ||
9 | void * __init_refok zalloc_maybe_bootmem(size_t size, gfp_t mask) | 9 | void * __init_refok zalloc_maybe_bootmem(size_t size, gfp_t mask) |
10 | { | 10 | { |
diff --git a/arch/powerpc/lib/copyuser_power7_vmx.c b/arch/powerpc/lib/copyuser_power7_vmx.c index 6e1efadac48b..bf2654f2b68e 100644 --- a/arch/powerpc/lib/copyuser_power7_vmx.c +++ b/arch/powerpc/lib/copyuser_power7_vmx.c | |||
@@ -20,6 +20,7 @@ | |||
20 | */ | 20 | */ |
21 | #include <linux/uaccess.h> | 21 | #include <linux/uaccess.h> |
22 | #include <linux/hardirq.h> | 22 | #include <linux/hardirq.h> |
23 | #include <asm/switch_to.h> | ||
23 | 24 | ||
24 | int enter_vmx_copy(void) | 25 | int enter_vmx_copy(void) |
25 | { | 26 | { |
diff --git a/arch/powerpc/mm/44x_mmu.c b/arch/powerpc/mm/44x_mmu.c index 388b95e1a009..2c9441ee6bb8 100644 --- a/arch/powerpc/mm/44x_mmu.c +++ b/arch/powerpc/mm/44x_mmu.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <linux/memblock.h> | 27 | #include <linux/memblock.h> |
28 | 28 | ||
29 | #include <asm/mmu.h> | 29 | #include <asm/mmu.h> |
30 | #include <asm/system.h> | ||
31 | #include <asm/page.h> | 30 | #include <asm/page.h> |
32 | #include <asm/cacheflush.h> | 31 | #include <asm/cacheflush.h> |
33 | 32 | ||
diff --git a/arch/powerpc/mm/fault.c b/arch/powerpc/mm/fault.c index 19f2f9498b27..08ffcf52a856 100644 --- a/arch/powerpc/mm/fault.c +++ b/arch/powerpc/mm/fault.c | |||
@@ -38,10 +38,10 @@ | |||
38 | #include <asm/pgtable.h> | 38 | #include <asm/pgtable.h> |
39 | #include <asm/mmu.h> | 39 | #include <asm/mmu.h> |
40 | #include <asm/mmu_context.h> | 40 | #include <asm/mmu_context.h> |
41 | #include <asm/system.h> | ||
42 | #include <asm/uaccess.h> | 41 | #include <asm/uaccess.h> |
43 | #include <asm/tlbflush.h> | 42 | #include <asm/tlbflush.h> |
44 | #include <asm/siginfo.h> | 43 | #include <asm/siginfo.h> |
44 | #include <asm/debug.h> | ||
45 | #include <mm/mmu_decl.h> | 45 | #include <mm/mmu_decl.h> |
46 | 46 | ||
47 | #include "icswx.h" | 47 | #include "icswx.h" |
diff --git a/arch/powerpc/mm/hash_utils_64.c b/arch/powerpc/mm/hash_utils_64.c index 3e8c37a4e395..377e5cbedbbb 100644 --- a/arch/powerpc/mm/hash_utils_64.c +++ b/arch/powerpc/mm/hash_utils_64.c | |||
@@ -40,7 +40,6 @@ | |||
40 | #include <asm/mmu_context.h> | 40 | #include <asm/mmu_context.h> |
41 | #include <asm/page.h> | 41 | #include <asm/page.h> |
42 | #include <asm/types.h> | 42 | #include <asm/types.h> |
43 | #include <asm/system.h> | ||
44 | #include <asm/uaccess.h> | 43 | #include <asm/uaccess.h> |
45 | #include <asm/machdep.h> | 44 | #include <asm/machdep.h> |
46 | #include <asm/prom.h> | 45 | #include <asm/prom.h> |
diff --git a/arch/powerpc/mm/init_32.c b/arch/powerpc/mm/init_32.c index 6157be2a7049..01e2db97a210 100644 --- a/arch/powerpc/mm/init_32.c +++ b/arch/powerpc/mm/init_32.c | |||
@@ -45,7 +45,6 @@ | |||
45 | #include <asm/btext.h> | 45 | #include <asm/btext.h> |
46 | #include <asm/tlb.h> | 46 | #include <asm/tlb.h> |
47 | #include <asm/sections.h> | 47 | #include <asm/sections.h> |
48 | #include <asm/system.h> | ||
49 | #include <asm/hugetlb.h> | 48 | #include <asm/hugetlb.h> |
50 | 49 | ||
51 | #include "mmu_decl.h" | 50 | #include "mmu_decl.h" |
diff --git a/arch/powerpc/mm/init_64.c b/arch/powerpc/mm/init_64.c index e94b57fb79a0..620b7acd2fdf 100644 --- a/arch/powerpc/mm/init_64.c +++ b/arch/powerpc/mm/init_64.c | |||
@@ -61,7 +61,6 @@ | |||
61 | #include <asm/mmzone.h> | 61 | #include <asm/mmzone.h> |
62 | #include <asm/cputable.h> | 62 | #include <asm/cputable.h> |
63 | #include <asm/sections.h> | 63 | #include <asm/sections.h> |
64 | #include <asm/system.h> | ||
65 | #include <asm/iommu.h> | 64 | #include <asm/iommu.h> |
66 | #include <asm/abs_addr.h> | 65 | #include <asm/abs_addr.h> |
67 | #include <asm/vdso.h> | 66 | #include <asm/vdso.h> |
diff --git a/arch/powerpc/mm/numa.c b/arch/powerpc/mm/numa.c index 3feefc3842a8..b6edbb3b4a54 100644 --- a/arch/powerpc/mm/numa.c +++ b/arch/powerpc/mm/numa.c | |||
@@ -24,11 +24,11 @@ | |||
24 | #include <linux/node.h> | 24 | #include <linux/node.h> |
25 | #include <asm/sparsemem.h> | 25 | #include <asm/sparsemem.h> |
26 | #include <asm/prom.h> | 26 | #include <asm/prom.h> |
27 | #include <asm/system.h> | ||
28 | #include <asm/smp.h> | 27 | #include <asm/smp.h> |
29 | #include <asm/firmware.h> | 28 | #include <asm/firmware.h> |
30 | #include <asm/paca.h> | 29 | #include <asm/paca.h> |
31 | #include <asm/hvcall.h> | 30 | #include <asm/hvcall.h> |
31 | #include <asm/setup.h> | ||
32 | 32 | ||
33 | static int numa_enabled = 1; | 33 | static int numa_enabled = 1; |
34 | 34 | ||
diff --git a/arch/powerpc/mm/pgtable_32.c b/arch/powerpc/mm/pgtable_32.c index 0907f92ce309..6c856fb8c15b 100644 --- a/arch/powerpc/mm/pgtable_32.c +++ b/arch/powerpc/mm/pgtable_32.c | |||
@@ -33,6 +33,7 @@ | |||
33 | #include <asm/pgalloc.h> | 33 | #include <asm/pgalloc.h> |
34 | #include <asm/fixmap.h> | 34 | #include <asm/fixmap.h> |
35 | #include <asm/io.h> | 35 | #include <asm/io.h> |
36 | #include <asm/setup.h> | ||
36 | 37 | ||
37 | #include "mmu_decl.h" | 38 | #include "mmu_decl.h" |
38 | 39 | ||
diff --git a/arch/powerpc/mm/pgtable_64.c b/arch/powerpc/mm/pgtable_64.c index ad36ede469cc..249a0631c4db 100644 --- a/arch/powerpc/mm/pgtable_64.c +++ b/arch/powerpc/mm/pgtable_64.c | |||
@@ -51,7 +51,6 @@ | |||
51 | #include <asm/processor.h> | 51 | #include <asm/processor.h> |
52 | #include <asm/cputable.h> | 52 | #include <asm/cputable.h> |
53 | #include <asm/sections.h> | 53 | #include <asm/sections.h> |
54 | #include <asm/system.h> | ||
55 | #include <asm/abs_addr.h> | 54 | #include <asm/abs_addr.h> |
56 | #include <asm/firmware.h> | 55 | #include <asm/firmware.h> |
57 | 56 | ||
diff --git a/arch/powerpc/oprofile/common.c b/arch/powerpc/oprofile/common.c index 6f01624f317f..4f51025f5b00 100644 --- a/arch/powerpc/oprofile/common.c +++ b/arch/powerpc/oprofile/common.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <linux/smp.h> | 18 | #include <linux/smp.h> |
19 | #include <linux/errno.h> | 19 | #include <linux/errno.h> |
20 | #include <asm/ptrace.h> | 20 | #include <asm/ptrace.h> |
21 | #include <asm/system.h> | ||
22 | #include <asm/pmc.h> | 21 | #include <asm/pmc.h> |
23 | #include <asm/cputable.h> | 22 | #include <asm/cputable.h> |
24 | #include <asm/oprofile_impl.h> | 23 | #include <asm/oprofile_impl.h> |
diff --git a/arch/powerpc/oprofile/op_model_7450.c b/arch/powerpc/oprofile/op_model_7450.c index f8d36f940e88..ff617246d128 100644 --- a/arch/powerpc/oprofile/op_model_7450.c +++ b/arch/powerpc/oprofile/op_model_7450.c | |||
@@ -19,7 +19,6 @@ | |||
19 | #include <linux/init.h> | 19 | #include <linux/init.h> |
20 | #include <linux/smp.h> | 20 | #include <linux/smp.h> |
21 | #include <asm/ptrace.h> | 21 | #include <asm/ptrace.h> |
22 | #include <asm/system.h> | ||
23 | #include <asm/processor.h> | 22 | #include <asm/processor.h> |
24 | #include <asm/cputable.h> | 23 | #include <asm/cputable.h> |
25 | #include <asm/page.h> | 24 | #include <asm/page.h> |
diff --git a/arch/powerpc/oprofile/op_model_cell.c b/arch/powerpc/oprofile/op_model_cell.c index cb515cff745c..b9589c19ccda 100644 --- a/arch/powerpc/oprofile/op_model_cell.c +++ b/arch/powerpc/oprofile/op_model_cell.c | |||
@@ -34,7 +34,6 @@ | |||
34 | #include <asm/ptrace.h> | 34 | #include <asm/ptrace.h> |
35 | #include <asm/reg.h> | 35 | #include <asm/reg.h> |
36 | #include <asm/rtas.h> | 36 | #include <asm/rtas.h> |
37 | #include <asm/system.h> | ||
38 | #include <asm/cell-regs.h> | 37 | #include <asm/cell-regs.h> |
39 | 38 | ||
40 | #include "../platforms/cell/interrupt.h" | 39 | #include "../platforms/cell/interrupt.h" |
diff --git a/arch/powerpc/oprofile/op_model_fsl_emb.c b/arch/powerpc/oprofile/op_model_fsl_emb.c index d4e6507277b5..ccc1daa33aed 100644 --- a/arch/powerpc/oprofile/op_model_fsl_emb.c +++ b/arch/powerpc/oprofile/op_model_fsl_emb.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
18 | #include <linux/smp.h> | 18 | #include <linux/smp.h> |
19 | #include <asm/ptrace.h> | 19 | #include <asm/ptrace.h> |
20 | #include <asm/system.h> | ||
21 | #include <asm/processor.h> | 20 | #include <asm/processor.h> |
22 | #include <asm/cputable.h> | 21 | #include <asm/cputable.h> |
23 | #include <asm/reg_fsl_emb.h> | 22 | #include <asm/reg_fsl_emb.h> |
diff --git a/arch/powerpc/oprofile/op_model_power4.c b/arch/powerpc/oprofile/op_model_power4.c index e6bec74be131..95ae77dec3f6 100644 --- a/arch/powerpc/oprofile/op_model_power4.c +++ b/arch/powerpc/oprofile/op_model_power4.c | |||
@@ -14,7 +14,6 @@ | |||
14 | #include <linux/smp.h> | 14 | #include <linux/smp.h> |
15 | #include <asm/firmware.h> | 15 | #include <asm/firmware.h> |
16 | #include <asm/ptrace.h> | 16 | #include <asm/ptrace.h> |
17 | #include <asm/system.h> | ||
18 | #include <asm/processor.h> | 17 | #include <asm/processor.h> |
19 | #include <asm/cputable.h> | 18 | #include <asm/cputable.h> |
20 | #include <asm/rtas.h> | 19 | #include <asm/rtas.h> |
diff --git a/arch/powerpc/oprofile/op_model_rs64.c b/arch/powerpc/oprofile/op_model_rs64.c index a20afe45d936..9b801b8c8c5a 100644 --- a/arch/powerpc/oprofile/op_model_rs64.c +++ b/arch/powerpc/oprofile/op_model_rs64.c | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <linux/init.h> | 11 | #include <linux/init.h> |
12 | #include <linux/smp.h> | 12 | #include <linux/smp.h> |
13 | #include <asm/ptrace.h> | 13 | #include <asm/ptrace.h> |
14 | #include <asm/system.h> | ||
15 | #include <asm/processor.h> | 14 | #include <asm/processor.h> |
16 | #include <asm/cputable.h> | 15 | #include <asm/cputable.h> |
17 | #include <asm/oprofile_impl.h> | 16 | #include <asm/oprofile_impl.h> |
diff --git a/arch/powerpc/platforms/52xx/lite5200_pm.c b/arch/powerpc/platforms/52xx/lite5200_pm.c index eda0fc2a3914..870b70f5d1bd 100644 --- a/arch/powerpc/platforms/52xx/lite5200_pm.c +++ b/arch/powerpc/platforms/52xx/lite5200_pm.c | |||
@@ -3,6 +3,7 @@ | |||
3 | #include <asm/io.h> | 3 | #include <asm/io.h> |
4 | #include <asm/time.h> | 4 | #include <asm/time.h> |
5 | #include <asm/mpc52xx.h> | 5 | #include <asm/mpc52xx.h> |
6 | #include <asm/switch_to.h> | ||
6 | 7 | ||
7 | /* defined in lite5200_sleep.S and only used here */ | 8 | /* defined in lite5200_sleep.S and only used here */ |
8 | extern void lite5200_low_power(void __iomem *sram, void __iomem *mbar); | 9 | extern void lite5200_low_power(void __iomem *sram, void __iomem *mbar); |
diff --git a/arch/powerpc/platforms/82xx/pq2.c b/arch/powerpc/platforms/82xx/pq2.c index d111b024eafd..fb94d10e5a4d 100644 --- a/arch/powerpc/platforms/82xx/pq2.c +++ b/arch/powerpc/platforms/82xx/pq2.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <asm/cpm2.h> | 17 | #include <asm/cpm2.h> |
18 | #include <asm/io.h> | 18 | #include <asm/io.h> |
19 | #include <asm/pci-bridge.h> | 19 | #include <asm/pci-bridge.h> |
20 | #include <asm/system.h> | ||
21 | 20 | ||
22 | #include <platforms/82xx/pq2.h> | 21 | #include <platforms/82xx/pq2.h> |
23 | 22 | ||
diff --git a/arch/powerpc/platforms/83xx/km83xx.c b/arch/powerpc/platforms/83xx/km83xx.c index 65eb792a0d00..a266ba876863 100644 --- a/arch/powerpc/platforms/83xx/km83xx.c +++ b/arch/powerpc/platforms/83xx/km83xx.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <linux/of_platform.h> | 27 | #include <linux/of_platform.h> |
28 | #include <linux/of_device.h> | 28 | #include <linux/of_device.h> |
29 | 29 | ||
30 | #include <asm/system.h> | ||
31 | #include <linux/atomic.h> | 30 | #include <linux/atomic.h> |
32 | #include <asm/time.h> | 31 | #include <asm/time.h> |
33 | #include <asm/io.h> | 32 | #include <asm/io.h> |
diff --git a/arch/powerpc/platforms/83xx/mpc832x_mds.c b/arch/powerpc/platforms/83xx/mpc832x_mds.c index e36bc611dd6e..d440435e055c 100644 --- a/arch/powerpc/platforms/83xx/mpc832x_mds.c +++ b/arch/powerpc/platforms/83xx/mpc832x_mds.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include <linux/of_platform.h> | 26 | #include <linux/of_platform.h> |
27 | #include <linux/of_device.h> | 27 | #include <linux/of_device.h> |
28 | 28 | ||
29 | #include <asm/system.h> | ||
30 | #include <linux/atomic.h> | 29 | #include <linux/atomic.h> |
31 | #include <asm/time.h> | 30 | #include <asm/time.h> |
32 | #include <asm/io.h> | 31 | #include <asm/io.h> |
diff --git a/arch/powerpc/platforms/83xx/mpc834x_itx.c b/arch/powerpc/platforms/83xx/mpc834x_itx.c index 39849dd1b5bb..a494fa57bdf9 100644 --- a/arch/powerpc/platforms/83xx/mpc834x_itx.c +++ b/arch/powerpc/platforms/83xx/mpc834x_itx.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include <linux/root_dev.h> | 25 | #include <linux/root_dev.h> |
26 | #include <linux/of_platform.h> | 26 | #include <linux/of_platform.h> |
27 | 27 | ||
28 | #include <asm/system.h> | ||
29 | #include <linux/atomic.h> | 28 | #include <linux/atomic.h> |
30 | #include <asm/time.h> | 29 | #include <asm/time.h> |
31 | #include <asm/io.h> | 30 | #include <asm/io.h> |
diff --git a/arch/powerpc/platforms/83xx/mpc834x_mds.c b/arch/powerpc/platforms/83xx/mpc834x_mds.c index 5828d8e97c37..553e793a4a93 100644 --- a/arch/powerpc/platforms/83xx/mpc834x_mds.c +++ b/arch/powerpc/platforms/83xx/mpc834x_mds.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include <linux/root_dev.h> | 25 | #include <linux/root_dev.h> |
26 | #include <linux/of_platform.h> | 26 | #include <linux/of_platform.h> |
27 | 27 | ||
28 | #include <asm/system.h> | ||
29 | #include <linux/atomic.h> | 28 | #include <linux/atomic.h> |
30 | #include <asm/time.h> | 29 | #include <asm/time.h> |
31 | #include <asm/io.h> | 30 | #include <asm/io.h> |
diff --git a/arch/powerpc/platforms/83xx/mpc836x_mds.c b/arch/powerpc/platforms/83xx/mpc836x_mds.c index ad8e4bcd7d55..1b1f6c8a1a12 100644 --- a/arch/powerpc/platforms/83xx/mpc836x_mds.c +++ b/arch/powerpc/platforms/83xx/mpc836x_mds.c | |||
@@ -33,7 +33,6 @@ | |||
33 | #include <linux/of_platform.h> | 33 | #include <linux/of_platform.h> |
34 | #include <linux/of_device.h> | 34 | #include <linux/of_device.h> |
35 | 35 | ||
36 | #include <asm/system.h> | ||
37 | #include <linux/atomic.h> | 36 | #include <linux/atomic.h> |
38 | #include <asm/time.h> | 37 | #include <asm/time.h> |
39 | #include <asm/io.h> | 38 | #include <asm/io.h> |
diff --git a/arch/powerpc/platforms/83xx/sbc834x.c b/arch/powerpc/platforms/83xx/sbc834x.c index 8a81d7640b1f..26cb3e934722 100644 --- a/arch/powerpc/platforms/83xx/sbc834x.c +++ b/arch/powerpc/platforms/83xx/sbc834x.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <linux/root_dev.h> | 27 | #include <linux/root_dev.h> |
28 | #include <linux/of_platform.h> | 28 | #include <linux/of_platform.h> |
29 | 29 | ||
30 | #include <asm/system.h> | ||
31 | #include <linux/atomic.h> | 30 | #include <linux/atomic.h> |
32 | #include <asm/time.h> | 31 | #include <asm/time.h> |
33 | #include <asm/io.h> | 32 | #include <asm/io.h> |
diff --git a/arch/powerpc/platforms/83xx/suspend.c b/arch/powerpc/platforms/83xx/suspend.c index edf66870d978..1a046715e461 100644 --- a/arch/powerpc/platforms/83xx/suspend.c +++ b/arch/powerpc/platforms/83xx/suspend.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <asm/io.h> | 27 | #include <asm/io.h> |
28 | #include <asm/time.h> | 28 | #include <asm/time.h> |
29 | #include <asm/mpc6xx.h> | 29 | #include <asm/mpc6xx.h> |
30 | #include <asm/switch_to.h> | ||
30 | 31 | ||
31 | #include <sysdev/fsl_soc.h> | 32 | #include <sysdev/fsl_soc.h> |
32 | 33 | ||
diff --git a/arch/powerpc/platforms/85xx/corenet_ds.c b/arch/powerpc/platforms/85xx/corenet_ds.c index df69e99e511c..dd3617c531d7 100644 --- a/arch/powerpc/platforms/85xx/corenet_ds.c +++ b/arch/powerpc/platforms/85xx/corenet_ds.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <linux/interrupt.h> | 18 | #include <linux/interrupt.h> |
19 | #include <linux/memblock.h> | 19 | #include <linux/memblock.h> |
20 | 20 | ||
21 | #include <asm/system.h> | ||
22 | #include <asm/time.h> | 21 | #include <asm/time.h> |
23 | #include <asm/machdep.h> | 22 | #include <asm/machdep.h> |
24 | #include <asm/pci-bridge.h> | 23 | #include <asm/pci-bridge.h> |
diff --git a/arch/powerpc/platforms/85xx/ge_imp3a.c b/arch/powerpc/platforms/85xx/ge_imp3a.c index d50056f424f6..18014629416d 100644 --- a/arch/powerpc/platforms/85xx/ge_imp3a.c +++ b/arch/powerpc/platforms/85xx/ge_imp3a.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include <linux/of_platform.h> | 24 | #include <linux/of_platform.h> |
25 | #include <linux/memblock.h> | 25 | #include <linux/memblock.h> |
26 | 26 | ||
27 | #include <asm/system.h> | ||
28 | #include <asm/time.h> | 27 | #include <asm/time.h> |
29 | #include <asm/machdep.h> | 28 | #include <asm/machdep.h> |
30 | #include <asm/pci-bridge.h> | 29 | #include <asm/pci-bridge.h> |
diff --git a/arch/powerpc/platforms/85xx/ksi8560.c b/arch/powerpc/platforms/85xx/ksi8560.c index 60120e55da41..3dc1bda3ddc3 100644 --- a/arch/powerpc/platforms/85xx/ksi8560.c +++ b/arch/powerpc/platforms/85xx/ksi8560.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include <linux/seq_file.h> | 20 | #include <linux/seq_file.h> |
21 | #include <linux/of_platform.h> | 21 | #include <linux/of_platform.h> |
22 | 22 | ||
23 | #include <asm/system.h> | ||
24 | #include <asm/time.h> | 23 | #include <asm/time.h> |
25 | #include <asm/machdep.h> | 24 | #include <asm/machdep.h> |
26 | #include <asm/pci-bridge.h> | 25 | #include <asm/pci-bridge.h> |
diff --git a/arch/powerpc/platforms/85xx/mpc8536_ds.c b/arch/powerpc/platforms/85xx/mpc8536_ds.c index f58872688d8f..585bd22b1406 100644 --- a/arch/powerpc/platforms/85xx/mpc8536_ds.c +++ b/arch/powerpc/platforms/85xx/mpc8536_ds.c | |||
@@ -19,7 +19,6 @@ | |||
19 | #include <linux/of_platform.h> | 19 | #include <linux/of_platform.h> |
20 | #include <linux/memblock.h> | 20 | #include <linux/memblock.h> |
21 | 21 | ||
22 | #include <asm/system.h> | ||
23 | #include <asm/time.h> | 22 | #include <asm/time.h> |
24 | #include <asm/machdep.h> | 23 | #include <asm/machdep.h> |
25 | #include <asm/pci-bridge.h> | 24 | #include <asm/pci-bridge.h> |
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ads.c b/arch/powerpc/platforms/85xx/mpc85xx_ads.c index d19f675cb369..29ee8fcd75a2 100644 --- a/arch/powerpc/platforms/85xx/mpc85xx_ads.c +++ b/arch/powerpc/platforms/85xx/mpc85xx_ads.c | |||
@@ -19,7 +19,6 @@ | |||
19 | #include <linux/seq_file.h> | 19 | #include <linux/seq_file.h> |
20 | #include <linux/of_platform.h> | 20 | #include <linux/of_platform.h> |
21 | 21 | ||
22 | #include <asm/system.h> | ||
23 | #include <asm/time.h> | 22 | #include <asm/time.h> |
24 | #include <asm/machdep.h> | 23 | #include <asm/machdep.h> |
25 | #include <asm/pci-bridge.h> | 24 | #include <asm/pci-bridge.h> |
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_cds.c b/arch/powerpc/platforms/85xx/mpc85xx_cds.c index ab5f0bf19454..11156fb53d83 100644 --- a/arch/powerpc/platforms/85xx/mpc85xx_cds.c +++ b/arch/powerpc/platforms/85xx/mpc85xx_cds.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <linux/fsl_devices.h> | 27 | #include <linux/fsl_devices.h> |
28 | #include <linux/of_platform.h> | 28 | #include <linux/of_platform.h> |
29 | 29 | ||
30 | #include <asm/system.h> | ||
31 | #include <asm/pgtable.h> | 30 | #include <asm/pgtable.h> |
32 | #include <asm/page.h> | 31 | #include <asm/page.h> |
33 | #include <linux/atomic.h> | 32 | #include <linux/atomic.h> |
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_ds.c b/arch/powerpc/platforms/85xx/mpc85xx_ds.c index 6e23e3e34bd9..1fd91e9e0ffb 100644 --- a/arch/powerpc/platforms/85xx/mpc85xx_ds.c +++ b/arch/powerpc/platforms/85xx/mpc85xx_ds.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <linux/of_platform.h> | 22 | #include <linux/of_platform.h> |
23 | #include <linux/memblock.h> | 23 | #include <linux/memblock.h> |
24 | 24 | ||
25 | #include <asm/system.h> | ||
26 | #include <asm/time.h> | 25 | #include <asm/time.h> |
27 | #include <asm/machdep.h> | 26 | #include <asm/machdep.h> |
28 | #include <asm/pci-bridge.h> | 27 | #include <asm/pci-bridge.h> |
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_mds.c b/arch/powerpc/platforms/85xx/mpc85xx_mds.c index f33662b46b8d..3754ddc00af7 100644 --- a/arch/powerpc/platforms/85xx/mpc85xx_mds.c +++ b/arch/powerpc/platforms/85xx/mpc85xx_mds.c | |||
@@ -35,7 +35,6 @@ | |||
35 | #include <linux/phy.h> | 35 | #include <linux/phy.h> |
36 | #include <linux/memblock.h> | 36 | #include <linux/memblock.h> |
37 | 37 | ||
38 | #include <asm/system.h> | ||
39 | #include <linux/atomic.h> | 38 | #include <linux/atomic.h> |
40 | #include <asm/time.h> | 39 | #include <asm/time.h> |
41 | #include <asm/io.h> | 40 | #include <asm/io.h> |
diff --git a/arch/powerpc/platforms/85xx/mpc85xx_rdb.c b/arch/powerpc/platforms/85xx/mpc85xx_rdb.c index db214cd4c822..9848f9e39853 100644 --- a/arch/powerpc/platforms/85xx/mpc85xx_rdb.c +++ b/arch/powerpc/platforms/85xx/mpc85xx_rdb.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <linux/interrupt.h> | 18 | #include <linux/interrupt.h> |
19 | #include <linux/of_platform.h> | 19 | #include <linux/of_platform.h> |
20 | 20 | ||
21 | #include <asm/system.h> | ||
22 | #include <asm/time.h> | 21 | #include <asm/time.h> |
23 | #include <asm/machdep.h> | 22 | #include <asm/machdep.h> |
24 | #include <asm/pci-bridge.h> | 23 | #include <asm/pci-bridge.h> |
diff --git a/arch/powerpc/platforms/85xx/p1010rdb.c b/arch/powerpc/platforms/85xx/p1010rdb.c index d8bd6563d9ca..dbaf44354f0d 100644 --- a/arch/powerpc/platforms/85xx/p1010rdb.c +++ b/arch/powerpc/platforms/85xx/p1010rdb.c | |||
@@ -16,7 +16,6 @@ | |||
16 | #include <linux/interrupt.h> | 16 | #include <linux/interrupt.h> |
17 | #include <linux/of_platform.h> | 17 | #include <linux/of_platform.h> |
18 | 18 | ||
19 | #include <asm/system.h> | ||
20 | #include <asm/time.h> | 19 | #include <asm/time.h> |
21 | #include <asm/machdep.h> | 20 | #include <asm/machdep.h> |
22 | #include <asm/pci-bridge.h> | 21 | #include <asm/pci-bridge.h> |
diff --git a/arch/powerpc/platforms/85xx/p1023_rds.c b/arch/powerpc/platforms/85xx/p1023_rds.c index 6b07398e4369..2990e8b13dc9 100644 --- a/arch/powerpc/platforms/85xx/p1023_rds.c +++ b/arch/powerpc/platforms/85xx/p1023_rds.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <linux/of_platform.h> | 22 | #include <linux/of_platform.h> |
23 | #include <linux/of_device.h> | 23 | #include <linux/of_device.h> |
24 | 24 | ||
25 | #include <asm/system.h> | ||
26 | #include <asm/time.h> | 25 | #include <asm/time.h> |
27 | #include <asm/machdep.h> | 26 | #include <asm/machdep.h> |
28 | #include <asm/pci-bridge.h> | 27 | #include <asm/pci-bridge.h> |
diff --git a/arch/powerpc/platforms/85xx/p2041_rdb.c b/arch/powerpc/platforms/85xx/p2041_rdb.c index eda6ed5683e1..6541fa2630c0 100644 --- a/arch/powerpc/platforms/85xx/p2041_rdb.c +++ b/arch/powerpc/platforms/85xx/p2041_rdb.c | |||
@@ -16,7 +16,6 @@ | |||
16 | #include <linux/interrupt.h> | 16 | #include <linux/interrupt.h> |
17 | #include <linux/phy.h> | 17 | #include <linux/phy.h> |
18 | 18 | ||
19 | #include <asm/system.h> | ||
20 | #include <asm/time.h> | 19 | #include <asm/time.h> |
21 | #include <asm/machdep.h> | 20 | #include <asm/machdep.h> |
22 | #include <asm/pci-bridge.h> | 21 | #include <asm/pci-bridge.h> |
diff --git a/arch/powerpc/platforms/85xx/p3041_ds.c b/arch/powerpc/platforms/85xx/p3041_ds.c index 96d99a374dcf..f238efa75891 100644 --- a/arch/powerpc/platforms/85xx/p3041_ds.c +++ b/arch/powerpc/platforms/85xx/p3041_ds.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <linux/interrupt.h> | 18 | #include <linux/interrupt.h> |
19 | #include <linux/phy.h> | 19 | #include <linux/phy.h> |
20 | 20 | ||
21 | #include <asm/system.h> | ||
22 | #include <asm/time.h> | 21 | #include <asm/time.h> |
23 | #include <asm/machdep.h> | 22 | #include <asm/machdep.h> |
24 | #include <asm/pci-bridge.h> | 23 | #include <asm/pci-bridge.h> |
diff --git a/arch/powerpc/platforms/85xx/p4080_ds.c b/arch/powerpc/platforms/85xx/p4080_ds.c index d1b21d7663e3..c92417dc6574 100644 --- a/arch/powerpc/platforms/85xx/p4080_ds.c +++ b/arch/powerpc/platforms/85xx/p4080_ds.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <linux/delay.h> | 17 | #include <linux/delay.h> |
18 | #include <linux/interrupt.h> | 18 | #include <linux/interrupt.h> |
19 | 19 | ||
20 | #include <asm/system.h> | ||
21 | #include <asm/time.h> | 20 | #include <asm/time.h> |
22 | #include <asm/machdep.h> | 21 | #include <asm/machdep.h> |
23 | #include <asm/pci-bridge.h> | 22 | #include <asm/pci-bridge.h> |
diff --git a/arch/powerpc/platforms/85xx/p5020_ds.c b/arch/powerpc/platforms/85xx/p5020_ds.c index e8cba5004fd8..17bef15a85ed 100644 --- a/arch/powerpc/platforms/85xx/p5020_ds.c +++ b/arch/powerpc/platforms/85xx/p5020_ds.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <linux/interrupt.h> | 18 | #include <linux/interrupt.h> |
19 | #include <linux/phy.h> | 19 | #include <linux/phy.h> |
20 | 20 | ||
21 | #include <asm/system.h> | ||
22 | #include <asm/time.h> | 21 | #include <asm/time.h> |
23 | #include <asm/machdep.h> | 22 | #include <asm/machdep.h> |
24 | #include <asm/pci-bridge.h> | 23 | #include <asm/pci-bridge.h> |
diff --git a/arch/powerpc/platforms/85xx/sbc8548.c b/arch/powerpc/platforms/85xx/sbc8548.c index 1677b8a22677..cd3a66bdb54b 100644 --- a/arch/powerpc/platforms/85xx/sbc8548.c +++ b/arch/powerpc/platforms/85xx/sbc8548.c | |||
@@ -30,7 +30,6 @@ | |||
30 | #include <linux/fsl_devices.h> | 30 | #include <linux/fsl_devices.h> |
31 | #include <linux/of_platform.h> | 31 | #include <linux/of_platform.h> |
32 | 32 | ||
33 | #include <asm/system.h> | ||
34 | #include <asm/pgtable.h> | 33 | #include <asm/pgtable.h> |
35 | #include <asm/page.h> | 34 | #include <asm/page.h> |
36 | #include <linux/atomic.h> | 35 | #include <linux/atomic.h> |
diff --git a/arch/powerpc/platforms/85xx/sbc8560.c b/arch/powerpc/platforms/85xx/sbc8560.c index 3c3bbcc27566..b1be632ede43 100644 --- a/arch/powerpc/platforms/85xx/sbc8560.c +++ b/arch/powerpc/platforms/85xx/sbc8560.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <linux/seq_file.h> | 21 | #include <linux/seq_file.h> |
22 | #include <linux/of_platform.h> | 22 | #include <linux/of_platform.h> |
23 | 23 | ||
24 | #include <asm/system.h> | ||
25 | #include <asm/time.h> | 24 | #include <asm/time.h> |
26 | #include <asm/machdep.h> | 25 | #include <asm/machdep.h> |
27 | #include <asm/pci-bridge.h> | 26 | #include <asm/pci-bridge.h> |
diff --git a/arch/powerpc/platforms/85xx/socrates.c b/arch/powerpc/platforms/85xx/socrates.c index b71919217756..b9c6daa07b66 100644 --- a/arch/powerpc/platforms/85xx/socrates.c +++ b/arch/powerpc/platforms/85xx/socrates.c | |||
@@ -29,7 +29,6 @@ | |||
29 | #include <linux/seq_file.h> | 29 | #include <linux/seq_file.h> |
30 | #include <linux/of_platform.h> | 30 | #include <linux/of_platform.h> |
31 | 31 | ||
32 | #include <asm/system.h> | ||
33 | #include <asm/time.h> | 32 | #include <asm/time.h> |
34 | #include <asm/machdep.h> | 33 | #include <asm/machdep.h> |
35 | #include <asm/pci-bridge.h> | 34 | #include <asm/pci-bridge.h> |
diff --git a/arch/powerpc/platforms/85xx/stx_gp3.c b/arch/powerpc/platforms/85xx/stx_gp3.c index 27ca3a7b04ab..e0508002b086 100644 --- a/arch/powerpc/platforms/85xx/stx_gp3.c +++ b/arch/powerpc/platforms/85xx/stx_gp3.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <linux/seq_file.h> | 28 | #include <linux/seq_file.h> |
29 | #include <linux/of_platform.h> | 29 | #include <linux/of_platform.h> |
30 | 30 | ||
31 | #include <asm/system.h> | ||
32 | #include <asm/time.h> | 31 | #include <asm/time.h> |
33 | #include <asm/machdep.h> | 32 | #include <asm/machdep.h> |
34 | #include <asm/pci-bridge.h> | 33 | #include <asm/pci-bridge.h> |
diff --git a/arch/powerpc/platforms/85xx/tqm85xx.c b/arch/powerpc/platforms/85xx/tqm85xx.c index d7504cefe016..4d786c25d3e5 100644 --- a/arch/powerpc/platforms/85xx/tqm85xx.c +++ b/arch/powerpc/platforms/85xx/tqm85xx.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include <linux/seq_file.h> | 26 | #include <linux/seq_file.h> |
27 | #include <linux/of_platform.h> | 27 | #include <linux/of_platform.h> |
28 | 28 | ||
29 | #include <asm/system.h> | ||
30 | #include <asm/time.h> | 29 | #include <asm/time.h> |
31 | #include <asm/machdep.h> | 30 | #include <asm/machdep.h> |
32 | #include <asm/pci-bridge.h> | 31 | #include <asm/pci-bridge.h> |
diff --git a/arch/powerpc/platforms/85xx/xes_mpc85xx.c b/arch/powerpc/platforms/85xx/xes_mpc85xx.c index 503c21596c63..41c687550ea7 100644 --- a/arch/powerpc/platforms/85xx/xes_mpc85xx.c +++ b/arch/powerpc/platforms/85xx/xes_mpc85xx.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <linux/interrupt.h> | 21 | #include <linux/interrupt.h> |
22 | #include <linux/of_platform.h> | 22 | #include <linux/of_platform.h> |
23 | 23 | ||
24 | #include <asm/system.h> | ||
25 | #include <asm/time.h> | 24 | #include <asm/time.h> |
26 | #include <asm/machdep.h> | 25 | #include <asm/machdep.h> |
27 | #include <asm/pci-bridge.h> | 26 | #include <asm/pci-bridge.h> |
diff --git a/arch/powerpc/platforms/86xx/gef_ppc9a.c b/arch/powerpc/platforms/86xx/gef_ppc9a.c index ed58b6cfd60c..1fca663f1b25 100644 --- a/arch/powerpc/platforms/86xx/gef_ppc9a.c +++ b/arch/powerpc/platforms/86xx/gef_ppc9a.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include <linux/seq_file.h> | 24 | #include <linux/seq_file.h> |
25 | #include <linux/of_platform.h> | 25 | #include <linux/of_platform.h> |
26 | 26 | ||
27 | #include <asm/system.h> | ||
28 | #include <asm/time.h> | 27 | #include <asm/time.h> |
29 | #include <asm/machdep.h> | 28 | #include <asm/machdep.h> |
30 | #include <asm/pci-bridge.h> | 29 | #include <asm/pci-bridge.h> |
diff --git a/arch/powerpc/platforms/86xx/gef_sbc310.c b/arch/powerpc/platforms/86xx/gef_sbc310.c index 710db69bd523..14e0e576bcbd 100644 --- a/arch/powerpc/platforms/86xx/gef_sbc310.c +++ b/arch/powerpc/platforms/86xx/gef_sbc310.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include <linux/seq_file.h> | 24 | #include <linux/seq_file.h> |
25 | #include <linux/of_platform.h> | 25 | #include <linux/of_platform.h> |
26 | 26 | ||
27 | #include <asm/system.h> | ||
28 | #include <asm/time.h> | 27 | #include <asm/time.h> |
29 | #include <asm/machdep.h> | 28 | #include <asm/machdep.h> |
30 | #include <asm/pci-bridge.h> | 29 | #include <asm/pci-bridge.h> |
diff --git a/arch/powerpc/platforms/86xx/gef_sbc610.c b/arch/powerpc/platforms/86xx/gef_sbc610.c index 4a13d2f4ac20..1638f43599f0 100644 --- a/arch/powerpc/platforms/86xx/gef_sbc610.c +++ b/arch/powerpc/platforms/86xx/gef_sbc610.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include <linux/seq_file.h> | 24 | #include <linux/seq_file.h> |
25 | #include <linux/of_platform.h> | 25 | #include <linux/of_platform.h> |
26 | 26 | ||
27 | #include <asm/system.h> | ||
28 | #include <asm/time.h> | 27 | #include <asm/time.h> |
29 | #include <asm/machdep.h> | 28 | #include <asm/machdep.h> |
30 | #include <asm/pci-bridge.h> | 29 | #include <asm/pci-bridge.h> |
diff --git a/arch/powerpc/platforms/86xx/mpc8610_hpcd.c b/arch/powerpc/platforms/86xx/mpc8610_hpcd.c index 13fa9a6403e6..bbc615206c67 100644 --- a/arch/powerpc/platforms/86xx/mpc8610_hpcd.c +++ b/arch/powerpc/platforms/86xx/mpc8610_hpcd.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include <linux/seq_file.h> | 25 | #include <linux/seq_file.h> |
26 | #include <linux/of.h> | 26 | #include <linux/of.h> |
27 | 27 | ||
28 | #include <asm/system.h> | ||
29 | #include <asm/time.h> | 28 | #include <asm/time.h> |
30 | #include <asm/machdep.h> | 29 | #include <asm/machdep.h> |
31 | #include <asm/pci-bridge.h> | 30 | #include <asm/pci-bridge.h> |
diff --git a/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c b/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c index 569262ca499a..3755e61d7ecf 100644 --- a/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c +++ b/arch/powerpc/platforms/86xx/mpc86xx_hpcn.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <linux/of_platform.h> | 21 | #include <linux/of_platform.h> |
22 | #include <linux/memblock.h> | 22 | #include <linux/memblock.h> |
23 | 23 | ||
24 | #include <asm/system.h> | ||
25 | #include <asm/time.h> | 24 | #include <asm/time.h> |
26 | #include <asm/machdep.h> | 25 | #include <asm/machdep.h> |
27 | #include <asm/pci-bridge.h> | 26 | #include <asm/pci-bridge.h> |
diff --git a/arch/powerpc/platforms/86xx/pic.c b/arch/powerpc/platforms/86xx/pic.c index 22cc3571ae19..9982f57c98b9 100644 --- a/arch/powerpc/platforms/86xx/pic.c +++ b/arch/powerpc/platforms/86xx/pic.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <linux/interrupt.h> | 12 | #include <linux/interrupt.h> |
13 | #include <linux/of_platform.h> | 13 | #include <linux/of_platform.h> |
14 | 14 | ||
15 | #include <asm/system.h> | ||
16 | #include <asm/mpic.h> | 15 | #include <asm/mpic.h> |
17 | #include <asm/i8259.h> | 16 | #include <asm/i8259.h> |
18 | 17 | ||
diff --git a/arch/powerpc/platforms/86xx/sbc8641d.c b/arch/powerpc/platforms/86xx/sbc8641d.c index 51c8f331b671..e7007d0d949e 100644 --- a/arch/powerpc/platforms/86xx/sbc8641d.c +++ b/arch/powerpc/platforms/86xx/sbc8641d.c | |||
@@ -21,7 +21,6 @@ | |||
21 | #include <linux/seq_file.h> | 21 | #include <linux/seq_file.h> |
22 | #include <linux/of_platform.h> | 22 | #include <linux/of_platform.h> |
23 | 23 | ||
24 | #include <asm/system.h> | ||
25 | #include <asm/time.h> | 24 | #include <asm/time.h> |
26 | #include <asm/machdep.h> | 25 | #include <asm/machdep.h> |
27 | #include <asm/pci-bridge.h> | 26 | #include <asm/pci-bridge.h> |
diff --git a/arch/powerpc/platforms/8xx/mpc86xads_setup.c b/arch/powerpc/platforms/8xx/mpc86xads_setup.c index caaec29796b7..866feff83c91 100644 --- a/arch/powerpc/platforms/8xx/mpc86xads_setup.c +++ b/arch/powerpc/platforms/8xx/mpc86xads_setup.c | |||
@@ -19,7 +19,6 @@ | |||
19 | 19 | ||
20 | #include <asm/io.h> | 20 | #include <asm/io.h> |
21 | #include <asm/machdep.h> | 21 | #include <asm/machdep.h> |
22 | #include <asm/system.h> | ||
23 | #include <asm/time.h> | 22 | #include <asm/time.h> |
24 | #include <asm/8xx_immap.h> | 23 | #include <asm/8xx_immap.h> |
25 | #include <asm/cpm1.h> | 24 | #include <asm/cpm1.h> |
diff --git a/arch/powerpc/platforms/8xx/mpc885ads_setup.c b/arch/powerpc/platforms/8xx/mpc885ads_setup.c index 45ed6cdc1310..5d98398c2f5e 100644 --- a/arch/powerpc/platforms/8xx/mpc885ads_setup.c +++ b/arch/powerpc/platforms/8xx/mpc885ads_setup.c | |||
@@ -32,7 +32,6 @@ | |||
32 | #include <asm/machdep.h> | 32 | #include <asm/machdep.h> |
33 | #include <asm/page.h> | 33 | #include <asm/page.h> |
34 | #include <asm/processor.h> | 34 | #include <asm/processor.h> |
35 | #include <asm/system.h> | ||
36 | #include <asm/time.h> | 35 | #include <asm/time.h> |
37 | #include <asm/mpc8xx.h> | 36 | #include <asm/mpc8xx.h> |
38 | #include <asm/8xx_immap.h> | 37 | #include <asm/8xx_immap.h> |
diff --git a/arch/powerpc/platforms/8xx/tqm8xx_setup.c b/arch/powerpc/platforms/8xx/tqm8xx_setup.c index 528e00ddef31..8d21ab70e06c 100644 --- a/arch/powerpc/platforms/8xx/tqm8xx_setup.c +++ b/arch/powerpc/platforms/8xx/tqm8xx_setup.c | |||
@@ -35,7 +35,6 @@ | |||
35 | #include <asm/machdep.h> | 35 | #include <asm/machdep.h> |
36 | #include <asm/page.h> | 36 | #include <asm/page.h> |
37 | #include <asm/processor.h> | 37 | #include <asm/processor.h> |
38 | #include <asm/system.h> | ||
39 | #include <asm/time.h> | 38 | #include <asm/time.h> |
40 | #include <asm/mpc8xx.h> | 39 | #include <asm/mpc8xx.h> |
41 | #include <asm/8xx_immap.h> | 40 | #include <asm/8xx_immap.h> |
diff --git a/arch/powerpc/platforms/cell/smp.c b/arch/powerpc/platforms/cell/smp.c index 4a255cf8cd17..49a65e2dfc71 100644 --- a/arch/powerpc/platforms/cell/smp.c +++ b/arch/powerpc/platforms/cell/smp.c | |||
@@ -38,7 +38,6 @@ | |||
38 | #include <asm/machdep.h> | 38 | #include <asm/machdep.h> |
39 | #include <asm/cputable.h> | 39 | #include <asm/cputable.h> |
40 | #include <asm/firmware.h> | 40 | #include <asm/firmware.h> |
41 | #include <asm/system.h> | ||
42 | #include <asm/rtas.h> | 41 | #include <asm/rtas.h> |
43 | #include <asm/cputhreads.h> | 42 | #include <asm/cputhreads.h> |
44 | 43 | ||
diff --git a/arch/powerpc/platforms/embedded6xx/c2k.c b/arch/powerpc/platforms/embedded6xx/c2k.c index 8cab5731850f..ebd3963fdf91 100644 --- a/arch/powerpc/platforms/embedded6xx/c2k.c +++ b/arch/powerpc/platforms/embedded6xx/c2k.c | |||
@@ -23,7 +23,6 @@ | |||
23 | 23 | ||
24 | #include <asm/machdep.h> | 24 | #include <asm/machdep.h> |
25 | #include <asm/prom.h> | 25 | #include <asm/prom.h> |
26 | #include <asm/system.h> | ||
27 | #include <asm/time.h> | 26 | #include <asm/time.h> |
28 | 27 | ||
29 | #include <mm/mmu_decl.h> | 28 | #include <mm/mmu_decl.h> |
diff --git a/arch/powerpc/platforms/embedded6xx/holly.c b/arch/powerpc/platforms/embedded6xx/holly.c index ab51b21b4bd7..8c305c7c8977 100644 --- a/arch/powerpc/platforms/embedded6xx/holly.c +++ b/arch/powerpc/platforms/embedded6xx/holly.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <linux/of_platform.h> | 28 | #include <linux/of_platform.h> |
29 | #include <linux/module.h> | 29 | #include <linux/module.h> |
30 | 30 | ||
31 | #include <asm/system.h> | ||
32 | #include <asm/time.h> | 31 | #include <asm/time.h> |
33 | #include <asm/machdep.h> | 32 | #include <asm/machdep.h> |
34 | #include <asm/prom.h> | 33 | #include <asm/prom.h> |
diff --git a/arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c b/arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c index 74ccce36baed..beeaf4a173e1 100644 --- a/arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c +++ b/arch/powerpc/platforms/embedded6xx/mpc7448_hpc2.c | |||
@@ -32,7 +32,6 @@ | |||
32 | #include <linux/tty.h> | 32 | #include <linux/tty.h> |
33 | #include <linux/serial_core.h> | 33 | #include <linux/serial_core.h> |
34 | 34 | ||
35 | #include <asm/system.h> | ||
36 | #include <asm/time.h> | 35 | #include <asm/time.h> |
37 | #include <asm/machdep.h> | 36 | #include <asm/machdep.h> |
38 | #include <asm/prom.h> | 37 | #include <asm/prom.h> |
diff --git a/arch/powerpc/platforms/embedded6xx/prpmc2800.c b/arch/powerpc/platforms/embedded6xx/prpmc2800.c index 670035f49a69..d455f08bea53 100644 --- a/arch/powerpc/platforms/embedded6xx/prpmc2800.c +++ b/arch/powerpc/platforms/embedded6xx/prpmc2800.c | |||
@@ -17,7 +17,6 @@ | |||
17 | 17 | ||
18 | #include <asm/machdep.h> | 18 | #include <asm/machdep.h> |
19 | #include <asm/prom.h> | 19 | #include <asm/prom.h> |
20 | #include <asm/system.h> | ||
21 | #include <asm/time.h> | 20 | #include <asm/time.h> |
22 | 21 | ||
23 | #include <mm/mmu_decl.h> | 22 | #include <mm/mmu_decl.h> |
diff --git a/arch/powerpc/platforms/embedded6xx/storcenter.c b/arch/powerpc/platforms/embedded6xx/storcenter.c index e0ed3c71d69b..c458b60d14c4 100644 --- a/arch/powerpc/platforms/embedded6xx/storcenter.c +++ b/arch/powerpc/platforms/embedded6xx/storcenter.c | |||
@@ -16,7 +16,6 @@ | |||
16 | #include <linux/initrd.h> | 16 | #include <linux/initrd.h> |
17 | #include <linux/of_platform.h> | 17 | #include <linux/of_platform.h> |
18 | 18 | ||
19 | #include <asm/system.h> | ||
20 | #include <asm/time.h> | 19 | #include <asm/time.h> |
21 | #include <asm/prom.h> | 20 | #include <asm/prom.h> |
22 | #include <asm/mpic.h> | 21 | #include <asm/mpic.h> |
diff --git a/arch/powerpc/platforms/fsl_uli1575.c b/arch/powerpc/platforms/fsl_uli1575.c index 8b0c2082a783..64fde058e545 100644 --- a/arch/powerpc/platforms/fsl_uli1575.c +++ b/arch/powerpc/platforms/fsl_uli1575.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <linux/interrupt.h> | 15 | #include <linux/interrupt.h> |
16 | #include <linux/mc146818rtc.h> | 16 | #include <linux/mc146818rtc.h> |
17 | 17 | ||
18 | #include <asm/system.h> | ||
19 | #include <asm/pci-bridge.h> | 18 | #include <asm/pci-bridge.h> |
20 | 19 | ||
21 | #define ULI_PIRQA 0x08 | 20 | #define ULI_PIRQA 0x08 |
diff --git a/arch/powerpc/platforms/maple/setup.c b/arch/powerpc/platforms/maple/setup.c index 3b7545a51aa9..cb1b0b35a0c6 100644 --- a/arch/powerpc/platforms/maple/setup.c +++ b/arch/powerpc/platforms/maple/setup.c | |||
@@ -47,7 +47,6 @@ | |||
47 | #include <asm/processor.h> | 47 | #include <asm/processor.h> |
48 | #include <asm/sections.h> | 48 | #include <asm/sections.h> |
49 | #include <asm/prom.h> | 49 | #include <asm/prom.h> |
50 | #include <asm/system.h> | ||
51 | #include <asm/pgtable.h> | 50 | #include <asm/pgtable.h> |
52 | #include <asm/io.h> | 51 | #include <asm/io.h> |
53 | #include <asm/pci-bridge.h> | 52 | #include <asm/pci-bridge.h> |
diff --git a/arch/powerpc/platforms/maple/time.c b/arch/powerpc/platforms/maple/time.c index eac569dee27c..b4a369dac3a8 100644 --- a/arch/powerpc/platforms/maple/time.c +++ b/arch/powerpc/platforms/maple/time.c | |||
@@ -27,7 +27,6 @@ | |||
27 | 27 | ||
28 | #include <asm/sections.h> | 28 | #include <asm/sections.h> |
29 | #include <asm/prom.h> | 29 | #include <asm/prom.h> |
30 | #include <asm/system.h> | ||
31 | #include <asm/io.h> | 30 | #include <asm/io.h> |
32 | #include <asm/pgtable.h> | 31 | #include <asm/pgtable.h> |
33 | #include <asm/machdep.h> | 32 | #include <asm/machdep.h> |
diff --git a/arch/powerpc/platforms/pasemi/setup.c b/arch/powerpc/platforms/pasemi/setup.c index e777ad471a48..2ed9212d7d59 100644 --- a/arch/powerpc/platforms/pasemi/setup.c +++ b/arch/powerpc/platforms/pasemi/setup.c | |||
@@ -32,13 +32,13 @@ | |||
32 | #include <linux/gfp.h> | 32 | #include <linux/gfp.h> |
33 | 33 | ||
34 | #include <asm/prom.h> | 34 | #include <asm/prom.h> |
35 | #include <asm/system.h> | ||
36 | #include <asm/iommu.h> | 35 | #include <asm/iommu.h> |
37 | #include <asm/machdep.h> | 36 | #include <asm/machdep.h> |
38 | #include <asm/mpic.h> | 37 | #include <asm/mpic.h> |
39 | #include <asm/smp.h> | 38 | #include <asm/smp.h> |
40 | #include <asm/time.h> | 39 | #include <asm/time.h> |
41 | #include <asm/mmu.h> | 40 | #include <asm/mmu.h> |
41 | #include <asm/debug.h> | ||
42 | 42 | ||
43 | #include <pcmcia/ss.h> | 43 | #include <pcmcia/ss.h> |
44 | #include <pcmcia/cistpl.h> | 44 | #include <pcmcia/cistpl.h> |
diff --git a/arch/powerpc/platforms/powermac/bootx_init.c b/arch/powerpc/platforms/powermac/bootx_init.c index 84d7fd9bcc69..3e91ef538114 100644 --- a/arch/powerpc/platforms/powermac/bootx_init.c +++ b/arch/powerpc/platforms/powermac/bootx_init.c | |||
@@ -19,6 +19,7 @@ | |||
19 | #include <asm/bootx.h> | 19 | #include <asm/bootx.h> |
20 | #include <asm/btext.h> | 20 | #include <asm/btext.h> |
21 | #include <asm/io.h> | 21 | #include <asm/io.h> |
22 | #include <asm/setup.h> | ||
22 | 23 | ||
23 | #undef DEBUG | 24 | #undef DEBUG |
24 | #define SET_BOOT_BAT | 25 | #define SET_BOOT_BAT |
diff --git a/arch/powerpc/platforms/powermac/cpufreq_32.c b/arch/powerpc/platforms/powermac/cpufreq_32.c index 1fc386a23f18..64171198535c 100644 --- a/arch/powerpc/platforms/powermac/cpufreq_32.c +++ b/arch/powerpc/platforms/powermac/cpufreq_32.c | |||
@@ -33,9 +33,9 @@ | |||
33 | #include <asm/sections.h> | 33 | #include <asm/sections.h> |
34 | #include <asm/cputable.h> | 34 | #include <asm/cputable.h> |
35 | #include <asm/time.h> | 35 | #include <asm/time.h> |
36 | #include <asm/system.h> | ||
37 | #include <asm/mpic.h> | 36 | #include <asm/mpic.h> |
38 | #include <asm/keylargo.h> | 37 | #include <asm/keylargo.h> |
38 | #include <asm/switch_to.h> | ||
39 | 39 | ||
40 | /* WARNING !!! This will cause calibrate_delay() to be called, | 40 | /* WARNING !!! This will cause calibrate_delay() to be called, |
41 | * but this is an __init function ! So you MUST go edit | 41 | * but this is an __init function ! So you MUST go edit |
diff --git a/arch/powerpc/platforms/powermac/nvram.c b/arch/powerpc/platforms/powermac/nvram.c index da18b26dcc6f..014d06e6d46b 100644 --- a/arch/powerpc/platforms/powermac/nvram.c +++ b/arch/powerpc/platforms/powermac/nvram.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include <linux/spinlock.h> | 23 | #include <linux/spinlock.h> |
24 | #include <asm/sections.h> | 24 | #include <asm/sections.h> |
25 | #include <asm/io.h> | 25 | #include <asm/io.h> |
26 | #include <asm/system.h> | ||
27 | #include <asm/prom.h> | 26 | #include <asm/prom.h> |
28 | #include <asm/machdep.h> | 27 | #include <asm/machdep.h> |
29 | #include <asm/nvram.h> | 28 | #include <asm/nvram.h> |
diff --git a/arch/powerpc/platforms/powermac/setup.c b/arch/powerpc/platforms/powermac/setup.c index 970ea1de4298..141f8899a633 100644 --- a/arch/powerpc/platforms/powermac/setup.c +++ b/arch/powerpc/platforms/powermac/setup.c | |||
@@ -57,7 +57,6 @@ | |||
57 | #include <asm/reg.h> | 57 | #include <asm/reg.h> |
58 | #include <asm/sections.h> | 58 | #include <asm/sections.h> |
59 | #include <asm/prom.h> | 59 | #include <asm/prom.h> |
60 | #include <asm/system.h> | ||
61 | #include <asm/pgtable.h> | 60 | #include <asm/pgtable.h> |
62 | #include <asm/io.h> | 61 | #include <asm/io.h> |
63 | #include <asm/pci-bridge.h> | 62 | #include <asm/pci-bridge.h> |
diff --git a/arch/powerpc/platforms/powermac/time.c b/arch/powerpc/platforms/powermac/time.c index 11c9fce43b5b..8680bb69795d 100644 --- a/arch/powerpc/platforms/powermac/time.c +++ b/arch/powerpc/platforms/powermac/time.c | |||
@@ -26,7 +26,6 @@ | |||
26 | 26 | ||
27 | #include <asm/sections.h> | 27 | #include <asm/sections.h> |
28 | #include <asm/prom.h> | 28 | #include <asm/prom.h> |
29 | #include <asm/system.h> | ||
30 | #include <asm/io.h> | 29 | #include <asm/io.h> |
31 | #include <asm/pgtable.h> | 30 | #include <asm/pgtable.h> |
32 | #include <asm/machdep.h> | 31 | #include <asm/machdep.h> |
diff --git a/arch/powerpc/platforms/powernv/smp.c b/arch/powerpc/platforms/powernv/smp.c index 17210c526c52..3ef46254c35b 100644 --- a/arch/powerpc/platforms/powernv/smp.c +++ b/arch/powerpc/platforms/powernv/smp.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include <asm/machdep.h> | 25 | #include <asm/machdep.h> |
26 | #include <asm/cputable.h> | 26 | #include <asm/cputable.h> |
27 | #include <asm/firmware.h> | 27 | #include <asm/firmware.h> |
28 | #include <asm/system.h> | ||
29 | #include <asm/rtas.h> | 28 | #include <asm/rtas.h> |
30 | #include <asm/vdso_datapage.h> | 29 | #include <asm/vdso_datapage.h> |
31 | #include <asm/cputhreads.h> | 30 | #include <asm/cputhreads.h> |
diff --git a/arch/powerpc/platforms/ps3/mm.c b/arch/powerpc/platforms/ps3/mm.c index 8bd6ba542691..de2aea421707 100644 --- a/arch/powerpc/platforms/ps3/mm.c +++ b/arch/powerpc/platforms/ps3/mm.c | |||
@@ -29,6 +29,7 @@ | |||
29 | #include <asm/prom.h> | 29 | #include <asm/prom.h> |
30 | #include <asm/udbg.h> | 30 | #include <asm/udbg.h> |
31 | #include <asm/lv1call.h> | 31 | #include <asm/lv1call.h> |
32 | #include <asm/setup.h> | ||
32 | 33 | ||
33 | #include "platform.h" | 34 | #include "platform.h" |
34 | 35 | ||
diff --git a/arch/powerpc/platforms/pseries/dtl.c b/arch/powerpc/platforms/pseries/dtl.c index 0e8656370063..a7648543c59e 100644 --- a/arch/powerpc/platforms/pseries/dtl.c +++ b/arch/powerpc/platforms/pseries/dtl.c | |||
@@ -25,10 +25,10 @@ | |||
25 | #include <linux/debugfs.h> | 25 | #include <linux/debugfs.h> |
26 | #include <linux/spinlock.h> | 26 | #include <linux/spinlock.h> |
27 | #include <asm/smp.h> | 27 | #include <asm/smp.h> |
28 | #include <asm/system.h> | ||
29 | #include <asm/uaccess.h> | 28 | #include <asm/uaccess.h> |
30 | #include <asm/firmware.h> | 29 | #include <asm/firmware.h> |
31 | #include <asm/lppaca.h> | 30 | #include <asm/lppaca.h> |
31 | #include <asm/debug.h> | ||
32 | 32 | ||
33 | #include "plpar_wrappers.h" | 33 | #include "plpar_wrappers.h" |
34 | 34 | ||
diff --git a/arch/powerpc/platforms/pseries/hotplug-cpu.c b/arch/powerpc/platforms/pseries/hotplug-cpu.c index c986d08d0807..64c97d8ac0c5 100644 --- a/arch/powerpc/platforms/pseries/hotplug-cpu.c +++ b/arch/powerpc/platforms/pseries/hotplug-cpu.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include <linux/delay.h> | 23 | #include <linux/delay.h> |
24 | #include <linux/sched.h> /* for idle_task_exit */ | 24 | #include <linux/sched.h> /* for idle_task_exit */ |
25 | #include <linux/cpu.h> | 25 | #include <linux/cpu.h> |
26 | #include <asm/system.h> | ||
27 | #include <asm/prom.h> | 26 | #include <asm/prom.h> |
28 | #include <asm/rtas.h> | 27 | #include <asm/rtas.h> |
29 | #include <asm/firmware.h> | 28 | #include <asm/firmware.h> |
diff --git a/arch/powerpc/platforms/pseries/processor_idle.c b/arch/powerpc/platforms/pseries/processor_idle.c index a12e95af6933..41a34bc4a9a2 100644 --- a/arch/powerpc/platforms/pseries/processor_idle.c +++ b/arch/powerpc/platforms/pseries/processor_idle.c | |||
@@ -14,9 +14,9 @@ | |||
14 | 14 | ||
15 | #include <asm/paca.h> | 15 | #include <asm/paca.h> |
16 | #include <asm/reg.h> | 16 | #include <asm/reg.h> |
17 | #include <asm/system.h> | ||
18 | #include <asm/machdep.h> | 17 | #include <asm/machdep.h> |
19 | #include <asm/firmware.h> | 18 | #include <asm/firmware.h> |
19 | #include <asm/runlatch.h> | ||
20 | 20 | ||
21 | #include "plpar_wrappers.h" | 21 | #include "plpar_wrappers.h" |
22 | #include "pseries.h" | 22 | #include "pseries.h" |
diff --git a/arch/powerpc/platforms/pseries/smp.c b/arch/powerpc/platforms/pseries/smp.c index eadba9521a35..e16bb8d48550 100644 --- a/arch/powerpc/platforms/pseries/smp.c +++ b/arch/powerpc/platforms/pseries/smp.c | |||
@@ -37,7 +37,6 @@ | |||
37 | #include <asm/machdep.h> | 37 | #include <asm/machdep.h> |
38 | #include <asm/cputable.h> | 38 | #include <asm/cputable.h> |
39 | #include <asm/firmware.h> | 39 | #include <asm/firmware.h> |
40 | #include <asm/system.h> | ||
41 | #include <asm/rtas.h> | 40 | #include <asm/rtas.h> |
42 | #include <asm/pSeries_reconfig.h> | 41 | #include <asm/pSeries_reconfig.h> |
43 | #include <asm/mpic.h> | 42 | #include <asm/mpic.h> |
diff --git a/arch/powerpc/platforms/wsp/chroma.c b/arch/powerpc/platforms/wsp/chroma.c index ca6fa26f6e63..8ef53bc2e70e 100644 --- a/arch/powerpc/platforms/wsp/chroma.c +++ b/arch/powerpc/platforms/wsp/chroma.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <linux/time.h> | 17 | #include <linux/time.h> |
18 | 18 | ||
19 | #include <asm/machdep.h> | 19 | #include <asm/machdep.h> |
20 | #include <asm/system.h> | ||
21 | #include <asm/udbg.h> | 20 | #include <asm/udbg.h> |
22 | 21 | ||
23 | #include "ics.h" | 22 | #include "ics.h" |
diff --git a/arch/powerpc/platforms/wsp/psr2.c b/arch/powerpc/platforms/wsp/psr2.c index 0c1ae06d0be1..508ec8282b96 100644 --- a/arch/powerpc/platforms/wsp/psr2.c +++ b/arch/powerpc/platforms/wsp/psr2.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <linux/time.h> | 17 | #include <linux/time.h> |
18 | 18 | ||
19 | #include <asm/machdep.h> | 19 | #include <asm/machdep.h> |
20 | #include <asm/system.h> | ||
21 | #include <asm/udbg.h> | 20 | #include <asm/udbg.h> |
22 | 21 | ||
23 | #include "ics.h" | 22 | #include "ics.h" |
diff --git a/arch/powerpc/platforms/wsp/wsp_pci.c b/arch/powerpc/platforms/wsp/wsp_pci.c index 763014cd1e62..1526551f9fe6 100644 --- a/arch/powerpc/platforms/wsp/wsp_pci.c +++ b/arch/powerpc/platforms/wsp/wsp_pci.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <asm/ppc-pci.h> | 27 | #include <asm/ppc-pci.h> |
28 | #include <asm/iommu.h> | 28 | #include <asm/iommu.h> |
29 | #include <asm/io-workarounds.h> | 29 | #include <asm/io-workarounds.h> |
30 | #include <asm/debug.h> | ||
30 | 31 | ||
31 | #include "wsp.h" | 32 | #include "wsp.h" |
32 | #include "wsp_pci.h" | 33 | #include "wsp_pci.h" |
diff --git a/arch/powerpc/sysdev/cpm_common.c b/arch/powerpc/sysdev/cpm_common.c index bf6c7cc0a6af..4dd534194ae8 100644 --- a/arch/powerpc/sysdev/cpm_common.c +++ b/arch/powerpc/sysdev/cpm_common.c | |||
@@ -26,7 +26,6 @@ | |||
26 | 26 | ||
27 | #include <asm/udbg.h> | 27 | #include <asm/udbg.h> |
28 | #include <asm/io.h> | 28 | #include <asm/io.h> |
29 | #include <asm/system.h> | ||
30 | #include <asm/rheap.h> | 29 | #include <asm/rheap.h> |
31 | #include <asm/cpm.h> | 30 | #include <asm/cpm.h> |
32 | 31 | ||
diff --git a/arch/powerpc/sysdev/fsl_soc.c b/arch/powerpc/sysdev/fsl_soc.c index e8f385fbf549..c449dbd1c938 100644 --- a/arch/powerpc/sysdev/fsl_soc.c +++ b/arch/powerpc/sysdev/fsl_soc.c | |||
@@ -31,7 +31,6 @@ | |||
31 | #include <linux/fs_enet_pd.h> | 31 | #include <linux/fs_enet_pd.h> |
32 | #include <linux/fs_uart_pd.h> | 32 | #include <linux/fs_uart_pd.h> |
33 | 33 | ||
34 | #include <asm/system.h> | ||
35 | #include <linux/atomic.h> | 34 | #include <linux/atomic.h> |
36 | #include <asm/io.h> | 35 | #include <asm/io.h> |
37 | #include <asm/irq.h> | 36 | #include <asm/irq.h> |
diff --git a/arch/powerpc/sysdev/msi_bitmap.c b/arch/powerpc/sysdev/msi_bitmap.c index 5287e95cec3a..0968b66b4cf9 100644 --- a/arch/powerpc/sysdev/msi_bitmap.c +++ b/arch/powerpc/sysdev/msi_bitmap.c | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
13 | #include <linux/bitmap.h> | 13 | #include <linux/bitmap.h> |
14 | #include <asm/msi_bitmap.h> | 14 | #include <asm/msi_bitmap.h> |
15 | #include <asm/setup.h> | ||
15 | 16 | ||
16 | int msi_bitmap_alloc_hwirqs(struct msi_bitmap *bmp, int num) | 17 | int msi_bitmap_alloc_hwirqs(struct msi_bitmap *bmp, int num) |
17 | { | 18 | { |
diff --git a/arch/powerpc/sysdev/tsi108_dev.c b/arch/powerpc/sysdev/tsi108_dev.c index 2370e1c63379..1fd0717ade02 100644 --- a/arch/powerpc/sysdev/tsi108_dev.c +++ b/arch/powerpc/sysdev/tsi108_dev.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <linux/of_net.h> | 22 | #include <linux/of_net.h> |
23 | #include <asm/tsi108.h> | 23 | #include <asm/tsi108.h> |
24 | 24 | ||
25 | #include <asm/system.h> | ||
26 | #include <linux/atomic.h> | 25 | #include <linux/atomic.h> |
27 | #include <asm/io.h> | 26 | #include <asm/io.h> |
28 | #include <asm/irq.h> | 27 | #include <asm/irq.h> |
diff --git a/arch/powerpc/xmon/xmon.c b/arch/powerpc/xmon/xmon.c index 68a9cbbab450..0f3ab06d2222 100644 --- a/arch/powerpc/xmon/xmon.c +++ b/arch/powerpc/xmon/xmon.c | |||
@@ -41,6 +41,7 @@ | |||
41 | #include <asm/spu_priv1.h> | 41 | #include <asm/spu_priv1.h> |
42 | #include <asm/setjmp.h> | 42 | #include <asm/setjmp.h> |
43 | #include <asm/reg.h> | 43 | #include <asm/reg.h> |
44 | #include <asm/debug.h> | ||
44 | 45 | ||
45 | #ifdef CONFIG_PPC64 | 46 | #ifdef CONFIG_PPC64 |
46 | #include <asm/hvcall.h> | 47 | #include <asm/hvcall.h> |
diff --git a/arch/s390/crypto/crypt_s390.h b/arch/s390/crypto/crypt_s390.h index ffd1ac255f19..9178db6db0a5 100644 --- a/arch/s390/crypto/crypt_s390.h +++ b/arch/s390/crypto/crypt_s390.h | |||
@@ -17,6 +17,7 @@ | |||
17 | #define _CRYPTO_ARCH_S390_CRYPT_S390_H | 17 | #define _CRYPTO_ARCH_S390_CRYPT_S390_H |
18 | 18 | ||
19 | #include <asm/errno.h> | 19 | #include <asm/errno.h> |
20 | #include <asm/facility.h> | ||
20 | 21 | ||
21 | #define CRYPT_S390_OP_MASK 0xFF00 | 22 | #define CRYPT_S390_OP_MASK 0xFF00 |
22 | #define CRYPT_S390_FUNC_MASK 0x00FF | 23 | #define CRYPT_S390_FUNC_MASK 0x00FF |
diff --git a/arch/s390/include/asm/atomic.h b/arch/s390/include/asm/atomic.h index 8517d2ae3b5c..748347baecb8 100644 --- a/arch/s390/include/asm/atomic.h +++ b/arch/s390/include/asm/atomic.h | |||
@@ -15,7 +15,7 @@ | |||
15 | 15 | ||
16 | #include <linux/compiler.h> | 16 | #include <linux/compiler.h> |
17 | #include <linux/types.h> | 17 | #include <linux/types.h> |
18 | #include <asm/system.h> | 18 | #include <asm/cmpxchg.h> |
19 | 19 | ||
20 | #define ATOMIC_INIT(i) { (i) } | 20 | #define ATOMIC_INIT(i) { (i) } |
21 | 21 | ||
diff --git a/arch/s390/include/asm/barrier.h b/arch/s390/include/asm/barrier.h new file mode 100644 index 000000000000..451273ad4d34 --- /dev/null +++ b/arch/s390/include/asm/barrier.h | |||
@@ -0,0 +1,35 @@ | |||
1 | /* | ||
2 | * Copyright IBM Corp. 1999, 2009 | ||
3 | * | ||
4 | * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com> | ||
5 | */ | ||
6 | |||
7 | #ifndef __ASM_BARRIER_H | ||
8 | #define __ASM_BARRIER_H | ||
9 | |||
10 | /* | ||
11 | * Force strict CPU ordering. | ||
12 | * And yes, this is required on UP too when we're talking | ||
13 | * to devices. | ||
14 | * | ||
15 | * This is very similar to the ppc eieio/sync instruction in that is | ||
16 | * does a checkpoint syncronisation & makes sure that | ||
17 | * all memory ops have completed wrt other CPU's ( see 7-15 POP DJB ). | ||
18 | */ | ||
19 | |||
20 | #define eieio() asm volatile("bcr 15,0" : : : "memory") | ||
21 | #define SYNC_OTHER_CORES(x) eieio() | ||
22 | #define mb() eieio() | ||
23 | #define rmb() eieio() | ||
24 | #define wmb() eieio() | ||
25 | #define read_barrier_depends() do { } while(0) | ||
26 | #define smp_mb() mb() | ||
27 | #define smp_rmb() rmb() | ||
28 | #define smp_wmb() wmb() | ||
29 | #define smp_read_barrier_depends() read_barrier_depends() | ||
30 | #define smp_mb__before_clear_bit() smp_mb() | ||
31 | #define smp_mb__after_clear_bit() smp_mb() | ||
32 | |||
33 | #define set_mb(var, value) do { var = value; mb(); } while (0) | ||
34 | |||
35 | #endif /* __ASM_BARRIER_H */ | ||
diff --git a/arch/s390/include/asm/ctl_reg.h b/arch/s390/include/asm/ctl_reg.h new file mode 100644 index 000000000000..ecde9417d669 --- /dev/null +++ b/arch/s390/include/asm/ctl_reg.h | |||
@@ -0,0 +1,76 @@ | |||
1 | /* | ||
2 | * Copyright IBM Corp. 1999, 2009 | ||
3 | * | ||
4 | * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com> | ||
5 | */ | ||
6 | |||
7 | #ifndef __ASM_CTL_REG_H | ||
8 | #define __ASM_CTL_REG_H | ||
9 | |||
10 | #ifdef __s390x__ | ||
11 | |||
12 | #define __ctl_load(array, low, high) ({ \ | ||
13 | typedef struct { char _[sizeof(array)]; } addrtype; \ | ||
14 | asm volatile( \ | ||
15 | " lctlg %1,%2,%0\n" \ | ||
16 | : : "Q" (*(addrtype *)(&array)), \ | ||
17 | "i" (low), "i" (high)); \ | ||
18 | }) | ||
19 | |||
20 | #define __ctl_store(array, low, high) ({ \ | ||
21 | typedef struct { char _[sizeof(array)]; } addrtype; \ | ||
22 | asm volatile( \ | ||
23 | " stctg %1,%2,%0\n" \ | ||
24 | : "=Q" (*(addrtype *)(&array)) \ | ||
25 | : "i" (low), "i" (high)); \ | ||
26 | }) | ||
27 | |||
28 | #else /* __s390x__ */ | ||
29 | |||
30 | #define __ctl_load(array, low, high) ({ \ | ||
31 | typedef struct { char _[sizeof(array)]; } addrtype; \ | ||
32 | asm volatile( \ | ||
33 | " lctl %1,%2,%0\n" \ | ||
34 | : : "Q" (*(addrtype *)(&array)), \ | ||
35 | "i" (low), "i" (high)); \ | ||
36 | }) | ||
37 | |||
38 | #define __ctl_store(array, low, high) ({ \ | ||
39 | typedef struct { char _[sizeof(array)]; } addrtype; \ | ||
40 | asm volatile( \ | ||
41 | " stctl %1,%2,%0\n" \ | ||
42 | : "=Q" (*(addrtype *)(&array)) \ | ||
43 | : "i" (low), "i" (high)); \ | ||
44 | }) | ||
45 | |||
46 | #endif /* __s390x__ */ | ||
47 | |||
48 | #define __ctl_set_bit(cr, bit) ({ \ | ||
49 | unsigned long __dummy; \ | ||
50 | __ctl_store(__dummy, cr, cr); \ | ||
51 | __dummy |= 1UL << (bit); \ | ||
52 | __ctl_load(__dummy, cr, cr); \ | ||
53 | }) | ||
54 | |||
55 | #define __ctl_clear_bit(cr, bit) ({ \ | ||
56 | unsigned long __dummy; \ | ||
57 | __ctl_store(__dummy, cr, cr); \ | ||
58 | __dummy &= ~(1UL << (bit)); \ | ||
59 | __ctl_load(__dummy, cr, cr); \ | ||
60 | }) | ||
61 | |||
62 | #ifdef CONFIG_SMP | ||
63 | |||
64 | extern void smp_ctl_set_bit(int cr, int bit); | ||
65 | extern void smp_ctl_clear_bit(int cr, int bit); | ||
66 | #define ctl_set_bit(cr, bit) smp_ctl_set_bit(cr, bit) | ||
67 | #define ctl_clear_bit(cr, bit) smp_ctl_clear_bit(cr, bit) | ||
68 | |||
69 | #else | ||
70 | |||
71 | #define ctl_set_bit(cr, bit) __ctl_set_bit(cr, bit) | ||
72 | #define ctl_clear_bit(cr, bit) __ctl_clear_bit(cr, bit) | ||
73 | |||
74 | #endif /* CONFIG_SMP */ | ||
75 | |||
76 | #endif /* __ASM_CTL_REG_H */ | ||
diff --git a/arch/s390/include/asm/elf.h b/arch/s390/include/asm/elf.h index 547f1a6a35d4..c4ee39f7a4d6 100644 --- a/arch/s390/include/asm/elf.h +++ b/arch/s390/include/asm/elf.h | |||
@@ -129,7 +129,6 @@ typedef s390_fp_regs compat_elf_fpregset_t; | |||
129 | typedef s390_compat_regs compat_elf_gregset_t; | 129 | typedef s390_compat_regs compat_elf_gregset_t; |
130 | 130 | ||
131 | #include <linux/sched.h> /* for task_struct */ | 131 | #include <linux/sched.h> /* for task_struct */ |
132 | #include <asm/system.h> /* for save_access_regs */ | ||
133 | #include <asm/mmu_context.h> | 132 | #include <asm/mmu_context.h> |
134 | 133 | ||
135 | #include <asm/vdso.h> | 134 | #include <asm/vdso.h> |
diff --git a/arch/s390/include/asm/exec.h b/arch/s390/include/asm/exec.h new file mode 100644 index 000000000000..c4a93d6327fa --- /dev/null +++ b/arch/s390/include/asm/exec.h | |||
@@ -0,0 +1,12 @@ | |||
1 | /* | ||
2 | * Copyright IBM Corp. 1999, 2009 | ||
3 | * | ||
4 | * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com> | ||
5 | */ | ||
6 | |||
7 | #ifndef __ASM_EXEC_H | ||
8 | #define __ASM_EXEC_H | ||
9 | |||
10 | extern unsigned long arch_align_stack(unsigned long sp); | ||
11 | |||
12 | #endif /* __ASM_EXEC_H */ | ||
diff --git a/arch/s390/include/asm/facility.h b/arch/s390/include/asm/facility.h new file mode 100644 index 000000000000..1e5b27edc0c9 --- /dev/null +++ b/arch/s390/include/asm/facility.h | |||
@@ -0,0 +1,63 @@ | |||
1 | /* | ||
2 | * Copyright IBM Corp. 1999, 2009 | ||
3 | * | ||
4 | * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com> | ||
5 | */ | ||
6 | |||
7 | #ifndef __ASM_FACILITY_H | ||
8 | #define __ASM_FACILITY_H | ||
9 | |||
10 | #include <linux/string.h> | ||
11 | #include <linux/preempt.h> | ||
12 | #include <asm/lowcore.h> | ||
13 | |||
14 | #define MAX_FACILITY_BIT (256*8) /* stfle_fac_list has 256 bytes */ | ||
15 | |||
16 | /* | ||
17 | * The test_facility function uses the bit odering where the MSB is bit 0. | ||
18 | * That makes it easier to query facility bits with the bit number as | ||
19 | * documented in the Principles of Operation. | ||
20 | */ | ||
21 | static inline int test_facility(unsigned long nr) | ||
22 | { | ||
23 | unsigned char *ptr; | ||
24 | |||
25 | if (nr >= MAX_FACILITY_BIT) | ||
26 | return 0; | ||
27 | ptr = (unsigned char *) &S390_lowcore.stfle_fac_list + (nr >> 3); | ||
28 | return (*ptr & (0x80 >> (nr & 7))) != 0; | ||
29 | } | ||
30 | |||
31 | /** | ||
32 | * stfle - Store facility list extended | ||
33 | * @stfle_fac_list: array where facility list can be stored | ||
34 | * @size: size of passed in array in double words | ||
35 | */ | ||
36 | static inline void stfle(u64 *stfle_fac_list, int size) | ||
37 | { | ||
38 | unsigned long nr; | ||
39 | |||
40 | preempt_disable(); | ||
41 | S390_lowcore.stfl_fac_list = 0; | ||
42 | asm volatile( | ||
43 | " .insn s,0xb2b10000,0(0)\n" /* stfl */ | ||
44 | "0:\n" | ||
45 | EX_TABLE(0b, 0b) | ||
46 | : "=m" (S390_lowcore.stfl_fac_list)); | ||
47 | nr = 4; /* bytes stored by stfl */ | ||
48 | memcpy(stfle_fac_list, &S390_lowcore.stfl_fac_list, 4); | ||
49 | if (S390_lowcore.stfl_fac_list & 0x01000000) { | ||
50 | /* More facility bits available with stfle */ | ||
51 | register unsigned long reg0 asm("0") = size - 1; | ||
52 | |||
53 | asm volatile(".insn s,0xb2b00000,0(%1)" /* stfle */ | ||
54 | : "+d" (reg0) | ||
55 | : "a" (stfle_fac_list) | ||
56 | : "memory", "cc"); | ||
57 | nr = (reg0 + 1) * 8; /* # bytes stored by stfle */ | ||
58 | } | ||
59 | memset((char *) stfle_fac_list + nr, 0, size * 8 - nr); | ||
60 | preempt_enable(); | ||
61 | } | ||
62 | |||
63 | #endif /* __ASM_FACILITY_H */ | ||
diff --git a/arch/s390/include/asm/mmu.h b/arch/s390/include/asm/mmu.h index 4506791adcd5..1c7d6ce328bf 100644 --- a/arch/s390/include/asm/mmu.h +++ b/arch/s390/include/asm/mmu.h | |||
@@ -21,4 +21,18 @@ typedef struct { | |||
21 | .context.pgtable_list = LIST_HEAD_INIT(name.context.pgtable_list), \ | 21 | .context.pgtable_list = LIST_HEAD_INIT(name.context.pgtable_list), \ |
22 | .context.gmap_list = LIST_HEAD_INIT(name.context.gmap_list), | 22 | .context.gmap_list = LIST_HEAD_INIT(name.context.gmap_list), |
23 | 23 | ||
24 | static inline int tprot(unsigned long addr) | ||
25 | { | ||
26 | int rc = -EFAULT; | ||
27 | |||
28 | asm volatile( | ||
29 | " tprot 0(%1),0\n" | ||
30 | "0: ipm %0\n" | ||
31 | " srl %0,28\n" | ||
32 | "1:\n" | ||
33 | EX_TABLE(0b,1b) | ||
34 | : "+d" (rc) : "a" (addr) : "cc"); | ||
35 | return rc; | ||
36 | } | ||
37 | |||
24 | #endif | 38 | #endif |
diff --git a/arch/s390/include/asm/mmu_context.h b/arch/s390/include/asm/mmu_context.h index 5682f160ff82..5d09e405c54d 100644 --- a/arch/s390/include/asm/mmu_context.h +++ b/arch/s390/include/asm/mmu_context.h | |||
@@ -12,6 +12,7 @@ | |||
12 | #include <asm/pgalloc.h> | 12 | #include <asm/pgalloc.h> |
13 | #include <asm/uaccess.h> | 13 | #include <asm/uaccess.h> |
14 | #include <asm/tlbflush.h> | 14 | #include <asm/tlbflush.h> |
15 | #include <asm/ctl_reg.h> | ||
15 | #include <asm-generic/mm_hooks.h> | 16 | #include <asm-generic/mm_hooks.h> |
16 | 17 | ||
17 | static inline int init_new_context(struct task_struct *tsk, | 18 | static inline int init_new_context(struct task_struct *tsk, |
diff --git a/arch/s390/include/asm/processor.h b/arch/s390/include/asm/processor.h index d25843a6a915..d499b30ea487 100644 --- a/arch/s390/include/asm/processor.h +++ b/arch/s390/include/asm/processor.h | |||
@@ -14,6 +14,7 @@ | |||
14 | #define __ASM_S390_PROCESSOR_H | 14 | #define __ASM_S390_PROCESSOR_H |
15 | 15 | ||
16 | #include <linux/linkage.h> | 16 | #include <linux/linkage.h> |
17 | #include <linux/irqflags.h> | ||
17 | #include <asm/cpu.h> | 18 | #include <asm/cpu.h> |
18 | #include <asm/page.h> | 19 | #include <asm/page.h> |
19 | #include <asm/ptrace.h> | 20 | #include <asm/ptrace.h> |
@@ -156,6 +157,14 @@ unsigned long get_wchan(struct task_struct *p); | |||
156 | #define KSTK_EIP(tsk) (task_pt_regs(tsk)->psw.addr) | 157 | #define KSTK_EIP(tsk) (task_pt_regs(tsk)->psw.addr) |
157 | #define KSTK_ESP(tsk) (task_pt_regs(tsk)->gprs[15]) | 158 | #define KSTK_ESP(tsk) (task_pt_regs(tsk)->gprs[15]) |
158 | 159 | ||
160 | static inline unsigned short stap(void) | ||
161 | { | ||
162 | unsigned short cpu_address; | ||
163 | |||
164 | asm volatile("stap %0" : "=m" (cpu_address)); | ||
165 | return cpu_address; | ||
166 | } | ||
167 | |||
159 | /* | 168 | /* |
160 | * Give up the time slice of the virtual PU. | 169 | * Give up the time slice of the virtual PU. |
161 | */ | 170 | */ |
@@ -304,6 +313,21 @@ static inline void __noreturn disabled_wait(unsigned long code) | |||
304 | } | 313 | } |
305 | 314 | ||
306 | /* | 315 | /* |
316 | * Use to set psw mask except for the first byte which | ||
317 | * won't be changed by this function. | ||
318 | */ | ||
319 | static inline void | ||
320 | __set_psw_mask(unsigned long mask) | ||
321 | { | ||
322 | __load_psw_mask(mask | (arch_local_save_flags() & ~(-1UL >> 8))); | ||
323 | } | ||
324 | |||
325 | #define local_mcck_enable() \ | ||
326 | __set_psw_mask(psw_kernel_bits | PSW_MASK_DAT | PSW_MASK_MCHECK) | ||
327 | #define local_mcck_disable() \ | ||
328 | __set_psw_mask(psw_kernel_bits | PSW_MASK_DAT) | ||
329 | |||
330 | /* | ||
307 | * Basic Machine Check/Program Check Handler. | 331 | * Basic Machine Check/Program Check Handler. |
308 | */ | 332 | */ |
309 | 333 | ||
diff --git a/arch/s390/include/asm/setup.h b/arch/s390/include/asm/setup.h index 097183c70407..b21e46e5d4b8 100644 --- a/arch/s390/include/asm/setup.h +++ b/arch/s390/include/asm/setup.h | |||
@@ -140,6 +140,20 @@ extern char vmpoff_cmd[]; | |||
140 | #define NSS_NAME_SIZE 8 | 140 | #define NSS_NAME_SIZE 8 |
141 | extern char kernel_nss_name[]; | 141 | extern char kernel_nss_name[]; |
142 | 142 | ||
143 | #ifdef CONFIG_PFAULT | ||
144 | extern int pfault_init(void); | ||
145 | extern void pfault_fini(void); | ||
146 | #else /* CONFIG_PFAULT */ | ||
147 | #define pfault_init() ({-1;}) | ||
148 | #define pfault_fini() do { } while (0) | ||
149 | #endif /* CONFIG_PFAULT */ | ||
150 | |||
151 | extern void cmma_init(void); | ||
152 | |||
153 | extern void (*_machine_restart)(char *command); | ||
154 | extern void (*_machine_halt)(void); | ||
155 | extern void (*_machine_power_off)(void); | ||
156 | |||
143 | #else /* __ASSEMBLY__ */ | 157 | #else /* __ASSEMBLY__ */ |
144 | 158 | ||
145 | #ifndef __s390x__ | 159 | #ifndef __s390x__ |
diff --git a/arch/s390/include/asm/smp.h b/arch/s390/include/asm/smp.h index 797f78729680..c77c6de6f6c0 100644 --- a/arch/s390/include/asm/smp.h +++ b/arch/s390/include/asm/smp.h | |||
@@ -9,7 +9,7 @@ | |||
9 | 9 | ||
10 | #ifdef CONFIG_SMP | 10 | #ifdef CONFIG_SMP |
11 | 11 | ||
12 | #include <asm/system.h> | 12 | #include <asm/lowcore.h> |
13 | 13 | ||
14 | #define raw_smp_processor_id() (S390_lowcore.cpu_nr) | 14 | #define raw_smp_processor_id() (S390_lowcore.cpu_nr) |
15 | 15 | ||
diff --git a/arch/s390/include/asm/switch_to.h b/arch/s390/include/asm/switch_to.h new file mode 100644 index 000000000000..f223068b7822 --- /dev/null +++ b/arch/s390/include/asm/switch_to.h | |||
@@ -0,0 +1,100 @@ | |||
1 | /* | ||
2 | * Copyright IBM Corp. 1999, 2009 | ||
3 | * | ||
4 | * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com> | ||
5 | */ | ||
6 | |||
7 | #ifndef __ASM_SWITCH_TO_H | ||
8 | #define __ASM_SWITCH_TO_H | ||
9 | |||
10 | #include <linux/thread_info.h> | ||
11 | |||
12 | extern struct task_struct *__switch_to(void *, void *); | ||
13 | extern void update_per_regs(struct task_struct *task); | ||
14 | |||
15 | static inline void save_fp_regs(s390_fp_regs *fpregs) | ||
16 | { | ||
17 | asm volatile( | ||
18 | " std 0,%O0+8(%R0)\n" | ||
19 | " std 2,%O0+24(%R0)\n" | ||
20 | " std 4,%O0+40(%R0)\n" | ||
21 | " std 6,%O0+56(%R0)" | ||
22 | : "=Q" (*fpregs) : "Q" (*fpregs)); | ||
23 | if (!MACHINE_HAS_IEEE) | ||
24 | return; | ||
25 | asm volatile( | ||
26 | " stfpc %0\n" | ||
27 | " std 1,%O0+16(%R0)\n" | ||
28 | " std 3,%O0+32(%R0)\n" | ||
29 | " std 5,%O0+48(%R0)\n" | ||
30 | " std 7,%O0+64(%R0)\n" | ||
31 | " std 8,%O0+72(%R0)\n" | ||
32 | " std 9,%O0+80(%R0)\n" | ||
33 | " std 10,%O0+88(%R0)\n" | ||
34 | " std 11,%O0+96(%R0)\n" | ||
35 | " std 12,%O0+104(%R0)\n" | ||
36 | " std 13,%O0+112(%R0)\n" | ||
37 | " std 14,%O0+120(%R0)\n" | ||
38 | " std 15,%O0+128(%R0)\n" | ||
39 | : "=Q" (*fpregs) : "Q" (*fpregs)); | ||
40 | } | ||
41 | |||
42 | static inline void restore_fp_regs(s390_fp_regs *fpregs) | ||
43 | { | ||
44 | asm volatile( | ||
45 | " ld 0,%O0+8(%R0)\n" | ||
46 | " ld 2,%O0+24(%R0)\n" | ||
47 | " ld 4,%O0+40(%R0)\n" | ||
48 | " ld 6,%O0+56(%R0)" | ||
49 | : : "Q" (*fpregs)); | ||
50 | if (!MACHINE_HAS_IEEE) | ||
51 | return; | ||
52 | asm volatile( | ||
53 | " lfpc %0\n" | ||
54 | " ld 1,%O0+16(%R0)\n" | ||
55 | " ld 3,%O0+32(%R0)\n" | ||
56 | " ld 5,%O0+48(%R0)\n" | ||
57 | " ld 7,%O0+64(%R0)\n" | ||
58 | " ld 8,%O0+72(%R0)\n" | ||
59 | " ld 9,%O0+80(%R0)\n" | ||
60 | " ld 10,%O0+88(%R0)\n" | ||
61 | " ld 11,%O0+96(%R0)\n" | ||
62 | " ld 12,%O0+104(%R0)\n" | ||
63 | " ld 13,%O0+112(%R0)\n" | ||
64 | " ld 14,%O0+120(%R0)\n" | ||
65 | " ld 15,%O0+128(%R0)\n" | ||
66 | : : "Q" (*fpregs)); | ||
67 | } | ||
68 | |||
69 | static inline void save_access_regs(unsigned int *acrs) | ||
70 | { | ||
71 | asm volatile("stam 0,15,%0" : "=Q" (*acrs)); | ||
72 | } | ||
73 | |||
74 | static inline void restore_access_regs(unsigned int *acrs) | ||
75 | { | ||
76 | asm volatile("lam 0,15,%0" : : "Q" (*acrs)); | ||
77 | } | ||
78 | |||
79 | #define switch_to(prev,next,last) do { \ | ||
80 | if (prev->mm) { \ | ||
81 | save_fp_regs(&prev->thread.fp_regs); \ | ||
82 | save_access_regs(&prev->thread.acrs[0]); \ | ||
83 | } \ | ||
84 | if (next->mm) { \ | ||
85 | restore_fp_regs(&next->thread.fp_regs); \ | ||
86 | restore_access_regs(&next->thread.acrs[0]); \ | ||
87 | update_per_regs(next); \ | ||
88 | } \ | ||
89 | prev = __switch_to(prev,next); \ | ||
90 | } while (0) | ||
91 | |||
92 | extern void account_vtime(struct task_struct *, struct task_struct *); | ||
93 | extern void account_tick_vtime(struct task_struct *); | ||
94 | |||
95 | #define finish_arch_switch(prev) do { \ | ||
96 | set_fs(current->thread.mm_segment); \ | ||
97 | account_vtime(prev, current); \ | ||
98 | } while (0) | ||
99 | |||
100 | #endif /* __ASM_SWITCH_TO_H */ | ||
diff --git a/arch/s390/include/asm/system.h b/arch/s390/include/asm/system.h deleted file mode 100644 index 2e0bb7f0f9b2..000000000000 --- a/arch/s390/include/asm/system.h +++ /dev/null | |||
@@ -1,315 +0,0 @@ | |||
1 | /* | ||
2 | * Copyright IBM Corp. 1999, 2009 | ||
3 | * | ||
4 | * Author(s): Martin Schwidefsky <schwidefsky@de.ibm.com> | ||
5 | */ | ||
6 | |||
7 | #ifndef __ASM_SYSTEM_H | ||
8 | #define __ASM_SYSTEM_H | ||
9 | |||
10 | #include <linux/preempt.h> | ||
11 | #include <linux/kernel.h> | ||
12 | #include <linux/errno.h> | ||
13 | #include <linux/string.h> | ||
14 | #include <asm/types.h> | ||
15 | #include <asm/ptrace.h> | ||
16 | #include <asm/setup.h> | ||
17 | #include <asm/processor.h> | ||
18 | #include <asm/lowcore.h> | ||
19 | #include <asm/cmpxchg.h> | ||
20 | |||
21 | #ifdef __KERNEL__ | ||
22 | |||
23 | struct task_struct; | ||
24 | |||
25 | extern struct task_struct *__switch_to(void *, void *); | ||
26 | extern void update_per_regs(struct task_struct *task); | ||
27 | |||
28 | static inline void save_fp_regs(s390_fp_regs *fpregs) | ||
29 | { | ||
30 | asm volatile( | ||
31 | " std 0,%O0+8(%R0)\n" | ||
32 | " std 2,%O0+24(%R0)\n" | ||
33 | " std 4,%O0+40(%R0)\n" | ||
34 | " std 6,%O0+56(%R0)" | ||
35 | : "=Q" (*fpregs) : "Q" (*fpregs)); | ||
36 | if (!MACHINE_HAS_IEEE) | ||
37 | return; | ||
38 | asm volatile( | ||
39 | " stfpc %0\n" | ||
40 | " std 1,%O0+16(%R0)\n" | ||
41 | " std 3,%O0+32(%R0)\n" | ||
42 | " std 5,%O0+48(%R0)\n" | ||
43 | " std 7,%O0+64(%R0)\n" | ||
44 | " std 8,%O0+72(%R0)\n" | ||
45 | " std 9,%O0+80(%R0)\n" | ||
46 | " std 10,%O0+88(%R0)\n" | ||
47 | " std 11,%O0+96(%R0)\n" | ||
48 | " std 12,%O0+104(%R0)\n" | ||
49 | " std 13,%O0+112(%R0)\n" | ||
50 | " std 14,%O0+120(%R0)\n" | ||
51 | " std 15,%O0+128(%R0)\n" | ||
52 | : "=Q" (*fpregs) : "Q" (*fpregs)); | ||
53 | } | ||
54 | |||
55 | static inline void restore_fp_regs(s390_fp_regs *fpregs) | ||
56 | { | ||
57 | asm volatile( | ||
58 | " ld 0,%O0+8(%R0)\n" | ||
59 | " ld 2,%O0+24(%R0)\n" | ||
60 | " ld 4,%O0+40(%R0)\n" | ||
61 | " ld 6,%O0+56(%R0)" | ||
62 | : : "Q" (*fpregs)); | ||
63 | if (!MACHINE_HAS_IEEE) | ||
64 | return; | ||
65 | asm volatile( | ||
66 | " lfpc %0\n" | ||
67 | " ld 1,%O0+16(%R0)\n" | ||
68 | " ld 3,%O0+32(%R0)\n" | ||
69 | " ld 5,%O0+48(%R0)\n" | ||
70 | " ld 7,%O0+64(%R0)\n" | ||
71 | " ld 8,%O0+72(%R0)\n" | ||
72 | " ld 9,%O0+80(%R0)\n" | ||
73 | " ld 10,%O0+88(%R0)\n" | ||
74 | " ld 11,%O0+96(%R0)\n" | ||
75 | " ld 12,%O0+104(%R0)\n" | ||
76 | " ld 13,%O0+112(%R0)\n" | ||
77 | " ld 14,%O0+120(%R0)\n" | ||
78 | " ld 15,%O0+128(%R0)\n" | ||
79 | : : "Q" (*fpregs)); | ||
80 | } | ||
81 | |||
82 | static inline void save_access_regs(unsigned int *acrs) | ||
83 | { | ||
84 | asm volatile("stam 0,15,%0" : "=Q" (*acrs)); | ||
85 | } | ||
86 | |||
87 | static inline void restore_access_regs(unsigned int *acrs) | ||
88 | { | ||
89 | asm volatile("lam 0,15,%0" : : "Q" (*acrs)); | ||
90 | } | ||
91 | |||
92 | #define switch_to(prev,next,last) do { \ | ||
93 | if (prev->mm) { \ | ||
94 | save_fp_regs(&prev->thread.fp_regs); \ | ||
95 | save_access_regs(&prev->thread.acrs[0]); \ | ||
96 | } \ | ||
97 | if (next->mm) { \ | ||
98 | restore_fp_regs(&next->thread.fp_regs); \ | ||
99 | restore_access_regs(&next->thread.acrs[0]); \ | ||
100 | update_per_regs(next); \ | ||
101 | } \ | ||
102 | prev = __switch_to(prev,next); \ | ||
103 | } while (0) | ||
104 | |||
105 | extern void account_vtime(struct task_struct *, struct task_struct *); | ||
106 | extern void account_tick_vtime(struct task_struct *); | ||
107 | |||
108 | #ifdef CONFIG_PFAULT | ||
109 | extern int pfault_init(void); | ||
110 | extern void pfault_fini(void); | ||
111 | #else /* CONFIG_PFAULT */ | ||
112 | #define pfault_init() ({-1;}) | ||
113 | #define pfault_fini() do { } while (0) | ||
114 | #endif /* CONFIG_PFAULT */ | ||
115 | |||
116 | extern void cmma_init(void); | ||
117 | extern int memcpy_real(void *, void *, size_t); | ||
118 | extern void copy_to_absolute_zero(void *dest, void *src, size_t count); | ||
119 | extern int copy_to_user_real(void __user *dest, void *src, size_t count); | ||
120 | extern int copy_from_user_real(void *dest, void __user *src, size_t count); | ||
121 | |||
122 | #define finish_arch_switch(prev) do { \ | ||
123 | set_fs(current->thread.mm_segment); \ | ||
124 | account_vtime(prev, current); \ | ||
125 | } while (0) | ||
126 | |||
127 | #define nop() asm volatile("nop") | ||
128 | |||
129 | /* | ||
130 | * Force strict CPU ordering. | ||
131 | * And yes, this is required on UP too when we're talking | ||
132 | * to devices. | ||
133 | * | ||
134 | * This is very similar to the ppc eieio/sync instruction in that is | ||
135 | * does a checkpoint syncronisation & makes sure that | ||
136 | * all memory ops have completed wrt other CPU's ( see 7-15 POP DJB ). | ||
137 | */ | ||
138 | |||
139 | #define eieio() asm volatile("bcr 15,0" : : : "memory") | ||
140 | #define SYNC_OTHER_CORES(x) eieio() | ||
141 | #define mb() eieio() | ||
142 | #define rmb() eieio() | ||
143 | #define wmb() eieio() | ||
144 | #define read_barrier_depends() do { } while(0) | ||
145 | #define smp_mb() mb() | ||
146 | #define smp_rmb() rmb() | ||
147 | #define smp_wmb() wmb() | ||
148 | #define smp_read_barrier_depends() read_barrier_depends() | ||
149 | #define smp_mb__before_clear_bit() smp_mb() | ||
150 | #define smp_mb__after_clear_bit() smp_mb() | ||
151 | |||
152 | |||
153 | #define set_mb(var, value) do { var = value; mb(); } while (0) | ||
154 | |||
155 | #ifdef __s390x__ | ||
156 | |||
157 | #define __ctl_load(array, low, high) ({ \ | ||
158 | typedef struct { char _[sizeof(array)]; } addrtype; \ | ||
159 | asm volatile( \ | ||
160 | " lctlg %1,%2,%0\n" \ | ||
161 | : : "Q" (*(addrtype *)(&array)), \ | ||
162 | "i" (low), "i" (high)); \ | ||
163 | }) | ||
164 | |||
165 | #define __ctl_store(array, low, high) ({ \ | ||
166 | typedef struct { char _[sizeof(array)]; } addrtype; \ | ||
167 | asm volatile( \ | ||
168 | " stctg %1,%2,%0\n" \ | ||
169 | : "=Q" (*(addrtype *)(&array)) \ | ||
170 | : "i" (low), "i" (high)); \ | ||
171 | }) | ||
172 | |||
173 | #else /* __s390x__ */ | ||
174 | |||
175 | #define __ctl_load(array, low, high) ({ \ | ||
176 | typedef struct { char _[sizeof(array)]; } addrtype; \ | ||
177 | asm volatile( \ | ||
178 | " lctl %1,%2,%0\n" \ | ||
179 | : : "Q" (*(addrtype *)(&array)), \ | ||
180 | "i" (low), "i" (high)); \ | ||
181 | }) | ||
182 | |||
183 | #define __ctl_store(array, low, high) ({ \ | ||
184 | typedef struct { char _[sizeof(array)]; } addrtype; \ | ||
185 | asm volatile( \ | ||
186 | " stctl %1,%2,%0\n" \ | ||
187 | : "=Q" (*(addrtype *)(&array)) \ | ||
188 | : "i" (low), "i" (high)); \ | ||
189 | }) | ||
190 | |||
191 | #endif /* __s390x__ */ | ||
192 | |||
193 | #define __ctl_set_bit(cr, bit) ({ \ | ||
194 | unsigned long __dummy; \ | ||
195 | __ctl_store(__dummy, cr, cr); \ | ||
196 | __dummy |= 1UL << (bit); \ | ||
197 | __ctl_load(__dummy, cr, cr); \ | ||
198 | }) | ||
199 | |||
200 | #define __ctl_clear_bit(cr, bit) ({ \ | ||
201 | unsigned long __dummy; \ | ||
202 | __ctl_store(__dummy, cr, cr); \ | ||
203 | __dummy &= ~(1UL << (bit)); \ | ||
204 | __ctl_load(__dummy, cr, cr); \ | ||
205 | }) | ||
206 | |||
207 | /* | ||
208 | * Use to set psw mask except for the first byte which | ||
209 | * won't be changed by this function. | ||
210 | */ | ||
211 | static inline void | ||
212 | __set_psw_mask(unsigned long mask) | ||
213 | { | ||
214 | __load_psw_mask(mask | (arch_local_save_flags() & ~(-1UL >> 8))); | ||
215 | } | ||
216 | |||
217 | #define local_mcck_enable() \ | ||
218 | __set_psw_mask(psw_kernel_bits | PSW_MASK_DAT | PSW_MASK_MCHECK) | ||
219 | #define local_mcck_disable() \ | ||
220 | __set_psw_mask(psw_kernel_bits | PSW_MASK_DAT) | ||
221 | |||
222 | #ifdef CONFIG_SMP | ||
223 | |||
224 | extern void smp_ctl_set_bit(int cr, int bit); | ||
225 | extern void smp_ctl_clear_bit(int cr, int bit); | ||
226 | #define ctl_set_bit(cr, bit) smp_ctl_set_bit(cr, bit) | ||
227 | #define ctl_clear_bit(cr, bit) smp_ctl_clear_bit(cr, bit) | ||
228 | |||
229 | #else | ||
230 | |||
231 | #define ctl_set_bit(cr, bit) __ctl_set_bit(cr, bit) | ||
232 | #define ctl_clear_bit(cr, bit) __ctl_clear_bit(cr, bit) | ||
233 | |||
234 | #endif /* CONFIG_SMP */ | ||
235 | |||
236 | #define MAX_FACILITY_BIT (256*8) /* stfle_fac_list has 256 bytes */ | ||
237 | |||
238 | /* | ||
239 | * The test_facility function uses the bit odering where the MSB is bit 0. | ||
240 | * That makes it easier to query facility bits with the bit number as | ||
241 | * documented in the Principles of Operation. | ||
242 | */ | ||
243 | static inline int test_facility(unsigned long nr) | ||
244 | { | ||
245 | unsigned char *ptr; | ||
246 | |||
247 | if (nr >= MAX_FACILITY_BIT) | ||
248 | return 0; | ||
249 | ptr = (unsigned char *) &S390_lowcore.stfle_fac_list + (nr >> 3); | ||
250 | return (*ptr & (0x80 >> (nr & 7))) != 0; | ||
251 | } | ||
252 | |||
253 | /** | ||
254 | * stfle - Store facility list extended | ||
255 | * @stfle_fac_list: array where facility list can be stored | ||
256 | * @size: size of passed in array in double words | ||
257 | */ | ||
258 | static inline void stfle(u64 *stfle_fac_list, int size) | ||
259 | { | ||
260 | unsigned long nr; | ||
261 | |||
262 | preempt_disable(); | ||
263 | S390_lowcore.stfl_fac_list = 0; | ||
264 | asm volatile( | ||
265 | " .insn s,0xb2b10000,0(0)\n" /* stfl */ | ||
266 | "0:\n" | ||
267 | EX_TABLE(0b, 0b) | ||
268 | : "=m" (S390_lowcore.stfl_fac_list)); | ||
269 | nr = 4; /* bytes stored by stfl */ | ||
270 | memcpy(stfle_fac_list, &S390_lowcore.stfl_fac_list, 4); | ||
271 | if (S390_lowcore.stfl_fac_list & 0x01000000) { | ||
272 | /* More facility bits available with stfle */ | ||
273 | register unsigned long reg0 asm("0") = size - 1; | ||
274 | |||
275 | asm volatile(".insn s,0xb2b00000,0(%1)" /* stfle */ | ||
276 | : "+d" (reg0) | ||
277 | : "a" (stfle_fac_list) | ||
278 | : "memory", "cc"); | ||
279 | nr = (reg0 + 1) * 8; /* # bytes stored by stfle */ | ||
280 | } | ||
281 | memset((char *) stfle_fac_list + nr, 0, size * 8 - nr); | ||
282 | preempt_enable(); | ||
283 | } | ||
284 | |||
285 | static inline unsigned short stap(void) | ||
286 | { | ||
287 | unsigned short cpu_address; | ||
288 | |||
289 | asm volatile("stap %0" : "=m" (cpu_address)); | ||
290 | return cpu_address; | ||
291 | } | ||
292 | |||
293 | extern void (*_machine_restart)(char *command); | ||
294 | extern void (*_machine_halt)(void); | ||
295 | extern void (*_machine_power_off)(void); | ||
296 | |||
297 | extern unsigned long arch_align_stack(unsigned long sp); | ||
298 | |||
299 | static inline int tprot(unsigned long addr) | ||
300 | { | ||
301 | int rc = -EFAULT; | ||
302 | |||
303 | asm volatile( | ||
304 | " tprot 0(%1),0\n" | ||
305 | "0: ipm %0\n" | ||
306 | " srl %0,28\n" | ||
307 | "1:\n" | ||
308 | EX_TABLE(0b,1b) | ||
309 | : "+d" (rc) : "a" (addr) : "cc"); | ||
310 | return rc; | ||
311 | } | ||
312 | |||
313 | #endif /* __KERNEL__ */ | ||
314 | |||
315 | #endif | ||
diff --git a/arch/s390/include/asm/uaccess.h b/arch/s390/include/asm/uaccess.h index 2b23885e81e9..8f2cada4f7c9 100644 --- a/arch/s390/include/asm/uaccess.h +++ b/arch/s390/include/asm/uaccess.h | |||
@@ -16,6 +16,7 @@ | |||
16 | */ | 16 | */ |
17 | #include <linux/sched.h> | 17 | #include <linux/sched.h> |
18 | #include <linux/errno.h> | 18 | #include <linux/errno.h> |
19 | #include <asm/ctl_reg.h> | ||
19 | 20 | ||
20 | #define VERIFY_READ 0 | 21 | #define VERIFY_READ 0 |
21 | #define VERIFY_WRITE 1 | 22 | #define VERIFY_WRITE 1 |
@@ -375,4 +376,9 @@ clear_user(void __user *to, unsigned long n) | |||
375 | return n; | 376 | return n; |
376 | } | 377 | } |
377 | 378 | ||
379 | extern int memcpy_real(void *, void *, size_t); | ||
380 | extern void copy_to_absolute_zero(void *dest, void *src, size_t count); | ||
381 | extern int copy_to_user_real(void __user *dest, void *src, size_t count); | ||
382 | extern int copy_from_user_real(void *dest, void __user *src, size_t count); | ||
383 | |||
378 | #endif /* __S390_UACCESS_H */ | 384 | #endif /* __S390_UACCESS_H */ |
diff --git a/arch/s390/kernel/asm-offsets.c b/arch/s390/kernel/asm-offsets.c index ed8c913db79e..83e6edf5cf17 100644 --- a/arch/s390/kernel/asm-offsets.c +++ b/arch/s390/kernel/asm-offsets.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <asm/timer.h> | 12 | #include <asm/timer.h> |
13 | #include <asm/vdso.h> | 13 | #include <asm/vdso.h> |
14 | #include <asm/pgtable.h> | 14 | #include <asm/pgtable.h> |
15 | #include <asm/system.h> | ||
16 | 15 | ||
17 | /* | 16 | /* |
18 | * Make sure that the compiler is new enough. We want a compiler that | 17 | * Make sure that the compiler is new enough. We want a compiler that |
diff --git a/arch/s390/kernel/compat_signal.c b/arch/s390/kernel/compat_signal.c index 53a82c8d50e9..28040fd5e8a2 100644 --- a/arch/s390/kernel/compat_signal.c +++ b/arch/s390/kernel/compat_signal.c | |||
@@ -27,6 +27,7 @@ | |||
27 | #include <asm/ucontext.h> | 27 | #include <asm/ucontext.h> |
28 | #include <asm/uaccess.h> | 28 | #include <asm/uaccess.h> |
29 | #include <asm/lowcore.h> | 29 | #include <asm/lowcore.h> |
30 | #include <asm/switch_to.h> | ||
30 | #include "compat_linux.h" | 31 | #include "compat_linux.h" |
31 | #include "compat_ptrace.h" | 32 | #include "compat_ptrace.h" |
32 | #include "entry.h" | 33 | #include "entry.h" |
diff --git a/arch/s390/kernel/cpcmd.c b/arch/s390/kernel/cpcmd.c index 3e8b8816f309..e3dd886e1b32 100644 --- a/arch/s390/kernel/cpcmd.c +++ b/arch/s390/kernel/cpcmd.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <linux/string.h> | 18 | #include <linux/string.h> |
19 | #include <asm/ebcdic.h> | 19 | #include <asm/ebcdic.h> |
20 | #include <asm/cpcmd.h> | 20 | #include <asm/cpcmd.h> |
21 | #include <asm/system.h> | ||
22 | #include <asm/io.h> | 21 | #include <asm/io.h> |
23 | 22 | ||
24 | static DEFINE_SPINLOCK(cpcmd_lock); | 23 | static DEFINE_SPINLOCK(cpcmd_lock); |
diff --git a/arch/s390/kernel/dis.c b/arch/s390/kernel/dis.c index e2f847599c8e..3221c6fca8bb 100644 --- a/arch/s390/kernel/dis.c +++ b/arch/s390/kernel/dis.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include <linux/kprobes.h> | 24 | #include <linux/kprobes.h> |
25 | #include <linux/kdebug.h> | 25 | #include <linux/kdebug.h> |
26 | 26 | ||
27 | #include <asm/system.h> | ||
28 | #include <asm/uaccess.h> | 27 | #include <asm/uaccess.h> |
29 | #include <asm/io.h> | 28 | #include <asm/io.h> |
30 | #include <linux/atomic.h> | 29 | #include <linux/atomic.h> |
diff --git a/arch/s390/kernel/early.c b/arch/s390/kernel/early.c index 578eb4e6d157..9475e682727f 100644 --- a/arch/s390/kernel/early.c +++ b/arch/s390/kernel/early.c | |||
@@ -29,7 +29,7 @@ | |||
29 | #include <asm/sysinfo.h> | 29 | #include <asm/sysinfo.h> |
30 | #include <asm/cpcmd.h> | 30 | #include <asm/cpcmd.h> |
31 | #include <asm/sclp.h> | 31 | #include <asm/sclp.h> |
32 | #include <asm/system.h> | 32 | #include <asm/facility.h> |
33 | #include "entry.h" | 33 | #include "entry.h" |
34 | 34 | ||
35 | /* | 35 | /* |
diff --git a/arch/s390/kernel/lgr.c b/arch/s390/kernel/lgr.c index 8431b92ca3ae..ac39e7a731fc 100644 --- a/arch/s390/kernel/lgr.c +++ b/arch/s390/kernel/lgr.c | |||
@@ -10,7 +10,6 @@ | |||
10 | #include <linux/slab.h> | 10 | #include <linux/slab.h> |
11 | #include <asm/sysinfo.h> | 11 | #include <asm/sysinfo.h> |
12 | #include <asm/ebcdic.h> | 12 | #include <asm/ebcdic.h> |
13 | #include <asm/system.h> | ||
14 | #include <asm/debug.h> | 13 | #include <asm/debug.h> |
15 | #include <asm/ipl.h> | 14 | #include <asm/ipl.h> |
16 | 15 | ||
diff --git a/arch/s390/kernel/machine_kexec.c b/arch/s390/kernel/machine_kexec.c index 0f8cdf1268d0..bdad47d54478 100644 --- a/arch/s390/kernel/machine_kexec.c +++ b/arch/s390/kernel/machine_kexec.c | |||
@@ -19,7 +19,6 @@ | |||
19 | #include <asm/setup.h> | 19 | #include <asm/setup.h> |
20 | #include <asm/pgtable.h> | 20 | #include <asm/pgtable.h> |
21 | #include <asm/pgalloc.h> | 21 | #include <asm/pgalloc.h> |
22 | #include <asm/system.h> | ||
23 | #include <asm/smp.h> | 22 | #include <asm/smp.h> |
24 | #include <asm/reset.h> | 23 | #include <asm/reset.h> |
25 | #include <asm/ipl.h> | 24 | #include <asm/ipl.h> |
diff --git a/arch/s390/kernel/os_info.c b/arch/s390/kernel/os_info.c index bbe522672e06..e8d6c214d498 100644 --- a/arch/s390/kernel/os_info.c +++ b/arch/s390/kernel/os_info.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
13 | #include <asm/checksum.h> | 13 | #include <asm/checksum.h> |
14 | #include <asm/lowcore.h> | 14 | #include <asm/lowcore.h> |
15 | #include <asm/system.h> | ||
16 | #include <asm/os_info.h> | 15 | #include <asm/os_info.h> |
17 | 16 | ||
18 | /* | 17 | /* |
diff --git a/arch/s390/kernel/process.c b/arch/s390/kernel/process.c index 3732e4c09cbe..60055cefdd04 100644 --- a/arch/s390/kernel/process.c +++ b/arch/s390/kernel/process.c | |||
@@ -23,13 +23,13 @@ | |||
23 | #include <linux/kprobes.h> | 23 | #include <linux/kprobes.h> |
24 | #include <linux/random.h> | 24 | #include <linux/random.h> |
25 | #include <linux/module.h> | 25 | #include <linux/module.h> |
26 | #include <asm/system.h> | ||
27 | #include <asm/io.h> | 26 | #include <asm/io.h> |
28 | #include <asm/processor.h> | 27 | #include <asm/processor.h> |
29 | #include <asm/irq.h> | 28 | #include <asm/irq.h> |
30 | #include <asm/timer.h> | 29 | #include <asm/timer.h> |
31 | #include <asm/nmi.h> | 30 | #include <asm/nmi.h> |
32 | #include <asm/smp.h> | 31 | #include <asm/smp.h> |
32 | #include <asm/switch_to.h> | ||
33 | #include "entry.h" | 33 | #include "entry.h" |
34 | 34 | ||
35 | asmlinkage void ret_from_fork(void) asm ("ret_from_fork"); | 35 | asmlinkage void ret_from_fork(void) asm ("ret_from_fork"); |
diff --git a/arch/s390/kernel/ptrace.c b/arch/s390/kernel/ptrace.c index 61f95489d70c..02f300fbf070 100644 --- a/arch/s390/kernel/ptrace.c +++ b/arch/s390/kernel/ptrace.c | |||
@@ -26,9 +26,9 @@ | |||
26 | #include <asm/page.h> | 26 | #include <asm/page.h> |
27 | #include <asm/pgtable.h> | 27 | #include <asm/pgtable.h> |
28 | #include <asm/pgalloc.h> | 28 | #include <asm/pgalloc.h> |
29 | #include <asm/system.h> | ||
30 | #include <asm/uaccess.h> | 29 | #include <asm/uaccess.h> |
31 | #include <asm/unistd.h> | 30 | #include <asm/unistd.h> |
31 | #include <asm/switch_to.h> | ||
32 | #include "entry.h" | 32 | #include "entry.h" |
33 | 33 | ||
34 | #ifdef CONFIG_COMPAT | 34 | #ifdef CONFIG_COMPAT |
diff --git a/arch/s390/kernel/setup.c b/arch/s390/kernel/setup.c index 38e751278bf7..1581ea2e027a 100644 --- a/arch/s390/kernel/setup.c +++ b/arch/s390/kernel/setup.c | |||
@@ -50,7 +50,6 @@ | |||
50 | 50 | ||
51 | #include <asm/ipl.h> | 51 | #include <asm/ipl.h> |
52 | #include <asm/uaccess.h> | 52 | #include <asm/uaccess.h> |
53 | #include <asm/system.h> | ||
54 | #include <asm/smp.h> | 53 | #include <asm/smp.h> |
55 | #include <asm/mmu_context.h> | 54 | #include <asm/mmu_context.h> |
56 | #include <asm/cpcmd.h> | 55 | #include <asm/cpcmd.h> |
diff --git a/arch/s390/kernel/signal.c b/arch/s390/kernel/signal.c index f29f5ef400e5..f7582b27f600 100644 --- a/arch/s390/kernel/signal.c +++ b/arch/s390/kernel/signal.c | |||
@@ -30,6 +30,7 @@ | |||
30 | #include <asm/ucontext.h> | 30 | #include <asm/ucontext.h> |
31 | #include <asm/uaccess.h> | 31 | #include <asm/uaccess.h> |
32 | #include <asm/lowcore.h> | 32 | #include <asm/lowcore.h> |
33 | #include <asm/switch_to.h> | ||
33 | #include "entry.h" | 34 | #include "entry.h" |
34 | 35 | ||
35 | #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) | 36 | #define _BLOCKABLE (~(sigmask(SIGKILL) | sigmask(SIGSTOP))) |
diff --git a/arch/s390/kernel/suspend.c b/arch/s390/kernel/suspend.c index 47df775c844d..aa1494d0e380 100644 --- a/arch/s390/kernel/suspend.c +++ b/arch/s390/kernel/suspend.c | |||
@@ -9,7 +9,7 @@ | |||
9 | #include <linux/pfn.h> | 9 | #include <linux/pfn.h> |
10 | #include <linux/suspend.h> | 10 | #include <linux/suspend.h> |
11 | #include <linux/mm.h> | 11 | #include <linux/mm.h> |
12 | #include <asm/system.h> | 12 | #include <asm/ctl_reg.h> |
13 | 13 | ||
14 | /* | 14 | /* |
15 | * References to section boundaries | 15 | * References to section boundaries |
diff --git a/arch/s390/kernel/traps.c b/arch/s390/kernel/traps.c index cd6ebe12c481..77cdf4234ebc 100644 --- a/arch/s390/kernel/traps.c +++ b/arch/s390/kernel/traps.c | |||
@@ -33,7 +33,6 @@ | |||
33 | #include <linux/kprobes.h> | 33 | #include <linux/kprobes.h> |
34 | #include <linux/bug.h> | 34 | #include <linux/bug.h> |
35 | #include <linux/utsname.h> | 35 | #include <linux/utsname.h> |
36 | #include <asm/system.h> | ||
37 | #include <asm/uaccess.h> | 36 | #include <asm/uaccess.h> |
38 | #include <asm/io.h> | 37 | #include <asm/io.h> |
39 | #include <linux/atomic.h> | 38 | #include <linux/atomic.h> |
diff --git a/arch/s390/kernel/vdso.c b/arch/s390/kernel/vdso.c index 9c80138206b0..ea5590fdca3b 100644 --- a/arch/s390/kernel/vdso.c +++ b/arch/s390/kernel/vdso.c | |||
@@ -25,12 +25,12 @@ | |||
25 | #include <linux/compat.h> | 25 | #include <linux/compat.h> |
26 | #include <asm/asm-offsets.h> | 26 | #include <asm/asm-offsets.h> |
27 | #include <asm/pgtable.h> | 27 | #include <asm/pgtable.h> |
28 | #include <asm/system.h> | ||
29 | #include <asm/processor.h> | 28 | #include <asm/processor.h> |
30 | #include <asm/mmu.h> | 29 | #include <asm/mmu.h> |
31 | #include <asm/mmu_context.h> | 30 | #include <asm/mmu_context.h> |
32 | #include <asm/sections.h> | 31 | #include <asm/sections.h> |
33 | #include <asm/vdso.h> | 32 | #include <asm/vdso.h> |
33 | #include <asm/facility.h> | ||
34 | 34 | ||
35 | #if defined(CONFIG_32BIT) || defined(CONFIG_COMPAT) | 35 | #if defined(CONFIG_32BIT) || defined(CONFIG_COMPAT) |
36 | extern char vdso32_start, vdso32_end; | 36 | extern char vdso32_start, vdso32_end; |
diff --git a/arch/s390/kvm/kvm-s390.c b/arch/s390/kvm/kvm-s390.c index 17ad69d596fd..217ce44395a4 100644 --- a/arch/s390/kvm/kvm-s390.c +++ b/arch/s390/kvm/kvm-s390.c | |||
@@ -27,7 +27,7 @@ | |||
27 | #include <asm/lowcore.h> | 27 | #include <asm/lowcore.h> |
28 | #include <asm/pgtable.h> | 28 | #include <asm/pgtable.h> |
29 | #include <asm/nmi.h> | 29 | #include <asm/nmi.h> |
30 | #include <asm/system.h> | 30 | #include <asm/switch_to.h> |
31 | #include "kvm-s390.h" | 31 | #include "kvm-s390.h" |
32 | #include "gaccess.h" | 32 | #include "gaccess.h" |
33 | 33 | ||
diff --git a/arch/s390/mm/fault.c b/arch/s390/mm/fault.c index b17c42df61c9..46ef3fd0663b 100644 --- a/arch/s390/mm/fault.c +++ b/arch/s390/mm/fault.c | |||
@@ -32,10 +32,10 @@ | |||
32 | #include <linux/uaccess.h> | 32 | #include <linux/uaccess.h> |
33 | #include <linux/hugetlb.h> | 33 | #include <linux/hugetlb.h> |
34 | #include <asm/asm-offsets.h> | 34 | #include <asm/asm-offsets.h> |
35 | #include <asm/system.h> | ||
36 | #include <asm/pgtable.h> | 35 | #include <asm/pgtable.h> |
37 | #include <asm/irq.h> | 36 | #include <asm/irq.h> |
38 | #include <asm/mmu_context.h> | 37 | #include <asm/mmu_context.h> |
38 | #include <asm/facility.h> | ||
39 | #include "../kernel/entry.h" | 39 | #include "../kernel/entry.h" |
40 | 40 | ||
41 | #ifndef CONFIG_64BIT | 41 | #ifndef CONFIG_64BIT |
diff --git a/arch/s390/mm/init.c b/arch/s390/mm/init.c index 50236610de83..2bea0605856e 100644 --- a/arch/s390/mm/init.c +++ b/arch/s390/mm/init.c | |||
@@ -29,7 +29,6 @@ | |||
29 | #include <linux/export.h> | 29 | #include <linux/export.h> |
30 | #include <linux/gfp.h> | 30 | #include <linux/gfp.h> |
31 | #include <asm/processor.h> | 31 | #include <asm/processor.h> |
32 | #include <asm/system.h> | ||
33 | #include <asm/uaccess.h> | 32 | #include <asm/uaccess.h> |
34 | #include <asm/pgtable.h> | 33 | #include <asm/pgtable.h> |
35 | #include <asm/pgalloc.h> | 34 | #include <asm/pgalloc.h> |
@@ -38,6 +37,7 @@ | |||
38 | #include <asm/tlb.h> | 37 | #include <asm/tlb.h> |
39 | #include <asm/tlbflush.h> | 38 | #include <asm/tlbflush.h> |
40 | #include <asm/sections.h> | 39 | #include <asm/sections.h> |
40 | #include <asm/ctl_reg.h> | ||
41 | 41 | ||
42 | pgd_t swapper_pg_dir[PTRS_PER_PGD] __attribute__((__aligned__(PAGE_SIZE))); | 42 | pgd_t swapper_pg_dir[PTRS_PER_PGD] __attribute__((__aligned__(PAGE_SIZE))); |
43 | 43 | ||
diff --git a/arch/s390/mm/maccess.c b/arch/s390/mm/maccess.c index 1cb8427bedfb..7bb15fcca75e 100644 --- a/arch/s390/mm/maccess.c +++ b/arch/s390/mm/maccess.c | |||
@@ -12,7 +12,7 @@ | |||
12 | #include <linux/types.h> | 12 | #include <linux/types.h> |
13 | #include <linux/errno.h> | 13 | #include <linux/errno.h> |
14 | #include <linux/gfp.h> | 14 | #include <linux/gfp.h> |
15 | #include <asm/system.h> | 15 | #include <asm/ctl_reg.h> |
16 | 16 | ||
17 | /* | 17 | /* |
18 | * This function writes to kernel memory bypassing DAT and possible | 18 | * This function writes to kernel memory bypassing DAT and possible |
diff --git a/arch/s390/mm/pgtable.c b/arch/s390/mm/pgtable.c index 51b0738e13d1..373adf69b01c 100644 --- a/arch/s390/mm/pgtable.c +++ b/arch/s390/mm/pgtable.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <linux/rcupdate.h> | 18 | #include <linux/rcupdate.h> |
19 | #include <linux/slab.h> | 19 | #include <linux/slab.h> |
20 | 20 | ||
21 | #include <asm/system.h> | ||
22 | #include <asm/pgtable.h> | 21 | #include <asm/pgtable.h> |
23 | #include <asm/pgalloc.h> | 22 | #include <asm/pgalloc.h> |
24 | #include <asm/tlb.h> | 23 | #include <asm/tlb.h> |
diff --git a/arch/s390/oprofile/hwsampler.c b/arch/s390/oprofile/hwsampler.c index f097d516d8c5..c6646de07bf4 100644 --- a/arch/s390/oprofile/hwsampler.c +++ b/arch/s390/oprofile/hwsampler.c | |||
@@ -17,6 +17,8 @@ | |||
17 | #include <linux/semaphore.h> | 17 | #include <linux/semaphore.h> |
18 | #include <linux/oom.h> | 18 | #include <linux/oom.h> |
19 | #include <linux/oprofile.h> | 19 | #include <linux/oprofile.h> |
20 | |||
21 | #include <asm/facility.h> | ||
20 | #include <asm/cpu_mf.h> | 22 | #include <asm/cpu_mf.h> |
21 | #include <asm/irq.h> | 23 | #include <asm/irq.h> |
22 | 24 | ||
diff --git a/arch/score/include/asm/atomic.h b/arch/score/include/asm/atomic.h index 84eb8ddf9f3f..edf33dbded1e 100644 --- a/arch/score/include/asm/atomic.h +++ b/arch/score/include/asm/atomic.h | |||
@@ -1,6 +1,7 @@ | |||
1 | #ifndef _ASM_SCORE_ATOMIC_H | 1 | #ifndef _ASM_SCORE_ATOMIC_H |
2 | #define _ASM_SCORE_ATOMIC_H | 2 | #define _ASM_SCORE_ATOMIC_H |
3 | 3 | ||
4 | #include <asm/cmpxchg.h> | ||
4 | #include <asm-generic/atomic.h> | 5 | #include <asm-generic/atomic.h> |
5 | 6 | ||
6 | #endif /* _ASM_SCORE_ATOMIC_H */ | 7 | #endif /* _ASM_SCORE_ATOMIC_H */ |
diff --git a/arch/score/include/asm/barrier.h b/arch/score/include/asm/barrier.h new file mode 100644 index 000000000000..0eacb6471e6d --- /dev/null +++ b/arch/score/include/asm/barrier.h | |||
@@ -0,0 +1,16 @@ | |||
1 | #ifndef _ASM_SCORE_BARRIER_H | ||
2 | #define _ASM_SCORE_BARRIER_H | ||
3 | |||
4 | #define mb() barrier() | ||
5 | #define rmb() barrier() | ||
6 | #define wmb() barrier() | ||
7 | #define smp_mb() barrier() | ||
8 | #define smp_rmb() barrier() | ||
9 | #define smp_wmb() barrier() | ||
10 | |||
11 | #define read_barrier_depends() do {} while (0) | ||
12 | #define smp_read_barrier_depends() do {} while (0) | ||
13 | |||
14 | #define set_mb(var, value) do {var = value; wmb(); } while (0) | ||
15 | |||
16 | #endif /* _ASM_SCORE_BARRIER_H */ | ||
diff --git a/arch/score/include/asm/bitops.h b/arch/score/include/asm/bitops.h index 2763b050fca8..a304096b1894 100644 --- a/arch/score/include/asm/bitops.h +++ b/arch/score/include/asm/bitops.h | |||
@@ -2,7 +2,6 @@ | |||
2 | #define _ASM_SCORE_BITOPS_H | 2 | #define _ASM_SCORE_BITOPS_H |
3 | 3 | ||
4 | #include <asm/byteorder.h> /* swab32 */ | 4 | #include <asm/byteorder.h> /* swab32 */ |
5 | #include <asm/system.h> /* save_flags */ | ||
6 | 5 | ||
7 | /* | 6 | /* |
8 | * clear_bit() doesn't provide any barrier for the compiler. | 7 | * clear_bit() doesn't provide any barrier for the compiler. |
diff --git a/arch/score/include/asm/bug.h b/arch/score/include/asm/bug.h index bb76a330bcf1..fd7164af1f04 100644 --- a/arch/score/include/asm/bug.h +++ b/arch/score/include/asm/bug.h | |||
@@ -3,4 +3,15 @@ | |||
3 | 3 | ||
4 | #include <asm-generic/bug.h> | 4 | #include <asm-generic/bug.h> |
5 | 5 | ||
6 | struct pt_regs; | ||
7 | extern void __die(const char *, struct pt_regs *, const char *, | ||
8 | const char *, unsigned long) __attribute__((noreturn)); | ||
9 | extern void __die_if_kernel(const char *, struct pt_regs *, const char *, | ||
10 | const char *, unsigned long); | ||
11 | |||
12 | #define die(msg, regs) \ | ||
13 | __die(msg, regs, __FILE__ ":", __func__, __LINE__) | ||
14 | #define die_if_kernel(msg, regs) \ | ||
15 | __die_if_kernel(msg, regs, __FILE__ ":", __func__, __LINE__) | ||
16 | |||
6 | #endif /* _ASM_SCORE_BUG_H */ | 17 | #endif /* _ASM_SCORE_BUG_H */ |
diff --git a/arch/score/include/asm/cmpxchg.h b/arch/score/include/asm/cmpxchg.h new file mode 100644 index 000000000000..f384839c3ee5 --- /dev/null +++ b/arch/score/include/asm/cmpxchg.h | |||
@@ -0,0 +1,49 @@ | |||
1 | #ifndef _ASM_SCORE_CMPXCHG_H | ||
2 | #define _ASM_SCORE_CMPXCHG_H | ||
3 | |||
4 | #include <linux/irqflags.h> | ||
5 | |||
6 | struct __xchg_dummy { unsigned long a[100]; }; | ||
7 | #define __xg(x) ((struct __xchg_dummy *)(x)) | ||
8 | |||
9 | static inline | ||
10 | unsigned long __xchg(volatile unsigned long *m, unsigned long val) | ||
11 | { | ||
12 | unsigned long retval; | ||
13 | unsigned long flags; | ||
14 | |||
15 | local_irq_save(flags); | ||
16 | retval = *m; | ||
17 | *m = val; | ||
18 | local_irq_restore(flags); | ||
19 | return retval; | ||
20 | } | ||
21 | |||
22 | #define xchg(ptr, v) \ | ||
23 | ((__typeof__(*(ptr))) __xchg((unsigned long *)(ptr), \ | ||
24 | (unsigned long)(v))) | ||
25 | |||
26 | static inline unsigned long __cmpxchg(volatile unsigned long *m, | ||
27 | unsigned long old, unsigned long new) | ||
28 | { | ||
29 | unsigned long retval; | ||
30 | unsigned long flags; | ||
31 | |||
32 | local_irq_save(flags); | ||
33 | retval = *m; | ||
34 | if (retval == old) | ||
35 | *m = new; | ||
36 | local_irq_restore(flags); | ||
37 | return retval; | ||
38 | } | ||
39 | |||
40 | #define cmpxchg(ptr, o, n) \ | ||
41 | ((__typeof__(*(ptr))) __cmpxchg((unsigned long *)(ptr), \ | ||
42 | (unsigned long)(o), \ | ||
43 | (unsigned long)(n))) | ||
44 | |||
45 | #define __HAVE_ARCH_CMPXCHG 1 | ||
46 | |||
47 | #include <asm-generic/cmpxchg-local.h> | ||
48 | |||
49 | #endif /* _ASM_SCORE_CMPXCHG_H */ | ||
diff --git a/arch/score/include/asm/exec.h b/arch/score/include/asm/exec.h new file mode 100644 index 000000000000..f9f3cd59c860 --- /dev/null +++ b/arch/score/include/asm/exec.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef _ASM_SCORE_EXEC_H | ||
2 | #define _ASM_SCORE_EXEC_H | ||
3 | |||
4 | extern unsigned long arch_align_stack(unsigned long sp); | ||
5 | |||
6 | #endif /* _ASM_SCORE_EXEC_H */ | ||
diff --git a/arch/score/include/asm/switch_to.h b/arch/score/include/asm/switch_to.h new file mode 100644 index 000000000000..031756b59ece --- /dev/null +++ b/arch/score/include/asm/switch_to.h | |||
@@ -0,0 +1,13 @@ | |||
1 | #ifndef _ASM_SCORE_SWITCH_TO_H | ||
2 | #define _ASM_SCORE_SWITCH_TO_H | ||
3 | |||
4 | extern void *resume(void *last, void *next, void *next_ti); | ||
5 | |||
6 | #define switch_to(prev, next, last) \ | ||
7 | do { \ | ||
8 | (last) = resume(prev, next, task_thread_info(next)); \ | ||
9 | } while (0) | ||
10 | |||
11 | #define finish_arch_switch(prev) do {} while (0) | ||
12 | |||
13 | #endif /* _ASM_SCORE_SWITCH_TO_H */ | ||
diff --git a/arch/score/include/asm/system.h b/arch/score/include/asm/system.h deleted file mode 100644 index 589d5c7e171c..000000000000 --- a/arch/score/include/asm/system.h +++ /dev/null | |||
@@ -1,90 +0,0 @@ | |||
1 | #ifndef _ASM_SCORE_SYSTEM_H | ||
2 | #define _ASM_SCORE_SYSTEM_H | ||
3 | |||
4 | #include <linux/types.h> | ||
5 | #include <linux/irqflags.h> | ||
6 | |||
7 | struct pt_regs; | ||
8 | struct task_struct; | ||
9 | |||
10 | extern void *resume(void *last, void *next, void *next_ti); | ||
11 | |||
12 | #define switch_to(prev, next, last) \ | ||
13 | do { \ | ||
14 | (last) = resume(prev, next, task_thread_info(next)); \ | ||
15 | } while (0) | ||
16 | |||
17 | #define finish_arch_switch(prev) do {} while (0) | ||
18 | |||
19 | typedef void (*vi_handler_t)(void); | ||
20 | extern unsigned long arch_align_stack(unsigned long sp); | ||
21 | |||
22 | #define mb() barrier() | ||
23 | #define rmb() barrier() | ||
24 | #define wmb() barrier() | ||
25 | #define smp_mb() barrier() | ||
26 | #define smp_rmb() barrier() | ||
27 | #define smp_wmb() barrier() | ||
28 | |||
29 | #define read_barrier_depends() do {} while (0) | ||
30 | #define smp_read_barrier_depends() do {} while (0) | ||
31 | |||
32 | #define set_mb(var, value) do {var = value; wmb(); } while (0) | ||
33 | |||
34 | #define __HAVE_ARCH_CMPXCHG 1 | ||
35 | |||
36 | #include <asm-generic/cmpxchg-local.h> | ||
37 | |||
38 | #ifndef __ASSEMBLY__ | ||
39 | |||
40 | struct __xchg_dummy { unsigned long a[100]; }; | ||
41 | #define __xg(x) ((struct __xchg_dummy *)(x)) | ||
42 | |||
43 | static inline | ||
44 | unsigned long __xchg(volatile unsigned long *m, unsigned long val) | ||
45 | { | ||
46 | unsigned long retval; | ||
47 | unsigned long flags; | ||
48 | |||
49 | local_irq_save(flags); | ||
50 | retval = *m; | ||
51 | *m = val; | ||
52 | local_irq_restore(flags); | ||
53 | return retval; | ||
54 | } | ||
55 | |||
56 | #define xchg(ptr, v) \ | ||
57 | ((__typeof__(*(ptr))) __xchg((unsigned long *)(ptr), \ | ||
58 | (unsigned long)(v))) | ||
59 | |||
60 | static inline unsigned long __cmpxchg(volatile unsigned long *m, | ||
61 | unsigned long old, unsigned long new) | ||
62 | { | ||
63 | unsigned long retval; | ||
64 | unsigned long flags; | ||
65 | |||
66 | local_irq_save(flags); | ||
67 | retval = *m; | ||
68 | if (retval == old) | ||
69 | *m = new; | ||
70 | local_irq_restore(flags); | ||
71 | return retval; | ||
72 | } | ||
73 | |||
74 | #define cmpxchg(ptr, o, n) \ | ||
75 | ((__typeof__(*(ptr))) __cmpxchg((unsigned long *)(ptr), \ | ||
76 | (unsigned long)(o), \ | ||
77 | (unsigned long)(n))) | ||
78 | |||
79 | extern void __die(const char *, struct pt_regs *, const char *, | ||
80 | const char *, unsigned long) __attribute__((noreturn)); | ||
81 | extern void __die_if_kernel(const char *, struct pt_regs *, const char *, | ||
82 | const char *, unsigned long); | ||
83 | |||
84 | #define die(msg, regs) \ | ||
85 | __die(msg, regs, __FILE__ ":", __func__, __LINE__) | ||
86 | #define die_if_kernel(msg, regs) \ | ||
87 | __die_if_kernel(msg, regs, __FILE__ ":", __func__, __LINE__) | ||
88 | |||
89 | #endif /* !__ASSEMBLY__ */ | ||
90 | #endif /* _ASM_SCORE_SYSTEM_H */ | ||
diff --git a/arch/sh/boards/mach-microdev/irq.c b/arch/sh/boards/mach-microdev/irq.c index 4fb00369f0e2..9a8aff339619 100644 --- a/arch/sh/boards/mach-microdev/irq.c +++ b/arch/sh/boards/mach-microdev/irq.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | #include <linux/irq.h> | 13 | #include <linux/irq.h> |
14 | #include <linux/interrupt.h> | 14 | #include <linux/interrupt.h> |
15 | #include <asm/system.h> | ||
16 | #include <asm/io.h> | 15 | #include <asm/io.h> |
17 | #include <mach/microdev.h> | 16 | #include <mach/microdev.h> |
18 | 17 | ||
diff --git a/arch/sh/include/asm/atomic-irq.h b/arch/sh/include/asm/atomic-irq.h index 467d9415a32e..9f7c56609e53 100644 --- a/arch/sh/include/asm/atomic-irq.h +++ b/arch/sh/include/asm/atomic-irq.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef __ASM_SH_ATOMIC_IRQ_H | 1 | #ifndef __ASM_SH_ATOMIC_IRQ_H |
2 | #define __ASM_SH_ATOMIC_IRQ_H | 2 | #define __ASM_SH_ATOMIC_IRQ_H |
3 | 3 | ||
4 | #include <linux/irqflags.h> | ||
5 | |||
4 | /* | 6 | /* |
5 | * To get proper branch prediction for the main line, we must branch | 7 | * To get proper branch prediction for the main line, we must branch |
6 | * forward to code at the end of this object's .text section, then | 8 | * forward to code at the end of this object's .text section, then |
diff --git a/arch/sh/include/asm/atomic.h b/arch/sh/include/asm/atomic.h index 63a27dbc952e..37f2f4a55231 100644 --- a/arch/sh/include/asm/atomic.h +++ b/arch/sh/include/asm/atomic.h | |||
@@ -9,7 +9,7 @@ | |||
9 | 9 | ||
10 | #include <linux/compiler.h> | 10 | #include <linux/compiler.h> |
11 | #include <linux/types.h> | 11 | #include <linux/types.h> |
12 | #include <asm/system.h> | 12 | #include <asm/cmpxchg.h> |
13 | 13 | ||
14 | #define ATOMIC_INIT(i) ( (atomic_t) { (i) } ) | 14 | #define ATOMIC_INIT(i) ( (atomic_t) { (i) } ) |
15 | 15 | ||
diff --git a/arch/sh/include/asm/auxvec.h b/arch/sh/include/asm/auxvec.h index 483effd65e00..8bcc51af9367 100644 --- a/arch/sh/include/asm/auxvec.h +++ b/arch/sh/include/asm/auxvec.h | |||
@@ -33,4 +33,6 @@ | |||
33 | #define AT_L1D_CACHESHAPE 35 | 33 | #define AT_L1D_CACHESHAPE 35 |
34 | #define AT_L2_CACHESHAPE 36 | 34 | #define AT_L2_CACHESHAPE 36 |
35 | 35 | ||
36 | #define AT_VECTOR_SIZE_ARCH 5 /* entries in ARCH_DLINFO */ | ||
37 | |||
36 | #endif /* __ASM_SH_AUXVEC_H */ | 38 | #endif /* __ASM_SH_AUXVEC_H */ |
diff --git a/arch/sh/include/asm/barrier.h b/arch/sh/include/asm/barrier.h new file mode 100644 index 000000000000..72c103dae300 --- /dev/null +++ b/arch/sh/include/asm/barrier.h | |||
@@ -0,0 +1,54 @@ | |||
1 | /* | ||
2 | * Copyright (C) 1999, 2000 Niibe Yutaka & Kaz Kojima | ||
3 | * Copyright (C) 2002 Paul Mundt | ||
4 | */ | ||
5 | #ifndef __ASM_SH_BARRIER_H | ||
6 | #define __ASM_SH_BARRIER_H | ||
7 | |||
8 | #if defined(CONFIG_CPU_SH4A) || defined(CONFIG_CPU_SH5) | ||
9 | #include <asm/cache_insns.h> | ||
10 | #endif | ||
11 | |||
12 | /* | ||
13 | * A brief note on ctrl_barrier(), the control register write barrier. | ||
14 | * | ||
15 | * Legacy SH cores typically require a sequence of 8 nops after | ||
16 | * modification of a control register in order for the changes to take | ||
17 | * effect. On newer cores (like the sh4a and sh5) this is accomplished | ||
18 | * with icbi. | ||
19 | * | ||
20 | * Also note that on sh4a in the icbi case we can forego a synco for the | ||
21 | * write barrier, as it's not necessary for control registers. | ||
22 | * | ||
23 | * Historically we have only done this type of barrier for the MMUCR, but | ||
24 | * it's also necessary for the CCR, so we make it generic here instead. | ||
25 | */ | ||
26 | #if defined(CONFIG_CPU_SH4A) || defined(CONFIG_CPU_SH5) | ||
27 | #define mb() __asm__ __volatile__ ("synco": : :"memory") | ||
28 | #define rmb() mb() | ||
29 | #define wmb() __asm__ __volatile__ ("synco": : :"memory") | ||
30 | #define ctrl_barrier() __icbi(PAGE_OFFSET) | ||
31 | #define read_barrier_depends() do { } while(0) | ||
32 | #else | ||
33 | #define mb() __asm__ __volatile__ ("": : :"memory") | ||
34 | #define rmb() mb() | ||
35 | #define wmb() __asm__ __volatile__ ("": : :"memory") | ||
36 | #define ctrl_barrier() __asm__ __volatile__ ("nop;nop;nop;nop;nop;nop;nop;nop") | ||
37 | #define read_barrier_depends() do { } while(0) | ||
38 | #endif | ||
39 | |||
40 | #ifdef CONFIG_SMP | ||
41 | #define smp_mb() mb() | ||
42 | #define smp_rmb() rmb() | ||
43 | #define smp_wmb() wmb() | ||
44 | #define smp_read_barrier_depends() read_barrier_depends() | ||
45 | #else | ||
46 | #define smp_mb() barrier() | ||
47 | #define smp_rmb() barrier() | ||
48 | #define smp_wmb() barrier() | ||
49 | #define smp_read_barrier_depends() do { } while(0) | ||
50 | #endif | ||
51 | |||
52 | #define set_mb(var, value) do { (void)xchg(&var, value); } while (0) | ||
53 | |||
54 | #endif /* __ASM_SH_BARRIER_H */ | ||
diff --git a/arch/sh/include/asm/bitops.h b/arch/sh/include/asm/bitops.h index 90fa3e48b4d6..ea8706d94f08 100644 --- a/arch/sh/include/asm/bitops.h +++ b/arch/sh/include/asm/bitops.h | |||
@@ -7,7 +7,6 @@ | |||
7 | #error only <linux/bitops.h> can be included directly | 7 | #error only <linux/bitops.h> can be included directly |
8 | #endif | 8 | #endif |
9 | 9 | ||
10 | #include <asm/system.h> | ||
11 | /* For __swab32 */ | 10 | /* For __swab32 */ |
12 | #include <asm/byteorder.h> | 11 | #include <asm/byteorder.h> |
13 | 12 | ||
diff --git a/arch/sh/include/asm/bl_bit.h b/arch/sh/include/asm/bl_bit.h new file mode 100644 index 000000000000..45e6b9fc37a0 --- /dev/null +++ b/arch/sh/include/asm/bl_bit.h | |||
@@ -0,0 +1,10 @@ | |||
1 | #ifndef __ASM_SH_BL_BIT_H | ||
2 | #define __ASM_SH_BL_BIT_H | ||
3 | |||
4 | #ifdef CONFIG_SUPERH32 | ||
5 | # include "bl_bit_32.h" | ||
6 | #else | ||
7 | # include "bl_bit_64.h" | ||
8 | #endif | ||
9 | |||
10 | #endif /* __ASM_SH_BL_BIT_H */ | ||
diff --git a/arch/sh/include/asm/bl_bit_32.h b/arch/sh/include/asm/bl_bit_32.h new file mode 100644 index 000000000000..fd21eee62149 --- /dev/null +++ b/arch/sh/include/asm/bl_bit_32.h | |||
@@ -0,0 +1,33 @@ | |||
1 | #ifndef __ASM_SH_BL_BIT_32_H | ||
2 | #define __ASM_SH_BL_BIT_32_H | ||
3 | |||
4 | static inline void set_bl_bit(void) | ||
5 | { | ||
6 | unsigned long __dummy0, __dummy1; | ||
7 | |||
8 | __asm__ __volatile__ ( | ||
9 | "stc sr, %0\n\t" | ||
10 | "or %2, %0\n\t" | ||
11 | "and %3, %0\n\t" | ||
12 | "ldc %0, sr\n\t" | ||
13 | : "=&r" (__dummy0), "=r" (__dummy1) | ||
14 | : "r" (0x10000000), "r" (0xffffff0f) | ||
15 | : "memory" | ||
16 | ); | ||
17 | } | ||
18 | |||
19 | static inline void clear_bl_bit(void) | ||
20 | { | ||
21 | unsigned long __dummy0, __dummy1; | ||
22 | |||
23 | __asm__ __volatile__ ( | ||
24 | "stc sr, %0\n\t" | ||
25 | "and %2, %0\n\t" | ||
26 | "ldc %0, sr\n\t" | ||
27 | : "=&r" (__dummy0), "=r" (__dummy1) | ||
28 | : "1" (~0x10000000) | ||
29 | : "memory" | ||
30 | ); | ||
31 | } | ||
32 | |||
33 | #endif /* __ASM_SH_BL_BIT_32_H */ | ||
diff --git a/arch/sh/include/asm/bl_bit_64.h b/arch/sh/include/asm/bl_bit_64.h new file mode 100644 index 000000000000..6cc8711af435 --- /dev/null +++ b/arch/sh/include/asm/bl_bit_64.h | |||
@@ -0,0 +1,40 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2000, 2001 Paolo Alberelli | ||
3 | * Copyright (C) 2003 Paul Mundt | ||
4 | * Copyright (C) 2004 Richard Curnow | ||
5 | * | ||
6 | * This file is subject to the terms and conditions of the GNU General Public | ||
7 | * License. See the file "COPYING" in the main directory of this archive | ||
8 | * for more details. | ||
9 | */ | ||
10 | #ifndef __ASM_SH_BL_BIT_64_H | ||
11 | #define __ASM_SH_BL_BIT_64_H | ||
12 | |||
13 | #include <asm/processor.h> | ||
14 | |||
15 | #define SR_BL_LL 0x0000000010000000LL | ||
16 | |||
17 | static inline void set_bl_bit(void) | ||
18 | { | ||
19 | unsigned long long __dummy0, __dummy1 = SR_BL_LL; | ||
20 | |||
21 | __asm__ __volatile__("getcon " __SR ", %0\n\t" | ||
22 | "or %0, %1, %0\n\t" | ||
23 | "putcon %0, " __SR "\n\t" | ||
24 | : "=&r" (__dummy0) | ||
25 | : "r" (__dummy1)); | ||
26 | |||
27 | } | ||
28 | |||
29 | static inline void clear_bl_bit(void) | ||
30 | { | ||
31 | unsigned long long __dummy0, __dummy1 = ~SR_BL_LL; | ||
32 | |||
33 | __asm__ __volatile__("getcon " __SR ", %0\n\t" | ||
34 | "and %0, %1, %0\n\t" | ||
35 | "putcon %0, " __SR "\n\t" | ||
36 | : "=&r" (__dummy0) | ||
37 | : "r" (__dummy1)); | ||
38 | } | ||
39 | |||
40 | #endif /* __ASM_SH_BL_BIT_64_H */ | ||
diff --git a/arch/sh/include/asm/bug.h b/arch/sh/include/asm/bug.h index 6323f864d111..2b87d86bfc41 100644 --- a/arch/sh/include/asm/bug.h +++ b/arch/sh/include/asm/bug.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef __ASM_SH_BUG_H | 1 | #ifndef __ASM_SH_BUG_H |
2 | #define __ASM_SH_BUG_H | 2 | #define __ASM_SH_BUG_H |
3 | 3 | ||
4 | #include <linux/linkage.h> | ||
5 | |||
4 | #define TRAPA_BUG_OPCODE 0xc33e /* trapa #0x3e */ | 6 | #define TRAPA_BUG_OPCODE 0xc33e /* trapa #0x3e */ |
5 | #define BUGFLAG_UNWINDER (1 << 1) | 7 | #define BUGFLAG_UNWINDER (1 << 1) |
6 | 8 | ||
@@ -107,4 +109,7 @@ do { \ | |||
107 | 109 | ||
108 | #include <asm-generic/bug.h> | 110 | #include <asm-generic/bug.h> |
109 | 111 | ||
112 | struct pt_regs; | ||
113 | extern void die(const char *str, struct pt_regs *regs, long err) __attribute__ ((noreturn)); | ||
114 | |||
110 | #endif /* __ASM_SH_BUG_H */ | 115 | #endif /* __ASM_SH_BUG_H */ |
diff --git a/arch/sh/include/asm/cache_insns.h b/arch/sh/include/asm/cache_insns.h new file mode 100644 index 000000000000..d25fbe53090d --- /dev/null +++ b/arch/sh/include/asm/cache_insns.h | |||
@@ -0,0 +1,11 @@ | |||
1 | #ifndef __ASM_SH_CACHE_INSNS_H | ||
2 | #define __ASM_SH_CACHE_INSNS_H | ||
3 | |||
4 | |||
5 | #ifdef CONFIG_SUPERH32 | ||
6 | # include "cache_insns_32.h" | ||
7 | #else | ||
8 | # include "cache_insns_64.h" | ||
9 | #endif | ||
10 | |||
11 | #endif /* __ASM_SH_CACHE_INSNS_H */ | ||
diff --git a/arch/sh/include/asm/cache_insns_32.h b/arch/sh/include/asm/cache_insns_32.h new file mode 100644 index 000000000000..b92fe5416092 --- /dev/null +++ b/arch/sh/include/asm/cache_insns_32.h | |||
@@ -0,0 +1,21 @@ | |||
1 | #ifndef __ASM_SH_CACHE_INSNS_32_H | ||
2 | #define __ASM_SH_CACHE_INSNS_32_H | ||
3 | |||
4 | #include <linux/types.h> | ||
5 | |||
6 | #if defined(CONFIG_CPU_SH4A) | ||
7 | #define __icbi(addr) __asm__ __volatile__ ( "icbi @%0\n\t" : : "r" (addr)) | ||
8 | #else | ||
9 | #define __icbi(addr) mb() | ||
10 | #endif | ||
11 | |||
12 | #define __ocbp(addr) __asm__ __volatile__ ( "ocbp @%0\n\t" : : "r" (addr)) | ||
13 | #define __ocbi(addr) __asm__ __volatile__ ( "ocbi @%0\n\t" : : "r" (addr)) | ||
14 | #define __ocbwb(addr) __asm__ __volatile__ ( "ocbwb @%0\n\t" : : "r" (addr)) | ||
15 | |||
16 | static inline reg_size_t register_align(void *val) | ||
17 | { | ||
18 | return (unsigned long)(signed long)val; | ||
19 | } | ||
20 | |||
21 | #endif /* __ASM_SH_CACHE_INSNS_32_H */ | ||
diff --git a/arch/sh/include/asm/cache_insns_64.h b/arch/sh/include/asm/cache_insns_64.h new file mode 100644 index 000000000000..70b6357eaf1a --- /dev/null +++ b/arch/sh/include/asm/cache_insns_64.h | |||
@@ -0,0 +1,23 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2000, 2001 Paolo Alberelli | ||
3 | * Copyright (C) 2003 Paul Mundt | ||
4 | * Copyright (C) 2004 Richard Curnow | ||
5 | * | ||
6 | * This file is subject to the terms and conditions of the GNU General Public | ||
7 | * License. See the file "COPYING" in the main directory of this archive | ||
8 | * for more details. | ||
9 | */ | ||
10 | #ifndef __ASM_SH_CACHE_INSNS_64_H | ||
11 | #define __ASM_SH_CACHE_INSNS_64_H | ||
12 | |||
13 | #define __icbi(addr) __asm__ __volatile__ ( "icbi %0, 0\n\t" : : "r" (addr)) | ||
14 | #define __ocbp(addr) __asm__ __volatile__ ( "ocbp %0, 0\n\t" : : "r" (addr)) | ||
15 | #define __ocbi(addr) __asm__ __volatile__ ( "ocbi %0, 0\n\t" : : "r" (addr)) | ||
16 | #define __ocbwb(addr) __asm__ __volatile__ ( "ocbwb %0, 0\n\t" : : "r" (addr)) | ||
17 | |||
18 | static inline reg_size_t register_align(void *val) | ||
19 | { | ||
20 | return (unsigned long long)(signed long long)(signed long)val; | ||
21 | } | ||
22 | |||
23 | #endif /* __ASM_SH_CACHE_INSNS_64_H */ | ||
diff --git a/arch/sh/include/asm/cmpxchg-irq.h b/arch/sh/include/asm/cmpxchg-irq.h index 43049ec0554b..bd11f630414a 100644 --- a/arch/sh/include/asm/cmpxchg-irq.h +++ b/arch/sh/include/asm/cmpxchg-irq.h | |||
@@ -1,6 +1,8 @@ | |||
1 | #ifndef __ASM_SH_CMPXCHG_IRQ_H | 1 | #ifndef __ASM_SH_CMPXCHG_IRQ_H |
2 | #define __ASM_SH_CMPXCHG_IRQ_H | 2 | #define __ASM_SH_CMPXCHG_IRQ_H |
3 | 3 | ||
4 | #include <linux/irqflags.h> | ||
5 | |||
4 | static inline unsigned long xchg_u32(volatile u32 *m, unsigned long val) | 6 | static inline unsigned long xchg_u32(volatile u32 *m, unsigned long val) |
5 | { | 7 | { |
6 | unsigned long flags, retval; | 8 | unsigned long flags, retval; |
diff --git a/arch/sh/include/asm/cmpxchg.h b/arch/sh/include/asm/cmpxchg.h new file mode 100644 index 000000000000..f6bd1406b897 --- /dev/null +++ b/arch/sh/include/asm/cmpxchg.h | |||
@@ -0,0 +1,70 @@ | |||
1 | #ifndef __ASM_SH_CMPXCHG_H | ||
2 | #define __ASM_SH_CMPXCHG_H | ||
3 | |||
4 | /* | ||
5 | * Atomic operations that C can't guarantee us. Useful for | ||
6 | * resource counting etc.. | ||
7 | */ | ||
8 | |||
9 | #include <linux/compiler.h> | ||
10 | #include <linux/types.h> | ||
11 | |||
12 | #if defined(CONFIG_GUSA_RB) | ||
13 | #include <asm/cmpxchg-grb.h> | ||
14 | #elif defined(CONFIG_CPU_SH4A) | ||
15 | #include <asm/cmpxchg-llsc.h> | ||
16 | #else | ||
17 | #include <asm/cmpxchg-irq.h> | ||
18 | #endif | ||
19 | |||
20 | extern void __xchg_called_with_bad_pointer(void); | ||
21 | |||
22 | #define __xchg(ptr, x, size) \ | ||
23 | ({ \ | ||
24 | unsigned long __xchg__res; \ | ||
25 | volatile void *__xchg_ptr = (ptr); \ | ||
26 | switch (size) { \ | ||
27 | case 4: \ | ||
28 | __xchg__res = xchg_u32(__xchg_ptr, x); \ | ||
29 | break; \ | ||
30 | case 1: \ | ||
31 | __xchg__res = xchg_u8(__xchg_ptr, x); \ | ||
32 | break; \ | ||
33 | default: \ | ||
34 | __xchg_called_with_bad_pointer(); \ | ||
35 | __xchg__res = x; \ | ||
36 | break; \ | ||
37 | } \ | ||
38 | \ | ||
39 | __xchg__res; \ | ||
40 | }) | ||
41 | |||
42 | #define xchg(ptr,x) \ | ||
43 | ((__typeof__(*(ptr)))__xchg((ptr),(unsigned long)(x), sizeof(*(ptr)))) | ||
44 | |||
45 | /* This function doesn't exist, so you'll get a linker error | ||
46 | * if something tries to do an invalid cmpxchg(). */ | ||
47 | extern void __cmpxchg_called_with_bad_pointer(void); | ||
48 | |||
49 | #define __HAVE_ARCH_CMPXCHG 1 | ||
50 | |||
51 | static inline unsigned long __cmpxchg(volatile void * ptr, unsigned long old, | ||
52 | unsigned long new, int size) | ||
53 | { | ||
54 | switch (size) { | ||
55 | case 4: | ||
56 | return __cmpxchg_u32(ptr, old, new); | ||
57 | } | ||
58 | __cmpxchg_called_with_bad_pointer(); | ||
59 | return old; | ||
60 | } | ||
61 | |||
62 | #define cmpxchg(ptr,o,n) \ | ||
63 | ({ \ | ||
64 | __typeof__(*(ptr)) _o_ = (o); \ | ||
65 | __typeof__(*(ptr)) _n_ = (n); \ | ||
66 | (__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_, \ | ||
67 | (unsigned long)_n_, sizeof(*(ptr))); \ | ||
68 | }) | ||
69 | |||
70 | #endif /* __ASM_SH_CMPXCHG_H */ | ||
diff --git a/arch/sh/include/asm/exec.h b/arch/sh/include/asm/exec.h new file mode 100644 index 000000000000..69486a9497f7 --- /dev/null +++ b/arch/sh/include/asm/exec.h | |||
@@ -0,0 +1,10 @@ | |||
1 | /* | ||
2 | * Copyright (C) 1999, 2000 Niibe Yutaka & Kaz Kojima | ||
3 | * Copyright (C) 2002 Paul Mundt | ||
4 | */ | ||
5 | #ifndef __ASM_SH_EXEC_H | ||
6 | #define __ASM_SH_EXEC_H | ||
7 | |||
8 | #define arch_align_stack(x) (x) | ||
9 | |||
10 | #endif /* __ASM_SH_EXEC_H */ | ||
diff --git a/arch/sh/include/asm/futex-irq.h b/arch/sh/include/asm/futex-irq.h index 6cb9f193a95e..63d33129ea23 100644 --- a/arch/sh/include/asm/futex-irq.h +++ b/arch/sh/include/asm/futex-irq.h | |||
@@ -1,7 +1,6 @@ | |||
1 | #ifndef __ASM_SH_FUTEX_IRQ_H | 1 | #ifndef __ASM_SH_FUTEX_IRQ_H |
2 | #define __ASM_SH_FUTEX_IRQ_H | 2 | #define __ASM_SH_FUTEX_IRQ_H |
3 | 3 | ||
4 | #include <asm/system.h> | ||
5 | 4 | ||
6 | static inline int atomic_futex_op_xchg_set(int oparg, u32 __user *uaddr, | 5 | static inline int atomic_futex_op_xchg_set(int oparg, u32 __user *uaddr, |
7 | int *oldval) | 6 | int *oldval) |
diff --git a/arch/sh/include/asm/io.h b/arch/sh/include/asm/io.h index 28c5aa58bb45..35fc8b077cb1 100644 --- a/arch/sh/include/asm/io.h +++ b/arch/sh/include/asm/io.h | |||
@@ -14,7 +14,6 @@ | |||
14 | */ | 14 | */ |
15 | #include <linux/errno.h> | 15 | #include <linux/errno.h> |
16 | #include <asm/cache.h> | 16 | #include <asm/cache.h> |
17 | #include <asm/system.h> | ||
18 | #include <asm/addrspace.h> | 17 | #include <asm/addrspace.h> |
19 | #include <asm/machvec.h> | 18 | #include <asm/machvec.h> |
20 | #include <asm/pgtable.h> | 19 | #include <asm/pgtable.h> |
diff --git a/arch/sh/include/asm/processor.h b/arch/sh/include/asm/processor.h index 9c7bdfcaebbd..a229c393826a 100644 --- a/arch/sh/include/asm/processor.h +++ b/arch/sh/include/asm/processor.h | |||
@@ -101,6 +101,10 @@ extern struct sh_cpuinfo cpu_data[]; | |||
101 | #define cpu_sleep() __asm__ __volatile__ ("sleep" : : : "memory") | 101 | #define cpu_sleep() __asm__ __volatile__ ("sleep" : : : "memory") |
102 | #define cpu_relax() barrier() | 102 | #define cpu_relax() barrier() |
103 | 103 | ||
104 | void default_idle(void); | ||
105 | void cpu_idle_wait(void); | ||
106 | void stop_this_cpu(void *); | ||
107 | |||
104 | /* Forward decl */ | 108 | /* Forward decl */ |
105 | struct seq_operations; | 109 | struct seq_operations; |
106 | struct task_struct; | 110 | struct task_struct; |
@@ -161,6 +165,17 @@ int vsyscall_init(void); | |||
161 | #define vsyscall_init() do { } while (0) | 165 | #define vsyscall_init() do { } while (0) |
162 | #endif | 166 | #endif |
163 | 167 | ||
168 | /* | ||
169 | * SH-2A has both 16 and 32-bit opcodes, do lame encoding checks. | ||
170 | */ | ||
171 | #ifdef CONFIG_CPU_SH2A | ||
172 | extern unsigned int instruction_size(unsigned int insn); | ||
173 | #elif defined(CONFIG_SUPERH32) | ||
174 | #define instruction_size(insn) (2) | ||
175 | #else | ||
176 | #define instruction_size(insn) (4) | ||
177 | #endif | ||
178 | |||
164 | #endif /* __ASSEMBLY__ */ | 179 | #endif /* __ASSEMBLY__ */ |
165 | 180 | ||
166 | #ifdef CONFIG_SUPERH32 | 181 | #ifdef CONFIG_SUPERH32 |
diff --git a/arch/sh/include/asm/ptrace.h b/arch/sh/include/asm/ptrace.h index 2d3679b2447f..c7b7e1ed194a 100644 --- a/arch/sh/include/asm/ptrace.h +++ b/arch/sh/include/asm/ptrace.h | |||
@@ -37,7 +37,6 @@ | |||
37 | #include <linux/thread_info.h> | 37 | #include <linux/thread_info.h> |
38 | #include <asm/addrspace.h> | 38 | #include <asm/addrspace.h> |
39 | #include <asm/page.h> | 39 | #include <asm/page.h> |
40 | #include <asm/system.h> | ||
41 | 40 | ||
42 | #define user_mode(regs) (((regs)->sr & 0x40000000)==0) | 41 | #define user_mode(regs) (((regs)->sr & 0x40000000)==0) |
43 | #define kernel_stack_pointer(_regs) ((unsigned long)(_regs)->regs[15]) | 42 | #define kernel_stack_pointer(_regs) ((unsigned long)(_regs)->regs[15]) |
diff --git a/arch/sh/include/asm/setup.h b/arch/sh/include/asm/setup.h index 01fa17a3d759..465a22df8fd0 100644 --- a/arch/sh/include/asm/setup.h +++ b/arch/sh/include/asm/setup.h | |||
@@ -20,6 +20,7 @@ | |||
20 | 20 | ||
21 | void sh_mv_setup(void); | 21 | void sh_mv_setup(void); |
22 | void check_for_initrd(void); | 22 | void check_for_initrd(void); |
23 | void per_cpu_trap_init(void); | ||
23 | 24 | ||
24 | #endif /* __KERNEL__ */ | 25 | #endif /* __KERNEL__ */ |
25 | 26 | ||
diff --git a/arch/sh/include/asm/switch_to.h b/arch/sh/include/asm/switch_to.h new file mode 100644 index 000000000000..62b1941813e3 --- /dev/null +++ b/arch/sh/include/asm/switch_to.h | |||
@@ -0,0 +1,19 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2000, 2001 Paolo Alberelli | ||
3 | * Copyright (C) 2003 Paul Mundt | ||
4 | * Copyright (C) 2004 Richard Curnow | ||
5 | * | ||
6 | * This file is subject to the terms and conditions of the GNU General Public | ||
7 | * License. See the file "COPYING" in the main directory of this archive | ||
8 | * for more details. | ||
9 | */ | ||
10 | #ifndef __ASM_SH_SWITCH_TO_H | ||
11 | #define __ASM_SH_SWITCH_TO_H | ||
12 | |||
13 | #ifdef CONFIG_SUPERH32 | ||
14 | # include "switch_to_32.h" | ||
15 | #else | ||
16 | # include "switch_to_64.h" | ||
17 | #endif | ||
18 | |||
19 | #endif /* __ASM_SH_SWITCH_TO_H */ | ||
diff --git a/arch/sh/include/asm/system_32.h b/arch/sh/include/asm/switch_to_32.h index a4ad1cd9bc4d..0c065513e7ac 100644 --- a/arch/sh/include/asm/system_32.h +++ b/arch/sh/include/asm/switch_to_32.h | |||
@@ -1,8 +1,5 @@ | |||
1 | #ifndef __ASM_SH_SYSTEM_32_H | 1 | #ifndef __ASM_SH_SWITCH_TO_32_H |
2 | #define __ASM_SH_SYSTEM_32_H | 2 | #define __ASM_SH_SWITCH_TO_32_H |
3 | |||
4 | #include <linux/types.h> | ||
5 | #include <asm/mmu.h> | ||
6 | 3 | ||
7 | #ifdef CONFIG_SH_DSP | 4 | #ifdef CONFIG_SH_DSP |
8 | 5 | ||
@@ -32,7 +29,6 @@ do { \ | |||
32 | : : "r" (__ts2)); \ | 29 | : : "r" (__ts2)); \ |
33 | } while (0) | 30 | } while (0) |
34 | 31 | ||
35 | |||
36 | #define __save_dsp(tsk) \ | 32 | #define __save_dsp(tsk) \ |
37 | do { \ | 33 | do { \ |
38 | register u32 *__ts2 __asm__ ("r2") = \ | 34 | register u32 *__ts2 __asm__ ("r2") = \ |
@@ -64,16 +60,6 @@ do { \ | |||
64 | #define __restore_dsp(tsk) do { } while (0) | 60 | #define __restore_dsp(tsk) do { } while (0) |
65 | #endif | 61 | #endif |
66 | 62 | ||
67 | #if defined(CONFIG_CPU_SH4A) | ||
68 | #define __icbi(addr) __asm__ __volatile__ ( "icbi @%0\n\t" : : "r" (addr)) | ||
69 | #else | ||
70 | #define __icbi(addr) mb() | ||
71 | #endif | ||
72 | |||
73 | #define __ocbp(addr) __asm__ __volatile__ ( "ocbp @%0\n\t" : : "r" (addr)) | ||
74 | #define __ocbi(addr) __asm__ __volatile__ ( "ocbi @%0\n\t" : : "r" (addr)) | ||
75 | #define __ocbwb(addr) __asm__ __volatile__ ( "ocbwb @%0\n\t" : : "r" (addr)) | ||
76 | |||
77 | struct task_struct *__switch_to(struct task_struct *prev, | 63 | struct task_struct *__switch_to(struct task_struct *prev, |
78 | struct task_struct *next); | 64 | struct task_struct *next); |
79 | 65 | ||
@@ -145,92 +131,4 @@ do { \ | |||
145 | __restore_dsp(prev); \ | 131 | __restore_dsp(prev); \ |
146 | } while (0) | 132 | } while (0) |
147 | 133 | ||
148 | #ifdef CONFIG_CPU_HAS_SR_RB | 134 | #endif /* __ASM_SH_SWITCH_TO_32_H */ |
149 | #define lookup_exception_vector() \ | ||
150 | ({ \ | ||
151 | unsigned long _vec; \ | ||
152 | \ | ||
153 | __asm__ __volatile__ ( \ | ||
154 | "stc r2_bank, %0\n\t" \ | ||
155 | : "=r" (_vec) \ | ||
156 | ); \ | ||
157 | \ | ||
158 | _vec; \ | ||
159 | }) | ||
160 | #else | ||
161 | #define lookup_exception_vector() \ | ||
162 | ({ \ | ||
163 | unsigned long _vec; \ | ||
164 | __asm__ __volatile__ ( \ | ||
165 | "mov r4, %0\n\t" \ | ||
166 | : "=r" (_vec) \ | ||
167 | ); \ | ||
168 | \ | ||
169 | _vec; \ | ||
170 | }) | ||
171 | #endif | ||
172 | |||
173 | static inline reg_size_t register_align(void *val) | ||
174 | { | ||
175 | return (unsigned long)(signed long)val; | ||
176 | } | ||
177 | |||
178 | int handle_unaligned_access(insn_size_t instruction, struct pt_regs *regs, | ||
179 | struct mem_access *ma, int, unsigned long address); | ||
180 | |||
181 | static inline void trigger_address_error(void) | ||
182 | { | ||
183 | __asm__ __volatile__ ( | ||
184 | "ldc %0, sr\n\t" | ||
185 | "mov.l @%1, %0" | ||
186 | : | ||
187 | : "r" (0x10000000), "r" (0x80000001) | ||
188 | ); | ||
189 | } | ||
190 | |||
191 | asmlinkage void do_address_error(struct pt_regs *regs, | ||
192 | unsigned long writeaccess, | ||
193 | unsigned long address); | ||
194 | asmlinkage void do_divide_error(unsigned long r4, unsigned long r5, | ||
195 | unsigned long r6, unsigned long r7, | ||
196 | struct pt_regs __regs); | ||
197 | asmlinkage void do_reserved_inst(unsigned long r4, unsigned long r5, | ||
198 | unsigned long r6, unsigned long r7, | ||
199 | struct pt_regs __regs); | ||
200 | asmlinkage void do_illegal_slot_inst(unsigned long r4, unsigned long r5, | ||
201 | unsigned long r6, unsigned long r7, | ||
202 | struct pt_regs __regs); | ||
203 | asmlinkage void do_exception_error(unsigned long r4, unsigned long r5, | ||
204 | unsigned long r6, unsigned long r7, | ||
205 | struct pt_regs __regs); | ||
206 | |||
207 | static inline void set_bl_bit(void) | ||
208 | { | ||
209 | unsigned long __dummy0, __dummy1; | ||
210 | |||
211 | __asm__ __volatile__ ( | ||
212 | "stc sr, %0\n\t" | ||
213 | "or %2, %0\n\t" | ||
214 | "and %3, %0\n\t" | ||
215 | "ldc %0, sr\n\t" | ||
216 | : "=&r" (__dummy0), "=r" (__dummy1) | ||
217 | : "r" (0x10000000), "r" (0xffffff0f) | ||
218 | : "memory" | ||
219 | ); | ||
220 | } | ||
221 | |||
222 | static inline void clear_bl_bit(void) | ||
223 | { | ||
224 | unsigned long __dummy0, __dummy1; | ||
225 | |||
226 | __asm__ __volatile__ ( | ||
227 | "stc sr, %0\n\t" | ||
228 | "and %2, %0\n\t" | ||
229 | "ldc %0, sr\n\t" | ||
230 | : "=&r" (__dummy0), "=r" (__dummy1) | ||
231 | : "1" (~0x10000000) | ||
232 | : "memory" | ||
233 | ); | ||
234 | } | ||
235 | |||
236 | #endif /* __ASM_SH_SYSTEM_32_H */ | ||
diff --git a/arch/sh/include/asm/switch_to_64.h b/arch/sh/include/asm/switch_to_64.h new file mode 100644 index 000000000000..ba3129d6bc21 --- /dev/null +++ b/arch/sh/include/asm/switch_to_64.h | |||
@@ -0,0 +1,35 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2000, 2001 Paolo Alberelli | ||
3 | * Copyright (C) 2003 Paul Mundt | ||
4 | * Copyright (C) 2004 Richard Curnow | ||
5 | * | ||
6 | * This file is subject to the terms and conditions of the GNU General Public | ||
7 | * License. See the file "COPYING" in the main directory of this archive | ||
8 | * for more details. | ||
9 | */ | ||
10 | #ifndef __ASM_SH_SWITCH_TO_64_H | ||
11 | #define __ASM_SH_SWITCH_TO_64_H | ||
12 | |||
13 | struct thread_struct; | ||
14 | struct task_struct; | ||
15 | |||
16 | /* | ||
17 | * switch_to() should switch tasks to task nr n, first | ||
18 | */ | ||
19 | struct task_struct *sh64_switch_to(struct task_struct *prev, | ||
20 | struct thread_struct *prev_thread, | ||
21 | struct task_struct *next, | ||
22 | struct thread_struct *next_thread); | ||
23 | |||
24 | #define switch_to(prev,next,last) \ | ||
25 | do { \ | ||
26 | if (last_task_used_math != next) { \ | ||
27 | struct pt_regs *regs = next->thread.uregs; \ | ||
28 | if (regs) regs->sr |= SR_FD; \ | ||
29 | } \ | ||
30 | last = sh64_switch_to(prev, &prev->thread, next, \ | ||
31 | &next->thread); \ | ||
32 | } while (0) | ||
33 | |||
34 | |||
35 | #endif /* __ASM_SH_SWITCH_TO_64_H */ | ||
diff --git a/arch/sh/include/asm/system.h b/arch/sh/include/asm/system.h deleted file mode 100644 index 10c8b1823a18..000000000000 --- a/arch/sh/include/asm/system.h +++ /dev/null | |||
@@ -1,184 +0,0 @@ | |||
1 | #ifndef __ASM_SH_SYSTEM_H | ||
2 | #define __ASM_SH_SYSTEM_H | ||
3 | |||
4 | /* | ||
5 | * Copyright (C) 1999, 2000 Niibe Yutaka & Kaz Kojima | ||
6 | * Copyright (C) 2002 Paul Mundt | ||
7 | */ | ||
8 | |||
9 | #include <linux/irqflags.h> | ||
10 | #include <linux/compiler.h> | ||
11 | #include <linux/linkage.h> | ||
12 | #include <asm/types.h> | ||
13 | #include <asm/uncached.h> | ||
14 | |||
15 | #define AT_VECTOR_SIZE_ARCH 5 /* entries in ARCH_DLINFO */ | ||
16 | |||
17 | /* | ||
18 | * A brief note on ctrl_barrier(), the control register write barrier. | ||
19 | * | ||
20 | * Legacy SH cores typically require a sequence of 8 nops after | ||
21 | * modification of a control register in order for the changes to take | ||
22 | * effect. On newer cores (like the sh4a and sh5) this is accomplished | ||
23 | * with icbi. | ||
24 | * | ||
25 | * Also note that on sh4a in the icbi case we can forego a synco for the | ||
26 | * write barrier, as it's not necessary for control registers. | ||
27 | * | ||
28 | * Historically we have only done this type of barrier for the MMUCR, but | ||
29 | * it's also necessary for the CCR, so we make it generic here instead. | ||
30 | */ | ||
31 | #if defined(CONFIG_CPU_SH4A) || defined(CONFIG_CPU_SH5) | ||
32 | #define mb() __asm__ __volatile__ ("synco": : :"memory") | ||
33 | #define rmb() mb() | ||
34 | #define wmb() __asm__ __volatile__ ("synco": : :"memory") | ||
35 | #define ctrl_barrier() __icbi(PAGE_OFFSET) | ||
36 | #define read_barrier_depends() do { } while(0) | ||
37 | #else | ||
38 | #define mb() __asm__ __volatile__ ("": : :"memory") | ||
39 | #define rmb() mb() | ||
40 | #define wmb() __asm__ __volatile__ ("": : :"memory") | ||
41 | #define ctrl_barrier() __asm__ __volatile__ ("nop;nop;nop;nop;nop;nop;nop;nop") | ||
42 | #define read_barrier_depends() do { } while(0) | ||
43 | #endif | ||
44 | |||
45 | #ifdef CONFIG_SMP | ||
46 | #define smp_mb() mb() | ||
47 | #define smp_rmb() rmb() | ||
48 | #define smp_wmb() wmb() | ||
49 | #define smp_read_barrier_depends() read_barrier_depends() | ||
50 | #else | ||
51 | #define smp_mb() barrier() | ||
52 | #define smp_rmb() barrier() | ||
53 | #define smp_wmb() barrier() | ||
54 | #define smp_read_barrier_depends() do { } while(0) | ||
55 | #endif | ||
56 | |||
57 | #define set_mb(var, value) do { (void)xchg(&var, value); } while (0) | ||
58 | |||
59 | #ifdef CONFIG_GUSA_RB | ||
60 | #include <asm/cmpxchg-grb.h> | ||
61 | #elif defined(CONFIG_CPU_SH4A) | ||
62 | #include <asm/cmpxchg-llsc.h> | ||
63 | #else | ||
64 | #include <asm/cmpxchg-irq.h> | ||
65 | #endif | ||
66 | |||
67 | extern void __xchg_called_with_bad_pointer(void); | ||
68 | |||
69 | #define __xchg(ptr, x, size) \ | ||
70 | ({ \ | ||
71 | unsigned long __xchg__res; \ | ||
72 | volatile void *__xchg_ptr = (ptr); \ | ||
73 | switch (size) { \ | ||
74 | case 4: \ | ||
75 | __xchg__res = xchg_u32(__xchg_ptr, x); \ | ||
76 | break; \ | ||
77 | case 1: \ | ||
78 | __xchg__res = xchg_u8(__xchg_ptr, x); \ | ||
79 | break; \ | ||
80 | default: \ | ||
81 | __xchg_called_with_bad_pointer(); \ | ||
82 | __xchg__res = x; \ | ||
83 | break; \ | ||
84 | } \ | ||
85 | \ | ||
86 | __xchg__res; \ | ||
87 | }) | ||
88 | |||
89 | #define xchg(ptr,x) \ | ||
90 | ((__typeof__(*(ptr)))__xchg((ptr),(unsigned long)(x), sizeof(*(ptr)))) | ||
91 | |||
92 | /* This function doesn't exist, so you'll get a linker error | ||
93 | * if something tries to do an invalid cmpxchg(). */ | ||
94 | extern void __cmpxchg_called_with_bad_pointer(void); | ||
95 | |||
96 | #define __HAVE_ARCH_CMPXCHG 1 | ||
97 | |||
98 | static inline unsigned long __cmpxchg(volatile void * ptr, unsigned long old, | ||
99 | unsigned long new, int size) | ||
100 | { | ||
101 | switch (size) { | ||
102 | case 4: | ||
103 | return __cmpxchg_u32(ptr, old, new); | ||
104 | } | ||
105 | __cmpxchg_called_with_bad_pointer(); | ||
106 | return old; | ||
107 | } | ||
108 | |||
109 | #define cmpxchg(ptr,o,n) \ | ||
110 | ({ \ | ||
111 | __typeof__(*(ptr)) _o_ = (o); \ | ||
112 | __typeof__(*(ptr)) _n_ = (n); \ | ||
113 | (__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_, \ | ||
114 | (unsigned long)_n_, sizeof(*(ptr))); \ | ||
115 | }) | ||
116 | |||
117 | struct pt_regs; | ||
118 | |||
119 | extern void die(const char *str, struct pt_regs *regs, long err) __attribute__ ((noreturn)); | ||
120 | void free_initmem(void); | ||
121 | void free_initrd_mem(unsigned long start, unsigned long end); | ||
122 | |||
123 | extern void *set_exception_table_vec(unsigned int vec, void *handler); | ||
124 | |||
125 | static inline void *set_exception_table_evt(unsigned int evt, void *handler) | ||
126 | { | ||
127 | return set_exception_table_vec(evt >> 5, handler); | ||
128 | } | ||
129 | |||
130 | /* | ||
131 | * SH-2A has both 16 and 32-bit opcodes, do lame encoding checks. | ||
132 | */ | ||
133 | #ifdef CONFIG_CPU_SH2A | ||
134 | extern unsigned int instruction_size(unsigned int insn); | ||
135 | #elif defined(CONFIG_SUPERH32) | ||
136 | #define instruction_size(insn) (2) | ||
137 | #else | ||
138 | #define instruction_size(insn) (4) | ||
139 | #endif | ||
140 | |||
141 | void per_cpu_trap_init(void); | ||
142 | void default_idle(void); | ||
143 | void cpu_idle_wait(void); | ||
144 | void stop_this_cpu(void *); | ||
145 | |||
146 | #ifdef CONFIG_SUPERH32 | ||
147 | #define BUILD_TRAP_HANDLER(name) \ | ||
148 | asmlinkage void name##_trap_handler(unsigned long r4, unsigned long r5, \ | ||
149 | unsigned long r6, unsigned long r7, \ | ||
150 | struct pt_regs __regs) | ||
151 | |||
152 | #define TRAP_HANDLER_DECL \ | ||
153 | struct pt_regs *regs = RELOC_HIDE(&__regs, 0); \ | ||
154 | unsigned int vec = regs->tra; \ | ||
155 | (void)vec; | ||
156 | #else | ||
157 | #define BUILD_TRAP_HANDLER(name) \ | ||
158 | asmlinkage void name##_trap_handler(unsigned int vec, struct pt_regs *regs) | ||
159 | #define TRAP_HANDLER_DECL | ||
160 | #endif | ||
161 | |||
162 | BUILD_TRAP_HANDLER(address_error); | ||
163 | BUILD_TRAP_HANDLER(debug); | ||
164 | BUILD_TRAP_HANDLER(bug); | ||
165 | BUILD_TRAP_HANDLER(breakpoint); | ||
166 | BUILD_TRAP_HANDLER(singlestep); | ||
167 | BUILD_TRAP_HANDLER(fpu_error); | ||
168 | BUILD_TRAP_HANDLER(fpu_state_restore); | ||
169 | BUILD_TRAP_HANDLER(nmi); | ||
170 | |||
171 | #define arch_align_stack(x) (x) | ||
172 | |||
173 | struct mem_access { | ||
174 | unsigned long (*from)(void *dst, const void __user *src, unsigned long cnt); | ||
175 | unsigned long (*to)(void __user *dst, const void *src, unsigned long cnt); | ||
176 | }; | ||
177 | |||
178 | #ifdef CONFIG_SUPERH32 | ||
179 | # include "system_32.h" | ||
180 | #else | ||
181 | # include "system_64.h" | ||
182 | #endif | ||
183 | |||
184 | #endif | ||
diff --git a/arch/sh/include/asm/system_64.h b/arch/sh/include/asm/system_64.h deleted file mode 100644 index 8593bc8d1a4e..000000000000 --- a/arch/sh/include/asm/system_64.h +++ /dev/null | |||
@@ -1,79 +0,0 @@ | |||
1 | #ifndef __ASM_SH_SYSTEM_64_H | ||
2 | #define __ASM_SH_SYSTEM_64_H | ||
3 | |||
4 | /* | ||
5 | * include/asm-sh/system_64.h | ||
6 | * | ||
7 | * Copyright (C) 2000, 2001 Paolo Alberelli | ||
8 | * Copyright (C) 2003 Paul Mundt | ||
9 | * Copyright (C) 2004 Richard Curnow | ||
10 | * | ||
11 | * This file is subject to the terms and conditions of the GNU General Public | ||
12 | * License. See the file "COPYING" in the main directory of this archive | ||
13 | * for more details. | ||
14 | */ | ||
15 | #include <cpu/registers.h> | ||
16 | #include <asm/processor.h> | ||
17 | |||
18 | /* | ||
19 | * switch_to() should switch tasks to task nr n, first | ||
20 | */ | ||
21 | struct thread_struct; | ||
22 | struct task_struct *sh64_switch_to(struct task_struct *prev, | ||
23 | struct thread_struct *prev_thread, | ||
24 | struct task_struct *next, | ||
25 | struct thread_struct *next_thread); | ||
26 | |||
27 | #define switch_to(prev,next,last) \ | ||
28 | do { \ | ||
29 | if (last_task_used_math != next) { \ | ||
30 | struct pt_regs *regs = next->thread.uregs; \ | ||
31 | if (regs) regs->sr |= SR_FD; \ | ||
32 | } \ | ||
33 | last = sh64_switch_to(prev, &prev->thread, next, \ | ||
34 | &next->thread); \ | ||
35 | } while (0) | ||
36 | |||
37 | #define __icbi(addr) __asm__ __volatile__ ( "icbi %0, 0\n\t" : : "r" (addr)) | ||
38 | #define __ocbp(addr) __asm__ __volatile__ ( "ocbp %0, 0\n\t" : : "r" (addr)) | ||
39 | #define __ocbi(addr) __asm__ __volatile__ ( "ocbi %0, 0\n\t" : : "r" (addr)) | ||
40 | #define __ocbwb(addr) __asm__ __volatile__ ( "ocbwb %0, 0\n\t" : : "r" (addr)) | ||
41 | |||
42 | static inline reg_size_t register_align(void *val) | ||
43 | { | ||
44 | return (unsigned long long)(signed long long)(signed long)val; | ||
45 | } | ||
46 | |||
47 | extern void phys_stext(void); | ||
48 | |||
49 | static inline void trigger_address_error(void) | ||
50 | { | ||
51 | phys_stext(); | ||
52 | } | ||
53 | |||
54 | #define SR_BL_LL 0x0000000010000000LL | ||
55 | |||
56 | static inline void set_bl_bit(void) | ||
57 | { | ||
58 | unsigned long long __dummy0, __dummy1 = SR_BL_LL; | ||
59 | |||
60 | __asm__ __volatile__("getcon " __SR ", %0\n\t" | ||
61 | "or %0, %1, %0\n\t" | ||
62 | "putcon %0, " __SR "\n\t" | ||
63 | : "=&r" (__dummy0) | ||
64 | : "r" (__dummy1)); | ||
65 | |||
66 | } | ||
67 | |||
68 | static inline void clear_bl_bit(void) | ||
69 | { | ||
70 | unsigned long long __dummy0, __dummy1 = ~SR_BL_LL; | ||
71 | |||
72 | __asm__ __volatile__("getcon " __SR ", %0\n\t" | ||
73 | "and %0, %1, %0\n\t" | ||
74 | "putcon %0, " __SR "\n\t" | ||
75 | : "=&r" (__dummy0) | ||
76 | : "r" (__dummy1)); | ||
77 | } | ||
78 | |||
79 | #endif /* __ASM_SH_SYSTEM_64_H */ | ||
diff --git a/arch/sh/include/asm/traps.h b/arch/sh/include/asm/traps.h new file mode 100644 index 000000000000..afd9df8d0641 --- /dev/null +++ b/arch/sh/include/asm/traps.h | |||
@@ -0,0 +1,21 @@ | |||
1 | #ifndef __ASM_SH_TRAPS_H | ||
2 | #define __ASM_SH_TRAPS_H | ||
3 | |||
4 | #include <linux/compiler.h> | ||
5 | |||
6 | #ifdef CONFIG_SUPERH32 | ||
7 | # include "traps_32.h" | ||
8 | #else | ||
9 | # include "traps_64.h" | ||
10 | #endif | ||
11 | |||
12 | BUILD_TRAP_HANDLER(address_error); | ||
13 | BUILD_TRAP_HANDLER(debug); | ||
14 | BUILD_TRAP_HANDLER(bug); | ||
15 | BUILD_TRAP_HANDLER(breakpoint); | ||
16 | BUILD_TRAP_HANDLER(singlestep); | ||
17 | BUILD_TRAP_HANDLER(fpu_error); | ||
18 | BUILD_TRAP_HANDLER(fpu_state_restore); | ||
19 | BUILD_TRAP_HANDLER(nmi); | ||
20 | |||
21 | #endif /* __ASM_SH_TRAPS_H */ | ||
diff --git a/arch/sh/include/asm/traps_32.h b/arch/sh/include/asm/traps_32.h new file mode 100644 index 000000000000..cfd55ff9dff2 --- /dev/null +++ b/arch/sh/include/asm/traps_32.h | |||
@@ -0,0 +1,68 @@ | |||
1 | #ifndef __ASM_SH_TRAPS_32_H | ||
2 | #define __ASM_SH_TRAPS_32_H | ||
3 | |||
4 | #include <linux/types.h> | ||
5 | #include <asm/mmu.h> | ||
6 | |||
7 | #ifdef CONFIG_CPU_HAS_SR_RB | ||
8 | #define lookup_exception_vector() \ | ||
9 | ({ \ | ||
10 | unsigned long _vec; \ | ||
11 | \ | ||
12 | __asm__ __volatile__ ( \ | ||
13 | "stc r2_bank, %0\n\t" \ | ||
14 | : "=r" (_vec) \ | ||
15 | ); \ | ||
16 | \ | ||
17 | _vec; \ | ||
18 | }) | ||
19 | #else | ||
20 | #define lookup_exception_vector() \ | ||
21 | ({ \ | ||
22 | unsigned long _vec; \ | ||
23 | __asm__ __volatile__ ( \ | ||
24 | "mov r4, %0\n\t" \ | ||
25 | : "=r" (_vec) \ | ||
26 | ); \ | ||
27 | \ | ||
28 | _vec; \ | ||
29 | }) | ||
30 | #endif | ||
31 | |||
32 | static inline void trigger_address_error(void) | ||
33 | { | ||
34 | __asm__ __volatile__ ( | ||
35 | "ldc %0, sr\n\t" | ||
36 | "mov.l @%1, %0" | ||
37 | : | ||
38 | : "r" (0x10000000), "r" (0x80000001) | ||
39 | ); | ||
40 | } | ||
41 | |||
42 | asmlinkage void do_address_error(struct pt_regs *regs, | ||
43 | unsigned long writeaccess, | ||
44 | unsigned long address); | ||
45 | asmlinkage void do_divide_error(unsigned long r4, unsigned long r5, | ||
46 | unsigned long r6, unsigned long r7, | ||
47 | struct pt_regs __regs); | ||
48 | asmlinkage void do_reserved_inst(unsigned long r4, unsigned long r5, | ||
49 | unsigned long r6, unsigned long r7, | ||
50 | struct pt_regs __regs); | ||
51 | asmlinkage void do_illegal_slot_inst(unsigned long r4, unsigned long r5, | ||
52 | unsigned long r6, unsigned long r7, | ||
53 | struct pt_regs __regs); | ||
54 | asmlinkage void do_exception_error(unsigned long r4, unsigned long r5, | ||
55 | unsigned long r6, unsigned long r7, | ||
56 | struct pt_regs __regs); | ||
57 | |||
58 | #define BUILD_TRAP_HANDLER(name) \ | ||
59 | asmlinkage void name##_trap_handler(unsigned long r4, unsigned long r5, \ | ||
60 | unsigned long r6, unsigned long r7, \ | ||
61 | struct pt_regs __regs) | ||
62 | |||
63 | #define TRAP_HANDLER_DECL \ | ||
64 | struct pt_regs *regs = RELOC_HIDE(&__regs, 0); \ | ||
65 | unsigned int vec = regs->tra; \ | ||
66 | (void)vec; | ||
67 | |||
68 | #endif /* __ASM_SH_TRAPS_32_H */ | ||
diff --git a/arch/sh/include/asm/traps_64.h b/arch/sh/include/asm/traps_64.h new file mode 100644 index 000000000000..c52d7f9a06c1 --- /dev/null +++ b/arch/sh/include/asm/traps_64.h | |||
@@ -0,0 +1,24 @@ | |||
1 | /* | ||
2 | * Copyright (C) 2000, 2001 Paolo Alberelli | ||
3 | * Copyright (C) 2003 Paul Mundt | ||
4 | * Copyright (C) 2004 Richard Curnow | ||
5 | * | ||
6 | * This file is subject to the terms and conditions of the GNU General Public | ||
7 | * License. See the file "COPYING" in the main directory of this archive | ||
8 | * for more details. | ||
9 | */ | ||
10 | #ifndef __ASM_SH_TRAPS_64_H | ||
11 | #define __ASM_SH_TRAPS_64_H | ||
12 | |||
13 | extern void phys_stext(void); | ||
14 | |||
15 | static inline void trigger_address_error(void) | ||
16 | { | ||
17 | phys_stext(); | ||
18 | } | ||
19 | |||
20 | #define BUILD_TRAP_HANDLER(name) \ | ||
21 | asmlinkage void name##_trap_handler(unsigned int vec, struct pt_regs *regs) | ||
22 | #define TRAP_HANDLER_DECL | ||
23 | |||
24 | #endif /* __ASM_SH_TRAPS_64_H */ | ||
diff --git a/arch/sh/include/asm/uaccess.h b/arch/sh/include/asm/uaccess.h index 075848f43b6a..050f221fa898 100644 --- a/arch/sh/include/asm/uaccess.h +++ b/arch/sh/include/asm/uaccess.h | |||
@@ -254,5 +254,19 @@ int fixup_exception(struct pt_regs *regs); | |||
254 | unsigned long search_exception_table(unsigned long addr); | 254 | unsigned long search_exception_table(unsigned long addr); |
255 | const struct exception_table_entry *search_exception_tables(unsigned long addr); | 255 | const struct exception_table_entry *search_exception_tables(unsigned long addr); |
256 | 256 | ||
257 | extern void *set_exception_table_vec(unsigned int vec, void *handler); | ||
258 | |||
259 | static inline void *set_exception_table_evt(unsigned int evt, void *handler) | ||
260 | { | ||
261 | return set_exception_table_vec(evt >> 5, handler); | ||
262 | } | ||
263 | |||
264 | struct mem_access { | ||
265 | unsigned long (*from)(void *dst, const void __user *src, unsigned long cnt); | ||
266 | unsigned long (*to)(void __user *dst, const void *src, unsigned long cnt); | ||
267 | }; | ||
268 | |||
269 | int handle_unaligned_access(insn_size_t instruction, struct pt_regs *regs, | ||
270 | struct mem_access *ma, int, unsigned long address); | ||
257 | 271 | ||
258 | #endif /* __ASM_SH_UACCESS_H */ | 272 | #endif /* __ASM_SH_UACCESS_H */ |
diff --git a/arch/sh/kernel/cpu/init.c b/arch/sh/kernel/cpu/init.c index fac742e514ee..61a07dafcd46 100644 --- a/arch/sh/kernel/cpu/init.c +++ b/arch/sh/kernel/cpu/init.c | |||
@@ -18,13 +18,13 @@ | |||
18 | #include <asm/processor.h> | 18 | #include <asm/processor.h> |
19 | #include <asm/uaccess.h> | 19 | #include <asm/uaccess.h> |
20 | #include <asm/page.h> | 20 | #include <asm/page.h> |
21 | #include <asm/system.h> | ||
22 | #include <asm/cacheflush.h> | 21 | #include <asm/cacheflush.h> |
23 | #include <asm/cache.h> | 22 | #include <asm/cache.h> |
24 | #include <asm/elf.h> | 23 | #include <asm/elf.h> |
25 | #include <asm/io.h> | 24 | #include <asm/io.h> |
26 | #include <asm/smp.h> | 25 | #include <asm/smp.h> |
27 | #include <asm/sh_bios.h> | 26 | #include <asm/sh_bios.h> |
27 | #include <asm/setup.h> | ||
28 | 28 | ||
29 | #ifdef CONFIG_SH_FPU | 29 | #ifdef CONFIG_SH_FPU |
30 | #define cpu_has_fpu 1 | 30 | #define cpu_has_fpu 1 |
diff --git a/arch/sh/kernel/cpu/irq/imask.c b/arch/sh/kernel/cpu/irq/imask.c index 39b6a24c159d..e7f1745bd121 100644 --- a/arch/sh/kernel/cpu/irq/imask.c +++ b/arch/sh/kernel/cpu/irq/imask.c | |||
@@ -19,7 +19,6 @@ | |||
19 | #include <linux/cache.h> | 19 | #include <linux/cache.h> |
20 | #include <linux/irq.h> | 20 | #include <linux/irq.h> |
21 | #include <linux/bitmap.h> | 21 | #include <linux/bitmap.h> |
22 | #include <asm/system.h> | ||
23 | #include <asm/irq.h> | 22 | #include <asm/irq.h> |
24 | 23 | ||
25 | /* Bitmap of IRQ masked */ | 24 | /* Bitmap of IRQ masked */ |
diff --git a/arch/sh/kernel/cpu/sh2a/opcode_helper.c b/arch/sh/kernel/cpu/sh2a/opcode_helper.c index 9704b7926d8b..72aa61c81e48 100644 --- a/arch/sh/kernel/cpu/sh2a/opcode_helper.c +++ b/arch/sh/kernel/cpu/sh2a/opcode_helper.c | |||
@@ -10,7 +10,6 @@ | |||
10 | * for more details. | 10 | * for more details. |
11 | */ | 11 | */ |
12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
13 | #include <asm/system.h> | ||
14 | 13 | ||
15 | /* | 14 | /* |
16 | * Instructions on SH are generally fixed at 16-bits, however, SH-2A | 15 | * Instructions on SH are generally fixed at 16-bits, however, SH-2A |
diff --git a/arch/sh/kernel/cpu/sh4/fpu.c b/arch/sh/kernel/cpu/sh4/fpu.c index 447482d7f65e..e74cd6c0f10d 100644 --- a/arch/sh/kernel/cpu/sh4/fpu.c +++ b/arch/sh/kernel/cpu/sh4/fpu.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <linux/io.h> | 15 | #include <linux/io.h> |
16 | #include <cpu/fpu.h> | 16 | #include <cpu/fpu.h> |
17 | #include <asm/processor.h> | 17 | #include <asm/processor.h> |
18 | #include <asm/system.h> | ||
19 | #include <asm/fpu.h> | 18 | #include <asm/fpu.h> |
20 | 19 | ||
21 | /* The PR (precision) bit in the FP Status Register must be clear when | 20 | /* The PR (precision) bit in the FP Status Register must be clear when |
diff --git a/arch/sh/kernel/hw_breakpoint.c b/arch/sh/kernel/hw_breakpoint.c index efae6ab3d54c..f9173766ec4b 100644 --- a/arch/sh/kernel/hw_breakpoint.c +++ b/arch/sh/kernel/hw_breakpoint.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <asm/hw_breakpoint.h> | 22 | #include <asm/hw_breakpoint.h> |
23 | #include <asm/mmu_context.h> | 23 | #include <asm/mmu_context.h> |
24 | #include <asm/ptrace.h> | 24 | #include <asm/ptrace.h> |
25 | #include <asm/traps.h> | ||
25 | 26 | ||
26 | /* | 27 | /* |
27 | * Stores the breakpoints currently in use on each breakpoint address | 28 | * Stores the breakpoints currently in use on each breakpoint address |
diff --git a/arch/sh/kernel/idle.c b/arch/sh/kernel/idle.c index 7e4892826563..64852ecc6881 100644 --- a/arch/sh/kernel/idle.c +++ b/arch/sh/kernel/idle.c | |||
@@ -18,9 +18,9 @@ | |||
18 | #include <linux/smp.h> | 18 | #include <linux/smp.h> |
19 | #include <linux/cpuidle.h> | 19 | #include <linux/cpuidle.h> |
20 | #include <asm/pgalloc.h> | 20 | #include <asm/pgalloc.h> |
21 | #include <asm/system.h> | ||
22 | #include <linux/atomic.h> | 21 | #include <linux/atomic.h> |
23 | #include <asm/smp.h> | 22 | #include <asm/smp.h> |
23 | #include <asm/bl_bit.h> | ||
24 | 24 | ||
25 | void (*pm_idle)(void); | 25 | void (*pm_idle)(void); |
26 | 26 | ||
diff --git a/arch/sh/kernel/io_trapped.c b/arch/sh/kernel/io_trapped.c index 0f62f4672754..c0a9761f2f8a 100644 --- a/arch/sh/kernel/io_trapped.c +++ b/arch/sh/kernel/io_trapped.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <linux/vmalloc.h> | 15 | #include <linux/vmalloc.h> |
16 | #include <linux/module.h> | 16 | #include <linux/module.h> |
17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
18 | #include <asm/system.h> | ||
19 | #include <asm/mmu_context.h> | 18 | #include <asm/mmu_context.h> |
20 | #include <asm/uaccess.h> | 19 | #include <asm/uaccess.h> |
21 | #include <asm/io.h> | 20 | #include <asm/io.h> |
diff --git a/arch/sh/kernel/process_32.c b/arch/sh/kernel/process_32.c index 7ec665178125..f72e3a951588 100644 --- a/arch/sh/kernel/process_32.c +++ b/arch/sh/kernel/process_32.c | |||
@@ -24,7 +24,6 @@ | |||
24 | #include <linux/prefetch.h> | 24 | #include <linux/prefetch.h> |
25 | #include <asm/uaccess.h> | 25 | #include <asm/uaccess.h> |
26 | #include <asm/mmu_context.h> | 26 | #include <asm/mmu_context.h> |
27 | #include <asm/system.h> | ||
28 | #include <asm/fpu.h> | 27 | #include <asm/fpu.h> |
29 | #include <asm/syscalls.h> | 28 | #include <asm/syscalls.h> |
30 | 29 | ||
diff --git a/arch/sh/kernel/process_64.c b/arch/sh/kernel/process_64.c index cbd4e4bb9fc5..4264583eabac 100644 --- a/arch/sh/kernel/process_64.c +++ b/arch/sh/kernel/process_64.c | |||
@@ -30,6 +30,7 @@ | |||
30 | #include <asm/pgtable.h> | 30 | #include <asm/pgtable.h> |
31 | #include <asm/mmu_context.h> | 31 | #include <asm/mmu_context.h> |
32 | #include <asm/fpu.h> | 32 | #include <asm/fpu.h> |
33 | #include <asm/switch_to.h> | ||
33 | 34 | ||
34 | struct task_struct *last_task_used_math = NULL; | 35 | struct task_struct *last_task_used_math = NULL; |
35 | 36 | ||
diff --git a/arch/sh/kernel/ptrace_32.c b/arch/sh/kernel/ptrace_32.c index a3e651563763..9698671444e6 100644 --- a/arch/sh/kernel/ptrace_32.c +++ b/arch/sh/kernel/ptrace_32.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <linux/hw_breakpoint.h> | 28 | #include <linux/hw_breakpoint.h> |
29 | #include <asm/uaccess.h> | 29 | #include <asm/uaccess.h> |
30 | #include <asm/pgtable.h> | 30 | #include <asm/pgtable.h> |
31 | #include <asm/system.h> | ||
32 | #include <asm/processor.h> | 31 | #include <asm/processor.h> |
33 | #include <asm/mmu_context.h> | 32 | #include <asm/mmu_context.h> |
34 | #include <asm/syscalls.h> | 33 | #include <asm/syscalls.h> |
diff --git a/arch/sh/kernel/ptrace_64.c b/arch/sh/kernel/ptrace_64.c index 3d0080b5c976..bc81e07dc098 100644 --- a/arch/sh/kernel/ptrace_64.c +++ b/arch/sh/kernel/ptrace_64.c | |||
@@ -34,11 +34,11 @@ | |||
34 | #include <asm/io.h> | 34 | #include <asm/io.h> |
35 | #include <asm/uaccess.h> | 35 | #include <asm/uaccess.h> |
36 | #include <asm/pgtable.h> | 36 | #include <asm/pgtable.h> |
37 | #include <asm/system.h> | ||
38 | #include <asm/processor.h> | 37 | #include <asm/processor.h> |
39 | #include <asm/mmu_context.h> | 38 | #include <asm/mmu_context.h> |
40 | #include <asm/syscalls.h> | 39 | #include <asm/syscalls.h> |
41 | #include <asm/fpu.h> | 40 | #include <asm/fpu.h> |
41 | #include <asm/traps.h> | ||
42 | 42 | ||
43 | #define CREATE_TRACE_POINTS | 43 | #define CREATE_TRACE_POINTS |
44 | #include <trace/events/syscalls.h> | 44 | #include <trace/events/syscalls.h> |
diff --git a/arch/sh/kernel/reboot.c b/arch/sh/kernel/reboot.c index ca6a5ca64015..04afe5b20663 100644 --- a/arch/sh/kernel/reboot.c +++ b/arch/sh/kernel/reboot.c | |||
@@ -8,8 +8,8 @@ | |||
8 | #endif | 8 | #endif |
9 | #include <asm/addrspace.h> | 9 | #include <asm/addrspace.h> |
10 | #include <asm/reboot.h> | 10 | #include <asm/reboot.h> |
11 | #include <asm/system.h> | ||
12 | #include <asm/tlbflush.h> | 11 | #include <asm/tlbflush.h> |
12 | #include <asm/traps.h> | ||
13 | 13 | ||
14 | void (*pm_power_off)(void); | 14 | void (*pm_power_off)(void); |
15 | EXPORT_SYMBOL(pm_power_off); | 15 | EXPORT_SYMBOL(pm_power_off); |
diff --git a/arch/sh/kernel/signal_32.c b/arch/sh/kernel/signal_32.c index a7a55ed43a59..0bc58866add1 100644 --- a/arch/sh/kernel/signal_32.c +++ b/arch/sh/kernel/signal_32.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include <linux/freezer.h> | 25 | #include <linux/freezer.h> |
26 | #include <linux/io.h> | 26 | #include <linux/io.h> |
27 | #include <linux/tracehook.h> | 27 | #include <linux/tracehook.h> |
28 | #include <asm/system.h> | ||
29 | #include <asm/ucontext.h> | 28 | #include <asm/ucontext.h> |
30 | #include <asm/uaccess.h> | 29 | #include <asm/uaccess.h> |
31 | #include <asm/pgtable.h> | 30 | #include <asm/pgtable.h> |
diff --git a/arch/sh/kernel/smp.c b/arch/sh/kernel/smp.c index f624174bf239..a17a14d32340 100644 --- a/arch/sh/kernel/smp.c +++ b/arch/sh/kernel/smp.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include <linux/sched.h> | 23 | #include <linux/sched.h> |
24 | #include <linux/atomic.h> | 24 | #include <linux/atomic.h> |
25 | #include <asm/processor.h> | 25 | #include <asm/processor.h> |
26 | #include <asm/system.h> | ||
27 | #include <asm/mmu_context.h> | 26 | #include <asm/mmu_context.h> |
28 | #include <asm/smp.h> | 27 | #include <asm/smp.h> |
29 | #include <asm/cacheflush.h> | 28 | #include <asm/cacheflush.h> |
diff --git a/arch/sh/kernel/traps.c b/arch/sh/kernel/traps.c index 0830c2a9f712..a87e58a9e38f 100644 --- a/arch/sh/kernel/traps.c +++ b/arch/sh/kernel/traps.c | |||
@@ -7,7 +7,7 @@ | |||
7 | #include <linux/uaccess.h> | 7 | #include <linux/uaccess.h> |
8 | #include <linux/hardirq.h> | 8 | #include <linux/hardirq.h> |
9 | #include <asm/unwinder.h> | 9 | #include <asm/unwinder.h> |
10 | #include <asm/system.h> | 10 | #include <asm/traps.h> |
11 | 11 | ||
12 | #ifdef CONFIG_GENERIC_BUG | 12 | #ifdef CONFIG_GENERIC_BUG |
13 | static void handle_BUG(struct pt_regs *regs) | 13 | static void handle_BUG(struct pt_regs *regs) |
diff --git a/arch/sh/kernel/traps_32.c b/arch/sh/kernel/traps_32.c index 7bbef95c9d1b..a37175deb73f 100644 --- a/arch/sh/kernel/traps_32.c +++ b/arch/sh/kernel/traps_32.c | |||
@@ -27,10 +27,11 @@ | |||
27 | #include <linux/sysfs.h> | 27 | #include <linux/sysfs.h> |
28 | #include <linux/uaccess.h> | 28 | #include <linux/uaccess.h> |
29 | #include <linux/perf_event.h> | 29 | #include <linux/perf_event.h> |
30 | #include <asm/system.h> | ||
31 | #include <asm/alignment.h> | 30 | #include <asm/alignment.h> |
32 | #include <asm/fpu.h> | 31 | #include <asm/fpu.h> |
33 | #include <asm/kprobes.h> | 32 | #include <asm/kprobes.h> |
33 | #include <asm/traps.h> | ||
34 | #include <asm/bl_bit.h> | ||
34 | 35 | ||
35 | #ifdef CONFIG_CPU_SH2 | 36 | #ifdef CONFIG_CPU_SH2 |
36 | # define TRAP_RESERVED_INST 4 | 37 | # define TRAP_RESERVED_INST 4 |
diff --git a/arch/sh/kernel/traps_64.c b/arch/sh/kernel/traps_64.c index cd3a40483299..6c0486094e48 100644 --- a/arch/sh/kernel/traps_64.c +++ b/arch/sh/kernel/traps_64.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include <linux/sysctl.h> | 25 | #include <linux/sysctl.h> |
26 | #include <linux/module.h> | 26 | #include <linux/module.h> |
27 | #include <linux/perf_event.h> | 27 | #include <linux/perf_event.h> |
28 | #include <asm/system.h> | ||
29 | #include <asm/uaccess.h> | 28 | #include <asm/uaccess.h> |
30 | #include <asm/io.h> | 29 | #include <asm/io.h> |
31 | #include <linux/atomic.h> | 30 | #include <linux/atomic.h> |
diff --git a/arch/sh/math-emu/math.c b/arch/sh/math-emu/math.c index 977195210653..b876780c1e1c 100644 --- a/arch/sh/math-emu/math.c +++ b/arch/sh/math-emu/math.c | |||
@@ -14,7 +14,6 @@ | |||
14 | #include <linux/signal.h> | 14 | #include <linux/signal.h> |
15 | #include <linux/perf_event.h> | 15 | #include <linux/perf_event.h> |
16 | 16 | ||
17 | #include <asm/system.h> | ||
18 | #include <asm/uaccess.h> | 17 | #include <asm/uaccess.h> |
19 | #include <asm/processor.h> | 18 | #include <asm/processor.h> |
20 | #include <asm/io.h> | 19 | #include <asm/io.h> |
diff --git a/arch/sh/mm/fault_32.c b/arch/sh/mm/fault_32.c index 7bebd044f2a1..324eef93c900 100644 --- a/arch/sh/mm/fault_32.c +++ b/arch/sh/mm/fault_32.c | |||
@@ -17,9 +17,9 @@ | |||
17 | #include <linux/kprobes.h> | 17 | #include <linux/kprobes.h> |
18 | #include <linux/perf_event.h> | 18 | #include <linux/perf_event.h> |
19 | #include <asm/io_trapped.h> | 19 | #include <asm/io_trapped.h> |
20 | #include <asm/system.h> | ||
21 | #include <asm/mmu_context.h> | 20 | #include <asm/mmu_context.h> |
22 | #include <asm/tlbflush.h> | 21 | #include <asm/tlbflush.h> |
22 | #include <asm/traps.h> | ||
23 | 23 | ||
24 | static inline int notify_page_fault(struct pt_regs *regs, int trap) | 24 | static inline int notify_page_fault(struct pt_regs *regs, int trap) |
25 | { | 25 | { |
diff --git a/arch/sh/mm/fault_64.c b/arch/sh/mm/fault_64.c index 2b356cec2489..44a341029e7b 100644 --- a/arch/sh/mm/fault_64.c +++ b/arch/sh/mm/fault_64.c | |||
@@ -33,7 +33,6 @@ | |||
33 | #include <linux/mm.h> | 33 | #include <linux/mm.h> |
34 | #include <linux/smp.h> | 34 | #include <linux/smp.h> |
35 | #include <linux/interrupt.h> | 35 | #include <linux/interrupt.h> |
36 | #include <asm/system.h> | ||
37 | #include <asm/tlb.h> | 36 | #include <asm/tlb.h> |
38 | #include <asm/io.h> | 37 | #include <asm/io.h> |
39 | #include <asm/uaccess.h> | 38 | #include <asm/uaccess.h> |
diff --git a/arch/sh/mm/flush-sh4.c b/arch/sh/mm/flush-sh4.c index cef402678f42..75a17f5bfa14 100644 --- a/arch/sh/mm/flush-sh4.c +++ b/arch/sh/mm/flush-sh4.c | |||
@@ -1,6 +1,7 @@ | |||
1 | #include <linux/mm.h> | 1 | #include <linux/mm.h> |
2 | #include <asm/mmu_context.h> | 2 | #include <asm/mmu_context.h> |
3 | #include <asm/cacheflush.h> | 3 | #include <asm/cacheflush.h> |
4 | #include <asm/traps.h> | ||
4 | 5 | ||
5 | /* | 6 | /* |
6 | * Write back the dirty D-caches, but not invalidate them. | 7 | * Write back the dirty D-caches, but not invalidate them. |
diff --git a/arch/sh/mm/pmb.c b/arch/sh/mm/pmb.c index fad52f1f6812..7160c9fd6fe3 100644 --- a/arch/sh/mm/pmb.c +++ b/arch/sh/mm/pmb.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include <linux/vmalloc.h> | 25 | #include <linux/vmalloc.h> |
26 | #include <asm/cacheflush.h> | 26 | #include <asm/cacheflush.h> |
27 | #include <asm/sizes.h> | 27 | #include <asm/sizes.h> |
28 | #include <asm/system.h> | ||
29 | #include <asm/uaccess.h> | 28 | #include <asm/uaccess.h> |
30 | #include <asm/pgtable.h> | 29 | #include <asm/pgtable.h> |
31 | #include <asm/page.h> | 30 | #include <asm/page.h> |
diff --git a/arch/sh/mm/tlb-pteaex.c b/arch/sh/mm/tlb-pteaex.c index b71db6af8060..4db21adfe5de 100644 --- a/arch/sh/mm/tlb-pteaex.c +++ b/arch/sh/mm/tlb-pteaex.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <linux/kernel.h> | 12 | #include <linux/kernel.h> |
13 | #include <linux/mm.h> | 13 | #include <linux/mm.h> |
14 | #include <linux/io.h> | 14 | #include <linux/io.h> |
15 | #include <asm/system.h> | ||
16 | #include <asm/mmu_context.h> | 15 | #include <asm/mmu_context.h> |
17 | #include <asm/cacheflush.h> | 16 | #include <asm/cacheflush.h> |
18 | 17 | ||
diff --git a/arch/sh/mm/tlb-sh3.c b/arch/sh/mm/tlb-sh3.c index 7a940dbfc2e9..6554fb439f0e 100644 --- a/arch/sh/mm/tlb-sh3.c +++ b/arch/sh/mm/tlb-sh3.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include <linux/smp.h> | 20 | #include <linux/smp.h> |
21 | #include <linux/interrupt.h> | 21 | #include <linux/interrupt.h> |
22 | 22 | ||
23 | #include <asm/system.h> | ||
24 | #include <asm/io.h> | 23 | #include <asm/io.h> |
25 | #include <asm/uaccess.h> | 24 | #include <asm/uaccess.h> |
26 | #include <asm/pgalloc.h> | 25 | #include <asm/pgalloc.h> |
diff --git a/arch/sh/mm/tlb-sh4.c b/arch/sh/mm/tlb-sh4.c index cfdf7930d294..d42dd7e443d5 100644 --- a/arch/sh/mm/tlb-sh4.c +++ b/arch/sh/mm/tlb-sh4.c | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <linux/kernel.h> | 11 | #include <linux/kernel.h> |
12 | #include <linux/mm.h> | 12 | #include <linux/mm.h> |
13 | #include <linux/io.h> | 13 | #include <linux/io.h> |
14 | #include <asm/system.h> | ||
15 | #include <asm/mmu_context.h> | 14 | #include <asm/mmu_context.h> |
16 | #include <asm/cacheflush.h> | 15 | #include <asm/cacheflush.h> |
17 | 16 | ||
diff --git a/arch/sh/mm/tlbflush_64.c b/arch/sh/mm/tlbflush_64.c index e3430e093d43..11c5a18f10ed 100644 --- a/arch/sh/mm/tlbflush_64.c +++ b/arch/sh/mm/tlbflush_64.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <linux/smp.h> | 22 | #include <linux/smp.h> |
23 | #include <linux/perf_event.h> | 23 | #include <linux/perf_event.h> |
24 | #include <linux/interrupt.h> | 24 | #include <linux/interrupt.h> |
25 | #include <asm/system.h> | ||
26 | #include <asm/io.h> | 25 | #include <asm/io.h> |
27 | #include <asm/tlb.h> | 26 | #include <asm/tlb.h> |
28 | #include <asm/uaccess.h> | 27 | #include <asm/uaccess.h> |
diff --git a/arch/sparc/include/asm/atomic_32.h b/arch/sparc/include/asm/atomic_32.h index 9dd0a769fa18..905832aa9e9e 100644 --- a/arch/sparc/include/asm/atomic_32.h +++ b/arch/sparc/include/asm/atomic_32.h | |||
@@ -13,9 +13,9 @@ | |||
13 | 13 | ||
14 | #include <linux/types.h> | 14 | #include <linux/types.h> |
15 | 15 | ||
16 | #include <asm/cmpxchg.h> | ||
16 | #include <asm-generic/atomic64.h> | 17 | #include <asm-generic/atomic64.h> |
17 | 18 | ||
18 | #include <asm/system.h> | ||
19 | 19 | ||
20 | #define ATOMIC_INIT(i) { (i) } | 20 | #define ATOMIC_INIT(i) { (i) } |
21 | 21 | ||
diff --git a/arch/sparc/include/asm/atomic_64.h b/arch/sparc/include/asm/atomic_64.h index 9f421df46aec..ce35a1cf1a20 100644 --- a/arch/sparc/include/asm/atomic_64.h +++ b/arch/sparc/include/asm/atomic_64.h | |||
@@ -8,7 +8,7 @@ | |||
8 | #define __ARCH_SPARC64_ATOMIC__ | 8 | #define __ARCH_SPARC64_ATOMIC__ |
9 | 9 | ||
10 | #include <linux/types.h> | 10 | #include <linux/types.h> |
11 | #include <asm/system.h> | 11 | #include <asm/cmpxchg.h> |
12 | 12 | ||
13 | #define ATOMIC_INIT(i) { (i) } | 13 | #define ATOMIC_INIT(i) { (i) } |
14 | #define ATOMIC64_INIT(i) { (i) } | 14 | #define ATOMIC64_INIT(i) { (i) } |
@@ -85,7 +85,6 @@ static inline int __atomic_add_unless(atomic_t *v, int a, int u) | |||
85 | return c; | 85 | return c; |
86 | } | 86 | } |
87 | 87 | ||
88 | |||
89 | #define atomic64_cmpxchg(v, o, n) \ | 88 | #define atomic64_cmpxchg(v, o, n) \ |
90 | ((__typeof__((v)->counter))cmpxchg(&((v)->counter), (o), (n))) | 89 | ((__typeof__((v)->counter))cmpxchg(&((v)->counter), (o), (n))) |
91 | #define atomic64_xchg(v, new) (xchg(&((v)->counter), new)) | 90 | #define atomic64_xchg(v, new) (xchg(&((v)->counter), new)) |
diff --git a/arch/sparc/include/asm/auxio_32.h b/arch/sparc/include/asm/auxio_32.h index e03e088be95f..3a319775ae37 100644 --- a/arch/sparc/include/asm/auxio_32.h +++ b/arch/sparc/include/asm/auxio_32.h | |||
@@ -6,7 +6,6 @@ | |||
6 | #ifndef _SPARC_AUXIO_H | 6 | #ifndef _SPARC_AUXIO_H |
7 | #define _SPARC_AUXIO_H | 7 | #define _SPARC_AUXIO_H |
8 | 8 | ||
9 | #include <asm/system.h> | ||
10 | #include <asm/vaddrs.h> | 9 | #include <asm/vaddrs.h> |
11 | 10 | ||
12 | /* This register is an unsigned char in IO space. It does two things. | 11 | /* This register is an unsigned char in IO space. It does two things. |
diff --git a/arch/sparc/include/asm/barrier.h b/arch/sparc/include/asm/barrier.h new file mode 100644 index 000000000000..b25f02a029e0 --- /dev/null +++ b/arch/sparc/include/asm/barrier.h | |||
@@ -0,0 +1,8 @@ | |||
1 | #ifndef ___ASM_SPARC_BARRIER_H | ||
2 | #define ___ASM_SPARC_BARRIER_H | ||
3 | #if defined(__sparc__) && defined(__arch64__) | ||
4 | #include <asm/barrier_64.h> | ||
5 | #else | ||
6 | #include <asm/barrier_32.h> | ||
7 | #endif | ||
8 | #endif | ||
diff --git a/arch/sparc/include/asm/barrier_32.h b/arch/sparc/include/asm/barrier_32.h new file mode 100644 index 000000000000..c1b76654ee76 --- /dev/null +++ b/arch/sparc/include/asm/barrier_32.h | |||
@@ -0,0 +1,15 @@ | |||
1 | #ifndef __SPARC_BARRIER_H | ||
2 | #define __SPARC_BARRIER_H | ||
3 | |||
4 | /* XXX Change this if we ever use a PSO mode kernel. */ | ||
5 | #define mb() __asm__ __volatile__ ("" : : : "memory") | ||
6 | #define rmb() mb() | ||
7 | #define wmb() mb() | ||
8 | #define read_barrier_depends() do { } while(0) | ||
9 | #define set_mb(__var, __value) do { __var = __value; mb(); } while(0) | ||
10 | #define smp_mb() __asm__ __volatile__("":::"memory") | ||
11 | #define smp_rmb() __asm__ __volatile__("":::"memory") | ||
12 | #define smp_wmb() __asm__ __volatile__("":::"memory") | ||
13 | #define smp_read_barrier_depends() do { } while(0) | ||
14 | |||
15 | #endif /* !(__SPARC_BARRIER_H) */ | ||
diff --git a/arch/sparc/include/asm/barrier_64.h b/arch/sparc/include/asm/barrier_64.h new file mode 100644 index 000000000000..95d45986f908 --- /dev/null +++ b/arch/sparc/include/asm/barrier_64.h | |||
@@ -0,0 +1,56 @@ | |||
1 | #ifndef __SPARC64_BARRIER_H | ||
2 | #define __SPARC64_BARRIER_H | ||
3 | |||
4 | /* These are here in an effort to more fully work around Spitfire Errata | ||
5 | * #51. Essentially, if a memory barrier occurs soon after a mispredicted | ||
6 | * branch, the chip can stop executing instructions until a trap occurs. | ||
7 | * Therefore, if interrupts are disabled, the chip can hang forever. | ||
8 | * | ||
9 | * It used to be believed that the memory barrier had to be right in the | ||
10 | * delay slot, but a case has been traced recently wherein the memory barrier | ||
11 | * was one instruction after the branch delay slot and the chip still hung. | ||
12 | * The offending sequence was the following in sym_wakeup_done() of the | ||
13 | * sym53c8xx_2 driver: | ||
14 | * | ||
15 | * call sym_ccb_from_dsa, 0 | ||
16 | * movge %icc, 0, %l0 | ||
17 | * brz,pn %o0, .LL1303 | ||
18 | * mov %o0, %l2 | ||
19 | * membar #LoadLoad | ||
20 | * | ||
21 | * The branch has to be mispredicted for the bug to occur. Therefore, we put | ||
22 | * the memory barrier explicitly into a "branch always, predicted taken" | ||
23 | * delay slot to avoid the problem case. | ||
24 | */ | ||
25 | #define membar_safe(type) \ | ||
26 | do { __asm__ __volatile__("ba,pt %%xcc, 1f\n\t" \ | ||
27 | " membar " type "\n" \ | ||
28 | "1:\n" \ | ||
29 | : : : "memory"); \ | ||
30 | } while (0) | ||
31 | |||
32 | /* The kernel always executes in TSO memory model these days, | ||
33 | * and furthermore most sparc64 chips implement more stringent | ||
34 | * memory ordering than required by the specifications. | ||
35 | */ | ||
36 | #define mb() membar_safe("#StoreLoad") | ||
37 | #define rmb() __asm__ __volatile__("":::"memory") | ||
38 | #define wmb() __asm__ __volatile__("":::"memory") | ||
39 | |||
40 | #define read_barrier_depends() do { } while(0) | ||
41 | #define set_mb(__var, __value) \ | ||
42 | do { __var = __value; membar_safe("#StoreLoad"); } while(0) | ||
43 | |||
44 | #ifdef CONFIG_SMP | ||
45 | #define smp_mb() mb() | ||
46 | #define smp_rmb() rmb() | ||
47 | #define smp_wmb() wmb() | ||
48 | #else | ||
49 | #define smp_mb() __asm__ __volatile__("":::"memory") | ||
50 | #define smp_rmb() __asm__ __volatile__("":::"memory") | ||
51 | #define smp_wmb() __asm__ __volatile__("":::"memory") | ||
52 | #endif | ||
53 | |||
54 | #define smp_read_barrier_depends() do { } while(0) | ||
55 | |||
56 | #endif /* !(__SPARC64_BARRIER_H) */ | ||
diff --git a/arch/sparc/include/asm/bug.h b/arch/sparc/include/asm/bug.h index 8a59e5a8c217..6bd9f43cb5a5 100644 --- a/arch/sparc/include/asm/bug.h +++ b/arch/sparc/include/asm/bug.h | |||
@@ -19,4 +19,7 @@ extern void do_BUG(const char *file, int line); | |||
19 | 19 | ||
20 | #include <asm-generic/bug.h> | 20 | #include <asm-generic/bug.h> |
21 | 21 | ||
22 | struct pt_regs; | ||
23 | extern void die_if_kernel(char *str, struct pt_regs *regs) __attribute__ ((noreturn)); | ||
24 | |||
22 | #endif | 25 | #endif |
diff --git a/arch/sparc/include/asm/cacheflush_32.h b/arch/sparc/include/asm/cacheflush_32.h index 2e468773f250..68431b47a22a 100644 --- a/arch/sparc/include/asm/cacheflush_32.h +++ b/arch/sparc/include/asm/cacheflush_32.h | |||
@@ -83,4 +83,13 @@ extern void sparc_flush_page_to_ram(struct page *page); | |||
83 | #define flush_cache_vmap(start, end) flush_cache_all() | 83 | #define flush_cache_vmap(start, end) flush_cache_all() |
84 | #define flush_cache_vunmap(start, end) flush_cache_all() | 84 | #define flush_cache_vunmap(start, end) flush_cache_all() |
85 | 85 | ||
86 | /* When a context switch happens we must flush all user windows so that | ||
87 | * the windows of the current process are flushed onto its stack. This | ||
88 | * way the windows are all clean for the next process and the stack | ||
89 | * frames are up to date. | ||
90 | */ | ||
91 | extern void flush_user_windows(void); | ||
92 | extern void kill_user_windows(void); | ||
93 | extern void flushw_all(void); | ||
94 | |||
86 | #endif /* _SPARC_CACHEFLUSH_H */ | 95 | #endif /* _SPARC_CACHEFLUSH_H */ |
diff --git a/arch/sparc/include/asm/cacheflush_64.h b/arch/sparc/include/asm/cacheflush_64.h index b95384033e89..2efea2ff88b7 100644 --- a/arch/sparc/include/asm/cacheflush_64.h +++ b/arch/sparc/include/asm/cacheflush_64.h | |||
@@ -9,6 +9,16 @@ | |||
9 | 9 | ||
10 | /* Cache flush operations. */ | 10 | /* Cache flush operations. */ |
11 | 11 | ||
12 | |||
13 | #define flushi(addr) __asm__ __volatile__ ("flush %0" : : "r" (addr) : "memory") | ||
14 | #define flushw_all() __asm__ __volatile__("flushw") | ||
15 | |||
16 | extern void __flushw_user(void); | ||
17 | #define flushw_user() __flushw_user() | ||
18 | |||
19 | #define flush_user_windows flushw_user | ||
20 | #define flush_register_windows flushw_all | ||
21 | |||
12 | /* These are the same regardless of whether this is an SMP kernel or not. */ | 22 | /* These are the same regardless of whether this is an SMP kernel or not. */ |
13 | #define flush_cache_mm(__mm) \ | 23 | #define flush_cache_mm(__mm) \ |
14 | do { if ((__mm) == current->mm) flushw_user(); } while(0) | 24 | do { if ((__mm) == current->mm) flushw_user(); } while(0) |
diff --git a/arch/sparc/include/asm/cmpxchg.h b/arch/sparc/include/asm/cmpxchg.h new file mode 100644 index 000000000000..9355893efa52 --- /dev/null +++ b/arch/sparc/include/asm/cmpxchg.h | |||
@@ -0,0 +1,8 @@ | |||
1 | #ifndef ___ASM_SPARC_CMPXCHG_H | ||
2 | #define ___ASM_SPARC_CMPXCHG_H | ||
3 | #if defined(__sparc__) && defined(__arch64__) | ||
4 | #include <asm/cmpxchg_64.h> | ||
5 | #else | ||
6 | #include <asm/cmpxchg_32.h> | ||
7 | #endif | ||
8 | #endif | ||
diff --git a/arch/sparc/include/asm/cmpxchg_32.h b/arch/sparc/include/asm/cmpxchg_32.h new file mode 100644 index 000000000000..c786b0a92b51 --- /dev/null +++ b/arch/sparc/include/asm/cmpxchg_32.h | |||
@@ -0,0 +1,112 @@ | |||
1 | /* 32-bit atomic xchg() and cmpxchg() definitions. | ||
2 | * | ||
3 | * Copyright (C) 1996 David S. Miller (davem@davemloft.net) | ||
4 | * Copyright (C) 2000 Anton Blanchard (anton@linuxcare.com.au) | ||
5 | * Copyright (C) 2007 Kyle McMartin (kyle@parisc-linux.org) | ||
6 | * | ||
7 | * Additions by Keith M Wesolowski (wesolows@foobazco.org) based | ||
8 | * on asm-parisc/atomic.h Copyright (C) 2000 Philipp Rumpf <prumpf@tux.org>. | ||
9 | */ | ||
10 | |||
11 | #ifndef __ARCH_SPARC_CMPXCHG__ | ||
12 | #define __ARCH_SPARC_CMPXCHG__ | ||
13 | |||
14 | #include <asm/btfixup.h> | ||
15 | |||
16 | /* This has special calling conventions */ | ||
17 | #ifndef CONFIG_SMP | ||
18 | BTFIXUPDEF_CALL(void, ___xchg32, void) | ||
19 | #endif | ||
20 | |||
21 | static inline unsigned long xchg_u32(__volatile__ unsigned long *m, unsigned long val) | ||
22 | { | ||
23 | #ifdef CONFIG_SMP | ||
24 | __asm__ __volatile__("swap [%2], %0" | ||
25 | : "=&r" (val) | ||
26 | : "0" (val), "r" (m) | ||
27 | : "memory"); | ||
28 | return val; | ||
29 | #else | ||
30 | register unsigned long *ptr asm("g1"); | ||
31 | register unsigned long ret asm("g2"); | ||
32 | |||
33 | ptr = (unsigned long *) m; | ||
34 | ret = val; | ||
35 | |||
36 | /* Note: this is magic and the nop there is | ||
37 | really needed. */ | ||
38 | __asm__ __volatile__( | ||
39 | "mov %%o7, %%g4\n\t" | ||
40 | "call ___f____xchg32\n\t" | ||
41 | " nop\n\t" | ||
42 | : "=&r" (ret) | ||
43 | : "0" (ret), "r" (ptr) | ||
44 | : "g3", "g4", "g7", "memory", "cc"); | ||
45 | |||
46 | return ret; | ||
47 | #endif | ||
48 | } | ||
49 | |||
50 | extern void __xchg_called_with_bad_pointer(void); | ||
51 | |||
52 | static inline unsigned long __xchg(unsigned long x, __volatile__ void * ptr, int size) | ||
53 | { | ||
54 | switch (size) { | ||
55 | case 4: | ||
56 | return xchg_u32(ptr, x); | ||
57 | } | ||
58 | __xchg_called_with_bad_pointer(); | ||
59 | return x; | ||
60 | } | ||
61 | |||
62 | #define xchg(ptr,x) ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr)))) | ||
63 | |||
64 | /* Emulate cmpxchg() the same way we emulate atomics, | ||
65 | * by hashing the object address and indexing into an array | ||
66 | * of spinlocks to get a bit of performance... | ||
67 | * | ||
68 | * See arch/sparc/lib/atomic32.c for implementation. | ||
69 | * | ||
70 | * Cribbed from <asm-parisc/atomic.h> | ||
71 | */ | ||
72 | #define __HAVE_ARCH_CMPXCHG 1 | ||
73 | |||
74 | /* bug catcher for when unsupported size is used - won't link */ | ||
75 | extern void __cmpxchg_called_with_bad_pointer(void); | ||
76 | /* we only need to support cmpxchg of a u32 on sparc */ | ||
77 | extern unsigned long __cmpxchg_u32(volatile u32 *m, u32 old, u32 new_); | ||
78 | |||
79 | /* don't worry...optimizer will get rid of most of this */ | ||
80 | static inline unsigned long | ||
81 | __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new_, int size) | ||
82 | { | ||
83 | switch (size) { | ||
84 | case 4: | ||
85 | return __cmpxchg_u32((u32 *)ptr, (u32)old, (u32)new_); | ||
86 | default: | ||
87 | __cmpxchg_called_with_bad_pointer(); | ||
88 | break; | ||
89 | } | ||
90 | return old; | ||
91 | } | ||
92 | |||
93 | #define cmpxchg(ptr, o, n) \ | ||
94 | ({ \ | ||
95 | __typeof__(*(ptr)) _o_ = (o); \ | ||
96 | __typeof__(*(ptr)) _n_ = (n); \ | ||
97 | (__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_, \ | ||
98 | (unsigned long)_n_, sizeof(*(ptr))); \ | ||
99 | }) | ||
100 | |||
101 | #include <asm-generic/cmpxchg-local.h> | ||
102 | |||
103 | /* | ||
104 | * cmpxchg_local and cmpxchg64_local are atomic wrt current CPU. Always make | ||
105 | * them available. | ||
106 | */ | ||
107 | #define cmpxchg_local(ptr, o, n) \ | ||
108 | ((__typeof__(*(ptr)))__cmpxchg_local_generic((ptr), (unsigned long)(o),\ | ||
109 | (unsigned long)(n), sizeof(*(ptr)))) | ||
110 | #define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) | ||
111 | |||
112 | #endif /* __ARCH_SPARC_CMPXCHG__ */ | ||
diff --git a/arch/sparc/include/asm/cmpxchg_64.h b/arch/sparc/include/asm/cmpxchg_64.h new file mode 100644 index 000000000000..b30eb37294c5 --- /dev/null +++ b/arch/sparc/include/asm/cmpxchg_64.h | |||
@@ -0,0 +1,145 @@ | |||
1 | /* 64-bit atomic xchg() and cmpxchg() definitions. | ||
2 | * | ||
3 | * Copyright (C) 1996, 1997, 2000 David S. Miller (davem@redhat.com) | ||
4 | */ | ||
5 | |||
6 | #ifndef __ARCH_SPARC64_CMPXCHG__ | ||
7 | #define __ARCH_SPARC64_CMPXCHG__ | ||
8 | |||
9 | static inline unsigned long xchg32(__volatile__ unsigned int *m, unsigned int val) | ||
10 | { | ||
11 | unsigned long tmp1, tmp2; | ||
12 | |||
13 | __asm__ __volatile__( | ||
14 | " mov %0, %1\n" | ||
15 | "1: lduw [%4], %2\n" | ||
16 | " cas [%4], %2, %0\n" | ||
17 | " cmp %2, %0\n" | ||
18 | " bne,a,pn %%icc, 1b\n" | ||
19 | " mov %1, %0\n" | ||
20 | : "=&r" (val), "=&r" (tmp1), "=&r" (tmp2) | ||
21 | : "0" (val), "r" (m) | ||
22 | : "cc", "memory"); | ||
23 | return val; | ||
24 | } | ||
25 | |||
26 | static inline unsigned long xchg64(__volatile__ unsigned long *m, unsigned long val) | ||
27 | { | ||
28 | unsigned long tmp1, tmp2; | ||
29 | |||
30 | __asm__ __volatile__( | ||
31 | " mov %0, %1\n" | ||
32 | "1: ldx [%4], %2\n" | ||
33 | " casx [%4], %2, %0\n" | ||
34 | " cmp %2, %0\n" | ||
35 | " bne,a,pn %%xcc, 1b\n" | ||
36 | " mov %1, %0\n" | ||
37 | : "=&r" (val), "=&r" (tmp1), "=&r" (tmp2) | ||
38 | : "0" (val), "r" (m) | ||
39 | : "cc", "memory"); | ||
40 | return val; | ||
41 | } | ||
42 | |||
43 | #define xchg(ptr,x) ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr)))) | ||
44 | |||
45 | extern void __xchg_called_with_bad_pointer(void); | ||
46 | |||
47 | static inline unsigned long __xchg(unsigned long x, __volatile__ void * ptr, | ||
48 | int size) | ||
49 | { | ||
50 | switch (size) { | ||
51 | case 4: | ||
52 | return xchg32(ptr, x); | ||
53 | case 8: | ||
54 | return xchg64(ptr, x); | ||
55 | } | ||
56 | __xchg_called_with_bad_pointer(); | ||
57 | return x; | ||
58 | } | ||
59 | |||
60 | /* | ||
61 | * Atomic compare and exchange. Compare OLD with MEM, if identical, | ||
62 | * store NEW in MEM. Return the initial value in MEM. Success is | ||
63 | * indicated by comparing RETURN with OLD. | ||
64 | */ | ||
65 | |||
66 | #include <asm-generic/cmpxchg-local.h> | ||
67 | |||
68 | #define __HAVE_ARCH_CMPXCHG 1 | ||
69 | |||
70 | static inline unsigned long | ||
71 | __cmpxchg_u32(volatile int *m, int old, int new) | ||
72 | { | ||
73 | __asm__ __volatile__("cas [%2], %3, %0" | ||
74 | : "=&r" (new) | ||
75 | : "0" (new), "r" (m), "r" (old) | ||
76 | : "memory"); | ||
77 | |||
78 | return new; | ||
79 | } | ||
80 | |||
81 | static inline unsigned long | ||
82 | __cmpxchg_u64(volatile long *m, unsigned long old, unsigned long new) | ||
83 | { | ||
84 | __asm__ __volatile__("casx [%2], %3, %0" | ||
85 | : "=&r" (new) | ||
86 | : "0" (new), "r" (m), "r" (old) | ||
87 | : "memory"); | ||
88 | |||
89 | return new; | ||
90 | } | ||
91 | |||
92 | /* This function doesn't exist, so you'll get a linker error | ||
93 | if something tries to do an invalid cmpxchg(). */ | ||
94 | extern void __cmpxchg_called_with_bad_pointer(void); | ||
95 | |||
96 | static inline unsigned long | ||
97 | __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size) | ||
98 | { | ||
99 | switch (size) { | ||
100 | case 4: | ||
101 | return __cmpxchg_u32(ptr, old, new); | ||
102 | case 8: | ||
103 | return __cmpxchg_u64(ptr, old, new); | ||
104 | } | ||
105 | __cmpxchg_called_with_bad_pointer(); | ||
106 | return old; | ||
107 | } | ||
108 | |||
109 | #define cmpxchg(ptr,o,n) \ | ||
110 | ({ \ | ||
111 | __typeof__(*(ptr)) _o_ = (o); \ | ||
112 | __typeof__(*(ptr)) _n_ = (n); \ | ||
113 | (__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_, \ | ||
114 | (unsigned long)_n_, sizeof(*(ptr))); \ | ||
115 | }) | ||
116 | |||
117 | /* | ||
118 | * cmpxchg_local and cmpxchg64_local are atomic wrt current CPU. Always make | ||
119 | * them available. | ||
120 | */ | ||
121 | |||
122 | static inline unsigned long __cmpxchg_local(volatile void *ptr, | ||
123 | unsigned long old, | ||
124 | unsigned long new, int size) | ||
125 | { | ||
126 | switch (size) { | ||
127 | case 4: | ||
128 | case 8: return __cmpxchg(ptr, old, new, size); | ||
129 | default: | ||
130 | return __cmpxchg_local_generic(ptr, old, new, size); | ||
131 | } | ||
132 | |||
133 | return old; | ||
134 | } | ||
135 | |||
136 | #define cmpxchg_local(ptr, o, n) \ | ||
137 | ((__typeof__(*(ptr)))__cmpxchg_local((ptr), (unsigned long)(o), \ | ||
138 | (unsigned long)(n), sizeof(*(ptr)))) | ||
139 | #define cmpxchg64_local(ptr, o, n) \ | ||
140 | ({ \ | ||
141 | BUILD_BUG_ON(sizeof(*(ptr)) != 8); \ | ||
142 | cmpxchg_local((ptr), (o), (n)); \ | ||
143 | }) | ||
144 | |||
145 | #endif /* __ARCH_SPARC64_CMPXCHG__ */ | ||
diff --git a/arch/sparc/include/asm/cpu_type.h b/arch/sparc/include/asm/cpu_type.h new file mode 100644 index 000000000000..4ca184d95d82 --- /dev/null +++ b/arch/sparc/include/asm/cpu_type.h | |||
@@ -0,0 +1,34 @@ | |||
1 | #ifndef __ASM_CPU_TYPE_H | ||
2 | #define __ASM_CPU_TYPE_H | ||
3 | |||
4 | /* | ||
5 | * Sparc (general) CPU types | ||
6 | */ | ||
7 | enum sparc_cpu { | ||
8 | sun4 = 0x00, | ||
9 | sun4c = 0x01, | ||
10 | sun4m = 0x02, | ||
11 | sun4d = 0x03, | ||
12 | sun4e = 0x04, | ||
13 | sun4u = 0x05, /* V8 ploos ploos */ | ||
14 | sun_unknown = 0x06, | ||
15 | ap1000 = 0x07, /* almost a sun4m */ | ||
16 | sparc_leon = 0x08, /* Leon SoC */ | ||
17 | }; | ||
18 | |||
19 | #ifdef CONFIG_SPARC32 | ||
20 | extern enum sparc_cpu sparc_cpu_model; | ||
21 | |||
22 | #define ARCH_SUN4C (sparc_cpu_model==sun4c) | ||
23 | |||
24 | #define SUN4M_NCPUS 4 /* Architectural limit of sun4m. */ | ||
25 | |||
26 | #else | ||
27 | |||
28 | #define sparc_cpu_model sun4u | ||
29 | |||
30 | /* This cannot ever be a sun4c :) That's just history. */ | ||
31 | #define ARCH_SUN4C 0 | ||
32 | #endif | ||
33 | |||
34 | #endif /* __ASM_CPU_TYPE_H */ | ||
diff --git a/arch/sparc/include/asm/exec.h b/arch/sparc/include/asm/exec.h new file mode 100644 index 000000000000..2e085881e0d1 --- /dev/null +++ b/arch/sparc/include/asm/exec.h | |||
@@ -0,0 +1,6 @@ | |||
1 | #ifndef __SPARC_EXEC_H | ||
2 | #define __SPARC_EXEC_H | ||
3 | |||
4 | #define arch_align_stack(x) (x) | ||
5 | |||
6 | #endif /* __SPARC_EXEC_H */ | ||
diff --git a/arch/sparc/include/asm/floppy_32.h b/arch/sparc/include/asm/floppy_32.h index 7440915e86d8..698d9559fead 100644 --- a/arch/sparc/include/asm/floppy_32.h +++ b/arch/sparc/include/asm/floppy_32.h | |||
@@ -11,7 +11,6 @@ | |||
11 | 11 | ||
12 | #include <asm/page.h> | 12 | #include <asm/page.h> |
13 | #include <asm/pgtable.h> | 13 | #include <asm/pgtable.h> |
14 | #include <asm/system.h> | ||
15 | #include <asm/idprom.h> | 14 | #include <asm/idprom.h> |
16 | #include <asm/machines.h> | 15 | #include <asm/machines.h> |
17 | #include <asm/oplib.h> | 16 | #include <asm/oplib.h> |
diff --git a/arch/sparc/include/asm/futex_64.h b/arch/sparc/include/asm/futex_64.h index 444e7bea23bc..4e899b0dabf7 100644 --- a/arch/sparc/include/asm/futex_64.h +++ b/arch/sparc/include/asm/futex_64.h | |||
@@ -4,7 +4,6 @@ | |||
4 | #include <linux/futex.h> | 4 | #include <linux/futex.h> |
5 | #include <linux/uaccess.h> | 5 | #include <linux/uaccess.h> |
6 | #include <asm/errno.h> | 6 | #include <asm/errno.h> |
7 | #include <asm/system.h> | ||
8 | 7 | ||
9 | #define __futex_cas_op(insn, ret, oldval, uaddr, oparg) \ | 8 | #define __futex_cas_op(insn, ret, oldval, uaddr, oparg) \ |
10 | __asm__ __volatile__( \ | 9 | __asm__ __volatile__( \ |
diff --git a/arch/sparc/include/asm/io_32.h b/arch/sparc/include/asm/io_32.h index 2006e5d359df..c1acbd891cbc 100644 --- a/arch/sparc/include/asm/io_32.h +++ b/arch/sparc/include/asm/io_32.h | |||
@@ -6,7 +6,6 @@ | |||
6 | #include <linux/ioport.h> /* struct resource */ | 6 | #include <linux/ioport.h> /* struct resource */ |
7 | 7 | ||
8 | #include <asm/page.h> /* IO address mapping routines need this */ | 8 | #include <asm/page.h> /* IO address mapping routines need this */ |
9 | #include <asm/system.h> | ||
10 | #include <asm-generic/pci_iomap.h> | 9 | #include <asm-generic/pci_iomap.h> |
11 | 10 | ||
12 | #define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT) | 11 | #define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT) |
diff --git a/arch/sparc/include/asm/io_64.h b/arch/sparc/include/asm/io_64.h index 9481e5a6fa90..09b0b88aeb2a 100644 --- a/arch/sparc/include/asm/io_64.h +++ b/arch/sparc/include/asm/io_64.h | |||
@@ -6,7 +6,6 @@ | |||
6 | #include <linux/types.h> | 6 | #include <linux/types.h> |
7 | 7 | ||
8 | #include <asm/page.h> /* IO address mapping routines need this */ | 8 | #include <asm/page.h> /* IO address mapping routines need this */ |
9 | #include <asm/system.h> | ||
10 | #include <asm/asi.h> | 9 | #include <asm/asi.h> |
11 | #include <asm-generic/pci_iomap.h> | 10 | #include <asm-generic/pci_iomap.h> |
12 | 11 | ||
diff --git a/arch/sparc/include/asm/irqflags_32.h b/arch/sparc/include/asm/irqflags_32.h index 14848909e0de..e414c06615c1 100644 --- a/arch/sparc/include/asm/irqflags_32.h +++ b/arch/sparc/include/asm/irqflags_32.h | |||
@@ -13,6 +13,7 @@ | |||
13 | #ifndef __ASSEMBLY__ | 13 | #ifndef __ASSEMBLY__ |
14 | 14 | ||
15 | #include <linux/types.h> | 15 | #include <linux/types.h> |
16 | #include <asm/psr.h> | ||
16 | 17 | ||
17 | extern void arch_local_irq_restore(unsigned long); | 18 | extern void arch_local_irq_restore(unsigned long); |
18 | extern unsigned long arch_local_irq_save(void); | 19 | extern unsigned long arch_local_irq_save(void); |
diff --git a/arch/sparc/include/asm/mmu_context_64.h b/arch/sparc/include/asm/mmu_context_64.h index 666a73fef28d..a97fd085cebe 100644 --- a/arch/sparc/include/asm/mmu_context_64.h +++ b/arch/sparc/include/asm/mmu_context_64.h | |||
@@ -6,7 +6,6 @@ | |||
6 | #ifndef __ASSEMBLY__ | 6 | #ifndef __ASSEMBLY__ |
7 | 7 | ||
8 | #include <linux/spinlock.h> | 8 | #include <linux/spinlock.h> |
9 | #include <asm/system.h> | ||
10 | #include <asm/spitfire.h> | 9 | #include <asm/spitfire.h> |
11 | #include <asm-generic/mm_hooks.h> | 10 | #include <asm-generic/mm_hooks.h> |
12 | 11 | ||
diff --git a/arch/sparc/include/asm/ns87303.h b/arch/sparc/include/asm/ns87303.h index af755483e17d..6b947ee0f6aa 100644 --- a/arch/sparc/include/asm/ns87303.h +++ b/arch/sparc/include/asm/ns87303.h | |||
@@ -79,7 +79,6 @@ | |||
79 | 79 | ||
80 | #include <linux/spinlock.h> | 80 | #include <linux/spinlock.h> |
81 | 81 | ||
82 | #include <asm/system.h> | ||
83 | #include <asm/io.h> | 82 | #include <asm/io.h> |
84 | 83 | ||
85 | extern spinlock_t ns87303_lock; | 84 | extern spinlock_t ns87303_lock; |
diff --git a/arch/sparc/include/asm/perfctr.h b/arch/sparc/include/asm/perfctr.h index 8d8720a8770d..3332d2cba6c1 100644 --- a/arch/sparc/include/asm/perfctr.h +++ b/arch/sparc/include/asm/perfctr.h | |||
@@ -168,6 +168,29 @@ struct vcounter_struct { | |||
168 | unsigned long long vcnt1; | 168 | unsigned long long vcnt1; |
169 | }; | 169 | }; |
170 | 170 | ||
171 | #else /* !(__KERNEL__) */ | ||
172 | |||
173 | #ifndef CONFIG_SPARC32 | ||
174 | |||
175 | /* Performance counter register access. */ | ||
176 | #define read_pcr(__p) __asm__ __volatile__("rd %%pcr, %0" : "=r" (__p)) | ||
177 | #define write_pcr(__p) __asm__ __volatile__("wr %0, 0x0, %%pcr" : : "r" (__p)) | ||
178 | #define read_pic(__p) __asm__ __volatile__("rd %%pic, %0" : "=r" (__p)) | ||
179 | |||
180 | /* Blackbird errata workaround. See commentary in | ||
181 | * arch/sparc64/kernel/smp.c:smp_percpu_timer_interrupt() | ||
182 | * for more information. | ||
183 | */ | ||
184 | #define write_pic(__p) \ | ||
185 | __asm__ __volatile__("ba,pt %%xcc, 99f\n\t" \ | ||
186 | " nop\n\t" \ | ||
187 | ".align 64\n" \ | ||
188 | "99:wr %0, 0x0, %%pic\n\t" \ | ||
189 | "rd %%pic, %%g0" : : "r" (__p)) | ||
190 | #define reset_pic() write_pic(0) | ||
191 | |||
192 | #endif /* !CONFIG_SPARC32 */ | ||
193 | |||
171 | #endif /* !(__KERNEL__) */ | 194 | #endif /* !(__KERNEL__) */ |
172 | 195 | ||
173 | #endif /* !(PERF_COUNTER_API) */ | 196 | #endif /* !(PERF_COUNTER_API) */ |
diff --git a/arch/sparc/include/asm/pgtable_32.h b/arch/sparc/include/asm/pgtable_32.h index a790cc657476..3d7101860e68 100644 --- a/arch/sparc/include/asm/pgtable_32.h +++ b/arch/sparc/include/asm/pgtable_32.h | |||
@@ -21,7 +21,7 @@ | |||
21 | #include <asm/vac-ops.h> | 21 | #include <asm/vac-ops.h> |
22 | #include <asm/oplib.h> | 22 | #include <asm/oplib.h> |
23 | #include <asm/btfixup.h> | 23 | #include <asm/btfixup.h> |
24 | #include <asm/system.h> | 24 | #include <asm/cpu_type.h> |
25 | 25 | ||
26 | 26 | ||
27 | struct vm_area_struct; | 27 | struct vm_area_struct; |
diff --git a/arch/sparc/include/asm/pgtable_64.h b/arch/sparc/include/asm/pgtable_64.h index 38ebb2c60137..6fa2f7980e6b 100644 --- a/arch/sparc/include/asm/pgtable_64.h +++ b/arch/sparc/include/asm/pgtable_64.h | |||
@@ -19,7 +19,6 @@ | |||
19 | #include <asm/types.h> | 19 | #include <asm/types.h> |
20 | #include <asm/spitfire.h> | 20 | #include <asm/spitfire.h> |
21 | #include <asm/asi.h> | 21 | #include <asm/asi.h> |
22 | #include <asm/system.h> | ||
23 | #include <asm/page.h> | 22 | #include <asm/page.h> |
24 | #include <asm/processor.h> | 23 | #include <asm/processor.h> |
25 | 24 | ||
diff --git a/arch/sparc/include/asm/processor.h b/arch/sparc/include/asm/processor.h index 9da9646bf6c6..2fe99e66e760 100644 --- a/arch/sparc/include/asm/processor.h +++ b/arch/sparc/include/asm/processor.h | |||
@@ -5,4 +5,7 @@ | |||
5 | #else | 5 | #else |
6 | #include <asm/processor_32.h> | 6 | #include <asm/processor_32.h> |
7 | #endif | 7 | #endif |
8 | |||
9 | #define nop() __asm__ __volatile__ ("nop") | ||
10 | |||
8 | #endif | 11 | #endif |
diff --git a/arch/sparc/include/asm/processor_64.h b/arch/sparc/include/asm/processor_64.h index 59fcebb8f440..e713db249931 100644 --- a/arch/sparc/include/asm/processor_64.h +++ b/arch/sparc/include/asm/processor_64.h | |||
@@ -18,6 +18,9 @@ | |||
18 | #include <asm/ptrace.h> | 18 | #include <asm/ptrace.h> |
19 | #include <asm/page.h> | 19 | #include <asm/page.h> |
20 | 20 | ||
21 | /* Don't hold the runqueue lock over context switch */ | ||
22 | #define __ARCH_WANT_UNLOCKED_CTXSW | ||
23 | |||
21 | /* The sparc has no problems with write protection */ | 24 | /* The sparc has no problems with write protection */ |
22 | #define wp_works_ok 1 | 25 | #define wp_works_ok 1 |
23 | #define wp_works_ok__is_a_macro /* for versions in ksyms.c */ | 26 | #define wp_works_ok__is_a_macro /* for versions in ksyms.c */ |
diff --git a/arch/sparc/include/asm/ptrace.h b/arch/sparc/include/asm/ptrace.h index c00c3b5c2806..ef8c7c068f53 100644 --- a/arch/sparc/include/asm/ptrace.h +++ b/arch/sparc/include/asm/ptrace.h | |||
@@ -98,6 +98,8 @@ struct sparc_trapf { | |||
98 | */ | 98 | */ |
99 | #ifndef __ASSEMBLY__ | 99 | #ifndef __ASSEMBLY__ |
100 | 100 | ||
101 | #include <linux/types.h> | ||
102 | |||
101 | struct pt_regs { | 103 | struct pt_regs { |
102 | unsigned long psr; | 104 | unsigned long psr; |
103 | unsigned long pc; | 105 | unsigned long pc; |
@@ -163,7 +165,6 @@ struct sparc_stackf { | |||
163 | #ifdef __KERNEL__ | 165 | #ifdef __KERNEL__ |
164 | 166 | ||
165 | #include <linux/threads.h> | 167 | #include <linux/threads.h> |
166 | #include <asm/system.h> | ||
167 | 168 | ||
168 | static inline int pt_regs_trap_type(struct pt_regs *regs) | 169 | static inline int pt_regs_trap_type(struct pt_regs *regs) |
169 | { | 170 | { |
@@ -240,8 +241,6 @@ extern unsigned long profile_pc(struct pt_regs *); | |||
240 | 241 | ||
241 | #ifdef __KERNEL__ | 242 | #ifdef __KERNEL__ |
242 | 243 | ||
243 | #include <asm/system.h> | ||
244 | |||
245 | static inline bool pt_regs_is_syscall(struct pt_regs *regs) | 244 | static inline bool pt_regs_is_syscall(struct pt_regs *regs) |
246 | { | 245 | { |
247 | return (regs->psr & PSR_SYSCALL); | 246 | return (regs->psr & PSR_SYSCALL); |
diff --git a/arch/sparc/include/asm/setup.h b/arch/sparc/include/asm/setup.h index 64718ba26434..00497abec996 100644 --- a/arch/sparc/include/asm/setup.h +++ b/arch/sparc/include/asm/setup.h | |||
@@ -13,14 +13,30 @@ | |||
13 | 13 | ||
14 | #ifdef __KERNEL__ | 14 | #ifdef __KERNEL__ |
15 | 15 | ||
16 | extern char reboot_command[]; | ||
17 | |||
16 | #ifdef CONFIG_SPARC32 | 18 | #ifdef CONFIG_SPARC32 |
17 | /* The CPU that was used for booting | 19 | /* The CPU that was used for booting |
18 | * Only sun4d + leon may have boot_cpu_id != 0 | 20 | * Only sun4d + leon may have boot_cpu_id != 0 |
19 | */ | 21 | */ |
20 | extern unsigned char boot_cpu_id; | 22 | extern unsigned char boot_cpu_id; |
21 | extern unsigned char boot_cpu_id4; | 23 | extern unsigned char boot_cpu_id4; |
24 | |||
25 | extern unsigned long empty_bad_page; | ||
26 | extern unsigned long empty_bad_page_table; | ||
27 | extern unsigned long empty_zero_page; | ||
28 | |||
29 | extern int serial_console; | ||
30 | static inline int con_is_present(void) | ||
31 | { | ||
32 | return serial_console ? 0 : 1; | ||
33 | } | ||
22 | #endif | 34 | #endif |
23 | 35 | ||
36 | extern void sun_do_break(void); | ||
37 | extern int stop_a_enabled; | ||
38 | extern int scons_pwroff; | ||
39 | |||
24 | #endif /* __KERNEL__ */ | 40 | #endif /* __KERNEL__ */ |
25 | 41 | ||
26 | #endif /* _SPARC_SETUP_H */ | 42 | #endif /* _SPARC_SETUP_H */ |
diff --git a/arch/sparc/include/asm/switch_to.h b/arch/sparc/include/asm/switch_to.h new file mode 100644 index 000000000000..2dc4fa5c6f8c --- /dev/null +++ b/arch/sparc/include/asm/switch_to.h | |||
@@ -0,0 +1,8 @@ | |||
1 | #ifndef ___ASM_SPARC_SWITCH_TO_H | ||
2 | #define ___ASM_SPARC_SWITCH_TO_H | ||
3 | #if defined(__sparc__) && defined(__arch64__) | ||
4 | #include <asm/switch_to_64.h> | ||
5 | #else | ||
6 | #include <asm/switch_to_32.h> | ||
7 | #endif | ||
8 | #endif | ||
diff --git a/arch/sparc/include/asm/switch_to_32.h b/arch/sparc/include/asm/switch_to_32.h new file mode 100644 index 000000000000..e32e82b76eed --- /dev/null +++ b/arch/sparc/include/asm/switch_to_32.h | |||
@@ -0,0 +1,106 @@ | |||
1 | #ifndef __SPARC_SWITCH_TO_H | ||
2 | #define __SPARC_SWITCH_TO_H | ||
3 | |||
4 | #include <asm/smp.h> | ||
5 | |||
6 | extern struct thread_info *current_set[NR_CPUS]; | ||
7 | |||
8 | /* | ||
9 | * Flush windows so that the VM switch which follows | ||
10 | * would not pull the stack from under us. | ||
11 | * | ||
12 | * SWITCH_ENTER and SWITH_DO_LAZY_FPU do not work yet (e.g. SMP does not work) | ||
13 | * XXX WTF is the above comment? Found in late teen 2.4.x. | ||
14 | */ | ||
15 | #ifdef CONFIG_SMP | ||
16 | #define SWITCH_ENTER(prv) \ | ||
17 | do { \ | ||
18 | if (test_tsk_thread_flag(prv, TIF_USEDFPU)) { \ | ||
19 | put_psr(get_psr() | PSR_EF); \ | ||
20 | fpsave(&(prv)->thread.float_regs[0], &(prv)->thread.fsr, \ | ||
21 | &(prv)->thread.fpqueue[0], &(prv)->thread.fpqdepth); \ | ||
22 | clear_tsk_thread_flag(prv, TIF_USEDFPU); \ | ||
23 | (prv)->thread.kregs->psr &= ~PSR_EF; \ | ||
24 | } \ | ||
25 | } while(0) | ||
26 | |||
27 | #define SWITCH_DO_LAZY_FPU(next) /* */ | ||
28 | #else | ||
29 | #define SWITCH_ENTER(prv) /* */ | ||
30 | #define SWITCH_DO_LAZY_FPU(nxt) \ | ||
31 | do { \ | ||
32 | if (last_task_used_math != (nxt)) \ | ||
33 | (nxt)->thread.kregs->psr&=~PSR_EF; \ | ||
34 | } while(0) | ||
35 | #endif | ||
36 | |||
37 | #define prepare_arch_switch(next) do { \ | ||
38 | __asm__ __volatile__( \ | ||
39 | ".globl\tflush_patch_switch\nflush_patch_switch:\n\t" \ | ||
40 | "save %sp, -0x40, %sp; save %sp, -0x40, %sp; save %sp, -0x40, %sp\n\t" \ | ||
41 | "save %sp, -0x40, %sp; save %sp, -0x40, %sp; save %sp, -0x40, %sp\n\t" \ | ||
42 | "save %sp, -0x40, %sp\n\t" \ | ||
43 | "restore; restore; restore; restore; restore; restore; restore"); \ | ||
44 | } while(0) | ||
45 | |||
46 | /* Much care has gone into this code, do not touch it. | ||
47 | * | ||
48 | * We need to loadup regs l0/l1 for the newly forked child | ||
49 | * case because the trap return path relies on those registers | ||
50 | * holding certain values, gcc is told that they are clobbered. | ||
51 | * Gcc needs registers for 3 values in and 1 value out, so we | ||
52 | * clobber every non-fixed-usage register besides l2/l3/o4/o5. -DaveM | ||
53 | * | ||
54 | * Hey Dave, that do not touch sign is too much of an incentive | ||
55 | * - Anton & Pete | ||
56 | */ | ||
57 | #define switch_to(prev, next, last) do { \ | ||
58 | SWITCH_ENTER(prev); \ | ||
59 | SWITCH_DO_LAZY_FPU(next); \ | ||
60 | cpumask_set_cpu(smp_processor_id(), mm_cpumask(next->active_mm)); \ | ||
61 | __asm__ __volatile__( \ | ||
62 | "sethi %%hi(here - 0x8), %%o7\n\t" \ | ||
63 | "mov %%g6, %%g3\n\t" \ | ||
64 | "or %%o7, %%lo(here - 0x8), %%o7\n\t" \ | ||
65 | "rd %%psr, %%g4\n\t" \ | ||
66 | "std %%sp, [%%g6 + %4]\n\t" \ | ||
67 | "rd %%wim, %%g5\n\t" \ | ||
68 | "wr %%g4, 0x20, %%psr\n\t" \ | ||
69 | "nop\n\t" \ | ||
70 | "std %%g4, [%%g6 + %3]\n\t" \ | ||
71 | "ldd [%2 + %3], %%g4\n\t" \ | ||
72 | "mov %2, %%g6\n\t" \ | ||
73 | ".globl patchme_store_new_current\n" \ | ||
74 | "patchme_store_new_current:\n\t" \ | ||
75 | "st %2, [%1]\n\t" \ | ||
76 | "wr %%g4, 0x20, %%psr\n\t" \ | ||
77 | "nop\n\t" \ | ||
78 | "nop\n\t" \ | ||
79 | "nop\n\t" /* LEON needs all 3 nops: load to %sp depends on CWP. */ \ | ||
80 | "ldd [%%g6 + %4], %%sp\n\t" \ | ||
81 | "wr %%g5, 0x0, %%wim\n\t" \ | ||
82 | "ldd [%%sp + 0x00], %%l0\n\t" \ | ||
83 | "ldd [%%sp + 0x38], %%i6\n\t" \ | ||
84 | "wr %%g4, 0x0, %%psr\n\t" \ | ||
85 | "nop\n\t" \ | ||
86 | "nop\n\t" \ | ||
87 | "jmpl %%o7 + 0x8, %%g0\n\t" \ | ||
88 | " ld [%%g3 + %5], %0\n\t" \ | ||
89 | "here:\n" \ | ||
90 | : "=&r" (last) \ | ||
91 | : "r" (&(current_set[hard_smp_processor_id()])), \ | ||
92 | "r" (task_thread_info(next)), \ | ||
93 | "i" (TI_KPSR), \ | ||
94 | "i" (TI_KSP), \ | ||
95 | "i" (TI_TASK) \ | ||
96 | : "g1", "g2", "g3", "g4", "g5", "g7", \ | ||
97 | "l0", "l1", "l3", "l4", "l5", "l6", "l7", \ | ||
98 | "i0", "i1", "i2", "i3", "i4", "i5", \ | ||
99 | "o0", "o1", "o2", "o3", "o7"); \ | ||
100 | } while(0) | ||
101 | |||
102 | extern void fpsave(unsigned long *fpregs, unsigned long *fsr, | ||
103 | void *fpqueue, unsigned long *fpqdepth); | ||
104 | extern void synchronize_user_stack(void); | ||
105 | |||
106 | #endif /* __SPARC_SWITCH_TO_H */ | ||
diff --git a/arch/sparc/include/asm/switch_to_64.h b/arch/sparc/include/asm/switch_to_64.h new file mode 100644 index 000000000000..7923c4a2be38 --- /dev/null +++ b/arch/sparc/include/asm/switch_to_64.h | |||
@@ -0,0 +1,72 @@ | |||
1 | #ifndef __SPARC64_SWITCH_TO_64_H | ||
2 | #define __SPARC64_SWITCH_TO_64_H | ||
3 | |||
4 | #include <asm/visasm.h> | ||
5 | |||
6 | #define prepare_arch_switch(next) \ | ||
7 | do { \ | ||
8 | flushw_all(); \ | ||
9 | } while (0) | ||
10 | |||
11 | /* See what happens when you design the chip correctly? | ||
12 | * | ||
13 | * We tell gcc we clobber all non-fixed-usage registers except | ||
14 | * for l0/l1. It will use one for 'next' and the other to hold | ||
15 | * the output value of 'last'. 'next' is not referenced again | ||
16 | * past the invocation of switch_to in the scheduler, so we need | ||
17 | * not preserve it's value. Hairy, but it lets us remove 2 loads | ||
18 | * and 2 stores in this critical code path. -DaveM | ||
19 | */ | ||
20 | #define switch_to(prev, next, last) \ | ||
21 | do { flush_tlb_pending(); \ | ||
22 | save_and_clear_fpu(); \ | ||
23 | /* If you are tempted to conditionalize the following */ \ | ||
24 | /* so that ASI is only written if it changes, think again. */ \ | ||
25 | __asm__ __volatile__("wr %%g0, %0, %%asi" \ | ||
26 | : : "r" (__thread_flag_byte_ptr(task_thread_info(next))[TI_FLAG_BYTE_CURRENT_DS]));\ | ||
27 | trap_block[current_thread_info()->cpu].thread = \ | ||
28 | task_thread_info(next); \ | ||
29 | __asm__ __volatile__( \ | ||
30 | "mov %%g4, %%g7\n\t" \ | ||
31 | "stx %%i6, [%%sp + 2047 + 0x70]\n\t" \ | ||
32 | "stx %%i7, [%%sp + 2047 + 0x78]\n\t" \ | ||
33 | "rdpr %%wstate, %%o5\n\t" \ | ||
34 | "stx %%o6, [%%g6 + %6]\n\t" \ | ||
35 | "stb %%o5, [%%g6 + %5]\n\t" \ | ||
36 | "rdpr %%cwp, %%o5\n\t" \ | ||
37 | "stb %%o5, [%%g6 + %8]\n\t" \ | ||
38 | "wrpr %%g0, 15, %%pil\n\t" \ | ||
39 | "mov %4, %%g6\n\t" \ | ||
40 | "ldub [%4 + %8], %%g1\n\t" \ | ||
41 | "wrpr %%g1, %%cwp\n\t" \ | ||
42 | "ldx [%%g6 + %6], %%o6\n\t" \ | ||
43 | "ldub [%%g6 + %5], %%o5\n\t" \ | ||
44 | "ldub [%%g6 + %7], %%o7\n\t" \ | ||
45 | "wrpr %%o5, 0x0, %%wstate\n\t" \ | ||
46 | "ldx [%%sp + 2047 + 0x70], %%i6\n\t" \ | ||
47 | "ldx [%%sp + 2047 + 0x78], %%i7\n\t" \ | ||
48 | "ldx [%%g6 + %9], %%g4\n\t" \ | ||
49 | "wrpr %%g0, 14, %%pil\n\t" \ | ||
50 | "brz,pt %%o7, switch_to_pc\n\t" \ | ||
51 | " mov %%g7, %0\n\t" \ | ||
52 | "sethi %%hi(ret_from_syscall), %%g1\n\t" \ | ||
53 | "jmpl %%g1 + %%lo(ret_from_syscall), %%g0\n\t" \ | ||
54 | " nop\n\t" \ | ||
55 | ".globl switch_to_pc\n\t" \ | ||
56 | "switch_to_pc:\n\t" \ | ||
57 | : "=&r" (last), "=r" (current), "=r" (current_thread_info_reg), \ | ||
58 | "=r" (__local_per_cpu_offset) \ | ||
59 | : "0" (task_thread_info(next)), \ | ||
60 | "i" (TI_WSTATE), "i" (TI_KSP), "i" (TI_NEW_CHILD), \ | ||
61 | "i" (TI_CWP), "i" (TI_TASK) \ | ||
62 | : "cc", \ | ||
63 | "g1", "g2", "g3", "g7", \ | ||
64 | "l1", "l2", "l3", "l4", "l5", "l6", "l7", \ | ||
65 | "i0", "i1", "i2", "i3", "i4", "i5", \ | ||
66 | "o0", "o1", "o2", "o3", "o4", "o5", "o7"); \ | ||
67 | } while(0) | ||
68 | |||
69 | extern void synchronize_user_stack(void); | ||
70 | extern void fault_in_user_windows(void); | ||
71 | |||
72 | #endif /* __SPARC64_SWITCH_TO_64_H */ | ||
diff --git a/arch/sparc/include/asm/system.h b/arch/sparc/include/asm/system.h deleted file mode 100644 index 7944a7cfc996..000000000000 --- a/arch/sparc/include/asm/system.h +++ /dev/null | |||
@@ -1,8 +0,0 @@ | |||
1 | #ifndef ___ASM_SPARC_SYSTEM_H | ||
2 | #define ___ASM_SPARC_SYSTEM_H | ||
3 | #if defined(__sparc__) && defined(__arch64__) | ||
4 | #include <asm/system_64.h> | ||
5 | #else | ||
6 | #include <asm/system_32.h> | ||
7 | #endif | ||
8 | #endif | ||
diff --git a/arch/sparc/include/asm/system_32.h b/arch/sparc/include/asm/system_32.h deleted file mode 100644 index aba16092a81b..000000000000 --- a/arch/sparc/include/asm/system_32.h +++ /dev/null | |||
@@ -1,284 +0,0 @@ | |||
1 | #ifndef __SPARC_SYSTEM_H | ||
2 | #define __SPARC_SYSTEM_H | ||
3 | |||
4 | #include <linux/kernel.h> | ||
5 | #include <linux/threads.h> /* NR_CPUS */ | ||
6 | #include <linux/thread_info.h> | ||
7 | |||
8 | #include <asm/page.h> | ||
9 | #include <asm/psr.h> | ||
10 | #include <asm/ptrace.h> | ||
11 | #include <asm/btfixup.h> | ||
12 | #include <asm/smp.h> | ||
13 | |||
14 | #ifndef __ASSEMBLY__ | ||
15 | |||
16 | #include <linux/irqflags.h> | ||
17 | |||
18 | /* | ||
19 | * Sparc (general) CPU types | ||
20 | */ | ||
21 | enum sparc_cpu { | ||
22 | sun4 = 0x00, | ||
23 | sun4c = 0x01, | ||
24 | sun4m = 0x02, | ||
25 | sun4d = 0x03, | ||
26 | sun4e = 0x04, | ||
27 | sun4u = 0x05, /* V8 ploos ploos */ | ||
28 | sun_unknown = 0x06, | ||
29 | ap1000 = 0x07, /* almost a sun4m */ | ||
30 | sparc_leon = 0x08, /* Leon SoC */ | ||
31 | }; | ||
32 | |||
33 | /* Really, userland should not be looking at any of this... */ | ||
34 | #ifdef __KERNEL__ | ||
35 | |||
36 | extern enum sparc_cpu sparc_cpu_model; | ||
37 | |||
38 | #define ARCH_SUN4C (sparc_cpu_model==sun4c) | ||
39 | |||
40 | #define SUN4M_NCPUS 4 /* Architectural limit of sun4m. */ | ||
41 | |||
42 | extern char reboot_command[]; | ||
43 | |||
44 | extern struct thread_info *current_set[NR_CPUS]; | ||
45 | |||
46 | extern unsigned long empty_bad_page; | ||
47 | extern unsigned long empty_bad_page_table; | ||
48 | extern unsigned long empty_zero_page; | ||
49 | |||
50 | extern void sun_do_break(void); | ||
51 | extern int serial_console; | ||
52 | extern int stop_a_enabled; | ||
53 | extern int scons_pwroff; | ||
54 | |||
55 | static inline int con_is_present(void) | ||
56 | { | ||
57 | return serial_console ? 0 : 1; | ||
58 | } | ||
59 | |||
60 | /* When a context switch happens we must flush all user windows so that | ||
61 | * the windows of the current process are flushed onto its stack. This | ||
62 | * way the windows are all clean for the next process and the stack | ||
63 | * frames are up to date. | ||
64 | */ | ||
65 | extern void flush_user_windows(void); | ||
66 | extern void kill_user_windows(void); | ||
67 | extern void synchronize_user_stack(void); | ||
68 | extern void fpsave(unsigned long *fpregs, unsigned long *fsr, | ||
69 | void *fpqueue, unsigned long *fpqdepth); | ||
70 | |||
71 | #ifdef CONFIG_SMP | ||
72 | #define SWITCH_ENTER(prv) \ | ||
73 | do { \ | ||
74 | if (test_tsk_thread_flag(prv, TIF_USEDFPU)) { \ | ||
75 | put_psr(get_psr() | PSR_EF); \ | ||
76 | fpsave(&(prv)->thread.float_regs[0], &(prv)->thread.fsr, \ | ||
77 | &(prv)->thread.fpqueue[0], &(prv)->thread.fpqdepth); \ | ||
78 | clear_tsk_thread_flag(prv, TIF_USEDFPU); \ | ||
79 | (prv)->thread.kregs->psr &= ~PSR_EF; \ | ||
80 | } \ | ||
81 | } while(0) | ||
82 | |||
83 | #define SWITCH_DO_LAZY_FPU(next) /* */ | ||
84 | #else | ||
85 | #define SWITCH_ENTER(prv) /* */ | ||
86 | #define SWITCH_DO_LAZY_FPU(nxt) \ | ||
87 | do { \ | ||
88 | if (last_task_used_math != (nxt)) \ | ||
89 | (nxt)->thread.kregs->psr&=~PSR_EF; \ | ||
90 | } while(0) | ||
91 | #endif | ||
92 | |||
93 | extern void flushw_all(void); | ||
94 | |||
95 | /* | ||
96 | * Flush windows so that the VM switch which follows | ||
97 | * would not pull the stack from under us. | ||
98 | * | ||
99 | * SWITCH_ENTER and SWITH_DO_LAZY_FPU do not work yet (e.g. SMP does not work) | ||
100 | * XXX WTF is the above comment? Found in late teen 2.4.x. | ||
101 | */ | ||
102 | #define prepare_arch_switch(next) do { \ | ||
103 | __asm__ __volatile__( \ | ||
104 | ".globl\tflush_patch_switch\nflush_patch_switch:\n\t" \ | ||
105 | "save %sp, -0x40, %sp; save %sp, -0x40, %sp; save %sp, -0x40, %sp\n\t" \ | ||
106 | "save %sp, -0x40, %sp; save %sp, -0x40, %sp; save %sp, -0x40, %sp\n\t" \ | ||
107 | "save %sp, -0x40, %sp\n\t" \ | ||
108 | "restore; restore; restore; restore; restore; restore; restore"); \ | ||
109 | } while(0) | ||
110 | |||
111 | /* Much care has gone into this code, do not touch it. | ||
112 | * | ||
113 | * We need to loadup regs l0/l1 for the newly forked child | ||
114 | * case because the trap return path relies on those registers | ||
115 | * holding certain values, gcc is told that they are clobbered. | ||
116 | * Gcc needs registers for 3 values in and 1 value out, so we | ||
117 | * clobber every non-fixed-usage register besides l2/l3/o4/o5. -DaveM | ||
118 | * | ||
119 | * Hey Dave, that do not touch sign is too much of an incentive | ||
120 | * - Anton & Pete | ||
121 | */ | ||
122 | #define switch_to(prev, next, last) do { \ | ||
123 | SWITCH_ENTER(prev); \ | ||
124 | SWITCH_DO_LAZY_FPU(next); \ | ||
125 | cpumask_set_cpu(smp_processor_id(), mm_cpumask(next->active_mm)); \ | ||
126 | __asm__ __volatile__( \ | ||
127 | "sethi %%hi(here - 0x8), %%o7\n\t" \ | ||
128 | "mov %%g6, %%g3\n\t" \ | ||
129 | "or %%o7, %%lo(here - 0x8), %%o7\n\t" \ | ||
130 | "rd %%psr, %%g4\n\t" \ | ||
131 | "std %%sp, [%%g6 + %4]\n\t" \ | ||
132 | "rd %%wim, %%g5\n\t" \ | ||
133 | "wr %%g4, 0x20, %%psr\n\t" \ | ||
134 | "nop\n\t" \ | ||
135 | "std %%g4, [%%g6 + %3]\n\t" \ | ||
136 | "ldd [%2 + %3], %%g4\n\t" \ | ||
137 | "mov %2, %%g6\n\t" \ | ||
138 | ".globl patchme_store_new_current\n" \ | ||
139 | "patchme_store_new_current:\n\t" \ | ||
140 | "st %2, [%1]\n\t" \ | ||
141 | "wr %%g4, 0x20, %%psr\n\t" \ | ||
142 | "nop\n\t" \ | ||
143 | "nop\n\t" \ | ||
144 | "nop\n\t" /* LEON needs all 3 nops: load to %sp depends on CWP. */ \ | ||
145 | "ldd [%%g6 + %4], %%sp\n\t" \ | ||
146 | "wr %%g5, 0x0, %%wim\n\t" \ | ||
147 | "ldd [%%sp + 0x00], %%l0\n\t" \ | ||
148 | "ldd [%%sp + 0x38], %%i6\n\t" \ | ||
149 | "wr %%g4, 0x0, %%psr\n\t" \ | ||
150 | "nop\n\t" \ | ||
151 | "nop\n\t" \ | ||
152 | "jmpl %%o7 + 0x8, %%g0\n\t" \ | ||
153 | " ld [%%g3 + %5], %0\n\t" \ | ||
154 | "here:\n" \ | ||
155 | : "=&r" (last) \ | ||
156 | : "r" (&(current_set[hard_smp_processor_id()])), \ | ||
157 | "r" (task_thread_info(next)), \ | ||
158 | "i" (TI_KPSR), \ | ||
159 | "i" (TI_KSP), \ | ||
160 | "i" (TI_TASK) \ | ||
161 | : "g1", "g2", "g3", "g4", "g5", "g7", \ | ||
162 | "l0", "l1", "l3", "l4", "l5", "l6", "l7", \ | ||
163 | "i0", "i1", "i2", "i3", "i4", "i5", \ | ||
164 | "o0", "o1", "o2", "o3", "o7"); \ | ||
165 | } while(0) | ||
166 | |||
167 | /* XXX Change this if we ever use a PSO mode kernel. */ | ||
168 | #define mb() __asm__ __volatile__ ("" : : : "memory") | ||
169 | #define rmb() mb() | ||
170 | #define wmb() mb() | ||
171 | #define read_barrier_depends() do { } while(0) | ||
172 | #define set_mb(__var, __value) do { __var = __value; mb(); } while(0) | ||
173 | #define smp_mb() __asm__ __volatile__("":::"memory") | ||
174 | #define smp_rmb() __asm__ __volatile__("":::"memory") | ||
175 | #define smp_wmb() __asm__ __volatile__("":::"memory") | ||
176 | #define smp_read_barrier_depends() do { } while(0) | ||
177 | |||
178 | #define nop() __asm__ __volatile__ ("nop") | ||
179 | |||
180 | /* This has special calling conventions */ | ||
181 | #ifndef CONFIG_SMP | ||
182 | BTFIXUPDEF_CALL(void, ___xchg32, void) | ||
183 | #endif | ||
184 | |||
185 | static inline unsigned long xchg_u32(__volatile__ unsigned long *m, unsigned long val) | ||
186 | { | ||
187 | #ifdef CONFIG_SMP | ||
188 | __asm__ __volatile__("swap [%2], %0" | ||
189 | : "=&r" (val) | ||
190 | : "0" (val), "r" (m) | ||
191 | : "memory"); | ||
192 | return val; | ||
193 | #else | ||
194 | register unsigned long *ptr asm("g1"); | ||
195 | register unsigned long ret asm("g2"); | ||
196 | |||
197 | ptr = (unsigned long *) m; | ||
198 | ret = val; | ||
199 | |||
200 | /* Note: this is magic and the nop there is | ||
201 | really needed. */ | ||
202 | __asm__ __volatile__( | ||
203 | "mov %%o7, %%g4\n\t" | ||
204 | "call ___f____xchg32\n\t" | ||
205 | " nop\n\t" | ||
206 | : "=&r" (ret) | ||
207 | : "0" (ret), "r" (ptr) | ||
208 | : "g3", "g4", "g7", "memory", "cc"); | ||
209 | |||
210 | return ret; | ||
211 | #endif | ||
212 | } | ||
213 | |||
214 | #define xchg(ptr,x) ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr)))) | ||
215 | |||
216 | extern void __xchg_called_with_bad_pointer(void); | ||
217 | |||
218 | static inline unsigned long __xchg(unsigned long x, __volatile__ void * ptr, int size) | ||
219 | { | ||
220 | switch (size) { | ||
221 | case 4: | ||
222 | return xchg_u32(ptr, x); | ||
223 | } | ||
224 | __xchg_called_with_bad_pointer(); | ||
225 | return x; | ||
226 | } | ||
227 | |||
228 | /* Emulate cmpxchg() the same way we emulate atomics, | ||
229 | * by hashing the object address and indexing into an array | ||
230 | * of spinlocks to get a bit of performance... | ||
231 | * | ||
232 | * See arch/sparc/lib/atomic32.c for implementation. | ||
233 | * | ||
234 | * Cribbed from <asm-parisc/atomic.h> | ||
235 | */ | ||
236 | #define __HAVE_ARCH_CMPXCHG 1 | ||
237 | |||
238 | /* bug catcher for when unsupported size is used - won't link */ | ||
239 | extern void __cmpxchg_called_with_bad_pointer(void); | ||
240 | /* we only need to support cmpxchg of a u32 on sparc */ | ||
241 | extern unsigned long __cmpxchg_u32(volatile u32 *m, u32 old, u32 new_); | ||
242 | |||
243 | /* don't worry...optimizer will get rid of most of this */ | ||
244 | static inline unsigned long | ||
245 | __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new_, int size) | ||
246 | { | ||
247 | switch (size) { | ||
248 | case 4: | ||
249 | return __cmpxchg_u32((u32 *)ptr, (u32)old, (u32)new_); | ||
250 | default: | ||
251 | __cmpxchg_called_with_bad_pointer(); | ||
252 | break; | ||
253 | } | ||
254 | return old; | ||
255 | } | ||
256 | |||
257 | #define cmpxchg(ptr, o, n) \ | ||
258 | ({ \ | ||
259 | __typeof__(*(ptr)) _o_ = (o); \ | ||
260 | __typeof__(*(ptr)) _n_ = (n); \ | ||
261 | (__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_, \ | ||
262 | (unsigned long)_n_, sizeof(*(ptr))); \ | ||
263 | }) | ||
264 | |||
265 | #include <asm-generic/cmpxchg-local.h> | ||
266 | |||
267 | /* | ||
268 | * cmpxchg_local and cmpxchg64_local are atomic wrt current CPU. Always make | ||
269 | * them available. | ||
270 | */ | ||
271 | #define cmpxchg_local(ptr, o, n) \ | ||
272 | ((__typeof__(*(ptr)))__cmpxchg_local_generic((ptr), (unsigned long)(o),\ | ||
273 | (unsigned long)(n), sizeof(*(ptr)))) | ||
274 | #define cmpxchg64_local(ptr, o, n) __cmpxchg64_local_generic((ptr), (o), (n)) | ||
275 | |||
276 | extern void die_if_kernel(char *str, struct pt_regs *regs) __attribute__ ((noreturn)); | ||
277 | |||
278 | #endif /* __KERNEL__ */ | ||
279 | |||
280 | #endif /* __ASSEMBLY__ */ | ||
281 | |||
282 | #define arch_align_stack(x) (x) | ||
283 | |||
284 | #endif /* !(__SPARC_SYSTEM_H) */ | ||
diff --git a/arch/sparc/include/asm/system_64.h b/arch/sparc/include/asm/system_64.h deleted file mode 100644 index 10bcabce97b2..000000000000 --- a/arch/sparc/include/asm/system_64.h +++ /dev/null | |||
@@ -1,331 +0,0 @@ | |||
1 | #ifndef __SPARC64_SYSTEM_H | ||
2 | #define __SPARC64_SYSTEM_H | ||
3 | |||
4 | #include <asm/ptrace.h> | ||
5 | #include <asm/processor.h> | ||
6 | #include <asm/visasm.h> | ||
7 | |||
8 | #ifndef __ASSEMBLY__ | ||
9 | |||
10 | #include <linux/irqflags.h> | ||
11 | #include <asm-generic/cmpxchg-local.h> | ||
12 | |||
13 | /* | ||
14 | * Sparc (general) CPU types | ||
15 | */ | ||
16 | enum sparc_cpu { | ||
17 | sun4 = 0x00, | ||
18 | sun4c = 0x01, | ||
19 | sun4m = 0x02, | ||
20 | sun4d = 0x03, | ||
21 | sun4e = 0x04, | ||
22 | sun4u = 0x05, /* V8 ploos ploos */ | ||
23 | sun_unknown = 0x06, | ||
24 | ap1000 = 0x07, /* almost a sun4m */ | ||
25 | }; | ||
26 | |||
27 | #define sparc_cpu_model sun4u | ||
28 | |||
29 | /* This cannot ever be a sun4c :) That's just history. */ | ||
30 | #define ARCH_SUN4C 0 | ||
31 | |||
32 | extern char reboot_command[]; | ||
33 | |||
34 | /* These are here in an effort to more fully work around Spitfire Errata | ||
35 | * #51. Essentially, if a memory barrier occurs soon after a mispredicted | ||
36 | * branch, the chip can stop executing instructions until a trap occurs. | ||
37 | * Therefore, if interrupts are disabled, the chip can hang forever. | ||
38 | * | ||
39 | * It used to be believed that the memory barrier had to be right in the | ||
40 | * delay slot, but a case has been traced recently wherein the memory barrier | ||
41 | * was one instruction after the branch delay slot and the chip still hung. | ||
42 | * The offending sequence was the following in sym_wakeup_done() of the | ||
43 | * sym53c8xx_2 driver: | ||
44 | * | ||
45 | * call sym_ccb_from_dsa, 0 | ||
46 | * movge %icc, 0, %l0 | ||
47 | * brz,pn %o0, .LL1303 | ||
48 | * mov %o0, %l2 | ||
49 | * membar #LoadLoad | ||
50 | * | ||
51 | * The branch has to be mispredicted for the bug to occur. Therefore, we put | ||
52 | * the memory barrier explicitly into a "branch always, predicted taken" | ||
53 | * delay slot to avoid the problem case. | ||
54 | */ | ||
55 | #define membar_safe(type) \ | ||
56 | do { __asm__ __volatile__("ba,pt %%xcc, 1f\n\t" \ | ||
57 | " membar " type "\n" \ | ||
58 | "1:\n" \ | ||
59 | : : : "memory"); \ | ||
60 | } while (0) | ||
61 | |||
62 | /* The kernel always executes in TSO memory model these days, | ||
63 | * and furthermore most sparc64 chips implement more stringent | ||
64 | * memory ordering than required by the specifications. | ||
65 | */ | ||
66 | #define mb() membar_safe("#StoreLoad") | ||
67 | #define rmb() __asm__ __volatile__("":::"memory") | ||
68 | #define wmb() __asm__ __volatile__("":::"memory") | ||
69 | |||
70 | #endif | ||
71 | |||
72 | #define nop() __asm__ __volatile__ ("nop") | ||
73 | |||
74 | #define read_barrier_depends() do { } while(0) | ||
75 | #define set_mb(__var, __value) \ | ||
76 | do { __var = __value; membar_safe("#StoreLoad"); } while(0) | ||
77 | |||
78 | #ifdef CONFIG_SMP | ||
79 | #define smp_mb() mb() | ||
80 | #define smp_rmb() rmb() | ||
81 | #define smp_wmb() wmb() | ||
82 | #else | ||
83 | #define smp_mb() __asm__ __volatile__("":::"memory") | ||
84 | #define smp_rmb() __asm__ __volatile__("":::"memory") | ||
85 | #define smp_wmb() __asm__ __volatile__("":::"memory") | ||
86 | #endif | ||
87 | |||
88 | #define smp_read_barrier_depends() do { } while(0) | ||
89 | |||
90 | #define flushi(addr) __asm__ __volatile__ ("flush %0" : : "r" (addr) : "memory") | ||
91 | |||
92 | #define flushw_all() __asm__ __volatile__("flushw") | ||
93 | |||
94 | /* Performance counter register access. */ | ||
95 | #define read_pcr(__p) __asm__ __volatile__("rd %%pcr, %0" : "=r" (__p)) | ||
96 | #define write_pcr(__p) __asm__ __volatile__("wr %0, 0x0, %%pcr" : : "r" (__p)) | ||
97 | #define read_pic(__p) __asm__ __volatile__("rd %%pic, %0" : "=r" (__p)) | ||
98 | |||
99 | /* Blackbird errata workaround. See commentary in | ||
100 | * arch/sparc64/kernel/smp.c:smp_percpu_timer_interrupt() | ||
101 | * for more information. | ||
102 | */ | ||
103 | #define write_pic(__p) \ | ||
104 | __asm__ __volatile__("ba,pt %%xcc, 99f\n\t" \ | ||
105 | " nop\n\t" \ | ||
106 | ".align 64\n" \ | ||
107 | "99:wr %0, 0x0, %%pic\n\t" \ | ||
108 | "rd %%pic, %%g0" : : "r" (__p)) | ||
109 | #define reset_pic() write_pic(0) | ||
110 | |||
111 | #ifndef __ASSEMBLY__ | ||
112 | |||
113 | extern void sun_do_break(void); | ||
114 | extern int stop_a_enabled; | ||
115 | extern int scons_pwroff; | ||
116 | |||
117 | extern void fault_in_user_windows(void); | ||
118 | extern void synchronize_user_stack(void); | ||
119 | |||
120 | extern void __flushw_user(void); | ||
121 | #define flushw_user() __flushw_user() | ||
122 | |||
123 | #define flush_user_windows flushw_user | ||
124 | #define flush_register_windows flushw_all | ||
125 | |||
126 | /* Don't hold the runqueue lock over context switch */ | ||
127 | #define __ARCH_WANT_UNLOCKED_CTXSW | ||
128 | #define prepare_arch_switch(next) \ | ||
129 | do { \ | ||
130 | flushw_all(); \ | ||
131 | } while (0) | ||
132 | |||
133 | /* See what happens when you design the chip correctly? | ||
134 | * | ||
135 | * We tell gcc we clobber all non-fixed-usage registers except | ||
136 | * for l0/l1. It will use one for 'next' and the other to hold | ||
137 | * the output value of 'last'. 'next' is not referenced again | ||
138 | * past the invocation of switch_to in the scheduler, so we need | ||
139 | * not preserve it's value. Hairy, but it lets us remove 2 loads | ||
140 | * and 2 stores in this critical code path. -DaveM | ||
141 | */ | ||
142 | #define switch_to(prev, next, last) \ | ||
143 | do { flush_tlb_pending(); \ | ||
144 | save_and_clear_fpu(); \ | ||
145 | /* If you are tempted to conditionalize the following */ \ | ||
146 | /* so that ASI is only written if it changes, think again. */ \ | ||
147 | __asm__ __volatile__("wr %%g0, %0, %%asi" \ | ||
148 | : : "r" (__thread_flag_byte_ptr(task_thread_info(next))[TI_FLAG_BYTE_CURRENT_DS]));\ | ||
149 | trap_block[current_thread_info()->cpu].thread = \ | ||
150 | task_thread_info(next); \ | ||
151 | __asm__ __volatile__( \ | ||
152 | "mov %%g4, %%g7\n\t" \ | ||
153 | "stx %%i6, [%%sp + 2047 + 0x70]\n\t" \ | ||
154 | "stx %%i7, [%%sp + 2047 + 0x78]\n\t" \ | ||
155 | "rdpr %%wstate, %%o5\n\t" \ | ||
156 | "stx %%o6, [%%g6 + %6]\n\t" \ | ||
157 | "stb %%o5, [%%g6 + %5]\n\t" \ | ||
158 | "rdpr %%cwp, %%o5\n\t" \ | ||
159 | "stb %%o5, [%%g6 + %8]\n\t" \ | ||
160 | "wrpr %%g0, 15, %%pil\n\t" \ | ||
161 | "mov %4, %%g6\n\t" \ | ||
162 | "ldub [%4 + %8], %%g1\n\t" \ | ||
163 | "wrpr %%g1, %%cwp\n\t" \ | ||
164 | "ldx [%%g6 + %6], %%o6\n\t" \ | ||
165 | "ldub [%%g6 + %5], %%o5\n\t" \ | ||
166 | "ldub [%%g6 + %7], %%o7\n\t" \ | ||
167 | "wrpr %%o5, 0x0, %%wstate\n\t" \ | ||
168 | "ldx [%%sp + 2047 + 0x70], %%i6\n\t" \ | ||
169 | "ldx [%%sp + 2047 + 0x78], %%i7\n\t" \ | ||
170 | "ldx [%%g6 + %9], %%g4\n\t" \ | ||
171 | "wrpr %%g0, 14, %%pil\n\t" \ | ||
172 | "brz,pt %%o7, switch_to_pc\n\t" \ | ||
173 | " mov %%g7, %0\n\t" \ | ||
174 | "sethi %%hi(ret_from_syscall), %%g1\n\t" \ | ||
175 | "jmpl %%g1 + %%lo(ret_from_syscall), %%g0\n\t" \ | ||
176 | " nop\n\t" \ | ||
177 | ".globl switch_to_pc\n\t" \ | ||
178 | "switch_to_pc:\n\t" \ | ||
179 | : "=&r" (last), "=r" (current), "=r" (current_thread_info_reg), \ | ||
180 | "=r" (__local_per_cpu_offset) \ | ||
181 | : "0" (task_thread_info(next)), \ | ||
182 | "i" (TI_WSTATE), "i" (TI_KSP), "i" (TI_NEW_CHILD), \ | ||
183 | "i" (TI_CWP), "i" (TI_TASK) \ | ||
184 | : "cc", \ | ||
185 | "g1", "g2", "g3", "g7", \ | ||
186 | "l1", "l2", "l3", "l4", "l5", "l6", "l7", \ | ||
187 | "i0", "i1", "i2", "i3", "i4", "i5", \ | ||
188 | "o0", "o1", "o2", "o3", "o4", "o5", "o7"); \ | ||
189 | } while(0) | ||
190 | |||
191 | static inline unsigned long xchg32(__volatile__ unsigned int *m, unsigned int val) | ||
192 | { | ||
193 | unsigned long tmp1, tmp2; | ||
194 | |||
195 | __asm__ __volatile__( | ||
196 | " mov %0, %1\n" | ||
197 | "1: lduw [%4], %2\n" | ||
198 | " cas [%4], %2, %0\n" | ||
199 | " cmp %2, %0\n" | ||
200 | " bne,a,pn %%icc, 1b\n" | ||
201 | " mov %1, %0\n" | ||
202 | : "=&r" (val), "=&r" (tmp1), "=&r" (tmp2) | ||
203 | : "0" (val), "r" (m) | ||
204 | : "cc", "memory"); | ||
205 | return val; | ||
206 | } | ||
207 | |||
208 | static inline unsigned long xchg64(__volatile__ unsigned long *m, unsigned long val) | ||
209 | { | ||
210 | unsigned long tmp1, tmp2; | ||
211 | |||
212 | __asm__ __volatile__( | ||
213 | " mov %0, %1\n" | ||
214 | "1: ldx [%4], %2\n" | ||
215 | " casx [%4], %2, %0\n" | ||
216 | " cmp %2, %0\n" | ||
217 | " bne,a,pn %%xcc, 1b\n" | ||
218 | " mov %1, %0\n" | ||
219 | : "=&r" (val), "=&r" (tmp1), "=&r" (tmp2) | ||
220 | : "0" (val), "r" (m) | ||
221 | : "cc", "memory"); | ||
222 | return val; | ||
223 | } | ||
224 | |||
225 | #define xchg(ptr,x) ((__typeof__(*(ptr)))__xchg((unsigned long)(x),(ptr),sizeof(*(ptr)))) | ||
226 | |||
227 | extern void __xchg_called_with_bad_pointer(void); | ||
228 | |||
229 | static inline unsigned long __xchg(unsigned long x, __volatile__ void * ptr, | ||
230 | int size) | ||
231 | { | ||
232 | switch (size) { | ||
233 | case 4: | ||
234 | return xchg32(ptr, x); | ||
235 | case 8: | ||
236 | return xchg64(ptr, x); | ||
237 | } | ||
238 | __xchg_called_with_bad_pointer(); | ||
239 | return x; | ||
240 | } | ||
241 | |||
242 | extern void die_if_kernel(char *str, struct pt_regs *regs) __attribute__ ((noreturn)); | ||
243 | |||
244 | /* | ||
245 | * Atomic compare and exchange. Compare OLD with MEM, if identical, | ||
246 | * store NEW in MEM. Return the initial value in MEM. Success is | ||
247 | * indicated by comparing RETURN with OLD. | ||
248 | */ | ||
249 | |||
250 | #define __HAVE_ARCH_CMPXCHG 1 | ||
251 | |||
252 | static inline unsigned long | ||
253 | __cmpxchg_u32(volatile int *m, int old, int new) | ||
254 | { | ||
255 | __asm__ __volatile__("cas [%2], %3, %0" | ||
256 | : "=&r" (new) | ||
257 | : "0" (new), "r" (m), "r" (old) | ||
258 | : "memory"); | ||
259 | |||
260 | return new; | ||
261 | } | ||
262 | |||
263 | static inline unsigned long | ||
264 | __cmpxchg_u64(volatile long *m, unsigned long old, unsigned long new) | ||
265 | { | ||
266 | __asm__ __volatile__("casx [%2], %3, %0" | ||
267 | : "=&r" (new) | ||
268 | : "0" (new), "r" (m), "r" (old) | ||
269 | : "memory"); | ||
270 | |||
271 | return new; | ||
272 | } | ||
273 | |||
274 | /* This function doesn't exist, so you'll get a linker error | ||
275 | if something tries to do an invalid cmpxchg(). */ | ||
276 | extern void __cmpxchg_called_with_bad_pointer(void); | ||
277 | |||
278 | static inline unsigned long | ||
279 | __cmpxchg(volatile void *ptr, unsigned long old, unsigned long new, int size) | ||
280 | { | ||
281 | switch (size) { | ||
282 | case 4: | ||
283 | return __cmpxchg_u32(ptr, old, new); | ||
284 | case 8: | ||
285 | return __cmpxchg_u64(ptr, old, new); | ||
286 | } | ||
287 | __cmpxchg_called_with_bad_pointer(); | ||
288 | return old; | ||
289 | } | ||
290 | |||
291 | #define cmpxchg(ptr,o,n) \ | ||
292 | ({ \ | ||
293 | __typeof__(*(ptr)) _o_ = (o); \ | ||
294 | __typeof__(*(ptr)) _n_ = (n); \ | ||
295 | (__typeof__(*(ptr))) __cmpxchg((ptr), (unsigned long)_o_, \ | ||
296 | (unsigned long)_n_, sizeof(*(ptr))); \ | ||
297 | }) | ||
298 | |||
299 | /* | ||
300 | * cmpxchg_local and cmpxchg64_local are atomic wrt current CPU. Always make | ||
301 | * them available. | ||
302 | */ | ||
303 | |||
304 | static inline unsigned long __cmpxchg_local(volatile void *ptr, | ||
305 | unsigned long old, | ||
306 | unsigned long new, int size) | ||
307 | { | ||
308 | switch (size) { | ||
309 | case 4: | ||
310 | case 8: return __cmpxchg(ptr, old, new, size); | ||
311 | default: | ||
312 | return __cmpxchg_local_generic(ptr, old, new, size); | ||
313 | } | ||
314 | |||
315 | return old; | ||
316 | } | ||
317 | |||
318 | #define cmpxchg_local(ptr, o, n) \ | ||
319 | ((__typeof__(*(ptr)))__cmpxchg_local((ptr), (unsigned long)(o), \ | ||
320 | (unsigned long)(n), sizeof(*(ptr)))) | ||
321 | #define cmpxchg64_local(ptr, o, n) \ | ||
322 | ({ \ | ||
323 | BUILD_BUG_ON(sizeof(*(ptr)) != 8); \ | ||
324 | cmpxchg_local((ptr), (o), (n)); \ | ||
325 | }) | ||
326 | |||
327 | #endif /* !(__ASSEMBLY__) */ | ||
328 | |||
329 | #define arch_align_stack(x) (x) | ||
330 | |||
331 | #endif /* !(__SPARC64_SYSTEM_H) */ | ||
diff --git a/arch/sparc/include/asm/timer_32.h b/arch/sparc/include/asm/timer_32.h index 2ec030ef3810..1a91e11dd104 100644 --- a/arch/sparc/include/asm/timer_32.h +++ b/arch/sparc/include/asm/timer_32.h | |||
@@ -8,12 +8,13 @@ | |||
8 | #ifndef _SPARC_TIMER_H | 8 | #ifndef _SPARC_TIMER_H |
9 | #define _SPARC_TIMER_H | 9 | #define _SPARC_TIMER_H |
10 | 10 | ||
11 | #include <asm/system.h> /* For SUN4M_NCPUS */ | 11 | #include <asm/cpu_type.h> /* For SUN4M_NCPUS */ |
12 | #include <asm/btfixup.h> | 12 | #include <asm/btfixup.h> |
13 | 13 | ||
14 | extern __volatile__ unsigned int *master_l10_counter; | 14 | extern __volatile__ unsigned int *master_l10_counter; |
15 | 15 | ||
16 | /* FIXME: Make do_[gs]ettimeofday btfixup calls */ | 16 | /* FIXME: Make do_[gs]ettimeofday btfixup calls */ |
17 | struct timespec; | ||
17 | BTFIXUPDEF_CALL(int, bus_do_settimeofday, struct timespec *tv) | 18 | BTFIXUPDEF_CALL(int, bus_do_settimeofday, struct timespec *tv) |
18 | #define bus_do_settimeofday(tv) BTFIXUP_CALL(bus_do_settimeofday)(tv) | 19 | #define bus_do_settimeofday(tv) BTFIXUP_CALL(bus_do_settimeofday)(tv) |
19 | 20 | ||
diff --git a/arch/sparc/include/asm/uaccess_64.h b/arch/sparc/include/asm/uaccess_64.h index 3e1449f07798..a1091afb8831 100644 --- a/arch/sparc/include/asm/uaccess_64.h +++ b/arch/sparc/include/asm/uaccess_64.h | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <linux/string.h> | 11 | #include <linux/string.h> |
12 | #include <linux/thread_info.h> | 12 | #include <linux/thread_info.h> |
13 | #include <asm/asi.h> | 13 | #include <asm/asi.h> |
14 | #include <asm/system.h> | ||
15 | #include <asm/spitfire.h> | 14 | #include <asm/spitfire.h> |
16 | #include <asm-generic/uaccess-unaligned.h> | 15 | #include <asm-generic/uaccess-unaligned.h> |
17 | #endif | 16 | #endif |
diff --git a/arch/sparc/kernel/auxio_32.c b/arch/sparc/kernel/auxio_32.c index f7ea8f032719..56d0f52c3e62 100644 --- a/arch/sparc/kernel/auxio_32.c +++ b/arch/sparc/kernel/auxio_32.c | |||
@@ -13,6 +13,7 @@ | |||
13 | #include <asm/io.h> | 13 | #include <asm/io.h> |
14 | #include <asm/auxio.h> | 14 | #include <asm/auxio.h> |
15 | #include <asm/string.h> /* memset(), Linux has no bzero() */ | 15 | #include <asm/string.h> /* memset(), Linux has no bzero() */ |
16 | #include <asm/cpu_type.h> | ||
16 | 17 | ||
17 | /* Probe and map in the Auxiliary I/O register */ | 18 | /* Probe and map in the Auxiliary I/O register */ |
18 | 19 | ||
diff --git a/arch/sparc/kernel/devices.c b/arch/sparc/kernel/devices.c index 113c052c3043..6b2f56a6f8af 100644 --- a/arch/sparc/kernel/devices.c +++ b/arch/sparc/kernel/devices.c | |||
@@ -17,8 +17,8 @@ | |||
17 | #include <asm/oplib.h> | 17 | #include <asm/oplib.h> |
18 | #include <asm/prom.h> | 18 | #include <asm/prom.h> |
19 | #include <asm/smp.h> | 19 | #include <asm/smp.h> |
20 | #include <asm/system.h> | ||
21 | #include <asm/cpudata.h> | 20 | #include <asm/cpudata.h> |
21 | #include <asm/cpu_type.h> | ||
22 | 22 | ||
23 | extern void clock_stop_probe(void); /* tadpole.c */ | 23 | extern void clock_stop_probe(void); /* tadpole.c */ |
24 | extern void sun4c_probe_memerr_reg(void); | 24 | extern void sun4c_probe_memerr_reg(void); |
diff --git a/arch/sparc/kernel/irq.h b/arch/sparc/kernel/irq.h index 42851122bbd9..5a021dd2f854 100644 --- a/arch/sparc/kernel/irq.h +++ b/arch/sparc/kernel/irq.h | |||
@@ -1,6 +1,7 @@ | |||
1 | #include <linux/platform_device.h> | 1 | #include <linux/platform_device.h> |
2 | 2 | ||
3 | #include <asm/btfixup.h> | 3 | #include <asm/btfixup.h> |
4 | #include <asm/cpu_type.h> | ||
4 | 5 | ||
5 | struct irq_bucket { | 6 | struct irq_bucket { |
6 | struct irq_bucket *next; | 7 | struct irq_bucket *next; |
diff --git a/arch/sparc/kernel/irq_64.c b/arch/sparc/kernel/irq_64.c index d45b710ea7e4..dff2c3d7d370 100644 --- a/arch/sparc/kernel/irq_64.c +++ b/arch/sparc/kernel/irq_64.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include <asm/ptrace.h> | 26 | #include <asm/ptrace.h> |
27 | #include <asm/processor.h> | 27 | #include <asm/processor.h> |
28 | #include <linux/atomic.h> | 28 | #include <linux/atomic.h> |
29 | #include <asm/system.h> | ||
30 | #include <asm/irq.h> | 29 | #include <asm/irq.h> |
31 | #include <asm/io.h> | 30 | #include <asm/io.h> |
32 | #include <asm/iommu.h> | 31 | #include <asm/iommu.h> |
diff --git a/arch/sparc/kernel/kgdb_32.c b/arch/sparc/kernel/kgdb_32.c index 539243b236fa..2e424a576a36 100644 --- a/arch/sparc/kernel/kgdb_32.c +++ b/arch/sparc/kernel/kgdb_32.c | |||
@@ -9,6 +9,7 @@ | |||
9 | #include <asm/kdebug.h> | 9 | #include <asm/kdebug.h> |
10 | #include <asm/ptrace.h> | 10 | #include <asm/ptrace.h> |
11 | #include <asm/irq.h> | 11 | #include <asm/irq.h> |
12 | #include <asm/cacheflush.h> | ||
12 | 13 | ||
13 | extern unsigned long trapbase; | 14 | extern unsigned long trapbase; |
14 | 15 | ||
diff --git a/arch/sparc/kernel/module.c b/arch/sparc/kernel/module.c index e5519870c3d9..276359e1ff56 100644 --- a/arch/sparc/kernel/module.c +++ b/arch/sparc/kernel/module.c | |||
@@ -16,6 +16,7 @@ | |||
16 | 16 | ||
17 | #include <asm/processor.h> | 17 | #include <asm/processor.h> |
18 | #include <asm/spitfire.h> | 18 | #include <asm/spitfire.h> |
19 | #include <asm/cacheflush.h> | ||
19 | 20 | ||
20 | #include "entry.h" | 21 | #include "entry.h" |
21 | 22 | ||
diff --git a/arch/sparc/kernel/muldiv.c b/arch/sparc/kernel/muldiv.c index 6ce1021d487c..f7db516b07d8 100644 --- a/arch/sparc/kernel/muldiv.c +++ b/arch/sparc/kernel/muldiv.c | |||
@@ -14,7 +14,6 @@ | |||
14 | #include <linux/mm.h> | 14 | #include <linux/mm.h> |
15 | #include <asm/ptrace.h> | 15 | #include <asm/ptrace.h> |
16 | #include <asm/processor.h> | 16 | #include <asm/processor.h> |
17 | #include <asm/system.h> | ||
18 | #include <asm/uaccess.h> | 17 | #include <asm/uaccess.h> |
19 | 18 | ||
20 | #include "kernel.h" | 19 | #include "kernel.h" |
diff --git a/arch/sparc/kernel/nmi.c b/arch/sparc/kernel/nmi.c index c76fe0b5bd94..eb1c1f010a47 100644 --- a/arch/sparc/kernel/nmi.c +++ b/arch/sparc/kernel/nmi.c | |||
@@ -22,6 +22,7 @@ | |||
22 | #include <asm/perf_event.h> | 22 | #include <asm/perf_event.h> |
23 | #include <asm/ptrace.h> | 23 | #include <asm/ptrace.h> |
24 | #include <asm/pcr.h> | 24 | #include <asm/pcr.h> |
25 | #include <asm/perfctr.h> | ||
25 | 26 | ||
26 | #include "kstack.h" | 27 | #include "kstack.h" |
27 | 28 | ||
diff --git a/arch/sparc/kernel/pcr.c b/arch/sparc/kernel/pcr.c index a24072a49270..0ce0dd2332aa 100644 --- a/arch/sparc/kernel/pcr.c +++ b/arch/sparc/kernel/pcr.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <asm/pcr.h> | 14 | #include <asm/pcr.h> |
15 | #include <asm/nmi.h> | 15 | #include <asm/nmi.h> |
16 | #include <asm/spitfire.h> | 16 | #include <asm/spitfire.h> |
17 | #include <asm/perfctr.h> | ||
17 | 18 | ||
18 | /* This code is shared between various users of the performance | 19 | /* This code is shared between various users of the performance |
19 | * counters. Users will be oprofile, pseudo-NMI watchdog, and the | 20 | * counters. Users will be oprofile, pseudo-NMI watchdog, and the |
diff --git a/arch/sparc/kernel/perf_event.c b/arch/sparc/kernel/perf_event.c index 8e16a4a21582..28559ce5eeb5 100644 --- a/arch/sparc/kernel/perf_event.c +++ b/arch/sparc/kernel/perf_event.c | |||
@@ -25,6 +25,8 @@ | |||
25 | #include <linux/atomic.h> | 25 | #include <linux/atomic.h> |
26 | #include <asm/nmi.h> | 26 | #include <asm/nmi.h> |
27 | #include <asm/pcr.h> | 27 | #include <asm/pcr.h> |
28 | #include <asm/perfctr.h> | ||
29 | #include <asm/cacheflush.h> | ||
28 | 30 | ||
29 | #include "kernel.h" | 31 | #include "kernel.h" |
30 | #include "kstack.h" | 32 | #include "kstack.h" |
diff --git a/arch/sparc/kernel/process_32.c b/arch/sparc/kernel/process_32.c index 935fdbcd88c2..efa07542e85f 100644 --- a/arch/sparc/kernel/process_32.c +++ b/arch/sparc/kernel/process_32.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <asm/auxio.h> | 28 | #include <asm/auxio.h> |
29 | #include <asm/oplib.h> | 29 | #include <asm/oplib.h> |
30 | #include <asm/uaccess.h> | 30 | #include <asm/uaccess.h> |
31 | #include <asm/system.h> | ||
32 | #include <asm/page.h> | 31 | #include <asm/page.h> |
33 | #include <asm/pgalloc.h> | 32 | #include <asm/pgalloc.h> |
34 | #include <asm/pgtable.h> | 33 | #include <asm/pgtable.h> |
@@ -38,6 +37,7 @@ | |||
38 | #include <asm/elf.h> | 37 | #include <asm/elf.h> |
39 | #include <asm/prom.h> | 38 | #include <asm/prom.h> |
40 | #include <asm/unistd.h> | 39 | #include <asm/unistd.h> |
40 | #include <asm/setup.h> | ||
41 | 41 | ||
42 | /* | 42 | /* |
43 | * Power management idle function | 43 | * Power management idle function |
diff --git a/arch/sparc/kernel/process_64.c b/arch/sparc/kernel/process_64.c index 06b5b5fc20c7..aff0c72fac09 100644 --- a/arch/sparc/kernel/process_64.c +++ b/arch/sparc/kernel/process_64.c | |||
@@ -32,7 +32,6 @@ | |||
32 | #include <linux/nmi.h> | 32 | #include <linux/nmi.h> |
33 | 33 | ||
34 | #include <asm/uaccess.h> | 34 | #include <asm/uaccess.h> |
35 | #include <asm/system.h> | ||
36 | #include <asm/page.h> | 35 | #include <asm/page.h> |
37 | #include <asm/pgalloc.h> | 36 | #include <asm/pgalloc.h> |
38 | #include <asm/pgtable.h> | 37 | #include <asm/pgtable.h> |
diff --git a/arch/sparc/kernel/ptrace_32.c b/arch/sparc/kernel/ptrace_32.c index 27b9e93d0121..896ba7c5cd8e 100644 --- a/arch/sparc/kernel/ptrace_32.c +++ b/arch/sparc/kernel/ptrace_32.c | |||
@@ -23,8 +23,8 @@ | |||
23 | #include <linux/tracehook.h> | 23 | #include <linux/tracehook.h> |
24 | 24 | ||
25 | #include <asm/pgtable.h> | 25 | #include <asm/pgtable.h> |
26 | #include <asm/system.h> | ||
27 | #include <asm/uaccess.h> | 26 | #include <asm/uaccess.h> |
27 | #include <asm/cacheflush.h> | ||
28 | 28 | ||
29 | /* #define ALLOW_INIT_TRACING */ | 29 | /* #define ALLOW_INIT_TRACING */ |
30 | 30 | ||
diff --git a/arch/sparc/kernel/ptrace_64.c b/arch/sparc/kernel/ptrace_64.c index 9388844cd88c..6f97c0767995 100644 --- a/arch/sparc/kernel/ptrace_64.c +++ b/arch/sparc/kernel/ptrace_64.c | |||
@@ -29,7 +29,6 @@ | |||
29 | 29 | ||
30 | #include <asm/asi.h> | 30 | #include <asm/asi.h> |
31 | #include <asm/pgtable.h> | 31 | #include <asm/pgtable.h> |
32 | #include <asm/system.h> | ||
33 | #include <asm/uaccess.h> | 32 | #include <asm/uaccess.h> |
34 | #include <asm/psrcompat.h> | 33 | #include <asm/psrcompat.h> |
35 | #include <asm/visasm.h> | 34 | #include <asm/visasm.h> |
diff --git a/arch/sparc/kernel/reboot.c b/arch/sparc/kernel/reboot.c index 006a42dd2007..eba7d918162a 100644 --- a/arch/sparc/kernel/reboot.c +++ b/arch/sparc/kernel/reboot.c | |||
@@ -7,9 +7,9 @@ | |||
7 | #include <linux/export.h> | 7 | #include <linux/export.h> |
8 | #include <linux/pm.h> | 8 | #include <linux/pm.h> |
9 | 9 | ||
10 | #include <asm/system.h> | ||
11 | #include <asm/oplib.h> | 10 | #include <asm/oplib.h> |
12 | #include <asm/prom.h> | 11 | #include <asm/prom.h> |
12 | #include <asm/setup.h> | ||
13 | 13 | ||
14 | /* sysctl - toggle power-off restriction for serial console | 14 | /* sysctl - toggle power-off restriction for serial console |
15 | * systems in machine_power_off() | 15 | * systems in machine_power_off() |
diff --git a/arch/sparc/kernel/setup_32.c b/arch/sparc/kernel/setup_32.c index ffb883ddd0f0..d444468b27f6 100644 --- a/arch/sparc/kernel/setup_32.c +++ b/arch/sparc/kernel/setup_32.c | |||
@@ -33,7 +33,6 @@ | |||
33 | #include <linux/kdebug.h> | 33 | #include <linux/kdebug.h> |
34 | #include <linux/export.h> | 34 | #include <linux/export.h> |
35 | 35 | ||
36 | #include <asm/system.h> | ||
37 | #include <asm/io.h> | 36 | #include <asm/io.h> |
38 | #include <asm/processor.h> | 37 | #include <asm/processor.h> |
39 | #include <asm/oplib.h> | 38 | #include <asm/oplib.h> |
@@ -46,6 +45,7 @@ | |||
46 | #include <asm/machines.h> | 45 | #include <asm/machines.h> |
47 | #include <asm/cpudata.h> | 46 | #include <asm/cpudata.h> |
48 | #include <asm/setup.h> | 47 | #include <asm/setup.h> |
48 | #include <asm/cacheflush.h> | ||
49 | 49 | ||
50 | #include "kernel.h" | 50 | #include "kernel.h" |
51 | 51 | ||
diff --git a/arch/sparc/kernel/setup_64.c b/arch/sparc/kernel/setup_64.c index a854a1c240ff..1414d16712b2 100644 --- a/arch/sparc/kernel/setup_64.c +++ b/arch/sparc/kernel/setup_64.c | |||
@@ -31,7 +31,6 @@ | |||
31 | #include <linux/initrd.h> | 31 | #include <linux/initrd.h> |
32 | #include <linux/module.h> | 32 | #include <linux/module.h> |
33 | 33 | ||
34 | #include <asm/system.h> | ||
35 | #include <asm/io.h> | 34 | #include <asm/io.h> |
36 | #include <asm/processor.h> | 35 | #include <asm/processor.h> |
37 | #include <asm/oplib.h> | 36 | #include <asm/oplib.h> |
@@ -49,6 +48,7 @@ | |||
49 | #include <asm/btext.h> | 48 | #include <asm/btext.h> |
50 | #include <asm/elf.h> | 49 | #include <asm/elf.h> |
51 | #include <asm/mdesc.h> | 50 | #include <asm/mdesc.h> |
51 | #include <asm/cacheflush.h> | ||
52 | 52 | ||
53 | #ifdef CONFIG_IP_PNP | 53 | #ifdef CONFIG_IP_PNP |
54 | #include <net/ipconfig.h> | 54 | #include <net/ipconfig.h> |
diff --git a/arch/sparc/kernel/signal32.c b/arch/sparc/kernel/signal32.c index c8f5b50db89c..948700fb9036 100644 --- a/arch/sparc/kernel/signal32.c +++ b/arch/sparc/kernel/signal32.c | |||
@@ -28,6 +28,7 @@ | |||
28 | #include <asm/fpumacro.h> | 28 | #include <asm/fpumacro.h> |
29 | #include <asm/visasm.h> | 29 | #include <asm/visasm.h> |
30 | #include <asm/compat_signal.h> | 30 | #include <asm/compat_signal.h> |
31 | #include <asm/switch_to.h> | ||
31 | 32 | ||
32 | #include "sigutil.h" | 33 | #include "sigutil.h" |
33 | 34 | ||
diff --git a/arch/sparc/kernel/signal_32.c b/arch/sparc/kernel/signal_32.c index 7bb71b6fbd20..1e750e415d7a 100644 --- a/arch/sparc/kernel/signal_32.c +++ b/arch/sparc/kernel/signal_32.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <asm/pgalloc.h> | 25 | #include <asm/pgalloc.h> |
26 | #include <asm/pgtable.h> | 26 | #include <asm/pgtable.h> |
27 | #include <asm/cacheflush.h> /* flush_sig_insns */ | 27 | #include <asm/cacheflush.h> /* flush_sig_insns */ |
28 | #include <asm/switch_to.h> | ||
28 | 29 | ||
29 | #include "sigutil.h" | 30 | #include "sigutil.h" |
30 | 31 | ||
diff --git a/arch/sparc/kernel/signal_64.c b/arch/sparc/kernel/signal_64.c index d8a67e60be80..48b0f57b65f7 100644 --- a/arch/sparc/kernel/signal_64.c +++ b/arch/sparc/kernel/signal_64.c | |||
@@ -31,6 +31,8 @@ | |||
31 | #include <asm/uctx.h> | 31 | #include <asm/uctx.h> |
32 | #include <asm/siginfo.h> | 32 | #include <asm/siginfo.h> |
33 | #include <asm/visasm.h> | 33 | #include <asm/visasm.h> |
34 | #include <asm/switch_to.h> | ||
35 | #include <asm/cacheflush.h> | ||
34 | 36 | ||
35 | #include "entry.h" | 37 | #include "entry.h" |
36 | #include "systbls.h" | 38 | #include "systbls.h" |
diff --git a/arch/sparc/kernel/sigutil_32.c b/arch/sparc/kernel/sigutil_32.c index 35c7897b009a..0f6eebe71e6c 100644 --- a/arch/sparc/kernel/sigutil_32.c +++ b/arch/sparc/kernel/sigutil_32.c | |||
@@ -7,6 +7,7 @@ | |||
7 | #include <asm/sigcontext.h> | 7 | #include <asm/sigcontext.h> |
8 | #include <asm/fpumacro.h> | 8 | #include <asm/fpumacro.h> |
9 | #include <asm/ptrace.h> | 9 | #include <asm/ptrace.h> |
10 | #include <asm/switch_to.h> | ||
10 | 11 | ||
11 | #include "sigutil.h" | 12 | #include "sigutil.h" |
12 | 13 | ||
diff --git a/arch/sparc/kernel/sigutil_64.c b/arch/sparc/kernel/sigutil_64.c index b19570d41a39..387834a9c56a 100644 --- a/arch/sparc/kernel/sigutil_64.c +++ b/arch/sparc/kernel/sigutil_64.c | |||
@@ -7,6 +7,7 @@ | |||
7 | #include <asm/sigcontext.h> | 7 | #include <asm/sigcontext.h> |
8 | #include <asm/fpumacro.h> | 8 | #include <asm/fpumacro.h> |
9 | #include <asm/ptrace.h> | 9 | #include <asm/ptrace.h> |
10 | #include <asm/switch_to.h> | ||
10 | 11 | ||
11 | #include "sigutil.h" | 12 | #include "sigutil.h" |
12 | 13 | ||
diff --git a/arch/sparc/kernel/sparc_ksyms_64.c b/arch/sparc/kernel/sparc_ksyms_64.c index 12ff09824cd9..9f5e24ddcc70 100644 --- a/arch/sparc/kernel/sparc_ksyms_64.c +++ b/arch/sparc/kernel/sparc_ksyms_64.c | |||
@@ -10,12 +10,12 @@ | |||
10 | #include <linux/init.h> | 10 | #include <linux/init.h> |
11 | #include <linux/bitops.h> | 11 | #include <linux/bitops.h> |
12 | 12 | ||
13 | #include <asm/system.h> | ||
14 | #include <asm/cpudata.h> | 13 | #include <asm/cpudata.h> |
15 | #include <asm/uaccess.h> | 14 | #include <asm/uaccess.h> |
16 | #include <asm/spitfire.h> | 15 | #include <asm/spitfire.h> |
17 | #include <asm/oplib.h> | 16 | #include <asm/oplib.h> |
18 | #include <asm/hypervisor.h> | 17 | #include <asm/hypervisor.h> |
18 | #include <asm/cacheflush.h> | ||
19 | 19 | ||
20 | struct poll { | 20 | struct poll { |
21 | int fd; | 21 | int fd; |
diff --git a/arch/sparc/kernel/time_32.c b/arch/sparc/kernel/time_32.c index 1060e0672a4b..7d0c088e8aba 100644 --- a/arch/sparc/kernel/time_32.c +++ b/arch/sparc/kernel/time_32.c | |||
@@ -37,7 +37,6 @@ | |||
37 | #include <asm/oplib.h> | 37 | #include <asm/oplib.h> |
38 | #include <asm/timex.h> | 38 | #include <asm/timex.h> |
39 | #include <asm/timer.h> | 39 | #include <asm/timer.h> |
40 | #include <asm/system.h> | ||
41 | #include <asm/irq.h> | 40 | #include <asm/irq.h> |
42 | #include <asm/io.h> | 41 | #include <asm/io.h> |
43 | #include <asm/idprom.h> | 42 | #include <asm/idprom.h> |
diff --git a/arch/sparc/kernel/traps_32.c b/arch/sparc/kernel/traps_32.c index 591f20ca9e48..d2de21333146 100644 --- a/arch/sparc/kernel/traps_32.c +++ b/arch/sparc/kernel/traps_32.c | |||
@@ -17,7 +17,6 @@ | |||
17 | #include <linux/export.h> | 17 | #include <linux/export.h> |
18 | 18 | ||
19 | #include <asm/delay.h> | 19 | #include <asm/delay.h> |
20 | #include <asm/system.h> | ||
21 | #include <asm/ptrace.h> | 20 | #include <asm/ptrace.h> |
22 | #include <asm/oplib.h> | 21 | #include <asm/oplib.h> |
23 | #include <asm/page.h> | 22 | #include <asm/page.h> |
diff --git a/arch/sparc/kernel/traps_64.c b/arch/sparc/kernel/traps_64.c index 0cbdaa41cd1e..c72fdf55e1c1 100644 --- a/arch/sparc/kernel/traps_64.c +++ b/arch/sparc/kernel/traps_64.c | |||
@@ -22,7 +22,6 @@ | |||
22 | 22 | ||
23 | #include <asm/smp.h> | 23 | #include <asm/smp.h> |
24 | #include <asm/delay.h> | 24 | #include <asm/delay.h> |
25 | #include <asm/system.h> | ||
26 | #include <asm/ptrace.h> | 25 | #include <asm/ptrace.h> |
27 | #include <asm/oplib.h> | 26 | #include <asm/oplib.h> |
28 | #include <asm/page.h> | 27 | #include <asm/page.h> |
@@ -41,6 +40,7 @@ | |||
41 | #include <asm/head.h> | 40 | #include <asm/head.h> |
42 | #include <asm/prom.h> | 41 | #include <asm/prom.h> |
43 | #include <asm/memctrl.h> | 42 | #include <asm/memctrl.h> |
43 | #include <asm/cacheflush.h> | ||
44 | 44 | ||
45 | #include "entry.h" | 45 | #include "entry.h" |
46 | #include "kstack.h" | 46 | #include "kstack.h" |
diff --git a/arch/sparc/kernel/unaligned_32.c b/arch/sparc/kernel/unaligned_32.c index 4d043a1b2492..c0ec89786193 100644 --- a/arch/sparc/kernel/unaligned_32.c +++ b/arch/sparc/kernel/unaligned_32.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <linux/mm.h> | 12 | #include <linux/mm.h> |
13 | #include <asm/ptrace.h> | 13 | #include <asm/ptrace.h> |
14 | #include <asm/processor.h> | 14 | #include <asm/processor.h> |
15 | #include <asm/system.h> | ||
16 | #include <asm/uaccess.h> | 15 | #include <asm/uaccess.h> |
17 | #include <linux/smp.h> | 16 | #include <linux/smp.h> |
18 | #include <linux/perf_event.h> | 17 | #include <linux/perf_event.h> |
diff --git a/arch/sparc/kernel/unaligned_64.c b/arch/sparc/kernel/unaligned_64.c index 76e4ac1a13e1..dae85bc2eda5 100644 --- a/arch/sparc/kernel/unaligned_64.c +++ b/arch/sparc/kernel/unaligned_64.c | |||
@@ -16,7 +16,6 @@ | |||
16 | #include <asm/ptrace.h> | 16 | #include <asm/ptrace.h> |
17 | #include <asm/pstate.h> | 17 | #include <asm/pstate.h> |
18 | #include <asm/processor.h> | 18 | #include <asm/processor.h> |
19 | #include <asm/system.h> | ||
20 | #include <asm/uaccess.h> | 19 | #include <asm/uaccess.h> |
21 | #include <linux/smp.h> | 20 | #include <linux/smp.h> |
22 | #include <linux/bitops.h> | 21 | #include <linux/bitops.h> |
@@ -24,6 +23,7 @@ | |||
24 | #include <linux/ratelimit.h> | 23 | #include <linux/ratelimit.h> |
25 | #include <linux/bitops.h> | 24 | #include <linux/bitops.h> |
26 | #include <asm/fpumacro.h> | 25 | #include <asm/fpumacro.h> |
26 | #include <asm/cacheflush.h> | ||
27 | 27 | ||
28 | enum direction { | 28 | enum direction { |
29 | load, /* ld, ldd, ldh, ldsh */ | 29 | load, /* ld, ldd, ldh, ldsh */ |
diff --git a/arch/sparc/kernel/visemul.c b/arch/sparc/kernel/visemul.c index 73370674ccff..08e074b7eb6a 100644 --- a/arch/sparc/kernel/visemul.c +++ b/arch/sparc/kernel/visemul.c | |||
@@ -9,9 +9,9 @@ | |||
9 | 9 | ||
10 | #include <asm/ptrace.h> | 10 | #include <asm/ptrace.h> |
11 | #include <asm/pstate.h> | 11 | #include <asm/pstate.h> |
12 | #include <asm/system.h> | ||
13 | #include <asm/fpumacro.h> | 12 | #include <asm/fpumacro.h> |
14 | #include <asm/uaccess.h> | 13 | #include <asm/uaccess.h> |
14 | #include <asm/cacheflush.h> | ||
15 | 15 | ||
16 | /* OPF field of various VIS instructions. */ | 16 | /* OPF field of various VIS instructions. */ |
17 | 17 | ||
diff --git a/arch/sparc/math-emu/math_64.c b/arch/sparc/math-emu/math_64.c index e575bd2fe381..2bbe2f28ad23 100644 --- a/arch/sparc/math-emu/math_64.c +++ b/arch/sparc/math-emu/math_64.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <asm/fpumacro.h> | 16 | #include <asm/fpumacro.h> |
17 | #include <asm/ptrace.h> | 17 | #include <asm/ptrace.h> |
18 | #include <asm/uaccess.h> | 18 | #include <asm/uaccess.h> |
19 | #include <asm/cacheflush.h> | ||
19 | 20 | ||
20 | #include "sfp-util_64.h" | 21 | #include "sfp-util_64.h" |
21 | #include <math-emu/soft-fp.h> | 22 | #include <math-emu/soft-fp.h> |
diff --git a/arch/sparc/mm/btfixup.c b/arch/sparc/mm/btfixup.c index 8a7f81743c12..09d6af22db2d 100644 --- a/arch/sparc/mm/btfixup.c +++ b/arch/sparc/mm/btfixup.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <asm/pgalloc.h> | 12 | #include <asm/pgalloc.h> |
13 | #include <asm/pgtable.h> | 13 | #include <asm/pgtable.h> |
14 | #include <asm/oplib.h> | 14 | #include <asm/oplib.h> |
15 | #include <asm/system.h> | ||
16 | #include <asm/cacheflush.h> | 15 | #include <asm/cacheflush.h> |
17 | 16 | ||
18 | #define BTFIXUP_OPTIMIZE_NOP | 17 | #define BTFIXUP_OPTIMIZE_NOP |
diff --git a/arch/sparc/mm/fault_32.c b/arch/sparc/mm/fault_32.c index 8023fd7e77b5..7705c6731e28 100644 --- a/arch/sparc/mm/fault_32.c +++ b/arch/sparc/mm/fault_32.c | |||
@@ -22,7 +22,6 @@ | |||
22 | #include <linux/interrupt.h> | 22 | #include <linux/interrupt.h> |
23 | #include <linux/kdebug.h> | 23 | #include <linux/kdebug.h> |
24 | 24 | ||
25 | #include <asm/system.h> | ||
26 | #include <asm/page.h> | 25 | #include <asm/page.h> |
27 | #include <asm/pgtable.h> | 26 | #include <asm/pgtable.h> |
28 | #include <asm/memreg.h> | 27 | #include <asm/memreg.h> |
diff --git a/arch/sparc/mm/init_32.c b/arch/sparc/mm/init_32.c index 7b00de61c5f1..c5f9021b1a01 100644 --- a/arch/sparc/mm/init_32.c +++ b/arch/sparc/mm/init_32.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <linux/gfp.h> | 27 | #include <linux/gfp.h> |
28 | 28 | ||
29 | #include <asm/sections.h> | 29 | #include <asm/sections.h> |
30 | #include <asm/system.h> | ||
31 | #include <asm/vac-ops.h> | 30 | #include <asm/vac-ops.h> |
32 | #include <asm/page.h> | 31 | #include <asm/page.h> |
33 | #include <asm/pgtable.h> | 32 | #include <asm/pgtable.h> |
diff --git a/arch/sparc/mm/init_64.c b/arch/sparc/mm/init_64.c index b3f5e7dfea51..21faaeea85de 100644 --- a/arch/sparc/mm/init_64.c +++ b/arch/sparc/mm/init_64.c | |||
@@ -28,7 +28,6 @@ | |||
28 | #include <linux/gfp.h> | 28 | #include <linux/gfp.h> |
29 | 29 | ||
30 | #include <asm/head.h> | 30 | #include <asm/head.h> |
31 | #include <asm/system.h> | ||
32 | #include <asm/page.h> | 31 | #include <asm/page.h> |
33 | #include <asm/pgalloc.h> | 32 | #include <asm/pgalloc.h> |
34 | #include <asm/pgtable.h> | 33 | #include <asm/pgtable.h> |
diff --git a/arch/sparc/mm/init_64.h b/arch/sparc/mm/init_64.h index 77d1b313e344..3e1ac8b96cae 100644 --- a/arch/sparc/mm/init_64.h +++ b/arch/sparc/mm/init_64.h | |||
@@ -36,8 +36,6 @@ extern unsigned long kern_locked_tte_data; | |||
36 | 36 | ||
37 | extern void prom_world(int enter); | 37 | extern void prom_world(int enter); |
38 | 38 | ||
39 | extern void free_initmem(void); | ||
40 | |||
41 | #ifdef CONFIG_SPARSEMEM_VMEMMAP | 39 | #ifdef CONFIG_SPARSEMEM_VMEMMAP |
42 | #define VMEMMAP_CHUNK_SHIFT 22 | 40 | #define VMEMMAP_CHUNK_SHIFT 22 |
43 | #define VMEMMAP_CHUNK (1UL << VMEMMAP_CHUNK_SHIFT) | 41 | #define VMEMMAP_CHUNK (1UL << VMEMMAP_CHUNK_SHIFT) |
diff --git a/arch/sparc/mm/loadmmu.c b/arch/sparc/mm/loadmmu.c index 82ec8f666036..c5bf2a6c3858 100644 --- a/arch/sparc/mm/loadmmu.c +++ b/arch/sparc/mm/loadmmu.c | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <linux/mm.h> | 11 | #include <linux/mm.h> |
12 | #include <linux/init.h> | 12 | #include <linux/init.h> |
13 | 13 | ||
14 | #include <asm/system.h> | ||
15 | #include <asm/page.h> | 14 | #include <asm/page.h> |
16 | #include <asm/pgtable.h> | 15 | #include <asm/pgtable.h> |
17 | #include <asm/mmu_context.h> | 16 | #include <asm/mmu_context.h> |
diff --git a/arch/sparc/mm/tsb.c b/arch/sparc/mm/tsb.c index 536412d8f416..c52add79b83d 100644 --- a/arch/sparc/mm/tsb.c +++ b/arch/sparc/mm/tsb.c | |||
@@ -6,7 +6,6 @@ | |||
6 | #include <linux/kernel.h> | 6 | #include <linux/kernel.h> |
7 | #include <linux/preempt.h> | 7 | #include <linux/preempt.h> |
8 | #include <linux/slab.h> | 8 | #include <linux/slab.h> |
9 | #include <asm/system.h> | ||
10 | #include <asm/page.h> | 9 | #include <asm/page.h> |
11 | #include <asm/tlbflush.h> | 10 | #include <asm/tlbflush.h> |
12 | #include <asm/tlb.h> | 11 | #include <asm/tlb.h> |
diff --git a/arch/sparc/prom/console_32.c b/arch/sparc/prom/console_32.c index a00f47b16c10..1cfb50f4cb9c 100644 --- a/arch/sparc/prom/console_32.c +++ b/arch/sparc/prom/console_32.c | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <linux/sched.h> | 11 | #include <linux/sched.h> |
12 | #include <asm/openprom.h> | 12 | #include <asm/openprom.h> |
13 | #include <asm/oplib.h> | 13 | #include <asm/oplib.h> |
14 | #include <asm/system.h> | ||
15 | #include <linux/string.h> | 14 | #include <linux/string.h> |
16 | 15 | ||
17 | extern void restore_current(void); | 16 | extern void restore_current(void); |
diff --git a/arch/sparc/prom/console_64.c b/arch/sparc/prom/console_64.c index 9de6c8cfe04a..f95edcc54fd5 100644 --- a/arch/sparc/prom/console_64.c +++ b/arch/sparc/prom/console_64.c | |||
@@ -10,7 +10,6 @@ | |||
10 | #include <linux/sched.h> | 10 | #include <linux/sched.h> |
11 | #include <asm/openprom.h> | 11 | #include <asm/openprom.h> |
12 | #include <asm/oplib.h> | 12 | #include <asm/oplib.h> |
13 | #include <asm/system.h> | ||
14 | #include <linux/string.h> | 13 | #include <linux/string.h> |
15 | 14 | ||
16 | static int __prom_console_write_buf(const char *buf, int len) | 15 | static int __prom_console_write_buf(const char *buf, int len) |
diff --git a/arch/sparc/prom/misc_32.c b/arch/sparc/prom/misc_32.c index 677b6a10fbde..8dc0b6b271e8 100644 --- a/arch/sparc/prom/misc_32.c +++ b/arch/sparc/prom/misc_32.c | |||
@@ -13,7 +13,6 @@ | |||
13 | #include <asm/openprom.h> | 13 | #include <asm/openprom.h> |
14 | #include <asm/oplib.h> | 14 | #include <asm/oplib.h> |
15 | #include <asm/auxio.h> | 15 | #include <asm/auxio.h> |
16 | #include <asm/system.h> | ||
17 | 16 | ||
18 | extern void restore_current(void); | 17 | extern void restore_current(void); |
19 | 18 | ||
diff --git a/arch/sparc/prom/misc_64.c b/arch/sparc/prom/misc_64.c index e4f31d4d3715..f178b9dcc7b7 100644 --- a/arch/sparc/prom/misc_64.c +++ b/arch/sparc/prom/misc_64.c | |||
@@ -15,7 +15,6 @@ | |||
15 | 15 | ||
16 | #include <asm/openprom.h> | 16 | #include <asm/openprom.h> |
17 | #include <asm/oplib.h> | 17 | #include <asm/oplib.h> |
18 | #include <asm/system.h> | ||
19 | #include <asm/ldc.h> | 18 | #include <asm/ldc.h> |
20 | 19 | ||
21 | static int prom_service_exists(const char *service_name) | 20 | static int prom_service_exists(const char *service_name) |
diff --git a/arch/sparc/prom/p1275.c b/arch/sparc/prom/p1275.c index d9850c2b9bf2..04a4540509dd 100644 --- a/arch/sparc/prom/p1275.c +++ b/arch/sparc/prom/p1275.c | |||
@@ -13,7 +13,6 @@ | |||
13 | 13 | ||
14 | #include <asm/openprom.h> | 14 | #include <asm/openprom.h> |
15 | #include <asm/oplib.h> | 15 | #include <asm/oplib.h> |
16 | #include <asm/system.h> | ||
17 | #include <asm/spitfire.h> | 16 | #include <asm/spitfire.h> |
18 | #include <asm/pstate.h> | 17 | #include <asm/pstate.h> |
19 | #include <asm/ldc.h> | 18 | #include <asm/ldc.h> |
diff --git a/arch/sparc/prom/ranges.c b/arch/sparc/prom/ranges.c index 0857aa9e839d..ad143c13bdc0 100644 --- a/arch/sparc/prom/ranges.c +++ b/arch/sparc/prom/ranges.c | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <asm/openprom.h> | 11 | #include <asm/openprom.h> |
12 | #include <asm/oplib.h> | 12 | #include <asm/oplib.h> |
13 | #include <asm/types.h> | 13 | #include <asm/types.h> |
14 | #include <asm/system.h> | ||
15 | 14 | ||
16 | static struct linux_prom_ranges promlib_obio_ranges[PROMREG_MAX]; | 15 | static struct linux_prom_ranges promlib_obio_ranges[PROMREG_MAX]; |
17 | static int num_obio_ranges; | 16 | static int num_obio_ranges; |
diff --git a/arch/tile/include/asm/atomic.h b/arch/tile/include/asm/atomic.h index 921dbeb8a70c..bb696da5d7cd 100644 --- a/arch/tile/include/asm/atomic.h +++ b/arch/tile/include/asm/atomic.h | |||
@@ -20,7 +20,7 @@ | |||
20 | #ifndef __ASSEMBLY__ | 20 | #ifndef __ASSEMBLY__ |
21 | 21 | ||
22 | #include <linux/compiler.h> | 22 | #include <linux/compiler.h> |
23 | #include <asm/system.h> | 23 | #include <linux/types.h> |
24 | 24 | ||
25 | #define ATOMIC_INIT(i) { (i) } | 25 | #define ATOMIC_INIT(i) { (i) } |
26 | 26 | ||
diff --git a/arch/tile/include/asm/atomic_32.h b/arch/tile/include/asm/atomic_32.h index c03349e0ca9f..466dc4a39a4f 100644 --- a/arch/tile/include/asm/atomic_32.h +++ b/arch/tile/include/asm/atomic_32.h | |||
@@ -17,6 +17,7 @@ | |||
17 | #ifndef _ASM_TILE_ATOMIC_32_H | 17 | #ifndef _ASM_TILE_ATOMIC_32_H |
18 | #define _ASM_TILE_ATOMIC_32_H | 18 | #define _ASM_TILE_ATOMIC_32_H |
19 | 19 | ||
20 | #include <asm/barrier.h> | ||
20 | #include <arch/chip.h> | 21 | #include <arch/chip.h> |
21 | 22 | ||
22 | #ifndef __ASSEMBLY__ | 23 | #ifndef __ASSEMBLY__ |
diff --git a/arch/tile/include/asm/atomic_64.h b/arch/tile/include/asm/atomic_64.h index 27fe667fddfe..f4500c688ffa 100644 --- a/arch/tile/include/asm/atomic_64.h +++ b/arch/tile/include/asm/atomic_64.h | |||
@@ -19,6 +19,7 @@ | |||
19 | 19 | ||
20 | #ifndef __ASSEMBLY__ | 20 | #ifndef __ASSEMBLY__ |
21 | 21 | ||
22 | #include <asm/barrier.h> | ||
22 | #include <arch/spr_def.h> | 23 | #include <arch/spr_def.h> |
23 | 24 | ||
24 | /* First, the 32-bit atomic ops that are "real" on our 64-bit platform. */ | 25 | /* First, the 32-bit atomic ops that are "real" on our 64-bit platform. */ |
diff --git a/arch/tile/include/asm/system.h b/arch/tile/include/asm/barrier.h index 23d1842f4839..990a217a0b72 100644 --- a/arch/tile/include/asm/system.h +++ b/arch/tile/include/asm/barrier.h | |||
@@ -12,20 +12,15 @@ | |||
12 | * more details. | 12 | * more details. |
13 | */ | 13 | */ |
14 | 14 | ||
15 | #ifndef _ASM_TILE_SYSTEM_H | 15 | #ifndef _ASM_TILE_BARRIER_H |
16 | #define _ASM_TILE_SYSTEM_H | 16 | #define _ASM_TILE_BARRIER_H |
17 | 17 | ||
18 | #ifndef __ASSEMBLY__ | 18 | #ifndef __ASSEMBLY__ |
19 | 19 | ||
20 | #include <linux/types.h> | 20 | #include <linux/types.h> |
21 | #include <linux/irqflags.h> | ||
22 | |||
23 | /* NOTE: we can't include <linux/ptrace.h> due to #include dependencies. */ | ||
24 | #include <asm/ptrace.h> | ||
25 | |||
26 | #include <arch/chip.h> | 21 | #include <arch/chip.h> |
27 | #include <arch/sim_def.h> | ||
28 | #include <arch/spr_def.h> | 22 | #include <arch/spr_def.h> |
23 | #include <asm/timex.h> | ||
29 | 24 | ||
30 | /* | 25 | /* |
31 | * read_barrier_depends - Flush all pending reads that subsequents reads | 26 | * read_barrier_depends - Flush all pending reads that subsequents reads |
@@ -78,17 +73,10 @@ | |||
78 | * as Alpha, "y" could be set to 3 and "x" to 0. Use rmb() | 73 | * as Alpha, "y" could be set to 3 and "x" to 0. Use rmb() |
79 | * in cases like this where there are no data dependencies. | 74 | * in cases like this where there are no data dependencies. |
80 | */ | 75 | */ |
81 | |||
82 | #define read_barrier_depends() do { } while (0) | 76 | #define read_barrier_depends() do { } while (0) |
83 | 77 | ||
84 | #define __sync() __insn_mf() | 78 | #define __sync() __insn_mf() |
85 | 79 | ||
86 | #if CHIP_HAS_SPLIT_CYCLE() | ||
87 | #define get_cycles_low() __insn_mfspr(SPR_CYCLE_LOW) | ||
88 | #else | ||
89 | #define get_cycles_low() __insn_mfspr(SPR_CYCLE) /* just get all 64 bits */ | ||
90 | #endif | ||
91 | |||
92 | #if !CHIP_HAS_MF_WAITS_FOR_VICTIMS() | 80 | #if !CHIP_HAS_MF_WAITS_FOR_VICTIMS() |
93 | #include <hv/syscall_public.h> | 81 | #include <hv/syscall_public.h> |
94 | /* | 82 | /* |
@@ -156,106 +144,5 @@ mb_incoherent(void) | |||
156 | #define set_mb(var, value) \ | 144 | #define set_mb(var, value) \ |
157 | do { var = value; mb(); } while (0) | 145 | do { var = value; mb(); } while (0) |
158 | 146 | ||
159 | /* | ||
160 | * Pause the DMA engine and static network before task switching. | ||
161 | */ | ||
162 | #define prepare_arch_switch(next) _prepare_arch_switch(next) | ||
163 | void _prepare_arch_switch(struct task_struct *next); | ||
164 | |||
165 | |||
166 | /* | ||
167 | * switch_to(n) should switch tasks to task nr n, first | ||
168 | * checking that n isn't the current task, in which case it does nothing. | ||
169 | * The number of callee-saved registers saved on the kernel stack | ||
170 | * is defined here for use in copy_thread() and must agree with __switch_to(). | ||
171 | */ | ||
172 | #endif /* !__ASSEMBLY__ */ | ||
173 | #define CALLEE_SAVED_FIRST_REG 30 | ||
174 | #define CALLEE_SAVED_REGS_COUNT 24 /* r30 to r52, plus an empty to align */ | ||
175 | #ifndef __ASSEMBLY__ | ||
176 | struct task_struct; | ||
177 | #define switch_to(prev, next, last) ((last) = _switch_to((prev), (next))) | ||
178 | extern struct task_struct *_switch_to(struct task_struct *prev, | ||
179 | struct task_struct *next); | ||
180 | |||
181 | /* Helper function for _switch_to(). */ | ||
182 | extern struct task_struct *__switch_to(struct task_struct *prev, | ||
183 | struct task_struct *next, | ||
184 | unsigned long new_system_save_k_0); | ||
185 | |||
186 | /* Address that switched-away from tasks are at. */ | ||
187 | extern unsigned long get_switch_to_pc(void); | ||
188 | |||
189 | /* | ||
190 | * On SMP systems, when the scheduler does migration-cost autodetection, | ||
191 | * it needs a way to flush as much of the CPU's caches as possible: | ||
192 | * | ||
193 | * TODO: fill this in! | ||
194 | */ | ||
195 | static inline void sched_cacheflush(void) | ||
196 | { | ||
197 | } | ||
198 | |||
199 | #define arch_align_stack(x) (x) | ||
200 | |||
201 | /* | ||
202 | * Is the kernel doing fixups of unaligned accesses? If <0, no kernel | ||
203 | * intervention occurs and SIGBUS is delivered with no data address | ||
204 | * info. If 0, the kernel single-steps the instruction to discover | ||
205 | * the data address to provide with the SIGBUS. If 1, the kernel does | ||
206 | * a fixup. | ||
207 | */ | ||
208 | extern int unaligned_fixup; | ||
209 | |||
210 | /* Is the kernel printing on each unaligned fixup? */ | ||
211 | extern int unaligned_printk; | ||
212 | |||
213 | /* Number of unaligned fixups performed */ | ||
214 | extern unsigned int unaligned_fixup_count; | ||
215 | |||
216 | /* Init-time routine to do tile-specific per-cpu setup. */ | ||
217 | void setup_cpu(int boot); | ||
218 | |||
219 | /* User-level DMA management functions */ | ||
220 | void grant_dma_mpls(void); | ||
221 | void restrict_dma_mpls(void); | ||
222 | |||
223 | #ifdef CONFIG_HARDWALL | ||
224 | /* User-level network management functions */ | ||
225 | void reset_network_state(void); | ||
226 | void grant_network_mpls(void); | ||
227 | void restrict_network_mpls(void); | ||
228 | int hardwall_deactivate(struct task_struct *task); | ||
229 | |||
230 | /* Hook hardwall code into changes in affinity. */ | ||
231 | #define arch_set_cpus_allowed(p, new_mask) do { \ | ||
232 | if (p->thread.hardwall && !cpumask_equal(&p->cpus_allowed, new_mask)) \ | ||
233 | hardwall_deactivate(p); \ | ||
234 | } while (0) | ||
235 | #endif | ||
236 | |||
237 | /* | ||
238 | * Kernel threads can check to see if they need to migrate their | ||
239 | * stack whenever they return from a context switch; for user | ||
240 | * threads, we defer until they are returning to user-space. | ||
241 | */ | ||
242 | #define finish_arch_switch(prev) do { \ | ||
243 | if (unlikely((prev)->state == TASK_DEAD)) \ | ||
244 | __insn_mtspr(SPR_SIM_CONTROL, SIM_CONTROL_OS_EXIT | \ | ||
245 | ((prev)->pid << _SIM_CONTROL_OPERATOR_BITS)); \ | ||
246 | __insn_mtspr(SPR_SIM_CONTROL, SIM_CONTROL_OS_SWITCH | \ | ||
247 | (current->pid << _SIM_CONTROL_OPERATOR_BITS)); \ | ||
248 | if (current->mm == NULL && !kstack_hash && \ | ||
249 | current_thread_info()->homecache_cpu != smp_processor_id()) \ | ||
250 | homecache_migrate_kthread(); \ | ||
251 | } while (0) | ||
252 | |||
253 | /* Support function for forking a new task. */ | ||
254 | void ret_from_fork(void); | ||
255 | |||
256 | /* Called from ret_from_fork() when a new process starts up. */ | ||
257 | struct task_struct *sim_notify_fork(struct task_struct *prev); | ||
258 | |||
259 | #endif /* !__ASSEMBLY__ */ | 147 | #endif /* !__ASSEMBLY__ */ |
260 | 148 | #endif /* _ASM_TILE_BARRIER_H */ | |
261 | #endif /* _ASM_TILE_SYSTEM_H */ | ||
diff --git a/arch/tile/include/asm/bitops_32.h b/arch/tile/include/asm/bitops_32.h index 571b118bfd9b..ddc4c1efde43 100644 --- a/arch/tile/include/asm/bitops_32.h +++ b/arch/tile/include/asm/bitops_32.h | |||
@@ -17,7 +17,6 @@ | |||
17 | 17 | ||
18 | #include <linux/compiler.h> | 18 | #include <linux/compiler.h> |
19 | #include <linux/atomic.h> | 19 | #include <linux/atomic.h> |
20 | #include <asm/system.h> | ||
21 | 20 | ||
22 | /* Tile-specific routines to support <asm/bitops.h>. */ | 21 | /* Tile-specific routines to support <asm/bitops.h>. */ |
23 | unsigned long _atomic_or(volatile unsigned long *p, unsigned long mask); | 22 | unsigned long _atomic_or(volatile unsigned long *p, unsigned long mask); |
diff --git a/arch/tile/include/asm/bitops_64.h b/arch/tile/include/asm/bitops_64.h index e9c8e381ee0e..58d021a9834f 100644 --- a/arch/tile/include/asm/bitops_64.h +++ b/arch/tile/include/asm/bitops_64.h | |||
@@ -17,7 +17,6 @@ | |||
17 | 17 | ||
18 | #include <linux/compiler.h> | 18 | #include <linux/compiler.h> |
19 | #include <linux/atomic.h> | 19 | #include <linux/atomic.h> |
20 | #include <asm/system.h> | ||
21 | 20 | ||
22 | /* See <asm/bitops.h> for API comments. */ | 21 | /* See <asm/bitops.h> for API comments. */ |
23 | 22 | ||
diff --git a/arch/tile/include/asm/cacheflush.h b/arch/tile/include/asm/cacheflush.h index e925f4bb498f..0fc63c488edf 100644 --- a/arch/tile/include/asm/cacheflush.h +++ b/arch/tile/include/asm/cacheflush.h | |||
@@ -20,7 +20,6 @@ | |||
20 | /* Keep includes the same across arches. */ | 20 | /* Keep includes the same across arches. */ |
21 | #include <linux/mm.h> | 21 | #include <linux/mm.h> |
22 | #include <linux/cache.h> | 22 | #include <linux/cache.h> |
23 | #include <asm/system.h> | ||
24 | #include <arch/icache.h> | 23 | #include <arch/icache.h> |
25 | 24 | ||
26 | /* Caches are physically-indexed and so don't need special treatment */ | 25 | /* Caches are physically-indexed and so don't need special treatment */ |
@@ -152,4 +151,14 @@ static inline void finv_buffer_local(void *buffer, size_t size) | |||
152 | */ | 151 | */ |
153 | void finv_buffer_remote(void *buffer, size_t size, int hfh); | 152 | void finv_buffer_remote(void *buffer, size_t size, int hfh); |
154 | 153 | ||
154 | /* | ||
155 | * On SMP systems, when the scheduler does migration-cost autodetection, | ||
156 | * it needs a way to flush as much of the CPU's caches as possible: | ||
157 | * | ||
158 | * TODO: fill this in! | ||
159 | */ | ||
160 | static inline void sched_cacheflush(void) | ||
161 | { | ||
162 | } | ||
163 | |||
155 | #endif /* _ASM_TILE_CACHEFLUSH_H */ | 164 | #endif /* _ASM_TILE_CACHEFLUSH_H */ |
diff --git a/arch/tile/include/asm/exec.h b/arch/tile/include/asm/exec.h new file mode 100644 index 000000000000..a714e1950867 --- /dev/null +++ b/arch/tile/include/asm/exec.h | |||
@@ -0,0 +1,20 @@ | |||
1 | /* | ||
2 | * Copyright 2010 Tilera Corporation. All Rights Reserved. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or | ||
5 | * modify it under the terms of the GNU General Public License | ||
6 | * as published by the Free Software Foundation, version 2. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, but | ||
9 | * WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or | ||
11 | * NON INFRINGEMENT. See the GNU General Public License for | ||
12 | * more details. | ||
13 | */ | ||
14 | |||
15 | #ifndef _ASM_TILE_EXEC_H | ||
16 | #define _ASM_TILE_EXEC_H | ||
17 | |||
18 | #define arch_align_stack(x) (x) | ||
19 | |||
20 | #endif /* _ASM_TILE_EXEC_H */ | ||
diff --git a/arch/tile/include/asm/pgtable.h b/arch/tile/include/asm/pgtable.h index 1a20b7ef8ea2..67490910774d 100644 --- a/arch/tile/include/asm/pgtable.h +++ b/arch/tile/include/asm/pgtable.h | |||
@@ -29,7 +29,6 @@ | |||
29 | #include <linux/spinlock.h> | 29 | #include <linux/spinlock.h> |
30 | #include <asm/processor.h> | 30 | #include <asm/processor.h> |
31 | #include <asm/fixmap.h> | 31 | #include <asm/fixmap.h> |
32 | #include <asm/system.h> | ||
33 | 32 | ||
34 | struct mm_struct; | 33 | struct mm_struct; |
35 | struct vm_area_struct; | 34 | struct vm_area_struct; |
diff --git a/arch/tile/include/asm/setup.h b/arch/tile/include/asm/setup.h index 7caf0f36b030..e58613e0752f 100644 --- a/arch/tile/include/asm/setup.h +++ b/arch/tile/include/asm/setup.h | |||
@@ -31,6 +31,28 @@ void early_panic(const char *fmt, ...); | |||
31 | void warn_early_printk(void); | 31 | void warn_early_printk(void); |
32 | void __init disable_early_printk(void); | 32 | void __init disable_early_printk(void); |
33 | 33 | ||
34 | /* Init-time routine to do tile-specific per-cpu setup. */ | ||
35 | void setup_cpu(int boot); | ||
36 | |||
37 | /* User-level DMA management functions */ | ||
38 | void grant_dma_mpls(void); | ||
39 | void restrict_dma_mpls(void); | ||
40 | |||
41 | #ifdef CONFIG_HARDWALL | ||
42 | /* User-level network management functions */ | ||
43 | void reset_network_state(void); | ||
44 | void grant_network_mpls(void); | ||
45 | void restrict_network_mpls(void); | ||
46 | struct task_struct; | ||
47 | int hardwall_deactivate(struct task_struct *task); | ||
48 | |||
49 | /* Hook hardwall code into changes in affinity. */ | ||
50 | #define arch_set_cpus_allowed(p, new_mask) do { \ | ||
51 | if (p->thread.hardwall && !cpumask_equal(&p->cpus_allowed, new_mask)) \ | ||
52 | hardwall_deactivate(p); \ | ||
53 | } while (0) | ||
54 | #endif | ||
55 | |||
34 | #endif /* __KERNEL__ */ | 56 | #endif /* __KERNEL__ */ |
35 | 57 | ||
36 | #endif /* _ASM_TILE_SETUP_H */ | 58 | #endif /* _ASM_TILE_SETUP_H */ |
diff --git a/arch/tile/include/asm/spinlock_32.h b/arch/tile/include/asm/spinlock_32.h index a5e4208d34f9..c0a77b38d39a 100644 --- a/arch/tile/include/asm/spinlock_32.h +++ b/arch/tile/include/asm/spinlock_32.h | |||
@@ -19,7 +19,6 @@ | |||
19 | 19 | ||
20 | #include <linux/atomic.h> | 20 | #include <linux/atomic.h> |
21 | #include <asm/page.h> | 21 | #include <asm/page.h> |
22 | #include <asm/system.h> | ||
23 | #include <linux/compiler.h> | 22 | #include <linux/compiler.h> |
24 | 23 | ||
25 | /* | 24 | /* |
diff --git a/arch/tile/include/asm/switch_to.h b/arch/tile/include/asm/switch_to.h new file mode 100644 index 000000000000..1d48c5fee8b7 --- /dev/null +++ b/arch/tile/include/asm/switch_to.h | |||
@@ -0,0 +1,76 @@ | |||
1 | /* | ||
2 | * Copyright 2010 Tilera Corporation. All Rights Reserved. | ||
3 | * | ||
4 | * This program is free software; you can redistribute it and/or | ||
5 | * modify it under the terms of the GNU General Public License | ||
6 | * as published by the Free Software Foundation, version 2. | ||
7 | * | ||
8 | * This program is distributed in the hope that it will be useful, but | ||
9 | * WITHOUT ANY WARRANTY; without even the implied warranty of | ||
10 | * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or | ||
11 | * NON INFRINGEMENT. See the GNU General Public License for | ||
12 | * more details. | ||
13 | */ | ||
14 | |||
15 | #ifndef _ASM_TILE_SWITCH_TO_H | ||
16 | #define _ASM_TILE_SWITCH_TO_H | ||
17 | |||
18 | #include <arch/sim_def.h> | ||
19 | |||
20 | /* | ||
21 | * switch_to(n) should switch tasks to task nr n, first | ||
22 | * checking that n isn't the current task, in which case it does nothing. | ||
23 | * The number of callee-saved registers saved on the kernel stack | ||
24 | * is defined here for use in copy_thread() and must agree with __switch_to(). | ||
25 | */ | ||
26 | #define CALLEE_SAVED_FIRST_REG 30 | ||
27 | #define CALLEE_SAVED_REGS_COUNT 24 /* r30 to r52, plus an empty to align */ | ||
28 | |||
29 | #ifndef __ASSEMBLY__ | ||
30 | |||
31 | struct task_struct; | ||
32 | |||
33 | /* | ||
34 | * Pause the DMA engine and static network before task switching. | ||
35 | */ | ||
36 | #define prepare_arch_switch(next) _prepare_arch_switch(next) | ||
37 | void _prepare_arch_switch(struct task_struct *next); | ||
38 | |||
39 | struct task_struct; | ||
40 | #define switch_to(prev, next, last) ((last) = _switch_to((prev), (next))) | ||
41 | extern struct task_struct *_switch_to(struct task_struct *prev, | ||
42 | struct task_struct *next); | ||
43 | |||
44 | /* Helper function for _switch_to(). */ | ||
45 | extern struct task_struct *__switch_to(struct task_struct *prev, | ||
46 | struct task_struct *next, | ||
47 | unsigned long new_system_save_k_0); | ||
48 | |||
49 | /* Address that switched-away from tasks are at. */ | ||
50 | extern unsigned long get_switch_to_pc(void); | ||
51 | |||
52 | /* | ||
53 | * Kernel threads can check to see if they need to migrate their | ||
54 | * stack whenever they return from a context switch; for user | ||
55 | * threads, we defer until they are returning to user-space. | ||
56 | */ | ||
57 | #define finish_arch_switch(prev) do { \ | ||
58 | if (unlikely((prev)->state == TASK_DEAD)) \ | ||
59 | __insn_mtspr(SPR_SIM_CONTROL, SIM_CONTROL_OS_EXIT | \ | ||
60 | ((prev)->pid << _SIM_CONTROL_OPERATOR_BITS)); \ | ||
61 | __insn_mtspr(SPR_SIM_CONTROL, SIM_CONTROL_OS_SWITCH | \ | ||
62 | (current->pid << _SIM_CONTROL_OPERATOR_BITS)); \ | ||
63 | if (current->mm == NULL && !kstack_hash && \ | ||
64 | current_thread_info()->homecache_cpu != smp_processor_id()) \ | ||
65 | homecache_migrate_kthread(); \ | ||
66 | } while (0) | ||
67 | |||
68 | /* Support function for forking a new task. */ | ||
69 | void ret_from_fork(void); | ||
70 | |||
71 | /* Called from ret_from_fork() when a new process starts up. */ | ||
72 | struct task_struct *sim_notify_fork(struct task_struct *prev); | ||
73 | |||
74 | #endif /* !__ASSEMBLY__ */ | ||
75 | |||
76 | #endif /* _ASM_TILE_SWITCH_TO_H */ | ||
diff --git a/arch/tile/include/asm/timex.h b/arch/tile/include/asm/timex.h index 29921f0b86da..dc987d53e2a9 100644 --- a/arch/tile/include/asm/timex.h +++ b/arch/tile/include/asm/timex.h | |||
@@ -29,11 +29,13 @@ typedef unsigned long long cycles_t; | |||
29 | 29 | ||
30 | #if CHIP_HAS_SPLIT_CYCLE() | 30 | #if CHIP_HAS_SPLIT_CYCLE() |
31 | cycles_t get_cycles(void); | 31 | cycles_t get_cycles(void); |
32 | #define get_cycles_low() __insn_mfspr(SPR_CYCLE_LOW) | ||
32 | #else | 33 | #else |
33 | static inline cycles_t get_cycles(void) | 34 | static inline cycles_t get_cycles(void) |
34 | { | 35 | { |
35 | return __insn_mfspr(SPR_CYCLE); | 36 | return __insn_mfspr(SPR_CYCLE); |
36 | } | 37 | } |
38 | #define get_cycles_low() __insn_mfspr(SPR_CYCLE) /* just get all 64 bits */ | ||
37 | #endif | 39 | #endif |
38 | 40 | ||
39 | cycles_t get_clock_rate(void); | 41 | cycles_t get_clock_rate(void); |
diff --git a/arch/tile/include/asm/unaligned.h b/arch/tile/include/asm/unaligned.h index 137e2de5b102..37dfbe598872 100644 --- a/arch/tile/include/asm/unaligned.h +++ b/arch/tile/include/asm/unaligned.h | |||
@@ -21,4 +21,19 @@ | |||
21 | #define get_unaligned __get_unaligned_le | 21 | #define get_unaligned __get_unaligned_le |
22 | #define put_unaligned __put_unaligned_le | 22 | #define put_unaligned __put_unaligned_le |
23 | 23 | ||
24 | /* | ||
25 | * Is the kernel doing fixups of unaligned accesses? If <0, no kernel | ||
26 | * intervention occurs and SIGBUS is delivered with no data address | ||
27 | * info. If 0, the kernel single-steps the instruction to discover | ||
28 | * the data address to provide with the SIGBUS. If 1, the kernel does | ||
29 | * a fixup. | ||
30 | */ | ||
31 | extern int unaligned_fixup; | ||
32 | |||
33 | /* Is the kernel printing on each unaligned fixup? */ | ||
34 | extern int unaligned_printk; | ||
35 | |||
36 | /* Number of unaligned fixups performed */ | ||
37 | extern unsigned int unaligned_fixup_count; | ||
38 | |||
24 | #endif /* _ASM_TILE_UNALIGNED_H */ | 39 | #endif /* _ASM_TILE_UNALIGNED_H */ |
diff --git a/arch/tile/kernel/early_printk.c b/arch/tile/kernel/early_printk.c index 493a0e66d916..afb9c9a0d887 100644 --- a/arch/tile/kernel/early_printk.c +++ b/arch/tile/kernel/early_printk.c | |||
@@ -16,6 +16,7 @@ | |||
16 | #include <linux/kernel.h> | 16 | #include <linux/kernel.h> |
17 | #include <linux/init.h> | 17 | #include <linux/init.h> |
18 | #include <linux/string.h> | 18 | #include <linux/string.h> |
19 | #include <linux/irqflags.h> | ||
19 | #include <asm/setup.h> | 20 | #include <asm/setup.h> |
20 | #include <hv/hypervisor.h> | 21 | #include <hv/hypervisor.h> |
21 | 22 | ||
diff --git a/arch/tile/kernel/proc.c b/arch/tile/kernel/proc.c index 62d820833c68..7a9327046404 100644 --- a/arch/tile/kernel/proc.c +++ b/arch/tile/kernel/proc.c | |||
@@ -23,6 +23,7 @@ | |||
23 | #include <linux/sysctl.h> | 23 | #include <linux/sysctl.h> |
24 | #include <linux/hardirq.h> | 24 | #include <linux/hardirq.h> |
25 | #include <linux/mman.h> | 25 | #include <linux/mman.h> |
26 | #include <asm/unaligned.h> | ||
26 | #include <asm/pgtable.h> | 27 | #include <asm/pgtable.h> |
27 | #include <asm/processor.h> | 28 | #include <asm/processor.h> |
28 | #include <asm/sections.h> | 29 | #include <asm/sections.h> |
diff --git a/arch/tile/kernel/process.c b/arch/tile/kernel/process.c index 6ae495ef2b99..30caecac94dc 100644 --- a/arch/tile/kernel/process.c +++ b/arch/tile/kernel/process.c | |||
@@ -27,16 +27,17 @@ | |||
27 | #include <linux/kernel.h> | 27 | #include <linux/kernel.h> |
28 | #include <linux/tracehook.h> | 28 | #include <linux/tracehook.h> |
29 | #include <linux/signal.h> | 29 | #include <linux/signal.h> |
30 | #include <asm/system.h> | ||
31 | #include <asm/stack.h> | 30 | #include <asm/stack.h> |
32 | #include <asm/homecache.h> | 31 | #include <asm/homecache.h> |
33 | #include <asm/syscalls.h> | 32 | #include <asm/syscalls.h> |
34 | #include <asm/traps.h> | 33 | #include <asm/traps.h> |
34 | #include <asm/setup.h> | ||
35 | #ifdef CONFIG_HARDWALL | 35 | #ifdef CONFIG_HARDWALL |
36 | #include <asm/hardwall.h> | 36 | #include <asm/hardwall.h> |
37 | #endif | 37 | #endif |
38 | #include <arch/chip.h> | 38 | #include <arch/chip.h> |
39 | #include <arch/abi.h> | 39 | #include <arch/abi.h> |
40 | #include <arch/sim_def.h> | ||
40 | 41 | ||
41 | 42 | ||
42 | /* | 43 | /* |
diff --git a/arch/tile/kernel/regs_32.S b/arch/tile/kernel/regs_32.S index caa13101c264..c12280c2d904 100644 --- a/arch/tile/kernel/regs_32.S +++ b/arch/tile/kernel/regs_32.S | |||
@@ -13,11 +13,11 @@ | |||
13 | */ | 13 | */ |
14 | 14 | ||
15 | #include <linux/linkage.h> | 15 | #include <linux/linkage.h> |
16 | #include <asm/system.h> | ||
17 | #include <asm/ptrace.h> | 16 | #include <asm/ptrace.h> |
18 | #include <asm/asm-offsets.h> | 17 | #include <asm/asm-offsets.h> |
19 | #include <arch/spr_def.h> | 18 | #include <arch/spr_def.h> |
20 | #include <asm/processor.h> | 19 | #include <asm/processor.h> |
20 | #include <asm/switch_to.h> | ||
21 | 21 | ||
22 | /* | 22 | /* |
23 | * See <asm/system.h>; called with prev and next task_struct pointers. | 23 | * See <asm/system.h>; called with prev and next task_struct pointers. |
diff --git a/arch/tile/kernel/regs_64.S b/arch/tile/kernel/regs_64.S index f748c1e85285..0829fd01fa30 100644 --- a/arch/tile/kernel/regs_64.S +++ b/arch/tile/kernel/regs_64.S | |||
@@ -13,11 +13,11 @@ | |||
13 | */ | 13 | */ |
14 | 14 | ||
15 | #include <linux/linkage.h> | 15 | #include <linux/linkage.h> |
16 | #include <asm/system.h> | ||
17 | #include <asm/ptrace.h> | 16 | #include <asm/ptrace.h> |
18 | #include <asm/asm-offsets.h> | 17 | #include <asm/asm-offsets.h> |
19 | #include <arch/spr_def.h> | 18 | #include <arch/spr_def.h> |
20 | #include <asm/processor.h> | 19 | #include <asm/processor.h> |
20 | #include <asm/switch_to.h> | ||
21 | 21 | ||
22 | /* | 22 | /* |
23 | * See <asm/system.h>; called with prev and next task_struct pointers. | 23 | * See <asm/system.h>; called with prev and next task_struct pointers. |
diff --git a/arch/tile/kernel/single_step.c b/arch/tile/kernel/single_step.c index b7a879504086..bc1eb586e24d 100644 --- a/arch/tile/kernel/single_step.c +++ b/arch/tile/kernel/single_step.c | |||
@@ -25,6 +25,7 @@ | |||
25 | #include <linux/types.h> | 25 | #include <linux/types.h> |
26 | #include <linux/err.h> | 26 | #include <linux/err.h> |
27 | #include <asm/cacheflush.h> | 27 | #include <asm/cacheflush.h> |
28 | #include <asm/unaligned.h> | ||
28 | #include <arch/abi.h> | 29 | #include <arch/abi.h> |
29 | #include <arch/opcode.h> | 30 | #include <arch/opcode.h> |
30 | 31 | ||
diff --git a/arch/tile/kernel/traps.c b/arch/tile/kernel/traps.c index 4f47b8a356df..2bb6602a1ee7 100644 --- a/arch/tile/kernel/traps.c +++ b/arch/tile/kernel/traps.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <linux/ptrace.h> | 21 | #include <linux/ptrace.h> |
22 | #include <asm/stack.h> | 22 | #include <asm/stack.h> |
23 | #include <asm/traps.h> | 23 | #include <asm/traps.h> |
24 | #include <asm/setup.h> | ||
24 | 25 | ||
25 | #include <arch/interrupts.h> | 26 | #include <arch/interrupts.h> |
26 | #include <arch/spr_def.h> | 27 | #include <arch/spr_def.h> |
diff --git a/arch/tile/mm/elf.c b/arch/tile/mm/elf.c index 1a00fb64fc88..758b6038c2b7 100644 --- a/arch/tile/mm/elf.c +++ b/arch/tile/mm/elf.c | |||
@@ -21,6 +21,7 @@ | |||
21 | #include <asm/pgtable.h> | 21 | #include <asm/pgtable.h> |
22 | #include <asm/pgalloc.h> | 22 | #include <asm/pgalloc.h> |
23 | #include <asm/sections.h> | 23 | #include <asm/sections.h> |
24 | #include <arch/sim_def.h> | ||
24 | 25 | ||
25 | /* Notify a running simulator, if any, that an exec just occurred. */ | 26 | /* Notify a running simulator, if any, that an exec just occurred. */ |
26 | static void sim_notify_exec(const char *binary_name) | 27 | static void sim_notify_exec(const char *binary_name) |
diff --git a/arch/tile/mm/fault.c b/arch/tile/mm/fault.c index c1eaaa1fcc20..cba30e9547b4 100644 --- a/arch/tile/mm/fault.c +++ b/arch/tile/mm/fault.c | |||
@@ -35,7 +35,6 @@ | |||
35 | #include <linux/syscalls.h> | 35 | #include <linux/syscalls.h> |
36 | #include <linux/uaccess.h> | 36 | #include <linux/uaccess.h> |
37 | 37 | ||
38 | #include <asm/system.h> | ||
39 | #include <asm/pgalloc.h> | 38 | #include <asm/pgalloc.h> |
40 | #include <asm/sections.h> | 39 | #include <asm/sections.h> |
41 | #include <asm/traps.h> | 40 | #include <asm/traps.h> |
diff --git a/arch/tile/mm/init.c b/arch/tile/mm/init.c index 7309988c9794..830c4908ea76 100644 --- a/arch/tile/mm/init.c +++ b/arch/tile/mm/init.c | |||
@@ -38,7 +38,6 @@ | |||
38 | #include <linux/uaccess.h> | 38 | #include <linux/uaccess.h> |
39 | #include <asm/mmu_context.h> | 39 | #include <asm/mmu_context.h> |
40 | #include <asm/processor.h> | 40 | #include <asm/processor.h> |
41 | #include <asm/system.h> | ||
42 | #include <asm/pgtable.h> | 41 | #include <asm/pgtable.h> |
43 | #include <asm/pgalloc.h> | 42 | #include <asm/pgalloc.h> |
44 | #include <asm/dma.h> | 43 | #include <asm/dma.h> |
diff --git a/arch/tile/mm/pgtable.c b/arch/tile/mm/pgtable.c index de7d8e21e01d..87303693a072 100644 --- a/arch/tile/mm/pgtable.c +++ b/arch/tile/mm/pgtable.c | |||
@@ -27,7 +27,6 @@ | |||
27 | #include <linux/vmalloc.h> | 27 | #include <linux/vmalloc.h> |
28 | #include <linux/smp.h> | 28 | #include <linux/smp.h> |
29 | 29 | ||
30 | #include <asm/system.h> | ||
31 | #include <asm/pgtable.h> | 30 | #include <asm/pgtable.h> |
32 | #include <asm/pgalloc.h> | 31 | #include <asm/pgalloc.h> |
33 | #include <asm/fixmap.h> | 32 | #include <asm/fixmap.h> |
diff --git a/arch/um/include/asm/fixmap.h b/arch/um/include/asm/fixmap.h index 69c0252345f1..21a423bae5e8 100644 --- a/arch/um/include/asm/fixmap.h +++ b/arch/um/include/asm/fixmap.h | |||
@@ -2,7 +2,6 @@ | |||
2 | #define __UM_FIXMAP_H | 2 | #define __UM_FIXMAP_H |
3 | 3 | ||
4 | #include <asm/processor.h> | 4 | #include <asm/processor.h> |
5 | #include <asm/system.h> | ||
6 | #include <asm/kmap_types.h> | 5 | #include <asm/kmap_types.h> |
7 | #include <asm/archparam.h> | 6 | #include <asm/archparam.h> |
8 | #include <asm/page.h> | 7 | #include <asm/page.h> |
diff --git a/arch/unicore32/include/asm/Kbuild b/arch/unicore32/include/asm/Kbuild index ca113d6999c5..34b789b71115 100644 --- a/arch/unicore32/include/asm/Kbuild +++ b/arch/unicore32/include/asm/Kbuild | |||
@@ -3,7 +3,6 @@ include include/asm-generic/Kbuild.asm | |||
3 | generic-y += atomic.h | 3 | generic-y += atomic.h |
4 | generic-y += auxvec.h | 4 | generic-y += auxvec.h |
5 | generic-y += bitsperlong.h | 5 | generic-y += bitsperlong.h |
6 | generic-y += bug.h | ||
7 | generic-y += bugs.h | 6 | generic-y += bugs.h |
8 | generic-y += cputime.h | 7 | generic-y += cputime.h |
9 | generic-y += current.h | 8 | generic-y += current.h |
diff --git a/arch/unicore32/include/asm/barrier.h b/arch/unicore32/include/asm/barrier.h new file mode 100644 index 000000000000..a6620e5336b6 --- /dev/null +++ b/arch/unicore32/include/asm/barrier.h | |||
@@ -0,0 +1,28 @@ | |||
1 | /* | ||
2 | * Memory barrier implementations for PKUnity SoC and UniCore ISA | ||
3 | * | ||
4 | * Copyright (C) 2001-2012 GUAN Xue-tao | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | #ifndef __UNICORE_BARRIER_H__ | ||
11 | #define __UNICORE_BARRIER_H__ | ||
12 | |||
13 | #define isb() __asm__ __volatile__ ("" : : : "memory") | ||
14 | #define dsb() __asm__ __volatile__ ("" : : : "memory") | ||
15 | #define dmb() __asm__ __volatile__ ("" : : : "memory") | ||
16 | |||
17 | #define mb() barrier() | ||
18 | #define rmb() barrier() | ||
19 | #define wmb() barrier() | ||
20 | #define smp_mb() barrier() | ||
21 | #define smp_rmb() barrier() | ||
22 | #define smp_wmb() barrier() | ||
23 | #define read_barrier_depends() do { } while (0) | ||
24 | #define smp_read_barrier_depends() do { } while (0) | ||
25 | |||
26 | #define set_mb(var, value) do { var = value; smp_mb(); } while (0) | ||
27 | |||
28 | #endif /* __UNICORE_BARRIER_H__ */ | ||
diff --git a/arch/unicore32/include/asm/bug.h b/arch/unicore32/include/asm/bug.h new file mode 100644 index 000000000000..b1ff8cadb086 --- /dev/null +++ b/arch/unicore32/include/asm/bug.h | |||
@@ -0,0 +1,27 @@ | |||
1 | /* | ||
2 | * Bug handling for PKUnity SoC and UniCore ISA | ||
3 | * | ||
4 | * Copyright (C) 2001-2012 GUAN Xue-tao | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | #ifndef __UNICORE_BUG_H__ | ||
11 | #define __UNICORE_BUG_H__ | ||
12 | |||
13 | #include <asm-generic/bug.h> | ||
14 | |||
15 | struct pt_regs; | ||
16 | struct siginfo; | ||
17 | |||
18 | extern void die(const char *msg, struct pt_regs *regs, int err); | ||
19 | extern void uc32_notify_die(const char *str, struct pt_regs *regs, | ||
20 | struct siginfo *info, unsigned long err, unsigned long trap); | ||
21 | |||
22 | extern asmlinkage void __backtrace(void); | ||
23 | extern asmlinkage void c_backtrace(unsigned long fp, int pmode); | ||
24 | |||
25 | extern void __show_regs(struct pt_regs *); | ||
26 | |||
27 | #endif /* __UNICORE_BUG_H__ */ | ||
diff --git a/arch/unicore32/include/asm/cmpxchg.h b/arch/unicore32/include/asm/cmpxchg.h new file mode 100644 index 000000000000..df4d5acfd19f --- /dev/null +++ b/arch/unicore32/include/asm/cmpxchg.h | |||
@@ -0,0 +1,61 @@ | |||
1 | /* | ||
2 | * Atomics xchg/cmpxchg for PKUnity SoC and UniCore ISA | ||
3 | * | ||
4 | * Copyright (C) 2001-2012 GUAN Xue-tao | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | #ifndef __UNICORE_CMPXCHG_H__ | ||
11 | #define __UNICORE_CMPXCHG_H__ | ||
12 | |||
13 | /* | ||
14 | * Generate a link failure on undefined symbol if the pointer points to a value | ||
15 | * of unsupported size. | ||
16 | */ | ||
17 | extern void __xchg_bad_pointer(void); | ||
18 | |||
19 | static inline unsigned long __xchg(unsigned long x, volatile void *ptr, | ||
20 | int size) | ||
21 | { | ||
22 | unsigned long ret; | ||
23 | |||
24 | switch (size) { | ||
25 | case 1: | ||
26 | asm volatile("swapb %0, %1, [%2]" | ||
27 | : "=&r" (ret) | ||
28 | : "r" (x), "r" (ptr) | ||
29 | : "memory", "cc"); | ||
30 | break; | ||
31 | case 4: | ||
32 | asm volatile("swapw %0, %1, [%2]" | ||
33 | : "=&r" (ret) | ||
34 | : "r" (x), "r" (ptr) | ||
35 | : "memory", "cc"); | ||
36 | break; | ||
37 | default: | ||
38 | ret = __xchg_bad_pointer(); | ||
39 | } | ||
40 | |||
41 | return ret; | ||
42 | } | ||
43 | |||
44 | #define xchg(ptr, x) \ | ||
45 | ((__typeof__(*(ptr)))__xchg((unsigned long)(x), (ptr), sizeof(*(ptr)))) | ||
46 | |||
47 | #include <asm-generic/cmpxchg-local.h> | ||
48 | |||
49 | /* | ||
50 | * cmpxchg_local and cmpxchg64_local are atomic wrt current CPU. Always make | ||
51 | * them available. | ||
52 | */ | ||
53 | #define cmpxchg_local(ptr, o, n) \ | ||
54 | ((__typeof__(*(ptr)))__cmpxchg_local_generic((ptr), \ | ||
55 | (unsigned long)(o), (unsigned long)(n), sizeof(*(ptr)))) | ||
56 | #define cmpxchg64_local(ptr, o, n) \ | ||
57 | __cmpxchg64_local_generic((ptr), (o), (n)) | ||
58 | |||
59 | #include <asm-generic/cmpxchg.h> | ||
60 | |||
61 | #endif /* __UNICORE_CMPXCHG_H__ */ | ||
diff --git a/arch/unicore32/include/asm/exec.h b/arch/unicore32/include/asm/exec.h new file mode 100644 index 000000000000..06d1f0f57888 --- /dev/null +++ b/arch/unicore32/include/asm/exec.h | |||
@@ -0,0 +1,15 @@ | |||
1 | /* | ||
2 | * Process execution bits for PKUnity SoC and UniCore ISA | ||
3 | * | ||
4 | * Copyright (C) 2001-2012 GUAN Xue-tao | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | #ifndef __UNICORE_EXEC_H__ | ||
11 | #define __UNICORE_EXEC_H__ | ||
12 | |||
13 | #define arch_align_stack(x) (x) | ||
14 | |||
15 | #endif /* __UNICORE_EXEC_H__ */ | ||
diff --git a/arch/unicore32/include/asm/hwdef-copro.h b/arch/unicore32/include/asm/hwdef-copro.h new file mode 100644 index 000000000000..a3292f039a68 --- /dev/null +++ b/arch/unicore32/include/asm/hwdef-copro.h | |||
@@ -0,0 +1,48 @@ | |||
1 | /* | ||
2 | * Co-processor register definitions for PKUnity SoC and UniCore ISA | ||
3 | * | ||
4 | * Copyright (C) 2001-2012 GUAN Xue-tao | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | #ifndef __UNICORE_HWDEF_COPRO_H__ | ||
11 | #define __UNICORE_HWDEF_COPRO_H__ | ||
12 | |||
13 | /* | ||
14 | * Control Register bits (CP#0 CR1) | ||
15 | */ | ||
16 | #define CR_M (1 << 0) /* MMU enable */ | ||
17 | #define CR_A (1 << 1) /* Alignment abort enable */ | ||
18 | #define CR_D (1 << 2) /* Dcache enable */ | ||
19 | #define CR_I (1 << 3) /* Icache enable */ | ||
20 | #define CR_B (1 << 4) /* Dcache write mechanism: write back */ | ||
21 | #define CR_T (1 << 5) /* Burst enable */ | ||
22 | #define CR_V (1 << 13) /* Vectors relocated to 0xffff0000 */ | ||
23 | |||
24 | #ifndef __ASSEMBLY__ | ||
25 | |||
26 | #define vectors_high() (cr_alignment & CR_V) | ||
27 | |||
28 | extern unsigned long cr_no_alignment; /* defined in entry.S */ | ||
29 | extern unsigned long cr_alignment; /* defined in entry.S */ | ||
30 | |||
31 | static inline unsigned int get_cr(void) | ||
32 | { | ||
33 | unsigned int val; | ||
34 | asm("movc %0, p0.c1, #0" : "=r" (val) : : "cc"); | ||
35 | return val; | ||
36 | } | ||
37 | |||
38 | static inline void set_cr(unsigned int val) | ||
39 | { | ||
40 | asm volatile("movc p0.c1, %0, #0" : : "r" (val) : "cc"); | ||
41 | isb(); | ||
42 | } | ||
43 | |||
44 | extern void adjust_cr(unsigned long mask, unsigned long set); | ||
45 | |||
46 | #endif /* __ASSEMBLY__ */ | ||
47 | |||
48 | #endif /* __UNICORE_HWDEF_COPRO_H__ */ | ||
diff --git a/arch/unicore32/include/asm/io.h b/arch/unicore32/include/asm/io.h index adddf6d64077..39decb6e6f57 100644 --- a/arch/unicore32/include/asm/io.h +++ b/arch/unicore32/include/asm/io.h | |||
@@ -16,7 +16,6 @@ | |||
16 | 16 | ||
17 | #include <asm/byteorder.h> | 17 | #include <asm/byteorder.h> |
18 | #include <asm/memory.h> | 18 | #include <asm/memory.h> |
19 | #include <asm/system.h> | ||
20 | 19 | ||
21 | #define PCI_IOBASE PKUNITY_PCILIO_BASE | 20 | #define PCI_IOBASE PKUNITY_PCILIO_BASE |
22 | #include <asm-generic/io.h> | 21 | #include <asm-generic/io.h> |
diff --git a/arch/unicore32/include/asm/switch_to.h b/arch/unicore32/include/asm/switch_to.h new file mode 100644 index 000000000000..39572d2bd692 --- /dev/null +++ b/arch/unicore32/include/asm/switch_to.h | |||
@@ -0,0 +1,30 @@ | |||
1 | /* | ||
2 | * Task switching for PKUnity SoC and UniCore ISA | ||
3 | * | ||
4 | * Copyright (C) 2001-2012 GUAN Xue-tao | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify | ||
7 | * it under the terms of the GNU General Public License version 2 as | ||
8 | * published by the Free Software Foundation. | ||
9 | */ | ||
10 | #ifndef __UNICORE_SWITCH_TO_H__ | ||
11 | #define __UNICORE_SWITCH_TO_H__ | ||
12 | |||
13 | struct task_struct; | ||
14 | struct thread_info; | ||
15 | |||
16 | /* | ||
17 | * switch_to(prev, next) should switch from task `prev' to `next' | ||
18 | * `prev' will never be the same as `next'. schedule() itself | ||
19 | * contains the memory barrier to tell GCC not to cache `current'. | ||
20 | */ | ||
21 | extern struct task_struct *__switch_to(struct task_struct *, | ||
22 | struct thread_info *, struct thread_info *); | ||
23 | |||
24 | #define switch_to(prev, next, last) \ | ||
25 | do { \ | ||
26 | last = __switch_to(prev, task_thread_info(prev), \ | ||
27 | task_thread_info(next)); \ | ||
28 | } while (0) | ||
29 | |||
30 | #endif /* __UNICORE_SWITCH_TO_H__ */ | ||
diff --git a/arch/unicore32/include/asm/system.h b/arch/unicore32/include/asm/system.h deleted file mode 100644 index 246b71c17fda..000000000000 --- a/arch/unicore32/include/asm/system.h +++ /dev/null | |||
@@ -1,161 +0,0 @@ | |||
1 | /* | ||
2 | * linux/arch/unicore32/include/asm/system.h | ||
3 | * | ||
4 | * Code specific to PKUnity SoC and UniCore ISA | ||
5 | * | ||
6 | * Copyright (C) 2001-2010 GUAN Xue-tao | ||
7 | * | ||
8 | * This program is free software; you can redistribute it and/or modify | ||
9 | * it under the terms of the GNU General Public License version 2 as | ||
10 | * published by the Free Software Foundation. | ||
11 | */ | ||
12 | #ifndef __UNICORE_SYSTEM_H__ | ||
13 | #define __UNICORE_SYSTEM_H__ | ||
14 | |||
15 | #ifdef __KERNEL__ | ||
16 | |||
17 | /* | ||
18 | * CR1 bits (CP#0 CR1) | ||
19 | */ | ||
20 | #define CR_M (1 << 0) /* MMU enable */ | ||
21 | #define CR_A (1 << 1) /* Alignment abort enable */ | ||
22 | #define CR_D (1 << 2) /* Dcache enable */ | ||
23 | #define CR_I (1 << 3) /* Icache enable */ | ||
24 | #define CR_B (1 << 4) /* Dcache write mechanism: write back */ | ||
25 | #define CR_T (1 << 5) /* Burst enable */ | ||
26 | #define CR_V (1 << 13) /* Vectors relocated to 0xffff0000 */ | ||
27 | |||
28 | #ifndef __ASSEMBLY__ | ||
29 | |||
30 | #include <linux/linkage.h> | ||
31 | #include <linux/irqflags.h> | ||
32 | |||
33 | struct thread_info; | ||
34 | struct task_struct; | ||
35 | |||
36 | struct pt_regs; | ||
37 | |||
38 | void die(const char *msg, struct pt_regs *regs, int err); | ||
39 | |||
40 | struct siginfo; | ||
41 | void uc32_notify_die(const char *str, struct pt_regs *regs, | ||
42 | struct siginfo *info, unsigned long err, unsigned long trap); | ||
43 | |||
44 | void hook_fault_code(int nr, int (*fn)(unsigned long, unsigned int, | ||
45 | struct pt_regs *), | ||
46 | int sig, int code, const char *name); | ||
47 | |||
48 | #define xchg(ptr, x) \ | ||
49 | ((__typeof__(*(ptr)))__xchg((unsigned long)(x), (ptr), sizeof(*(ptr)))) | ||
50 | |||
51 | extern asmlinkage void __backtrace(void); | ||
52 | extern asmlinkage void c_backtrace(unsigned long fp, int pmode); | ||
53 | |||
54 | struct mm_struct; | ||
55 | extern void show_pte(struct mm_struct *mm, unsigned long addr); | ||
56 | extern void __show_regs(struct pt_regs *); | ||
57 | |||
58 | extern int cpu_architecture(void); | ||
59 | extern void cpu_init(void); | ||
60 | |||
61 | #define vectors_high() (cr_alignment & CR_V) | ||
62 | |||
63 | #define isb() __asm__ __volatile__ ("" : : : "memory") | ||
64 | #define dsb() __asm__ __volatile__ ("" : : : "memory") | ||
65 | #define dmb() __asm__ __volatile__ ("" : : : "memory") | ||
66 | |||
67 | #define mb() barrier() | ||
68 | #define rmb() barrier() | ||
69 | #define wmb() barrier() | ||
70 | #define smp_mb() barrier() | ||
71 | #define smp_rmb() barrier() | ||
72 | #define smp_wmb() barrier() | ||
73 | #define read_barrier_depends() do { } while (0) | ||
74 | #define smp_read_barrier_depends() do { } while (0) | ||
75 | |||
76 | #define set_mb(var, value) do { var = value; smp_mb(); } while (0) | ||
77 | #define nop() __asm__ __volatile__("mov\tr0,r0\t@ nop\n\t"); | ||
78 | |||
79 | extern unsigned long cr_no_alignment; /* defined in entry-unicore.S */ | ||
80 | extern unsigned long cr_alignment; /* defined in entry-unicore.S */ | ||
81 | |||
82 | static inline unsigned int get_cr(void) | ||
83 | { | ||
84 | unsigned int val; | ||
85 | asm("movc %0, p0.c1, #0" : "=r" (val) : : "cc"); | ||
86 | return val; | ||
87 | } | ||
88 | |||
89 | static inline void set_cr(unsigned int val) | ||
90 | { | ||
91 | asm volatile("movc p0.c1, %0, #0 @set CR" | ||
92 | : : "r" (val) : "cc"); | ||
93 | isb(); | ||
94 | } | ||
95 | |||
96 | extern void adjust_cr(unsigned long mask, unsigned long set); | ||
97 | |||
98 | /* | ||
99 | * switch_to(prev, next) should switch from task `prev' to `next' | ||
100 | * `prev' will never be the same as `next'. schedule() itself | ||
101 | * contains the memory barrier to tell GCC not to cache `current'. | ||
102 | */ | ||
103 | extern struct task_struct *__switch_to(struct task_struct *, | ||
104 | struct thread_info *, struct thread_info *); | ||
105 | extern void panic(const char *fmt, ...); | ||
106 | |||
107 | #define switch_to(prev, next, last) \ | ||
108 | do { \ | ||
109 | last = __switch_to(prev, \ | ||
110 | task_thread_info(prev), task_thread_info(next)); \ | ||
111 | } while (0) | ||
112 | |||
113 | static inline unsigned long | ||
114 | __xchg(unsigned long x, volatile void *ptr, int size) | ||
115 | { | ||
116 | unsigned long ret; | ||
117 | |||
118 | switch (size) { | ||
119 | case 1: | ||
120 | asm volatile("@ __xchg1\n" | ||
121 | " swapb %0, %1, [%2]" | ||
122 | : "=&r" (ret) | ||
123 | : "r" (x), "r" (ptr) | ||
124 | : "memory", "cc"); | ||
125 | break; | ||
126 | case 4: | ||
127 | asm volatile("@ __xchg4\n" | ||
128 | " swapw %0, %1, [%2]" | ||
129 | : "=&r" (ret) | ||
130 | : "r" (x), "r" (ptr) | ||
131 | : "memory", "cc"); | ||
132 | break; | ||
133 | default: | ||
134 | panic("xchg: bad data size: ptr 0x%p, size %d\n", | ||
135 | ptr, size); | ||
136 | } | ||
137 | |||
138 | return ret; | ||
139 | } | ||
140 | |||
141 | #include <asm-generic/cmpxchg-local.h> | ||
142 | |||
143 | /* | ||
144 | * cmpxchg_local and cmpxchg64_local are atomic wrt current CPU. Always make | ||
145 | * them available. | ||
146 | */ | ||
147 | #define cmpxchg_local(ptr, o, n) \ | ||
148 | ((__typeof__(*(ptr)))__cmpxchg_local_generic((ptr), \ | ||
149 | (unsigned long)(o), (unsigned long)(n), sizeof(*(ptr)))) | ||
150 | #define cmpxchg64_local(ptr, o, n) \ | ||
151 | __cmpxchg64_local_generic((ptr), (o), (n)) | ||
152 | |||
153 | #include <asm-generic/cmpxchg.h> | ||
154 | |||
155 | #endif /* __ASSEMBLY__ */ | ||
156 | |||
157 | #define arch_align_stack(x) (x) | ||
158 | |||
159 | #endif /* __KERNEL__ */ | ||
160 | |||
161 | #endif | ||
diff --git a/arch/unicore32/include/asm/uaccess.h b/arch/unicore32/include/asm/uaccess.h index 2acda503a6d9..897e11ad8124 100644 --- a/arch/unicore32/include/asm/uaccess.h +++ b/arch/unicore32/include/asm/uaccess.h | |||
@@ -16,7 +16,6 @@ | |||
16 | #include <linux/errno.h> | 16 | #include <linux/errno.h> |
17 | 17 | ||
18 | #include <asm/memory.h> | 18 | #include <asm/memory.h> |
19 | #include <asm/system.h> | ||
20 | 19 | ||
21 | #define __copy_from_user __copy_from_user | 20 | #define __copy_from_user __copy_from_user |
22 | #define __copy_to_user __copy_to_user | 21 | #define __copy_to_user __copy_to_user |
diff --git a/arch/unicore32/kernel/dma.c b/arch/unicore32/kernel/dma.c index ae441bc3122c..ed2d4d78d9c4 100644 --- a/arch/unicore32/kernel/dma.c +++ b/arch/unicore32/kernel/dma.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <linux/errno.h> | 18 | #include <linux/errno.h> |
19 | #include <linux/io.h> | 19 | #include <linux/io.h> |
20 | 20 | ||
21 | #include <asm/system.h> | ||
22 | #include <asm/irq.h> | 21 | #include <asm/irq.h> |
23 | #include <mach/hardware.h> | 22 | #include <mach/hardware.h> |
24 | #include <mach/dma.h> | 23 | #include <mach/dma.h> |
diff --git a/arch/unicore32/kernel/head.S b/arch/unicore32/kernel/head.S index 8caf322e110d..e8f0b98c02ee 100644 --- a/arch/unicore32/kernel/head.S +++ b/arch/unicore32/kernel/head.S | |||
@@ -17,7 +17,7 @@ | |||
17 | #include <generated/asm-offsets.h> | 17 | #include <generated/asm-offsets.h> |
18 | #include <asm/memory.h> | 18 | #include <asm/memory.h> |
19 | #include <asm/thread_info.h> | 19 | #include <asm/thread_info.h> |
20 | #include <asm/system.h> | 20 | #include <asm/hwdef-copro.h> |
21 | #include <asm/pgtable-hwdef.h> | 21 | #include <asm/pgtable-hwdef.h> |
22 | 22 | ||
23 | #if (PHYS_OFFSET & 0x003fffff) | 23 | #if (PHYS_OFFSET & 0x003fffff) |
diff --git a/arch/unicore32/kernel/hibernate.c b/arch/unicore32/kernel/hibernate.c index 7d0f0b7983a0..d75ef8b6cb56 100644 --- a/arch/unicore32/kernel/hibernate.c +++ b/arch/unicore32/kernel/hibernate.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <linux/suspend.h> | 15 | #include <linux/suspend.h> |
16 | #include <linux/bootmem.h> | 16 | #include <linux/bootmem.h> |
17 | 17 | ||
18 | #include <asm/system.h> | ||
19 | #include <asm/page.h> | 18 | #include <asm/page.h> |
20 | #include <asm/pgtable.h> | 19 | #include <asm/pgtable.h> |
21 | #include <asm/pgalloc.h> | 20 | #include <asm/pgalloc.h> |
diff --git a/arch/unicore32/kernel/irq.c b/arch/unicore32/kernel/irq.c index d4efa7d679ff..0be5ccd7ccd2 100644 --- a/arch/unicore32/kernel/irq.c +++ b/arch/unicore32/kernel/irq.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include <linux/syscore_ops.h> | 26 | #include <linux/syscore_ops.h> |
27 | #include <linux/gpio.h> | 27 | #include <linux/gpio.h> |
28 | 28 | ||
29 | #include <asm/system.h> | ||
30 | #include <mach/hardware.h> | 29 | #include <mach/hardware.h> |
31 | 30 | ||
32 | #include "setup.h" | 31 | #include "setup.h" |
diff --git a/arch/unicore32/kernel/ksyms.c b/arch/unicore32/kernel/ksyms.c index d98bd812cae1..d285d71cbe35 100644 --- a/arch/unicore32/kernel/ksyms.c +++ b/arch/unicore32/kernel/ksyms.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include <linux/io.h> | 20 | #include <linux/io.h> |
21 | 21 | ||
22 | #include <asm/checksum.h> | 22 | #include <asm/checksum.h> |
23 | #include <asm/system.h> | ||
24 | 23 | ||
25 | #include "ksyms.h" | 24 | #include "ksyms.h" |
26 | 25 | ||
diff --git a/arch/unicore32/kernel/process.c b/arch/unicore32/kernel/process.c index 432b4291f37b..b6f0458c3143 100644 --- a/arch/unicore32/kernel/process.c +++ b/arch/unicore32/kernel/process.c | |||
@@ -34,7 +34,6 @@ | |||
34 | 34 | ||
35 | #include <asm/cacheflush.h> | 35 | #include <asm/cacheflush.h> |
36 | #include <asm/processor.h> | 36 | #include <asm/processor.h> |
37 | #include <asm/system.h> | ||
38 | #include <asm/stacktrace.h> | 37 | #include <asm/stacktrace.h> |
39 | 38 | ||
40 | #include "setup.h" | 39 | #include "setup.h" |
diff --git a/arch/unicore32/kernel/setup.h b/arch/unicore32/kernel/setup.h index dcd1306eb5c6..f23955028a18 100644 --- a/arch/unicore32/kernel/setup.h +++ b/arch/unicore32/kernel/setup.h | |||
@@ -12,8 +12,11 @@ | |||
12 | #ifndef __UNICORE_KERNEL_SETUP_H__ | 12 | #ifndef __UNICORE_KERNEL_SETUP_H__ |
13 | #define __UNICORE_KERNEL_SETUP_H__ | 13 | #define __UNICORE_KERNEL_SETUP_H__ |
14 | 14 | ||
15 | #include <asm/hwdef-copro.h> | ||
16 | |||
15 | extern void paging_init(void); | 17 | extern void paging_init(void); |
16 | extern void puv3_core_init(void); | 18 | extern void puv3_core_init(void); |
19 | extern void cpu_init(void); | ||
17 | 20 | ||
18 | extern void puv3_ps2_init(void); | 21 | extern void puv3_ps2_init(void); |
19 | extern void pci_puv3_preinit(void); | 22 | extern void pci_puv3_preinit(void); |
diff --git a/arch/unicore32/kernel/traps.c b/arch/unicore32/kernel/traps.c index b9a26465e728..2054f0d4db13 100644 --- a/arch/unicore32/kernel/traps.c +++ b/arch/unicore32/kernel/traps.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include <linux/unistd.h> | 26 | #include <linux/unistd.h> |
27 | 27 | ||
28 | #include <asm/cacheflush.h> | 28 | #include <asm/cacheflush.h> |
29 | #include <asm/system.h> | ||
30 | #include <asm/traps.h> | 29 | #include <asm/traps.h> |
31 | 30 | ||
32 | #include "setup.h" | 31 | #include "setup.h" |
diff --git a/arch/unicore32/mm/alignment.c b/arch/unicore32/mm/alignment.c index 28f576d733ee..de7dc5fdd58b 100644 --- a/arch/unicore32/mm/alignment.c +++ b/arch/unicore32/mm/alignment.c | |||
@@ -24,6 +24,8 @@ | |||
24 | #include <asm/tlbflush.h> | 24 | #include <asm/tlbflush.h> |
25 | #include <asm/unaligned.h> | 25 | #include <asm/unaligned.h> |
26 | 26 | ||
27 | #include "mm.h" | ||
28 | |||
27 | #define CODING_BITS(i) (i & 0xe0000120) | 29 | #define CODING_BITS(i) (i & 0xe0000120) |
28 | 30 | ||
29 | #define LDST_P_BIT(i) (i & (1 << 28)) /* Preindex */ | 31 | #define LDST_P_BIT(i) (i & (1 << 28)) /* Preindex */ |
diff --git a/arch/unicore32/mm/fault.c b/arch/unicore32/mm/fault.c index 283aa4b50b7a..2eeb9c04cab0 100644 --- a/arch/unicore32/mm/fault.c +++ b/arch/unicore32/mm/fault.c | |||
@@ -20,7 +20,6 @@ | |||
20 | #include <linux/sched.h> | 20 | #include <linux/sched.h> |
21 | #include <linux/io.h> | 21 | #include <linux/io.h> |
22 | 22 | ||
23 | #include <asm/system.h> | ||
24 | #include <asm/pgtable.h> | 23 | #include <asm/pgtable.h> |
25 | #include <asm/tlbflush.h> | 24 | #include <asm/tlbflush.h> |
26 | 25 | ||
diff --git a/arch/unicore32/mm/flush.c b/arch/unicore32/mm/flush.c index 93478cc8b26d..6d4c096ffa2a 100644 --- a/arch/unicore32/mm/flush.c +++ b/arch/unicore32/mm/flush.c | |||
@@ -14,7 +14,6 @@ | |||
14 | #include <linux/pagemap.h> | 14 | #include <linux/pagemap.h> |
15 | 15 | ||
16 | #include <asm/cacheflush.h> | 16 | #include <asm/cacheflush.h> |
17 | #include <asm/system.h> | ||
18 | #include <asm/tlbflush.h> | 17 | #include <asm/tlbflush.h> |
19 | 18 | ||
20 | void flush_cache_mm(struct mm_struct *mm) | 19 | void flush_cache_mm(struct mm_struct *mm) |
diff --git a/arch/unicore32/mm/mm.h b/arch/unicore32/mm/mm.h index 3296bca0f1f7..05c7f532eee2 100644 --- a/arch/unicore32/mm/mm.h +++ b/arch/unicore32/mm/mm.h | |||
@@ -9,6 +9,8 @@ | |||
9 | * it under the terms of the GNU General Public License version 2 as | 9 | * it under the terms of the GNU General Public License version 2 as |
10 | * published by the Free Software Foundation. | 10 | * published by the Free Software Foundation. |
11 | */ | 11 | */ |
12 | #include <asm/hwdef-copro.h> | ||
13 | |||
12 | /* the upper-most page table pointer */ | 14 | /* the upper-most page table pointer */ |
13 | extern pmd_t *top_pmd; | 15 | extern pmd_t *top_pmd; |
14 | extern int sysctl_overcommit_memory; | 16 | extern int sysctl_overcommit_memory; |
@@ -34,6 +36,9 @@ struct mem_type { | |||
34 | const struct mem_type *get_mem_type(unsigned int type); | 36 | const struct mem_type *get_mem_type(unsigned int type); |
35 | 37 | ||
36 | extern void __flush_dcache_page(struct address_space *, struct page *); | 38 | extern void __flush_dcache_page(struct address_space *, struct page *); |
39 | extern void hook_fault_code(int nr, int (*fn) | ||
40 | (unsigned long, unsigned int, struct pt_regs *), | ||
41 | int sig, int code, const char *name); | ||
37 | 42 | ||
38 | void __init bootmem_init(void); | 43 | void __init bootmem_init(void); |
39 | void uc32_mm_memblock_reserve(void); | 44 | void uc32_mm_memblock_reserve(void); |
diff --git a/arch/x86/ia32/ia32_aout.c b/arch/x86/ia32/ia32_aout.c index 4c2e59a420b9..d511d951a052 100644 --- a/arch/x86/ia32/ia32_aout.c +++ b/arch/x86/ia32/ia32_aout.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include <linux/init.h> | 26 | #include <linux/init.h> |
27 | #include <linux/jiffies.h> | 27 | #include <linux/jiffies.h> |
28 | 28 | ||
29 | #include <asm/system.h> | ||
30 | #include <asm/uaccess.h> | 29 | #include <asm/uaccess.h> |
31 | #include <asm/pgalloc.h> | 30 | #include <asm/pgalloc.h> |
32 | #include <asm/cacheflush.h> | 31 | #include <asm/cacheflush.h> |
diff --git a/arch/x86/include/asm/apic.h b/arch/x86/include/asm/apic.h index a9371c91718c..4b2caeefe1a2 100644 --- a/arch/x86/include/asm/apic.h +++ b/arch/x86/include/asm/apic.h | |||
@@ -11,7 +11,6 @@ | |||
11 | #include <linux/atomic.h> | 11 | #include <linux/atomic.h> |
12 | #include <asm/fixmap.h> | 12 | #include <asm/fixmap.h> |
13 | #include <asm/mpspec.h> | 13 | #include <asm/mpspec.h> |
14 | #include <asm/system.h> | ||
15 | #include <asm/msr.h> | 14 | #include <asm/msr.h> |
16 | 15 | ||
17 | #define ARCH_APICTIMER_STOPS_ON_C3 1 | 16 | #define ARCH_APICTIMER_STOPS_ON_C3 1 |
diff --git a/arch/x86/include/asm/auxvec.h b/arch/x86/include/asm/auxvec.h index 1316b4c35425..77203ac352de 100644 --- a/arch/x86/include/asm/auxvec.h +++ b/arch/x86/include/asm/auxvec.h | |||
@@ -9,4 +9,11 @@ | |||
9 | #endif | 9 | #endif |
10 | #define AT_SYSINFO_EHDR 33 | 10 | #define AT_SYSINFO_EHDR 33 |
11 | 11 | ||
12 | /* entries in ARCH_DLINFO: */ | ||
13 | #if defined(CONFIG_IA32_EMULATION) || !defined(CONFIG_X86_64) | ||
14 | # define AT_VECTOR_SIZE_ARCH 2 | ||
15 | #else /* else it's non-compat x86-64 */ | ||
16 | # define AT_VECTOR_SIZE_ARCH 1 | ||
17 | #endif | ||
18 | |||
12 | #endif /* _ASM_X86_AUXVEC_H */ | 19 | #endif /* _ASM_X86_AUXVEC_H */ |
diff --git a/arch/x86/include/asm/barrier.h b/arch/x86/include/asm/barrier.h new file mode 100644 index 000000000000..c6cd358a1eec --- /dev/null +++ b/arch/x86/include/asm/barrier.h | |||
@@ -0,0 +1,116 @@ | |||
1 | #ifndef _ASM_X86_BARRIER_H | ||
2 | #define _ASM_X86_BARRIER_H | ||
3 | |||
4 | #include <asm/alternative.h> | ||
5 | #include <asm/nops.h> | ||
6 | |||
7 | /* | ||
8 | * Force strict CPU ordering. | ||
9 | * And yes, this is required on UP too when we're talking | ||
10 | * to devices. | ||
11 | */ | ||
12 | |||
13 | #ifdef CONFIG_X86_32 | ||
14 | /* | ||
15 | * Some non-Intel clones support out of order store. wmb() ceases to be a | ||
16 | * nop for these. | ||
17 | */ | ||
18 | #define mb() alternative("lock; addl $0,0(%%esp)", "mfence", X86_FEATURE_XMM2) | ||
19 | #define rmb() alternative("lock; addl $0,0(%%esp)", "lfence", X86_FEATURE_XMM2) | ||
20 | #define wmb() alternative("lock; addl $0,0(%%esp)", "sfence", X86_FEATURE_XMM) | ||
21 | #else | ||
22 | #define mb() asm volatile("mfence":::"memory") | ||
23 | #define rmb() asm volatile("lfence":::"memory") | ||
24 | #define wmb() asm volatile("sfence" ::: "memory") | ||
25 | #endif | ||
26 | |||
27 | /** | ||
28 | * read_barrier_depends - Flush all pending reads that subsequents reads | ||
29 | * depend on. | ||
30 | * | ||
31 | * No data-dependent reads from memory-like regions are ever reordered | ||
32 | * over this barrier. All reads preceding this primitive are guaranteed | ||
33 | * to access memory (but not necessarily other CPUs' caches) before any | ||
34 | * reads following this primitive that depend on the data return by | ||
35 | * any of the preceding reads. This primitive is much lighter weight than | ||
36 | * rmb() on most CPUs, and is never heavier weight than is | ||
37 | * rmb(). | ||
38 | * | ||
39 | * These ordering constraints are respected by both the local CPU | ||
40 | * and the compiler. | ||
41 | * | ||
42 | * Ordering is not guaranteed by anything other than these primitives, | ||
43 | * not even by data dependencies. See the documentation for | ||
44 | * memory_barrier() for examples and URLs to more information. | ||
45 | * | ||
46 | * For example, the following code would force ordering (the initial | ||
47 | * value of "a" is zero, "b" is one, and "p" is "&a"): | ||
48 | * | ||
49 | * <programlisting> | ||
50 | * CPU 0 CPU 1 | ||
51 | * | ||
52 | * b = 2; | ||
53 | * memory_barrier(); | ||
54 | * p = &b; q = p; | ||
55 | * read_barrier_depends(); | ||
56 | * d = *q; | ||
57 | * </programlisting> | ||
58 | * | ||
59 | * because the read of "*q" depends on the read of "p" and these | ||
60 | * two reads are separated by a read_barrier_depends(). However, | ||
61 | * the following code, with the same initial values for "a" and "b": | ||
62 | * | ||
63 | * <programlisting> | ||
64 | * CPU 0 CPU 1 | ||
65 | * | ||
66 | * a = 2; | ||
67 | * memory_barrier(); | ||
68 | * b = 3; y = b; | ||
69 | * read_barrier_depends(); | ||
70 | * x = a; | ||
71 | * </programlisting> | ||
72 | * | ||
73 | * does not enforce ordering, since there is no data dependency between | ||
74 | * the read of "a" and the read of "b". Therefore, on some CPUs, such | ||
75 | * as Alpha, "y" could be set to 3 and "x" to 0. Use rmb() | ||
76 | * in cases like this where there are no data dependencies. | ||
77 | **/ | ||
78 | |||
79 | #define read_barrier_depends() do { } while (0) | ||
80 | |||
81 | #ifdef CONFIG_SMP | ||
82 | #define smp_mb() mb() | ||
83 | #ifdef CONFIG_X86_PPRO_FENCE | ||
84 | # define smp_rmb() rmb() | ||
85 | #else | ||
86 | # define smp_rmb() barrier() | ||
87 | #endif | ||
88 | #ifdef CONFIG_X86_OOSTORE | ||
89 | # define smp_wmb() wmb() | ||
90 | #else | ||
91 | # define smp_wmb() barrier() | ||
92 | #endif | ||
93 | #define smp_read_barrier_depends() read_barrier_depends() | ||
94 | #define set_mb(var, value) do { (void)xchg(&var, value); } while (0) | ||
95 | #else | ||
96 | #define smp_mb() barrier() | ||
97 | #define smp_rmb() barrier() | ||
98 | #define smp_wmb() barrier() | ||
99 | #define smp_read_barrier_depends() do { } while (0) | ||
100 | #define set_mb(var, value) do { var = value; barrier(); } while (0) | ||
101 | #endif | ||
102 | |||
103 | /* | ||
104 | * Stop RDTSC speculation. This is needed when you need to use RDTSC | ||
105 | * (or get_cycles or vread that possibly accesses the TSC) in a defined | ||
106 | * code region. | ||
107 | * | ||
108 | * (Could use an alternative three way for this if there was one.) | ||
109 | */ | ||
110 | static __always_inline void rdtsc_barrier(void) | ||
111 | { | ||
112 | alternative(ASM_NOP3, "mfence", X86_FEATURE_MFENCE_RDTSC); | ||
113 | alternative(ASM_NOP3, "lfence", X86_FEATURE_LFENCE_RDTSC); | ||
114 | } | ||
115 | |||
116 | #endif /* _ASM_X86_BARRIER_H */ | ||
diff --git a/arch/x86/include/asm/bug.h b/arch/x86/include/asm/bug.h index f654d1bb17fb..11e1152222d0 100644 --- a/arch/x86/include/asm/bug.h +++ b/arch/x86/include/asm/bug.h | |||
@@ -36,4 +36,8 @@ do { \ | |||
36 | #endif /* !CONFIG_BUG */ | 36 | #endif /* !CONFIG_BUG */ |
37 | 37 | ||
38 | #include <asm-generic/bug.h> | 38 | #include <asm-generic/bug.h> |
39 | |||
40 | |||
41 | extern void show_regs_common(void); | ||
42 | |||
39 | #endif /* _ASM_X86_BUG_H */ | 43 | #endif /* _ASM_X86_BUG_H */ |
diff --git a/arch/x86/include/asm/cacheflush.h b/arch/x86/include/asm/cacheflush.h index 4e12668711e5..9863ee3747da 100644 --- a/arch/x86/include/asm/cacheflush.h +++ b/arch/x86/include/asm/cacheflush.h | |||
@@ -3,6 +3,7 @@ | |||
3 | 3 | ||
4 | /* Caches aren't brain-dead on the intel. */ | 4 | /* Caches aren't brain-dead on the intel. */ |
5 | #include <asm-generic/cacheflush.h> | 5 | #include <asm-generic/cacheflush.h> |
6 | #include <asm/special_insns.h> | ||
6 | 7 | ||
7 | #ifdef CONFIG_X86_PAT | 8 | #ifdef CONFIG_X86_PAT |
8 | /* | 9 | /* |
diff --git a/arch/x86/include/asm/elf.h b/arch/x86/include/asm/elf.h index 5f962df30d0f..f27f79abe021 100644 --- a/arch/x86/include/asm/elf.h +++ b/arch/x86/include/asm/elf.h | |||
@@ -84,7 +84,6 @@ extern unsigned int vdso_enabled; | |||
84 | (((x)->e_machine == EM_386) || ((x)->e_machine == EM_486)) | 84 | (((x)->e_machine == EM_386) || ((x)->e_machine == EM_486)) |
85 | 85 | ||
86 | #include <asm/processor.h> | 86 | #include <asm/processor.h> |
87 | #include <asm/system.h> | ||
88 | 87 | ||
89 | #ifdef CONFIG_X86_32 | 88 | #ifdef CONFIG_X86_32 |
90 | #include <asm/desc.h> | 89 | #include <asm/desc.h> |
diff --git a/arch/x86/include/asm/exec.h b/arch/x86/include/asm/exec.h new file mode 100644 index 000000000000..54c2e1db274a --- /dev/null +++ b/arch/x86/include/asm/exec.h | |||
@@ -0,0 +1 @@ | |||
/* define arch_align_stack() here */ | |||
diff --git a/arch/x86/include/asm/futex.h b/arch/x86/include/asm/futex.h index d09bb03653f0..71ecbcba1a4e 100644 --- a/arch/x86/include/asm/futex.h +++ b/arch/x86/include/asm/futex.h | |||
@@ -9,7 +9,6 @@ | |||
9 | #include <asm/asm.h> | 9 | #include <asm/asm.h> |
10 | #include <asm/errno.h> | 10 | #include <asm/errno.h> |
11 | #include <asm/processor.h> | 11 | #include <asm/processor.h> |
12 | #include <asm/system.h> | ||
13 | 12 | ||
14 | #define __futex_atomic_op1(insn, ret, oldval, uaddr, oparg) \ | 13 | #define __futex_atomic_op1(insn, ret, oldval, uaddr, oparg) \ |
15 | asm volatile("1:\t" insn "\n" \ | 14 | asm volatile("1:\t" insn "\n" \ |
diff --git a/arch/x86/include/asm/i387.h b/arch/x86/include/asm/i387.h index 7ce0798b1b26..257d9cca214f 100644 --- a/arch/x86/include/asm/i387.h +++ b/arch/x86/include/asm/i387.h | |||
@@ -14,7 +14,6 @@ | |||
14 | 14 | ||
15 | #include <linux/sched.h> | 15 | #include <linux/sched.h> |
16 | #include <linux/hardirq.h> | 16 | #include <linux/hardirq.h> |
17 | #include <asm/system.h> | ||
18 | 17 | ||
19 | struct pt_regs; | 18 | struct pt_regs; |
20 | struct user_i387_struct; | 19 | struct user_i387_struct; |
diff --git a/arch/x86/include/asm/local.h b/arch/x86/include/asm/local.h index 9cdae5d47e8f..c8bed0da434a 100644 --- a/arch/x86/include/asm/local.h +++ b/arch/x86/include/asm/local.h | |||
@@ -3,7 +3,6 @@ | |||
3 | 3 | ||
4 | #include <linux/percpu.h> | 4 | #include <linux/percpu.h> |
5 | 5 | ||
6 | #include <asm/system.h> | ||
7 | #include <linux/atomic.h> | 6 | #include <linux/atomic.h> |
8 | #include <asm/asm.h> | 7 | #include <asm/asm.h> |
9 | 8 | ||
diff --git a/arch/x86/include/asm/mc146818rtc.h b/arch/x86/include/asm/mc146818rtc.h index 0e8e85bb7c51..d354fb781c57 100644 --- a/arch/x86/include/asm/mc146818rtc.h +++ b/arch/x86/include/asm/mc146818rtc.h | |||
@@ -5,7 +5,6 @@ | |||
5 | #define _ASM_X86_MC146818RTC_H | 5 | #define _ASM_X86_MC146818RTC_H |
6 | 6 | ||
7 | #include <asm/io.h> | 7 | #include <asm/io.h> |
8 | #include <asm/system.h> | ||
9 | #include <asm/processor.h> | 8 | #include <asm/processor.h> |
10 | #include <linux/mc146818rtc.h> | 9 | #include <linux/mc146818rtc.h> |
11 | 10 | ||
diff --git a/arch/x86/include/asm/page_types.h b/arch/x86/include/asm/page_types.h index bce688d54c12..e21fdd10479f 100644 --- a/arch/x86/include/asm/page_types.h +++ b/arch/x86/include/asm/page_types.h | |||
@@ -55,7 +55,6 @@ extern unsigned long init_memory_mapping(unsigned long start, | |||
55 | unsigned long end); | 55 | unsigned long end); |
56 | 56 | ||
57 | extern void initmem_init(void); | 57 | extern void initmem_init(void); |
58 | extern void free_initmem(void); | ||
59 | 58 | ||
60 | #endif /* !__ASSEMBLY__ */ | 59 | #endif /* !__ASSEMBLY__ */ |
61 | 60 | ||
diff --git a/arch/x86/include/asm/processor.h b/arch/x86/include/asm/processor.h index 5533b30cac07..a19542c1685e 100644 --- a/arch/x86/include/asm/processor.h +++ b/arch/x86/include/asm/processor.h | |||
@@ -14,13 +14,13 @@ struct mm_struct; | |||
14 | #include <asm/sigcontext.h> | 14 | #include <asm/sigcontext.h> |
15 | #include <asm/current.h> | 15 | #include <asm/current.h> |
16 | #include <asm/cpufeature.h> | 16 | #include <asm/cpufeature.h> |
17 | #include <asm/system.h> | ||
18 | #include <asm/page.h> | 17 | #include <asm/page.h> |
19 | #include <asm/pgtable_types.h> | 18 | #include <asm/pgtable_types.h> |
20 | #include <asm/percpu.h> | 19 | #include <asm/percpu.h> |
21 | #include <asm/msr.h> | 20 | #include <asm/msr.h> |
22 | #include <asm/desc_defs.h> | 21 | #include <asm/desc_defs.h> |
23 | #include <asm/nops.h> | 22 | #include <asm/nops.h> |
23 | #include <asm/special_insns.h> | ||
24 | 24 | ||
25 | #include <linux/personality.h> | 25 | #include <linux/personality.h> |
26 | #include <linux/cpumask.h> | 26 | #include <linux/cpumask.h> |
@@ -29,6 +29,15 @@ struct mm_struct; | |||
29 | #include <linux/math64.h> | 29 | #include <linux/math64.h> |
30 | #include <linux/init.h> | 30 | #include <linux/init.h> |
31 | #include <linux/err.h> | 31 | #include <linux/err.h> |
32 | #include <linux/irqflags.h> | ||
33 | |||
34 | /* | ||
35 | * We handle most unaligned accesses in hardware. On the other hand | ||
36 | * unaligned DMA can be quite expensive on some Nehalem processors. | ||
37 | * | ||
38 | * Based on this we disable the IP header alignment in network drivers. | ||
39 | */ | ||
40 | #define NET_IP_ALIGN 0 | ||
32 | 41 | ||
33 | #define HBP_NUM 4 | 42 | #define HBP_NUM 4 |
34 | /* | 43 | /* |
@@ -959,4 +968,24 @@ extern bool cpu_has_amd_erratum(const int *); | |||
959 | #define cpu_has_amd_erratum(x) (false) | 968 | #define cpu_has_amd_erratum(x) (false) |
960 | #endif /* CONFIG_CPU_SUP_AMD */ | 969 | #endif /* CONFIG_CPU_SUP_AMD */ |
961 | 970 | ||
971 | #ifdef CONFIG_X86_32 | ||
972 | /* | ||
973 | * disable hlt during certain critical i/o operations | ||
974 | */ | ||
975 | #define HAVE_DISABLE_HLT | ||
976 | #endif | ||
977 | |||
978 | void disable_hlt(void); | ||
979 | void enable_hlt(void); | ||
980 | |||
981 | void cpu_idle_wait(void); | ||
982 | |||
983 | extern unsigned long arch_align_stack(unsigned long sp); | ||
984 | extern void free_init_pages(char *what, unsigned long begin, unsigned long end); | ||
985 | |||
986 | void default_idle(void); | ||
987 | bool set_pm_idle_to_default(void); | ||
988 | |||
989 | void stop_this_cpu(void *dummy); | ||
990 | |||
962 | #endif /* _ASM_X86_PROCESSOR_H */ | 991 | #endif /* _ASM_X86_PROCESSOR_H */ |
diff --git a/arch/x86/include/asm/segment.h b/arch/x86/include/asm/segment.h index 5e641715c3fe..165466233ab0 100644 --- a/arch/x86/include/asm/segment.h +++ b/arch/x86/include/asm/segment.h | |||
@@ -212,7 +212,61 @@ | |||
212 | #ifdef __KERNEL__ | 212 | #ifdef __KERNEL__ |
213 | #ifndef __ASSEMBLY__ | 213 | #ifndef __ASSEMBLY__ |
214 | extern const char early_idt_handlers[NUM_EXCEPTION_VECTORS][10]; | 214 | extern const char early_idt_handlers[NUM_EXCEPTION_VECTORS][10]; |
215 | #endif | 215 | |
216 | #endif | 216 | /* |
217 | * Load a segment. Fall back on loading the zero | ||
218 | * segment if something goes wrong.. | ||
219 | */ | ||
220 | #define loadsegment(seg, value) \ | ||
221 | do { \ | ||
222 | unsigned short __val = (value); \ | ||
223 | \ | ||
224 | asm volatile(" \n" \ | ||
225 | "1: movl %k0,%%" #seg " \n" \ | ||
226 | \ | ||
227 | ".section .fixup,\"ax\" \n" \ | ||
228 | "2: xorl %k0,%k0 \n" \ | ||
229 | " jmp 1b \n" \ | ||
230 | ".previous \n" \ | ||
231 | \ | ||
232 | _ASM_EXTABLE(1b, 2b) \ | ||
233 | \ | ||
234 | : "+r" (__val) : : "memory"); \ | ||
235 | } while (0) | ||
236 | |||
237 | /* | ||
238 | * Save a segment register away | ||
239 | */ | ||
240 | #define savesegment(seg, value) \ | ||
241 | asm("mov %%" #seg ",%0":"=r" (value) : : "memory") | ||
242 | |||
243 | /* | ||
244 | * x86_32 user gs accessors. | ||
245 | */ | ||
246 | #ifdef CONFIG_X86_32 | ||
247 | #ifdef CONFIG_X86_32_LAZY_GS | ||
248 | #define get_user_gs(regs) (u16)({unsigned long v; savesegment(gs, v); v;}) | ||
249 | #define set_user_gs(regs, v) loadsegment(gs, (unsigned long)(v)) | ||
250 | #define task_user_gs(tsk) ((tsk)->thread.gs) | ||
251 | #define lazy_save_gs(v) savesegment(gs, (v)) | ||
252 | #define lazy_load_gs(v) loadsegment(gs, (v)) | ||
253 | #else /* X86_32_LAZY_GS */ | ||
254 | #define get_user_gs(regs) (u16)((regs)->gs) | ||
255 | #define set_user_gs(regs, v) do { (regs)->gs = (v); } while (0) | ||
256 | #define task_user_gs(tsk) (task_pt_regs(tsk)->gs) | ||
257 | #define lazy_save_gs(v) do { } while (0) | ||
258 | #define lazy_load_gs(v) do { } while (0) | ||
259 | #endif /* X86_32_LAZY_GS */ | ||
260 | #endif /* X86_32 */ | ||
261 | |||
262 | static inline unsigned long get_limit(unsigned long segment) | ||
263 | { | ||
264 | unsigned long __limit; | ||
265 | asm("lsll %1,%0" : "=r" (__limit) : "r" (segment)); | ||
266 | return __limit + 1; | ||
267 | } | ||
268 | |||
269 | #endif /* !__ASSEMBLY__ */ | ||
270 | #endif /* __KERNEL__ */ | ||
217 | 271 | ||
218 | #endif /* _ASM_X86_SEGMENT_H */ | 272 | #endif /* _ASM_X86_SEGMENT_H */ |
diff --git a/arch/x86/include/asm/special_insns.h b/arch/x86/include/asm/special_insns.h new file mode 100644 index 000000000000..41fc93a2e225 --- /dev/null +++ b/arch/x86/include/asm/special_insns.h | |||
@@ -0,0 +1,199 @@ | |||
1 | #ifndef _ASM_X86_SPECIAL_INSNS_H | ||
2 | #define _ASM_X86_SPECIAL_INSNS_H | ||
3 | |||
4 | |||
5 | #ifdef __KERNEL__ | ||
6 | |||
7 | static inline void native_clts(void) | ||
8 | { | ||
9 | asm volatile("clts"); | ||
10 | } | ||
11 | |||
12 | /* | ||
13 | * Volatile isn't enough to prevent the compiler from reordering the | ||
14 | * read/write functions for the control registers and messing everything up. | ||
15 | * A memory clobber would solve the problem, but would prevent reordering of | ||
16 | * all loads stores around it, which can hurt performance. Solution is to | ||
17 | * use a variable and mimic reads and writes to it to enforce serialization | ||
18 | */ | ||
19 | static unsigned long __force_order; | ||
20 | |||
21 | static inline unsigned long native_read_cr0(void) | ||
22 | { | ||
23 | unsigned long val; | ||
24 | asm volatile("mov %%cr0,%0\n\t" : "=r" (val), "=m" (__force_order)); | ||
25 | return val; | ||
26 | } | ||
27 | |||
28 | static inline void native_write_cr0(unsigned long val) | ||
29 | { | ||
30 | asm volatile("mov %0,%%cr0": : "r" (val), "m" (__force_order)); | ||
31 | } | ||
32 | |||
33 | static inline unsigned long native_read_cr2(void) | ||
34 | { | ||
35 | unsigned long val; | ||
36 | asm volatile("mov %%cr2,%0\n\t" : "=r" (val), "=m" (__force_order)); | ||
37 | return val; | ||
38 | } | ||
39 | |||
40 | static inline void native_write_cr2(unsigned long val) | ||
41 | { | ||
42 | asm volatile("mov %0,%%cr2": : "r" (val), "m" (__force_order)); | ||
43 | } | ||
44 | |||
45 | static inline unsigned long native_read_cr3(void) | ||
46 | { | ||
47 | unsigned long val; | ||
48 | asm volatile("mov %%cr3,%0\n\t" : "=r" (val), "=m" (__force_order)); | ||
49 | return val; | ||
50 | } | ||
51 | |||
52 | static inline void native_write_cr3(unsigned long val) | ||
53 | { | ||
54 | asm volatile("mov %0,%%cr3": : "r" (val), "m" (__force_order)); | ||
55 | } | ||
56 | |||
57 | static inline unsigned long native_read_cr4(void) | ||
58 | { | ||
59 | unsigned long val; | ||
60 | asm volatile("mov %%cr4,%0\n\t" : "=r" (val), "=m" (__force_order)); | ||
61 | return val; | ||
62 | } | ||
63 | |||
64 | static inline unsigned long native_read_cr4_safe(void) | ||
65 | { | ||
66 | unsigned long val; | ||
67 | /* This could fault if %cr4 does not exist. In x86_64, a cr4 always | ||
68 | * exists, so it will never fail. */ | ||
69 | #ifdef CONFIG_X86_32 | ||
70 | asm volatile("1: mov %%cr4, %0\n" | ||
71 | "2:\n" | ||
72 | _ASM_EXTABLE(1b, 2b) | ||
73 | : "=r" (val), "=m" (__force_order) : "0" (0)); | ||
74 | #else | ||
75 | val = native_read_cr4(); | ||
76 | #endif | ||
77 | return val; | ||
78 | } | ||
79 | |||
80 | static inline void native_write_cr4(unsigned long val) | ||
81 | { | ||
82 | asm volatile("mov %0,%%cr4": : "r" (val), "m" (__force_order)); | ||
83 | } | ||
84 | |||
85 | #ifdef CONFIG_X86_64 | ||
86 | static inline unsigned long native_read_cr8(void) | ||
87 | { | ||
88 | unsigned long cr8; | ||
89 | asm volatile("movq %%cr8,%0" : "=r" (cr8)); | ||
90 | return cr8; | ||
91 | } | ||
92 | |||
93 | static inline void native_write_cr8(unsigned long val) | ||
94 | { | ||
95 | asm volatile("movq %0,%%cr8" :: "r" (val) : "memory"); | ||
96 | } | ||
97 | #endif | ||
98 | |||
99 | static inline void native_wbinvd(void) | ||
100 | { | ||
101 | asm volatile("wbinvd": : :"memory"); | ||
102 | } | ||
103 | |||
104 | extern void native_load_gs_index(unsigned); | ||
105 | |||
106 | #ifdef CONFIG_PARAVIRT | ||
107 | #include <asm/paravirt.h> | ||
108 | #else | ||
109 | |||
110 | static inline unsigned long read_cr0(void) | ||
111 | { | ||
112 | return native_read_cr0(); | ||
113 | } | ||
114 | |||
115 | static inline void write_cr0(unsigned long x) | ||
116 | { | ||
117 | native_write_cr0(x); | ||
118 | } | ||
119 | |||
120 | static inline unsigned long read_cr2(void) | ||
121 | { | ||
122 | return native_read_cr2(); | ||
123 | } | ||
124 | |||
125 | static inline void write_cr2(unsigned long x) | ||
126 | { | ||
127 | native_write_cr2(x); | ||
128 | } | ||
129 | |||
130 | static inline unsigned long read_cr3(void) | ||
131 | { | ||
132 | return native_read_cr3(); | ||
133 | } | ||
134 | |||
135 | static inline void write_cr3(unsigned long x) | ||
136 | { | ||
137 | native_write_cr3(x); | ||
138 | } | ||
139 | |||
140 | static inline unsigned long read_cr4(void) | ||
141 | { | ||
142 | return native_read_cr4(); | ||
143 | } | ||
144 | |||
145 | static inline unsigned long read_cr4_safe(void) | ||
146 | { | ||
147 | return native_read_cr4_safe(); | ||
148 | } | ||
149 | |||
150 | static inline void write_cr4(unsigned long x) | ||
151 | { | ||
152 | native_write_cr4(x); | ||
153 | } | ||
154 | |||
155 | static inline void wbinvd(void) | ||
156 | { | ||
157 | native_wbinvd(); | ||
158 | } | ||
159 | |||
160 | #ifdef CONFIG_X86_64 | ||
161 | |||
162 | static inline unsigned long read_cr8(void) | ||
163 | { | ||
164 | return native_read_cr8(); | ||
165 | } | ||
166 | |||
167 | static inline void write_cr8(unsigned long x) | ||
168 | { | ||
169 | native_write_cr8(x); | ||
170 | } | ||
171 | |||
172 | static inline void load_gs_index(unsigned selector) | ||
173 | { | ||
174 | native_load_gs_index(selector); | ||
175 | } | ||
176 | |||
177 | #endif | ||
178 | |||
179 | /* Clear the 'TS' bit */ | ||
180 | static inline void clts(void) | ||
181 | { | ||
182 | native_clts(); | ||
183 | } | ||
184 | |||
185 | #endif/* CONFIG_PARAVIRT */ | ||
186 | |||
187 | #define stts() write_cr0(read_cr0() | X86_CR0_TS) | ||
188 | |||
189 | static inline void clflush(volatile void *__p) | ||
190 | { | ||
191 | asm volatile("clflush %0" : "+m" (*(volatile char __force *)__p)); | ||
192 | } | ||
193 | |||
194 | #define nop() asm volatile ("nop") | ||
195 | |||
196 | |||
197 | #endif /* __KERNEL__ */ | ||
198 | |||
199 | #endif /* _ASM_X86_SPECIAL_INSNS_H */ | ||
diff --git a/arch/x86/include/asm/stackprotector.h b/arch/x86/include/asm/stackprotector.h index 157517763565..b5d9533d2c38 100644 --- a/arch/x86/include/asm/stackprotector.h +++ b/arch/x86/include/asm/stackprotector.h | |||
@@ -38,7 +38,6 @@ | |||
38 | #include <asm/tsc.h> | 38 | #include <asm/tsc.h> |
39 | #include <asm/processor.h> | 39 | #include <asm/processor.h> |
40 | #include <asm/percpu.h> | 40 | #include <asm/percpu.h> |
41 | #include <asm/system.h> | ||
42 | #include <asm/desc.h> | 41 | #include <asm/desc.h> |
43 | #include <linux/random.h> | 42 | #include <linux/random.h> |
44 | 43 | ||
diff --git a/arch/x86/include/asm/switch_to.h b/arch/x86/include/asm/switch_to.h new file mode 100644 index 000000000000..4ec45b3abba1 --- /dev/null +++ b/arch/x86/include/asm/switch_to.h | |||
@@ -0,0 +1,129 @@ | |||
1 | #ifndef _ASM_X86_SWITCH_TO_H | ||
2 | #define _ASM_X86_SWITCH_TO_H | ||
3 | |||
4 | struct task_struct; /* one of the stranger aspects of C forward declarations */ | ||
5 | struct task_struct *__switch_to(struct task_struct *prev, | ||
6 | struct task_struct *next); | ||
7 | struct tss_struct; | ||
8 | void __switch_to_xtra(struct task_struct *prev_p, struct task_struct *next_p, | ||
9 | struct tss_struct *tss); | ||
10 | |||
11 | #ifdef CONFIG_X86_32 | ||
12 | |||
13 | #ifdef CONFIG_CC_STACKPROTECTOR | ||
14 | #define __switch_canary \ | ||
15 | "movl %P[task_canary](%[next]), %%ebx\n\t" \ | ||
16 | "movl %%ebx, "__percpu_arg([stack_canary])"\n\t" | ||
17 | #define __switch_canary_oparam \ | ||
18 | , [stack_canary] "=m" (stack_canary.canary) | ||
19 | #define __switch_canary_iparam \ | ||
20 | , [task_canary] "i" (offsetof(struct task_struct, stack_canary)) | ||
21 | #else /* CC_STACKPROTECTOR */ | ||
22 | #define __switch_canary | ||
23 | #define __switch_canary_oparam | ||
24 | #define __switch_canary_iparam | ||
25 | #endif /* CC_STACKPROTECTOR */ | ||
26 | |||
27 | /* | ||
28 | * Saving eflags is important. It switches not only IOPL between tasks, | ||
29 | * it also protects other tasks from NT leaking through sysenter etc. | ||
30 | */ | ||
31 | #define switch_to(prev, next, last) \ | ||
32 | do { \ | ||
33 | /* \ | ||
34 | * Context-switching clobbers all registers, so we clobber \ | ||
35 | * them explicitly, via unused output variables. \ | ||
36 | * (EAX and EBP is not listed because EBP is saved/restored \ | ||
37 | * explicitly for wchan access and EAX is the return value of \ | ||
38 | * __switch_to()) \ | ||
39 | */ \ | ||
40 | unsigned long ebx, ecx, edx, esi, edi; \ | ||
41 | \ | ||
42 | asm volatile("pushfl\n\t" /* save flags */ \ | ||
43 | "pushl %%ebp\n\t" /* save EBP */ \ | ||
44 | "movl %%esp,%[prev_sp]\n\t" /* save ESP */ \ | ||
45 | "movl %[next_sp],%%esp\n\t" /* restore ESP */ \ | ||
46 | "movl $1f,%[prev_ip]\n\t" /* save EIP */ \ | ||
47 | "pushl %[next_ip]\n\t" /* restore EIP */ \ | ||
48 | __switch_canary \ | ||
49 | "jmp __switch_to\n" /* regparm call */ \ | ||
50 | "1:\t" \ | ||
51 | "popl %%ebp\n\t" /* restore EBP */ \ | ||
52 | "popfl\n" /* restore flags */ \ | ||
53 | \ | ||
54 | /* output parameters */ \ | ||
55 | : [prev_sp] "=m" (prev->thread.sp), \ | ||
56 | [prev_ip] "=m" (prev->thread.ip), \ | ||
57 | "=a" (last), \ | ||
58 | \ | ||
59 | /* clobbered output registers: */ \ | ||
60 | "=b" (ebx), "=c" (ecx), "=d" (edx), \ | ||
61 | "=S" (esi), "=D" (edi) \ | ||
62 | \ | ||
63 | __switch_canary_oparam \ | ||
64 | \ | ||
65 | /* input parameters: */ \ | ||
66 | : [next_sp] "m" (next->thread.sp), \ | ||
67 | [next_ip] "m" (next->thread.ip), \ | ||
68 | \ | ||
69 | /* regparm parameters for __switch_to(): */ \ | ||
70 | [prev] "a" (prev), \ | ||
71 | [next] "d" (next) \ | ||
72 | \ | ||
73 | __switch_canary_iparam \ | ||
74 | \ | ||
75 | : /* reloaded segment registers */ \ | ||
76 | "memory"); \ | ||
77 | } while (0) | ||
78 | |||
79 | #else /* CONFIG_X86_32 */ | ||
80 | |||
81 | /* frame pointer must be last for get_wchan */ | ||
82 | #define SAVE_CONTEXT "pushf ; pushq %%rbp ; movq %%rsi,%%rbp\n\t" | ||
83 | #define RESTORE_CONTEXT "movq %%rbp,%%rsi ; popq %%rbp ; popf\t" | ||
84 | |||
85 | #define __EXTRA_CLOBBER \ | ||
86 | , "rcx", "rbx", "rdx", "r8", "r9", "r10", "r11", \ | ||
87 | "r12", "r13", "r14", "r15" | ||
88 | |||
89 | #ifdef CONFIG_CC_STACKPROTECTOR | ||
90 | #define __switch_canary \ | ||
91 | "movq %P[task_canary](%%rsi),%%r8\n\t" \ | ||
92 | "movq %%r8,"__percpu_arg([gs_canary])"\n\t" | ||
93 | #define __switch_canary_oparam \ | ||
94 | , [gs_canary] "=m" (irq_stack_union.stack_canary) | ||
95 | #define __switch_canary_iparam \ | ||
96 | , [task_canary] "i" (offsetof(struct task_struct, stack_canary)) | ||
97 | #else /* CC_STACKPROTECTOR */ | ||
98 | #define __switch_canary | ||
99 | #define __switch_canary_oparam | ||
100 | #define __switch_canary_iparam | ||
101 | #endif /* CC_STACKPROTECTOR */ | ||
102 | |||
103 | /* Save restore flags to clear handle leaking NT */ | ||
104 | #define switch_to(prev, next, last) \ | ||
105 | asm volatile(SAVE_CONTEXT \ | ||
106 | "movq %%rsp,%P[threadrsp](%[prev])\n\t" /* save RSP */ \ | ||
107 | "movq %P[threadrsp](%[next]),%%rsp\n\t" /* restore RSP */ \ | ||
108 | "call __switch_to\n\t" \ | ||
109 | "movq "__percpu_arg([current_task])",%%rsi\n\t" \ | ||
110 | __switch_canary \ | ||
111 | "movq %P[thread_info](%%rsi),%%r8\n\t" \ | ||
112 | "movq %%rax,%%rdi\n\t" \ | ||
113 | "testl %[_tif_fork],%P[ti_flags](%%r8)\n\t" \ | ||
114 | "jnz ret_from_fork\n\t" \ | ||
115 | RESTORE_CONTEXT \ | ||
116 | : "=a" (last) \ | ||
117 | __switch_canary_oparam \ | ||
118 | : [next] "S" (next), [prev] "D" (prev), \ | ||
119 | [threadrsp] "i" (offsetof(struct task_struct, thread.sp)), \ | ||
120 | [ti_flags] "i" (offsetof(struct thread_info, flags)), \ | ||
121 | [_tif_fork] "i" (_TIF_FORK), \ | ||
122 | [thread_info] "i" (offsetof(struct task_struct, stack)), \ | ||
123 | [current_task] "m" (current_task) \ | ||
124 | __switch_canary_iparam \ | ||
125 | : "memory", "cc" __EXTRA_CLOBBER) | ||
126 | |||
127 | #endif /* CONFIG_X86_32 */ | ||
128 | |||
129 | #endif /* _ASM_X86_SWITCH_TO_H */ | ||
diff --git a/arch/x86/include/asm/system.h b/arch/x86/include/asm/system.h deleted file mode 100644 index 2d2f01ce6dcb..000000000000 --- a/arch/x86/include/asm/system.h +++ /dev/null | |||
@@ -1,523 +0,0 @@ | |||
1 | #ifndef _ASM_X86_SYSTEM_H | ||
2 | #define _ASM_X86_SYSTEM_H | ||
3 | |||
4 | #include <asm/asm.h> | ||
5 | #include <asm/segment.h> | ||
6 | #include <asm/cpufeature.h> | ||
7 | #include <asm/cmpxchg.h> | ||
8 | #include <asm/nops.h> | ||
9 | |||
10 | #include <linux/kernel.h> | ||
11 | #include <linux/irqflags.h> | ||
12 | |||
13 | /* entries in ARCH_DLINFO: */ | ||
14 | #if defined(CONFIG_IA32_EMULATION) || !defined(CONFIG_X86_64) | ||
15 | # define AT_VECTOR_SIZE_ARCH 2 | ||
16 | #else /* else it's non-compat x86-64 */ | ||
17 | # define AT_VECTOR_SIZE_ARCH 1 | ||
18 | #endif | ||
19 | |||
20 | struct task_struct; /* one of the stranger aspects of C forward declarations */ | ||
21 | struct task_struct *__switch_to(struct task_struct *prev, | ||
22 | struct task_struct *next); | ||
23 | struct tss_struct; | ||
24 | void __switch_to_xtra(struct task_struct *prev_p, struct task_struct *next_p, | ||
25 | struct tss_struct *tss); | ||
26 | extern void show_regs_common(void); | ||
27 | |||
28 | #ifdef CONFIG_X86_32 | ||
29 | |||
30 | #ifdef CONFIG_CC_STACKPROTECTOR | ||
31 | #define __switch_canary \ | ||
32 | "movl %P[task_canary](%[next]), %%ebx\n\t" \ | ||
33 | "movl %%ebx, "__percpu_arg([stack_canary])"\n\t" | ||
34 | #define __switch_canary_oparam \ | ||
35 | , [stack_canary] "=m" (stack_canary.canary) | ||
36 | #define __switch_canary_iparam \ | ||
37 | , [task_canary] "i" (offsetof(struct task_struct, stack_canary)) | ||
38 | #else /* CC_STACKPROTECTOR */ | ||
39 | #define __switch_canary | ||
40 | #define __switch_canary_oparam | ||
41 | #define __switch_canary_iparam | ||
42 | #endif /* CC_STACKPROTECTOR */ | ||
43 | |||
44 | /* | ||
45 | * Saving eflags is important. It switches not only IOPL between tasks, | ||
46 | * it also protects other tasks from NT leaking through sysenter etc. | ||
47 | */ | ||
48 | #define switch_to(prev, next, last) \ | ||
49 | do { \ | ||
50 | /* \ | ||
51 | * Context-switching clobbers all registers, so we clobber \ | ||
52 | * them explicitly, via unused output variables. \ | ||
53 | * (EAX and EBP is not listed because EBP is saved/restored \ | ||
54 | * explicitly for wchan access and EAX is the return value of \ | ||
55 | * __switch_to()) \ | ||
56 | */ \ | ||
57 | unsigned long ebx, ecx, edx, esi, edi; \ | ||
58 | \ | ||
59 | asm volatile("pushfl\n\t" /* save flags */ \ | ||
60 | "pushl %%ebp\n\t" /* save EBP */ \ | ||
61 | "movl %%esp,%[prev_sp]\n\t" /* save ESP */ \ | ||
62 | "movl %[next_sp],%%esp\n\t" /* restore ESP */ \ | ||
63 | "movl $1f,%[prev_ip]\n\t" /* save EIP */ \ | ||
64 | "pushl %[next_ip]\n\t" /* restore EIP */ \ | ||
65 | __switch_canary \ | ||
66 | "jmp __switch_to\n" /* regparm call */ \ | ||
67 | "1:\t" \ | ||
68 | "popl %%ebp\n\t" /* restore EBP */ \ | ||
69 | "popfl\n" /* restore flags */ \ | ||
70 | \ | ||
71 | /* output parameters */ \ | ||
72 | : [prev_sp] "=m" (prev->thread.sp), \ | ||
73 | [prev_ip] "=m" (prev->thread.ip), \ | ||
74 | "=a" (last), \ | ||
75 | \ | ||
76 | /* clobbered output registers: */ \ | ||
77 | "=b" (ebx), "=c" (ecx), "=d" (edx), \ | ||
78 | "=S" (esi), "=D" (edi) \ | ||
79 | \ | ||
80 | __switch_canary_oparam \ | ||
81 | \ | ||
82 | /* input parameters: */ \ | ||
83 | : [next_sp] "m" (next->thread.sp), \ | ||
84 | [next_ip] "m" (next->thread.ip), \ | ||
85 | \ | ||
86 | /* regparm parameters for __switch_to(): */ \ | ||
87 | [prev] "a" (prev), \ | ||
88 | [next] "d" (next) \ | ||
89 | \ | ||
90 | __switch_canary_iparam \ | ||
91 | \ | ||
92 | : /* reloaded segment registers */ \ | ||
93 | "memory"); \ | ||
94 | } while (0) | ||
95 | |||
96 | /* | ||
97 | * disable hlt during certain critical i/o operations | ||
98 | */ | ||
99 | #define HAVE_DISABLE_HLT | ||
100 | #else | ||
101 | |||
102 | /* frame pointer must be last for get_wchan */ | ||
103 | #define SAVE_CONTEXT "pushf ; pushq %%rbp ; movq %%rsi,%%rbp\n\t" | ||
104 | #define RESTORE_CONTEXT "movq %%rbp,%%rsi ; popq %%rbp ; popf\t" | ||
105 | |||
106 | #define __EXTRA_CLOBBER \ | ||
107 | , "rcx", "rbx", "rdx", "r8", "r9", "r10", "r11", \ | ||
108 | "r12", "r13", "r14", "r15" | ||
109 | |||
110 | #ifdef CONFIG_CC_STACKPROTECTOR | ||
111 | #define __switch_canary \ | ||
112 | "movq %P[task_canary](%%rsi),%%r8\n\t" \ | ||
113 | "movq %%r8,"__percpu_arg([gs_canary])"\n\t" | ||
114 | #define __switch_canary_oparam \ | ||
115 | , [gs_canary] "=m" (irq_stack_union.stack_canary) | ||
116 | #define __switch_canary_iparam \ | ||
117 | , [task_canary] "i" (offsetof(struct task_struct, stack_canary)) | ||
118 | #else /* CC_STACKPROTECTOR */ | ||
119 | #define __switch_canary | ||
120 | #define __switch_canary_oparam | ||
121 | #define __switch_canary_iparam | ||
122 | #endif /* CC_STACKPROTECTOR */ | ||
123 | |||
124 | /* Save restore flags to clear handle leaking NT */ | ||
125 | #define switch_to(prev, next, last) \ | ||
126 | asm volatile(SAVE_CONTEXT \ | ||
127 | "movq %%rsp,%P[threadrsp](%[prev])\n\t" /* save RSP */ \ | ||
128 | "movq %P[threadrsp](%[next]),%%rsp\n\t" /* restore RSP */ \ | ||
129 | "call __switch_to\n\t" \ | ||
130 | "movq "__percpu_arg([current_task])",%%rsi\n\t" \ | ||
131 | __switch_canary \ | ||
132 | "movq %P[thread_info](%%rsi),%%r8\n\t" \ | ||
133 | "movq %%rax,%%rdi\n\t" \ | ||
134 | "testl %[_tif_fork],%P[ti_flags](%%r8)\n\t" \ | ||
135 | "jnz ret_from_fork\n\t" \ | ||
136 | RESTORE_CONTEXT \ | ||
137 | : "=a" (last) \ | ||
138 | __switch_canary_oparam \ | ||
139 | : [next] "S" (next), [prev] "D" (prev), \ | ||
140 | [threadrsp] "i" (offsetof(struct task_struct, thread.sp)), \ | ||
141 | [ti_flags] "i" (offsetof(struct thread_info, flags)), \ | ||
142 | [_tif_fork] "i" (_TIF_FORK), \ | ||
143 | [thread_info] "i" (offsetof(struct task_struct, stack)), \ | ||
144 | [current_task] "m" (current_task) \ | ||
145 | __switch_canary_iparam \ | ||
146 | : "memory", "cc" __EXTRA_CLOBBER) | ||
147 | #endif | ||
148 | |||
149 | #ifdef __KERNEL__ | ||
150 | |||
151 | extern void native_load_gs_index(unsigned); | ||
152 | |||
153 | /* | ||
154 | * Load a segment. Fall back on loading the zero | ||
155 | * segment if something goes wrong.. | ||
156 | */ | ||
157 | #define loadsegment(seg, value) \ | ||
158 | do { \ | ||
159 | unsigned short __val = (value); \ | ||
160 | \ | ||
161 | asm volatile(" \n" \ | ||
162 | "1: movl %k0,%%" #seg " \n" \ | ||
163 | \ | ||
164 | ".section .fixup,\"ax\" \n" \ | ||
165 | "2: xorl %k0,%k0 \n" \ | ||
166 | " jmp 1b \n" \ | ||
167 | ".previous \n" \ | ||
168 | \ | ||
169 | _ASM_EXTABLE(1b, 2b) \ | ||
170 | \ | ||
171 | : "+r" (__val) : : "memory"); \ | ||
172 | } while (0) | ||
173 | |||
174 | /* | ||
175 | * Save a segment register away | ||
176 | */ | ||
177 | #define savesegment(seg, value) \ | ||
178 | asm("mov %%" #seg ",%0":"=r" (value) : : "memory") | ||
179 | |||
180 | /* | ||
181 | * x86_32 user gs accessors. | ||
182 | */ | ||
183 | #ifdef CONFIG_X86_32 | ||
184 | #ifdef CONFIG_X86_32_LAZY_GS | ||
185 | #define get_user_gs(regs) (u16)({unsigned long v; savesegment(gs, v); v;}) | ||
186 | #define set_user_gs(regs, v) loadsegment(gs, (unsigned long)(v)) | ||
187 | #define task_user_gs(tsk) ((tsk)->thread.gs) | ||
188 | #define lazy_save_gs(v) savesegment(gs, (v)) | ||
189 | #define lazy_load_gs(v) loadsegment(gs, (v)) | ||
190 | #else /* X86_32_LAZY_GS */ | ||
191 | #define get_user_gs(regs) (u16)((regs)->gs) | ||
192 | #define set_user_gs(regs, v) do { (regs)->gs = (v); } while (0) | ||
193 | #define task_user_gs(tsk) (task_pt_regs(tsk)->gs) | ||
194 | #define lazy_save_gs(v) do { } while (0) | ||
195 | #define lazy_load_gs(v) do { } while (0) | ||
196 | #endif /* X86_32_LAZY_GS */ | ||
197 | #endif /* X86_32 */ | ||
198 | |||
199 | static inline unsigned long get_limit(unsigned long segment) | ||
200 | { | ||
201 | unsigned long __limit; | ||
202 | asm("lsll %1,%0" : "=r" (__limit) : "r" (segment)); | ||
203 | return __limit + 1; | ||
204 | } | ||
205 | |||
206 | static inline void native_clts(void) | ||
207 | { | ||
208 | asm volatile("clts"); | ||
209 | } | ||
210 | |||
211 | /* | ||
212 | * Volatile isn't enough to prevent the compiler from reordering the | ||
213 | * read/write functions for the control registers and messing everything up. | ||
214 | * A memory clobber would solve the problem, but would prevent reordering of | ||
215 | * all loads stores around it, which can hurt performance. Solution is to | ||
216 | * use a variable and mimic reads and writes to it to enforce serialization | ||
217 | */ | ||
218 | static unsigned long __force_order; | ||
219 | |||
220 | static inline unsigned long native_read_cr0(void) | ||
221 | { | ||
222 | unsigned long val; | ||
223 | asm volatile("mov %%cr0,%0\n\t" : "=r" (val), "=m" (__force_order)); | ||
224 | return val; | ||
225 | } | ||
226 | |||
227 | static inline void native_write_cr0(unsigned long val) | ||
228 | { | ||
229 | asm volatile("mov %0,%%cr0": : "r" (val), "m" (__force_order)); | ||
230 | } | ||
231 | |||
232 | static inline unsigned long native_read_cr2(void) | ||
233 | { | ||
234 | unsigned long val; | ||
235 | asm volatile("mov %%cr2,%0\n\t" : "=r" (val), "=m" (__force_order)); | ||
236 | return val; | ||
237 | } | ||
238 | |||
239 | static inline void native_write_cr2(unsigned long val) | ||
240 | { | ||
241 | asm volatile("mov %0,%%cr2": : "r" (val), "m" (__force_order)); | ||
242 | } | ||
243 | |||
244 | static inline unsigned long native_read_cr3(void) | ||
245 | { | ||
246 | unsigned long val; | ||
247 | asm volatile("mov %%cr3,%0\n\t" : "=r" (val), "=m" (__force_order)); | ||
248 | return val; | ||
249 | } | ||
250 | |||
251 | static inline void native_write_cr3(unsigned long val) | ||
252 | { | ||
253 | asm volatile("mov %0,%%cr3": : "r" (val), "m" (__force_order)); | ||
254 | } | ||
255 | |||
256 | static inline unsigned long native_read_cr4(void) | ||
257 | { | ||
258 | unsigned long val; | ||
259 | asm volatile("mov %%cr4,%0\n\t" : "=r" (val), "=m" (__force_order)); | ||
260 | return val; | ||
261 | } | ||
262 | |||
263 | static inline unsigned long native_read_cr4_safe(void) | ||
264 | { | ||
265 | unsigned long val; | ||
266 | /* This could fault if %cr4 does not exist. In x86_64, a cr4 always | ||
267 | * exists, so it will never fail. */ | ||
268 | #ifdef CONFIG_X86_32 | ||
269 | asm volatile("1: mov %%cr4, %0\n" | ||
270 | "2:\n" | ||
271 | _ASM_EXTABLE(1b, 2b) | ||
272 | : "=r" (val), "=m" (__force_order) : "0" (0)); | ||
273 | #else | ||
274 | val = native_read_cr4(); | ||
275 | #endif | ||
276 | return val; | ||
277 | } | ||
278 | |||
279 | static inline void native_write_cr4(unsigned long val) | ||
280 | { | ||
281 | asm volatile("mov %0,%%cr4": : "r" (val), "m" (__force_order)); | ||
282 | } | ||
283 | |||
284 | #ifdef CONFIG_X86_64 | ||
285 | static inline unsigned long native_read_cr8(void) | ||
286 | { | ||
287 | unsigned long cr8; | ||
288 | asm volatile("movq %%cr8,%0" : "=r" (cr8)); | ||
289 | return cr8; | ||
290 | } | ||
291 | |||
292 | static inline void native_write_cr8(unsigned long val) | ||
293 | { | ||
294 | asm volatile("movq %0,%%cr8" :: "r" (val) : "memory"); | ||
295 | } | ||
296 | #endif | ||
297 | |||
298 | static inline void native_wbinvd(void) | ||
299 | { | ||
300 | asm volatile("wbinvd": : :"memory"); | ||
301 | } | ||
302 | |||
303 | #ifdef CONFIG_PARAVIRT | ||
304 | #include <asm/paravirt.h> | ||
305 | #else | ||
306 | |||
307 | static inline unsigned long read_cr0(void) | ||
308 | { | ||
309 | return native_read_cr0(); | ||
310 | } | ||
311 | |||
312 | static inline void write_cr0(unsigned long x) | ||
313 | { | ||
314 | native_write_cr0(x); | ||
315 | } | ||
316 | |||
317 | static inline unsigned long read_cr2(void) | ||
318 | { | ||
319 | return native_read_cr2(); | ||
320 | } | ||
321 | |||
322 | static inline void write_cr2(unsigned long x) | ||
323 | { | ||
324 | native_write_cr2(x); | ||
325 | } | ||
326 | |||
327 | static inline unsigned long read_cr3(void) | ||
328 | { | ||
329 | return native_read_cr3(); | ||
330 | } | ||
331 | |||
332 | static inline void write_cr3(unsigned long x) | ||
333 | { | ||
334 | native_write_cr3(x); | ||
335 | } | ||
336 | |||
337 | static inline unsigned long read_cr4(void) | ||
338 | { | ||
339 | return native_read_cr4(); | ||
340 | } | ||
341 | |||
342 | static inline unsigned long read_cr4_safe(void) | ||
343 | { | ||
344 | return native_read_cr4_safe(); | ||
345 | } | ||
346 | |||
347 | static inline void write_cr4(unsigned long x) | ||
348 | { | ||
349 | native_write_cr4(x); | ||
350 | } | ||
351 | |||
352 | static inline void wbinvd(void) | ||
353 | { | ||
354 | native_wbinvd(); | ||
355 | } | ||
356 | |||
357 | #ifdef CONFIG_X86_64 | ||
358 | |||
359 | static inline unsigned long read_cr8(void) | ||
360 | { | ||
361 | return native_read_cr8(); | ||
362 | } | ||
363 | |||
364 | static inline void write_cr8(unsigned long x) | ||
365 | { | ||
366 | native_write_cr8(x); | ||
367 | } | ||
368 | |||
369 | static inline void load_gs_index(unsigned selector) | ||
370 | { | ||
371 | native_load_gs_index(selector); | ||
372 | } | ||
373 | |||
374 | #endif | ||
375 | |||
376 | /* Clear the 'TS' bit */ | ||
377 | static inline void clts(void) | ||
378 | { | ||
379 | native_clts(); | ||
380 | } | ||
381 | |||
382 | #endif/* CONFIG_PARAVIRT */ | ||
383 | |||
384 | #define stts() write_cr0(read_cr0() | X86_CR0_TS) | ||
385 | |||
386 | #endif /* __KERNEL__ */ | ||
387 | |||
388 | static inline void clflush(volatile void *__p) | ||
389 | { | ||
390 | asm volatile("clflush %0" : "+m" (*(volatile char __force *)__p)); | ||
391 | } | ||
392 | |||
393 | #define nop() asm volatile ("nop") | ||
394 | |||
395 | void disable_hlt(void); | ||
396 | void enable_hlt(void); | ||
397 | |||
398 | void cpu_idle_wait(void); | ||
399 | |||
400 | extern unsigned long arch_align_stack(unsigned long sp); | ||
401 | extern void free_init_pages(char *what, unsigned long begin, unsigned long end); | ||
402 | |||
403 | void default_idle(void); | ||
404 | bool set_pm_idle_to_default(void); | ||
405 | |||
406 | void stop_this_cpu(void *dummy); | ||
407 | |||
408 | /* | ||
409 | * Force strict CPU ordering. | ||
410 | * And yes, this is required on UP too when we're talking | ||
411 | * to devices. | ||
412 | */ | ||
413 | #ifdef CONFIG_X86_32 | ||
414 | /* | ||
415 | * Some non-Intel clones support out of order store. wmb() ceases to be a | ||
416 | * nop for these. | ||
417 | */ | ||
418 | #define mb() alternative("lock; addl $0,0(%%esp)", "mfence", X86_FEATURE_XMM2) | ||
419 | #define rmb() alternative("lock; addl $0,0(%%esp)", "lfence", X86_FEATURE_XMM2) | ||
420 | #define wmb() alternative("lock; addl $0,0(%%esp)", "sfence", X86_FEATURE_XMM) | ||
421 | #else | ||
422 | #define mb() asm volatile("mfence":::"memory") | ||
423 | #define rmb() asm volatile("lfence":::"memory") | ||
424 | #define wmb() asm volatile("sfence" ::: "memory") | ||
425 | #endif | ||
426 | |||
427 | /** | ||
428 | * read_barrier_depends - Flush all pending reads that subsequents reads | ||
429 | * depend on. | ||
430 | * | ||
431 | * No data-dependent reads from memory-like regions are ever reordered | ||
432 | * over this barrier. All reads preceding this primitive are guaranteed | ||
433 | * to access memory (but not necessarily other CPUs' caches) before any | ||
434 | * reads following this primitive that depend on the data return by | ||
435 | * any of the preceding reads. This primitive is much lighter weight than | ||
436 | * rmb() on most CPUs, and is never heavier weight than is | ||
437 | * rmb(). | ||
438 | * | ||
439 | * These ordering constraints are respected by both the local CPU | ||
440 | * and the compiler. | ||
441 | * | ||
442 | * Ordering is not guaranteed by anything other than these primitives, | ||
443 | * not even by data dependencies. See the documentation for | ||
444 | * memory_barrier() for examples and URLs to more information. | ||
445 | * | ||
446 | * For example, the following code would force ordering (the initial | ||
447 | * value of "a" is zero, "b" is one, and "p" is "&a"): | ||
448 | * | ||
449 | * <programlisting> | ||
450 | * CPU 0 CPU 1 | ||
451 | * | ||
452 | * b = 2; | ||
453 | * memory_barrier(); | ||
454 | * p = &b; q = p; | ||
455 | * read_barrier_depends(); | ||
456 | * d = *q; | ||
457 | * </programlisting> | ||
458 | * | ||
459 | * because the read of "*q" depends on the read of "p" and these | ||
460 | * two reads are separated by a read_barrier_depends(). However, | ||
461 | * the following code, with the same initial values for "a" and "b": | ||
462 | * | ||
463 | * <programlisting> | ||
464 | * CPU 0 CPU 1 | ||
465 | * | ||
466 | * a = 2; | ||
467 | * memory_barrier(); | ||
468 | * b = 3; y = b; | ||
469 | * read_barrier_depends(); | ||
470 | * x = a; | ||
471 | * </programlisting> | ||
472 | * | ||
473 | * does not enforce ordering, since there is no data dependency between | ||
474 | * the read of "a" and the read of "b". Therefore, on some CPUs, such | ||
475 | * as Alpha, "y" could be set to 3 and "x" to 0. Use rmb() | ||
476 | * in cases like this where there are no data dependencies. | ||
477 | **/ | ||
478 | |||
479 | #define read_barrier_depends() do { } while (0) | ||
480 | |||
481 | #ifdef CONFIG_SMP | ||
482 | #define smp_mb() mb() | ||
483 | #ifdef CONFIG_X86_PPRO_FENCE | ||
484 | # define smp_rmb() rmb() | ||
485 | #else | ||
486 | # define smp_rmb() barrier() | ||
487 | #endif | ||
488 | #ifdef CONFIG_X86_OOSTORE | ||
489 | # define smp_wmb() wmb() | ||
490 | #else | ||
491 | # define smp_wmb() barrier() | ||
492 | #endif | ||
493 | #define smp_read_barrier_depends() read_barrier_depends() | ||
494 | #define set_mb(var, value) do { (void)xchg(&var, value); } while (0) | ||
495 | #else | ||
496 | #define smp_mb() barrier() | ||
497 | #define smp_rmb() barrier() | ||
498 | #define smp_wmb() barrier() | ||
499 | #define smp_read_barrier_depends() do { } while (0) | ||
500 | #define set_mb(var, value) do { var = value; barrier(); } while (0) | ||
501 | #endif | ||
502 | |||
503 | /* | ||
504 | * Stop RDTSC speculation. This is needed when you need to use RDTSC | ||
505 | * (or get_cycles or vread that possibly accesses the TSC) in a defined | ||
506 | * code region. | ||
507 | * | ||
508 | * (Could use an alternative three way for this if there was one.) | ||
509 | */ | ||
510 | static __always_inline void rdtsc_barrier(void) | ||
511 | { | ||
512 | alternative(ASM_NOP3, "mfence", X86_FEATURE_MFENCE_RDTSC); | ||
513 | alternative(ASM_NOP3, "lfence", X86_FEATURE_LFENCE_RDTSC); | ||
514 | } | ||
515 | |||
516 | /* | ||
517 | * We handle most unaligned accesses in hardware. On the other hand | ||
518 | * unaligned DMA can be quite expensive on some Nehalem processors. | ||
519 | * | ||
520 | * Based on this we disable the IP header alignment in network drivers. | ||
521 | */ | ||
522 | #define NET_IP_ALIGN 0 | ||
523 | #endif /* _ASM_X86_SYSTEM_H */ | ||
diff --git a/arch/x86/include/asm/tlbflush.h b/arch/x86/include/asm/tlbflush.h index 169be8938b96..c0e108e08079 100644 --- a/arch/x86/include/asm/tlbflush.h +++ b/arch/x86/include/asm/tlbflush.h | |||
@@ -5,7 +5,7 @@ | |||
5 | #include <linux/sched.h> | 5 | #include <linux/sched.h> |
6 | 6 | ||
7 | #include <asm/processor.h> | 7 | #include <asm/processor.h> |
8 | #include <asm/system.h> | 8 | #include <asm/special_insns.h> |
9 | 9 | ||
10 | #ifdef CONFIG_PARAVIRT | 10 | #ifdef CONFIG_PARAVIRT |
11 | #include <asm/paravirt.h> | 11 | #include <asm/paravirt.h> |
diff --git a/arch/x86/include/asm/virtext.h b/arch/x86/include/asm/virtext.h index e0f9aa16358b..5da71c27cc59 100644 --- a/arch/x86/include/asm/virtext.h +++ b/arch/x86/include/asm/virtext.h | |||
@@ -16,7 +16,6 @@ | |||
16 | #define _ASM_X86_VIRTEX_H | 16 | #define _ASM_X86_VIRTEX_H |
17 | 17 | ||
18 | #include <asm/processor.h> | 18 | #include <asm/processor.h> |
19 | #include <asm/system.h> | ||
20 | 19 | ||
21 | #include <asm/vmx.h> | 20 | #include <asm/vmx.h> |
22 | #include <asm/svm.h> | 21 | #include <asm/svm.h> |
diff --git a/arch/x86/kernel/acpi/cstate.c b/arch/x86/kernel/acpi/cstate.c index f50e7fb2a201..d2b7f27781bc 100644 --- a/arch/x86/kernel/acpi/cstate.c +++ b/arch/x86/kernel/acpi/cstate.c | |||
@@ -14,6 +14,7 @@ | |||
14 | #include <acpi/processor.h> | 14 | #include <acpi/processor.h> |
15 | #include <asm/acpi.h> | 15 | #include <asm/acpi.h> |
16 | #include <asm/mwait.h> | 16 | #include <asm/mwait.h> |
17 | #include <asm/special_insns.h> | ||
17 | 18 | ||
18 | /* | 19 | /* |
19 | * Initialize bm_flags based on the CPU cache properties | 20 | * Initialize bm_flags based on the CPU cache properties |
diff --git a/arch/x86/kernel/apm_32.c b/arch/x86/kernel/apm_32.c index 5d56931a15b3..459e78cbf61e 100644 --- a/arch/x86/kernel/apm_32.c +++ b/arch/x86/kernel/apm_32.c | |||
@@ -231,7 +231,6 @@ | |||
231 | #include <linux/syscore_ops.h> | 231 | #include <linux/syscore_ops.h> |
232 | #include <linux/i8253.h> | 232 | #include <linux/i8253.h> |
233 | 233 | ||
234 | #include <asm/system.h> | ||
235 | #include <asm/uaccess.h> | 234 | #include <asm/uaccess.h> |
236 | #include <asm/desc.h> | 235 | #include <asm/desc.h> |
237 | #include <asm/olpc.h> | 236 | #include <asm/olpc.h> |
diff --git a/arch/x86/kernel/cpu/mcheck/p5.c b/arch/x86/kernel/cpu/mcheck/p5.c index 5c0e6533d9bc..2d5454cd2c4f 100644 --- a/arch/x86/kernel/cpu/mcheck/p5.c +++ b/arch/x86/kernel/cpu/mcheck/p5.c | |||
@@ -9,7 +9,6 @@ | |||
9 | #include <linux/smp.h> | 9 | #include <linux/smp.h> |
10 | 10 | ||
11 | #include <asm/processor.h> | 11 | #include <asm/processor.h> |
12 | #include <asm/system.h> | ||
13 | #include <asm/mce.h> | 12 | #include <asm/mce.h> |
14 | #include <asm/msr.h> | 13 | #include <asm/msr.h> |
15 | 14 | ||
diff --git a/arch/x86/kernel/cpu/mcheck/therm_throt.c b/arch/x86/kernel/cpu/mcheck/therm_throt.c index 67bb17a37a0a..47a1870279aa 100644 --- a/arch/x86/kernel/cpu/mcheck/therm_throt.c +++ b/arch/x86/kernel/cpu/mcheck/therm_throt.c | |||
@@ -25,7 +25,6 @@ | |||
25 | #include <linux/cpu.h> | 25 | #include <linux/cpu.h> |
26 | 26 | ||
27 | #include <asm/processor.h> | 27 | #include <asm/processor.h> |
28 | #include <asm/system.h> | ||
29 | #include <asm/apic.h> | 28 | #include <asm/apic.h> |
30 | #include <asm/idle.h> | 29 | #include <asm/idle.h> |
31 | #include <asm/mce.h> | 30 | #include <asm/mce.h> |
diff --git a/arch/x86/kernel/cpu/mcheck/winchip.c b/arch/x86/kernel/cpu/mcheck/winchip.c index 54060f565974..2d7998fb628c 100644 --- a/arch/x86/kernel/cpu/mcheck/winchip.c +++ b/arch/x86/kernel/cpu/mcheck/winchip.c | |||
@@ -8,7 +8,6 @@ | |||
8 | #include <linux/init.h> | 8 | #include <linux/init.h> |
9 | 9 | ||
10 | #include <asm/processor.h> | 10 | #include <asm/processor.h> |
11 | #include <asm/system.h> | ||
12 | #include <asm/mce.h> | 11 | #include <asm/mce.h> |
13 | #include <asm/msr.h> | 12 | #include <asm/msr.h> |
14 | 13 | ||
diff --git a/arch/x86/kernel/cpu/mtrr/generic.c b/arch/x86/kernel/cpu/mtrr/generic.c index 97b26356e9ee..75772ae6c65f 100644 --- a/arch/x86/kernel/cpu/mtrr/generic.c +++ b/arch/x86/kernel/cpu/mtrr/generic.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <asm/processor-flags.h> | 12 | #include <asm/processor-flags.h> |
13 | #include <asm/cpufeature.h> | 13 | #include <asm/cpufeature.h> |
14 | #include <asm/tlbflush.h> | 14 | #include <asm/tlbflush.h> |
15 | #include <asm/system.h> | ||
16 | #include <asm/mtrr.h> | 15 | #include <asm/mtrr.h> |
17 | #include <asm/msr.h> | 16 | #include <asm/msr.h> |
18 | #include <asm/pat.h> | 17 | #include <asm/pat.h> |
diff --git a/arch/x86/kernel/cpuid.c b/arch/x86/kernel/cpuid.c index a524353d93f2..39472dd2323f 100644 --- a/arch/x86/kernel/cpuid.c +++ b/arch/x86/kernel/cpuid.c | |||
@@ -43,7 +43,6 @@ | |||
43 | 43 | ||
44 | #include <asm/processor.h> | 44 | #include <asm/processor.h> |
45 | #include <asm/msr.h> | 45 | #include <asm/msr.h> |
46 | #include <asm/system.h> | ||
47 | 46 | ||
48 | static struct class *cpuid_class; | 47 | static struct class *cpuid_class; |
49 | 48 | ||
diff --git a/arch/x86/kernel/i8259.c b/arch/x86/kernel/i8259.c index 610485223bdb..36d1853e91af 100644 --- a/arch/x86/kernel/i8259.c +++ b/arch/x86/kernel/i8259.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <linux/delay.h> | 15 | #include <linux/delay.h> |
16 | 16 | ||
17 | #include <linux/atomic.h> | 17 | #include <linux/atomic.h> |
18 | #include <asm/system.h> | ||
19 | #include <asm/timer.h> | 18 | #include <asm/timer.h> |
20 | #include <asm/hw_irq.h> | 19 | #include <asm/hw_irq.h> |
21 | #include <asm/pgtable.h> | 20 | #include <asm/pgtable.h> |
diff --git a/arch/x86/kernel/irqinit.c b/arch/x86/kernel/irqinit.c index 43e2b1cff0a7..6d5fc8cfd5d6 100644 --- a/arch/x86/kernel/irqinit.c +++ b/arch/x86/kernel/irqinit.c | |||
@@ -16,7 +16,6 @@ | |||
16 | #include <linux/delay.h> | 16 | #include <linux/delay.h> |
17 | 17 | ||
18 | #include <linux/atomic.h> | 18 | #include <linux/atomic.h> |
19 | #include <asm/system.h> | ||
20 | #include <asm/timer.h> | 19 | #include <asm/timer.h> |
21 | #include <asm/hw_irq.h> | 20 | #include <asm/hw_irq.h> |
22 | #include <asm/pgtable.h> | 21 | #include <asm/pgtable.h> |
diff --git a/arch/x86/kernel/kgdb.c b/arch/x86/kernel/kgdb.c index fdc37b3d0ce3..db6720edfdd0 100644 --- a/arch/x86/kernel/kgdb.c +++ b/arch/x86/kernel/kgdb.c | |||
@@ -46,7 +46,6 @@ | |||
46 | 46 | ||
47 | #include <asm/debugreg.h> | 47 | #include <asm/debugreg.h> |
48 | #include <asm/apicdef.h> | 48 | #include <asm/apicdef.h> |
49 | #include <asm/system.h> | ||
50 | #include <asm/apic.h> | 49 | #include <asm/apic.h> |
51 | #include <asm/nmi.h> | 50 | #include <asm/nmi.h> |
52 | 51 | ||
diff --git a/arch/x86/kernel/ldt.c b/arch/x86/kernel/ldt.c index ea697263b373..ebc987398923 100644 --- a/arch/x86/kernel/ldt.c +++ b/arch/x86/kernel/ldt.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <linux/vmalloc.h> | 15 | #include <linux/vmalloc.h> |
16 | #include <linux/uaccess.h> | 16 | #include <linux/uaccess.h> |
17 | 17 | ||
18 | #include <asm/system.h> | ||
19 | #include <asm/ldt.h> | 18 | #include <asm/ldt.h> |
20 | #include <asm/desc.h> | 19 | #include <asm/desc.h> |
21 | #include <asm/mmu_context.h> | 20 | #include <asm/mmu_context.h> |
diff --git a/arch/x86/kernel/machine_kexec_32.c b/arch/x86/kernel/machine_kexec_32.c index a3fa43ba5d3b..5b19e4d78b00 100644 --- a/arch/x86/kernel/machine_kexec_32.c +++ b/arch/x86/kernel/machine_kexec_32.c | |||
@@ -23,7 +23,6 @@ | |||
23 | #include <asm/apic.h> | 23 | #include <asm/apic.h> |
24 | #include <asm/cpufeature.h> | 24 | #include <asm/cpufeature.h> |
25 | #include <asm/desc.h> | 25 | #include <asm/desc.h> |
26 | #include <asm/system.h> | ||
27 | #include <asm/cacheflush.h> | 26 | #include <asm/cacheflush.h> |
28 | #include <asm/debugreg.h> | 27 | #include <asm/debugreg.h> |
29 | 28 | ||
diff --git a/arch/x86/kernel/mca_32.c b/arch/x86/kernel/mca_32.c index 177183cbb6ae..7eb1e2b97827 100644 --- a/arch/x86/kernel/mca_32.c +++ b/arch/x86/kernel/mca_32.c | |||
@@ -43,7 +43,6 @@ | |||
43 | #include <linux/mca.h> | 43 | #include <linux/mca.h> |
44 | #include <linux/kprobes.h> | 44 | #include <linux/kprobes.h> |
45 | #include <linux/slab.h> | 45 | #include <linux/slab.h> |
46 | #include <asm/system.h> | ||
47 | #include <asm/io.h> | 46 | #include <asm/io.h> |
48 | #include <linux/proc_fs.h> | 47 | #include <linux/proc_fs.h> |
49 | #include <linux/mman.h> | 48 | #include <linux/mman.h> |
diff --git a/arch/x86/kernel/module.c b/arch/x86/kernel/module.c index 925179f871de..f21fd94ac897 100644 --- a/arch/x86/kernel/module.c +++ b/arch/x86/kernel/module.c | |||
@@ -26,7 +26,6 @@ | |||
26 | #include <linux/gfp.h> | 26 | #include <linux/gfp.h> |
27 | #include <linux/jump_label.h> | 27 | #include <linux/jump_label.h> |
28 | 28 | ||
29 | #include <asm/system.h> | ||
30 | #include <asm/page.h> | 29 | #include <asm/page.h> |
31 | #include <asm/pgtable.h> | 30 | #include <asm/pgtable.h> |
32 | 31 | ||
diff --git a/arch/x86/kernel/msr.c b/arch/x86/kernel/msr.c index 96356762a51d..eb113693f043 100644 --- a/arch/x86/kernel/msr.c +++ b/arch/x86/kernel/msr.c | |||
@@ -40,7 +40,6 @@ | |||
40 | 40 | ||
41 | #include <asm/processor.h> | 41 | #include <asm/processor.h> |
42 | #include <asm/msr.h> | 42 | #include <asm/msr.h> |
43 | #include <asm/system.h> | ||
44 | 43 | ||
45 | static struct class *msr_class; | 44 | static struct class *msr_class; |
46 | 45 | ||
diff --git a/arch/x86/kernel/paravirt.c b/arch/x86/kernel/paravirt.c index 9c57c02e54f6..ab137605e694 100644 --- a/arch/x86/kernel/paravirt.c +++ b/arch/x86/kernel/paravirt.c | |||
@@ -38,6 +38,7 @@ | |||
38 | #include <asm/apic.h> | 38 | #include <asm/apic.h> |
39 | #include <asm/tlbflush.h> | 39 | #include <asm/tlbflush.h> |
40 | #include <asm/timer.h> | 40 | #include <asm/timer.h> |
41 | #include <asm/special_insns.h> | ||
41 | 42 | ||
42 | /* nop stub */ | 43 | /* nop stub */ |
43 | void _paravirt_nop(void) | 44 | void _paravirt_nop(void) |
diff --git a/arch/x86/kernel/pci-calgary_64.c b/arch/x86/kernel/pci-calgary_64.c index 726494b58345..6ac5782f4d6b 100644 --- a/arch/x86/kernel/pci-calgary_64.c +++ b/arch/x86/kernel/pci-calgary_64.c | |||
@@ -42,7 +42,6 @@ | |||
42 | #include <asm/calgary.h> | 42 | #include <asm/calgary.h> |
43 | #include <asm/tce.h> | 43 | #include <asm/tce.h> |
44 | #include <asm/pci-direct.h> | 44 | #include <asm/pci-direct.h> |
45 | #include <asm/system.h> | ||
46 | #include <asm/dma.h> | 45 | #include <asm/dma.h> |
47 | #include <asm/rio.h> | 46 | #include <asm/rio.h> |
48 | #include <asm/bios_ebda.h> | 47 | #include <asm/bios_ebda.h> |
diff --git a/arch/x86/kernel/process.c b/arch/x86/kernel/process.c index 14baf78d5a1f..9b24f36eb55f 100644 --- a/arch/x86/kernel/process.c +++ b/arch/x86/kernel/process.c | |||
@@ -15,7 +15,6 @@ | |||
15 | #include <trace/events/power.h> | 15 | #include <trace/events/power.h> |
16 | #include <linux/hw_breakpoint.h> | 16 | #include <linux/hw_breakpoint.h> |
17 | #include <asm/cpu.h> | 17 | #include <asm/cpu.h> |
18 | #include <asm/system.h> | ||
19 | #include <asm/apic.h> | 18 | #include <asm/apic.h> |
20 | #include <asm/syscalls.h> | 19 | #include <asm/syscalls.h> |
21 | #include <asm/idle.h> | 20 | #include <asm/idle.h> |
diff --git a/arch/x86/kernel/process_32.c b/arch/x86/kernel/process_32.c index 9d7d4842bfaf..aae4f4bbbe88 100644 --- a/arch/x86/kernel/process_32.c +++ b/arch/x86/kernel/process_32.c | |||
@@ -41,7 +41,6 @@ | |||
41 | #include <linux/cpuidle.h> | 41 | #include <linux/cpuidle.h> |
42 | 42 | ||
43 | #include <asm/pgtable.h> | 43 | #include <asm/pgtable.h> |
44 | #include <asm/system.h> | ||
45 | #include <asm/ldt.h> | 44 | #include <asm/ldt.h> |
46 | #include <asm/processor.h> | 45 | #include <asm/processor.h> |
47 | #include <asm/i387.h> | 46 | #include <asm/i387.h> |
@@ -59,6 +58,7 @@ | |||
59 | #include <asm/syscalls.h> | 58 | #include <asm/syscalls.h> |
60 | #include <asm/debugreg.h> | 59 | #include <asm/debugreg.h> |
61 | #include <asm/nmi.h> | 60 | #include <asm/nmi.h> |
61 | #include <asm/switch_to.h> | ||
62 | 62 | ||
63 | asmlinkage void ret_from_fork(void) __asm__("ret_from_fork"); | 63 | asmlinkage void ret_from_fork(void) __asm__("ret_from_fork"); |
64 | 64 | ||
diff --git a/arch/x86/kernel/process_64.c b/arch/x86/kernel/process_64.c index 292da13fc5aa..61270e8d428a 100644 --- a/arch/x86/kernel/process_64.c +++ b/arch/x86/kernel/process_64.c | |||
@@ -40,7 +40,6 @@ | |||
40 | #include <linux/cpuidle.h> | 40 | #include <linux/cpuidle.h> |
41 | 41 | ||
42 | #include <asm/pgtable.h> | 42 | #include <asm/pgtable.h> |
43 | #include <asm/system.h> | ||
44 | #include <asm/processor.h> | 43 | #include <asm/processor.h> |
45 | #include <asm/i387.h> | 44 | #include <asm/i387.h> |
46 | #include <asm/fpu-internal.h> | 45 | #include <asm/fpu-internal.h> |
@@ -53,6 +52,7 @@ | |||
53 | #include <asm/syscalls.h> | 52 | #include <asm/syscalls.h> |
54 | #include <asm/debugreg.h> | 53 | #include <asm/debugreg.h> |
55 | #include <asm/nmi.h> | 54 | #include <asm/nmi.h> |
55 | #include <asm/switch_to.h> | ||
56 | 56 | ||
57 | asmlinkage extern void ret_from_fork(void); | 57 | asmlinkage extern void ret_from_fork(void); |
58 | 58 | ||
diff --git a/arch/x86/kernel/ptrace.c b/arch/x86/kernel/ptrace.c index 78f05e438be5..8a634c887652 100644 --- a/arch/x86/kernel/ptrace.c +++ b/arch/x86/kernel/ptrace.c | |||
@@ -24,7 +24,6 @@ | |||
24 | 24 | ||
25 | #include <asm/uaccess.h> | 25 | #include <asm/uaccess.h> |
26 | #include <asm/pgtable.h> | 26 | #include <asm/pgtable.h> |
27 | #include <asm/system.h> | ||
28 | #include <asm/processor.h> | 27 | #include <asm/processor.h> |
29 | #include <asm/i387.h> | 28 | #include <asm/i387.h> |
30 | #include <asm/fpu-internal.h> | 29 | #include <asm/fpu-internal.h> |
diff --git a/arch/x86/kernel/setup.c b/arch/x86/kernel/setup.c index 88638883176a..8cbeb7209c3e 100644 --- a/arch/x86/kernel/setup.c +++ b/arch/x86/kernel/setup.c | |||
@@ -90,7 +90,6 @@ | |||
90 | #include <asm/processor.h> | 90 | #include <asm/processor.h> |
91 | #include <asm/bugs.h> | 91 | #include <asm/bugs.h> |
92 | 92 | ||
93 | #include <asm/system.h> | ||
94 | #include <asm/vsyscall.h> | 93 | #include <asm/vsyscall.h> |
95 | #include <asm/cpu.h> | 94 | #include <asm/cpu.h> |
96 | #include <asm/desc.h> | 95 | #include <asm/desc.h> |
diff --git a/arch/x86/kernel/tce_64.c b/arch/x86/kernel/tce_64.c index 9e540fee7009..ab40954e113e 100644 --- a/arch/x86/kernel/tce_64.c +++ b/arch/x86/kernel/tce_64.c | |||
@@ -34,6 +34,7 @@ | |||
34 | #include <asm/tce.h> | 34 | #include <asm/tce.h> |
35 | #include <asm/calgary.h> | 35 | #include <asm/calgary.h> |
36 | #include <asm/proto.h> | 36 | #include <asm/proto.h> |
37 | #include <asm/cacheflush.h> | ||
37 | 38 | ||
38 | /* flush a tce at 'tceaddr' to main memory */ | 39 | /* flush a tce at 'tceaddr' to main memory */ |
39 | static inline void flush_tce(void* tceaddr) | 40 | static inline void flush_tce(void* tceaddr) |
diff --git a/arch/x86/kernel/tls.c b/arch/x86/kernel/tls.c index 6bb7b8579e70..73920e4c6dc5 100644 --- a/arch/x86/kernel/tls.c +++ b/arch/x86/kernel/tls.c | |||
@@ -6,7 +6,6 @@ | |||
6 | 6 | ||
7 | #include <asm/uaccess.h> | 7 | #include <asm/uaccess.h> |
8 | #include <asm/desc.h> | 8 | #include <asm/desc.h> |
9 | #include <asm/system.h> | ||
10 | #include <asm/ldt.h> | 9 | #include <asm/ldt.h> |
11 | #include <asm/processor.h> | 10 | #include <asm/processor.h> |
12 | #include <asm/proto.h> | 11 | #include <asm/proto.h> |
diff --git a/arch/x86/kernel/traps.c b/arch/x86/kernel/traps.c index ec61d4c1b93b..860f126ca233 100644 --- a/arch/x86/kernel/traps.c +++ b/arch/x86/kernel/traps.c | |||
@@ -50,7 +50,6 @@ | |||
50 | #include <asm/processor.h> | 50 | #include <asm/processor.h> |
51 | #include <asm/debugreg.h> | 51 | #include <asm/debugreg.h> |
52 | #include <linux/atomic.h> | 52 | #include <linux/atomic.h> |
53 | #include <asm/system.h> | ||
54 | #include <asm/traps.h> | 53 | #include <asm/traps.h> |
55 | #include <asm/desc.h> | 54 | #include <asm/desc.h> |
56 | #include <asm/i387.h> | 55 | #include <asm/i387.h> |
diff --git a/arch/x86/mm/init.c b/arch/x86/mm/init.c index 6cabf6570d64..4f0cec7e4ffb 100644 --- a/arch/x86/mm/init.c +++ b/arch/x86/mm/init.c | |||
@@ -12,7 +12,6 @@ | |||
12 | #include <asm/page_types.h> | 12 | #include <asm/page_types.h> |
13 | #include <asm/sections.h> | 13 | #include <asm/sections.h> |
14 | #include <asm/setup.h> | 14 | #include <asm/setup.h> |
15 | #include <asm/system.h> | ||
16 | #include <asm/tlbflush.h> | 15 | #include <asm/tlbflush.h> |
17 | #include <asm/tlb.h> | 16 | #include <asm/tlb.h> |
18 | #include <asm/proto.h> | 17 | #include <asm/proto.h> |
diff --git a/arch/x86/mm/init_32.c b/arch/x86/mm/init_32.c index 8663f6c47ccb..575d86f85ce4 100644 --- a/arch/x86/mm/init_32.c +++ b/arch/x86/mm/init_32.c | |||
@@ -35,7 +35,6 @@ | |||
35 | #include <asm/asm.h> | 35 | #include <asm/asm.h> |
36 | #include <asm/bios_ebda.h> | 36 | #include <asm/bios_ebda.h> |
37 | #include <asm/processor.h> | 37 | #include <asm/processor.h> |
38 | #include <asm/system.h> | ||
39 | #include <asm/uaccess.h> | 38 | #include <asm/uaccess.h> |
40 | #include <asm/pgtable.h> | 39 | #include <asm/pgtable.h> |
41 | #include <asm/dma.h> | 40 | #include <asm/dma.h> |
diff --git a/arch/x86/mm/init_64.c b/arch/x86/mm/init_64.c index 436a0309db33..fc18be0f6f29 100644 --- a/arch/x86/mm/init_64.c +++ b/arch/x86/mm/init_64.c | |||
@@ -35,7 +35,6 @@ | |||
35 | 35 | ||
36 | #include <asm/processor.h> | 36 | #include <asm/processor.h> |
37 | #include <asm/bios_ebda.h> | 37 | #include <asm/bios_ebda.h> |
38 | #include <asm/system.h> | ||
39 | #include <asm/uaccess.h> | 38 | #include <asm/uaccess.h> |
40 | #include <asm/pgtable.h> | 39 | #include <asm/pgtable.h> |
41 | #include <asm/pgalloc.h> | 40 | #include <asm/pgalloc.h> |
diff --git a/arch/x86/mm/pgtable_32.c b/arch/x86/mm/pgtable_32.c index cac718499256..a69bcb8c7621 100644 --- a/arch/x86/mm/pgtable_32.c +++ b/arch/x86/mm/pgtable_32.c | |||
@@ -10,7 +10,6 @@ | |||
10 | #include <linux/spinlock.h> | 10 | #include <linux/spinlock.h> |
11 | #include <linux/module.h> | 11 | #include <linux/module.h> |
12 | 12 | ||
13 | #include <asm/system.h> | ||
14 | #include <asm/pgtable.h> | 13 | #include <asm/pgtable.h> |
15 | #include <asm/pgalloc.h> | 14 | #include <asm/pgalloc.h> |
16 | #include <asm/fixmap.h> | 15 | #include <asm/fixmap.h> |
diff --git a/arch/x86/power/hibernate_32.c b/arch/x86/power/hibernate_32.c index 3769079874d8..74202c1910cd 100644 --- a/arch/x86/power/hibernate_32.c +++ b/arch/x86/power/hibernate_32.c | |||
@@ -10,7 +10,6 @@ | |||
10 | #include <linux/suspend.h> | 10 | #include <linux/suspend.h> |
11 | #include <linux/bootmem.h> | 11 | #include <linux/bootmem.h> |
12 | 12 | ||
13 | #include <asm/system.h> | ||
14 | #include <asm/page.h> | 13 | #include <asm/page.h> |
15 | #include <asm/pgtable.h> | 14 | #include <asm/pgtable.h> |
16 | #include <asm/mmzone.h> | 15 | #include <asm/mmzone.h> |
diff --git a/arch/xtensa/include/asm/atomic.h b/arch/xtensa/include/asm/atomic.h index 23592eff67ad..b40989308775 100644 --- a/arch/xtensa/include/asm/atomic.h +++ b/arch/xtensa/include/asm/atomic.h | |||
@@ -18,7 +18,7 @@ | |||
18 | 18 | ||
19 | #ifdef __KERNEL__ | 19 | #ifdef __KERNEL__ |
20 | #include <asm/processor.h> | 20 | #include <asm/processor.h> |
21 | #include <asm/system.h> | 21 | #include <asm/cmpxchg.h> |
22 | 22 | ||
23 | #define ATOMIC_INIT(i) { (i) } | 23 | #define ATOMIC_INIT(i) { (i) } |
24 | 24 | ||
diff --git a/arch/xtensa/include/asm/barrier.h b/arch/xtensa/include/asm/barrier.h new file mode 100644 index 000000000000..55707a8009d3 --- /dev/null +++ b/arch/xtensa/include/asm/barrier.h | |||
@@ -0,0 +1,29 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (C) 2001 - 2005 Tensilica Inc. | ||
7 | */ | ||
8 | |||
9 | #ifndef _XTENSA_SYSTEM_H | ||
10 | #define _XTENSA_SYSTEM_H | ||
11 | |||
12 | #define smp_read_barrier_depends() do { } while(0) | ||
13 | #define read_barrier_depends() do { } while(0) | ||
14 | |||
15 | #define mb() barrier() | ||
16 | #define rmb() mb() | ||
17 | #define wmb() mb() | ||
18 | |||
19 | #ifdef CONFIG_SMP | ||
20 | #error smp_* not defined | ||
21 | #else | ||
22 | #define smp_mb() barrier() | ||
23 | #define smp_rmb() barrier() | ||
24 | #define smp_wmb() barrier() | ||
25 | #endif | ||
26 | |||
27 | #define set_mb(var, value) do { var = value; mb(); } while (0) | ||
28 | |||
29 | #endif /* _XTENSA_SYSTEM_H */ | ||
diff --git a/arch/xtensa/include/asm/bitops.h b/arch/xtensa/include/asm/bitops.h index 40aa7fe77f66..5270197ddd36 100644 --- a/arch/xtensa/include/asm/bitops.h +++ b/arch/xtensa/include/asm/bitops.h | |||
@@ -21,7 +21,6 @@ | |||
21 | 21 | ||
22 | #include <asm/processor.h> | 22 | #include <asm/processor.h> |
23 | #include <asm/byteorder.h> | 23 | #include <asm/byteorder.h> |
24 | #include <asm/system.h> | ||
25 | 24 | ||
26 | #ifdef CONFIG_SMP | 25 | #ifdef CONFIG_SMP |
27 | # error SMP not supported on this architecture | 26 | # error SMP not supported on this architecture |
diff --git a/arch/xtensa/include/asm/system.h b/arch/xtensa/include/asm/cmpxchg.h index 1e7e09ab6cd7..e32149063d83 100644 --- a/arch/xtensa/include/asm/system.h +++ b/arch/xtensa/include/asm/cmpxchg.h | |||
@@ -1,5 +1,5 @@ | |||
1 | /* | 1 | /* |
2 | * include/asm-xtensa/system.h | 2 | * Atomic xchg and cmpxchg operations. |
3 | * | 3 | * |
4 | * This file is subject to the terms and conditions of the GNU General Public | 4 | * This file is subject to the terms and conditions of the GNU General Public |
5 | * License. See the file "COPYING" in the main directory of this archive | 5 | * License. See the file "COPYING" in the main directory of this archive |
@@ -8,44 +8,12 @@ | |||
8 | * Copyright (C) 2001 - 2005 Tensilica Inc. | 8 | * Copyright (C) 2001 - 2005 Tensilica Inc. |
9 | */ | 9 | */ |
10 | 10 | ||
11 | #ifndef _XTENSA_SYSTEM_H | 11 | #ifndef _XTENSA_CMPXCHG_H |
12 | #define _XTENSA_SYSTEM_H | 12 | #define _XTENSA_CMPXCHG_H |
13 | 13 | ||
14 | #include <linux/stringify.h> | 14 | #ifndef __ASSEMBLY__ |
15 | #include <linux/irqflags.h> | ||
16 | |||
17 | #include <asm/processor.h> | ||
18 | |||
19 | #define smp_read_barrier_depends() do { } while(0) | ||
20 | #define read_barrier_depends() do { } while(0) | ||
21 | |||
22 | #define mb() barrier() | ||
23 | #define rmb() mb() | ||
24 | #define wmb() mb() | ||
25 | 15 | ||
26 | #ifdef CONFIG_SMP | 16 | #include <linux/stringify.h> |
27 | #error smp_* not defined | ||
28 | #else | ||
29 | #define smp_mb() barrier() | ||
30 | #define smp_rmb() barrier() | ||
31 | #define smp_wmb() barrier() | ||
32 | #endif | ||
33 | |||
34 | #define set_mb(var, value) do { var = value; mb(); } while (0) | ||
35 | |||
36 | #if !defined (__ASSEMBLY__) | ||
37 | |||
38 | /* * switch_to(n) should switch tasks to task nr n, first | ||
39 | * checking that n isn't the current task, in which case it does nothing. | ||
40 | */ | ||
41 | extern void *_switch_to(void *last, void *next); | ||
42 | |||
43 | #endif /* __ASSEMBLY__ */ | ||
44 | |||
45 | #define switch_to(prev,next,last) \ | ||
46 | do { \ | ||
47 | (last) = _switch_to(prev, next); \ | ||
48 | } while(0) | ||
49 | 17 | ||
50 | /* | 18 | /* |
51 | * cmpxchg | 19 | * cmpxchg |
@@ -158,27 +126,6 @@ __xchg(unsigned long x, volatile void * ptr, int size) | |||
158 | return x; | 126 | return x; |
159 | } | 127 | } |
160 | 128 | ||
161 | extern void set_except_vector(int n, void *addr); | 129 | #endif /* __ASSEMBLY__ */ |
162 | |||
163 | static inline void spill_registers(void) | ||
164 | { | ||
165 | unsigned int a0, ps; | ||
166 | |||
167 | __asm__ __volatile__ ( | ||
168 | "movi a14," __stringify (PS_EXCM_BIT) " | 1\n\t" | ||
169 | "mov a12, a0\n\t" | ||
170 | "rsr a13," __stringify(SAR) "\n\t" | ||
171 | "xsr a14," __stringify(PS) "\n\t" | ||
172 | "movi a0, _spill_registers\n\t" | ||
173 | "rsync\n\t" | ||
174 | "callx0 a0\n\t" | ||
175 | "mov a0, a12\n\t" | ||
176 | "wsr a13," __stringify(SAR) "\n\t" | ||
177 | "wsr a14," __stringify(PS) "\n\t" | ||
178 | :: "a" (&a0), "a" (&ps) | ||
179 | : "a2", "a3", "a4", "a7", "a11", "a12", "a13", "a14", "a15", "memory"); | ||
180 | } | ||
181 | |||
182 | #define arch_align_stack(x) (x) | ||
183 | 130 | ||
184 | #endif /* _XTENSA_SYSTEM_H */ | 131 | #endif /* _XTENSA_CMPXCHG_H */ |
diff --git a/arch/xtensa/include/asm/exec.h b/arch/xtensa/include/asm/exec.h new file mode 100644 index 000000000000..af949e28cb32 --- /dev/null +++ b/arch/xtensa/include/asm/exec.h | |||
@@ -0,0 +1,14 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (C) 2001 - 2005 Tensilica Inc. | ||
7 | */ | ||
8 | |||
9 | #ifndef _XTENSA_EXEC_H | ||
10 | #define _XTENSA_EXEC_H | ||
11 | |||
12 | #define arch_align_stack(x) (x) | ||
13 | |||
14 | #endif /* _XTENSA_EXEC_H */ | ||
diff --git a/arch/xtensa/include/asm/setup.h b/arch/xtensa/include/asm/setup.h index e3636520d8cc..9fa8ad979361 100644 --- a/arch/xtensa/include/asm/setup.h +++ b/arch/xtensa/include/asm/setup.h | |||
@@ -13,4 +13,6 @@ | |||
13 | 13 | ||
14 | #define COMMAND_LINE_SIZE 256 | 14 | #define COMMAND_LINE_SIZE 256 |
15 | 15 | ||
16 | extern void set_except_vector(int n, void *addr); | ||
17 | |||
16 | #endif | 18 | #endif |
diff --git a/arch/xtensa/include/asm/switch_to.h b/arch/xtensa/include/asm/switch_to.h new file mode 100644 index 000000000000..6b73bf0eb1ff --- /dev/null +++ b/arch/xtensa/include/asm/switch_to.h | |||
@@ -0,0 +1,22 @@ | |||
1 | /* | ||
2 | * This file is subject to the terms and conditions of the GNU General Public | ||
3 | * License. See the file "COPYING" in the main directory of this archive | ||
4 | * for more details. | ||
5 | * | ||
6 | * Copyright (C) 2001 - 2005 Tensilica Inc. | ||
7 | */ | ||
8 | |||
9 | #ifndef _XTENSA_SWITCH_TO_H | ||
10 | #define _XTENSA_SWITCH_TO_H | ||
11 | |||
12 | /* * switch_to(n) should switch tasks to task nr n, first | ||
13 | * checking that n isn't the current task, in which case it does nothing. | ||
14 | */ | ||
15 | extern void *_switch_to(void *last, void *next); | ||
16 | |||
17 | #define switch_to(prev,next,last) \ | ||
18 | do { \ | ||
19 | (last) = _switch_to(prev, next); \ | ||
20 | } while(0) | ||
21 | |||
22 | #endif /* _XTENSA_SWITCH_TO_H */ | ||
diff --git a/arch/xtensa/include/asm/uaccess.h b/arch/xtensa/include/asm/uaccess.h index 3fa526fd3c99..6e4bb3b791ab 100644 --- a/arch/xtensa/include/asm/uaccess.h +++ b/arch/xtensa/include/asm/uaccess.h | |||
@@ -17,7 +17,9 @@ | |||
17 | #define _XTENSA_UACCESS_H | 17 | #define _XTENSA_UACCESS_H |
18 | 18 | ||
19 | #include <linux/errno.h> | 19 | #include <linux/errno.h> |
20 | #ifndef __ASSEMBLY__ | ||
20 | #include <linux/prefetch.h> | 21 | #include <linux/prefetch.h> |
22 | #endif | ||
21 | #include <asm/types.h> | 23 | #include <asm/types.h> |
22 | 24 | ||
23 | #define VERIFY_READ 0 | 25 | #define VERIFY_READ 0 |
diff --git a/arch/xtensa/kernel/process.c b/arch/xtensa/kernel/process.c index 2c9004770c4e..6a2d6edf8f72 100644 --- a/arch/xtensa/kernel/process.c +++ b/arch/xtensa/kernel/process.c | |||
@@ -34,7 +34,6 @@ | |||
34 | 34 | ||
35 | #include <asm/pgtable.h> | 35 | #include <asm/pgtable.h> |
36 | #include <asm/uaccess.h> | 36 | #include <asm/uaccess.h> |
37 | #include <asm/system.h> | ||
38 | #include <asm/io.h> | 37 | #include <asm/io.h> |
39 | #include <asm/processor.h> | 38 | #include <asm/processor.h> |
40 | #include <asm/platform.h> | 39 | #include <asm/platform.h> |
diff --git a/arch/xtensa/kernel/ptrace.c b/arch/xtensa/kernel/ptrace.c index 2dff698ab02e..33eea4c16f12 100644 --- a/arch/xtensa/kernel/ptrace.c +++ b/arch/xtensa/kernel/ptrace.c | |||
@@ -24,7 +24,6 @@ | |||
24 | 24 | ||
25 | #include <asm/pgtable.h> | 25 | #include <asm/pgtable.h> |
26 | #include <asm/page.h> | 26 | #include <asm/page.h> |
27 | #include <asm/system.h> | ||
28 | #include <asm/uaccess.h> | 27 | #include <asm/uaccess.h> |
29 | #include <asm/ptrace.h> | 28 | #include <asm/ptrace.h> |
30 | #include <asm/elf.h> | 29 | #include <asm/elf.h> |
diff --git a/arch/xtensa/kernel/setup.c b/arch/xtensa/kernel/setup.c index 1e5a034fe011..17e746f7be60 100644 --- a/arch/xtensa/kernel/setup.c +++ b/arch/xtensa/kernel/setup.c | |||
@@ -34,7 +34,6 @@ | |||
34 | # include <linux/seq_file.h> | 34 | # include <linux/seq_file.h> |
35 | #endif | 35 | #endif |
36 | 36 | ||
37 | #include <asm/system.h> | ||
38 | #include <asm/bootparam.h> | 37 | #include <asm/bootparam.h> |
39 | #include <asm/pgtable.h> | 38 | #include <asm/pgtable.h> |
40 | #include <asm/processor.h> | 39 | #include <asm/processor.h> |
diff --git a/arch/xtensa/kernel/traps.c b/arch/xtensa/kernel/traps.c index e64efac3b9db..bc1e14cf9369 100644 --- a/arch/xtensa/kernel/traps.c +++ b/arch/xtensa/kernel/traps.c | |||
@@ -381,6 +381,25 @@ static __always_inline unsigned long *stack_pointer(struct task_struct *task) | |||
381 | return sp; | 381 | return sp; |
382 | } | 382 | } |
383 | 383 | ||
384 | static inline void spill_registers(void) | ||
385 | { | ||
386 | unsigned int a0, ps; | ||
387 | |||
388 | __asm__ __volatile__ ( | ||
389 | "movi a14," __stringify (PS_EXCM_BIT) " | 1\n\t" | ||
390 | "mov a12, a0\n\t" | ||
391 | "rsr a13," __stringify(SAR) "\n\t" | ||
392 | "xsr a14," __stringify(PS) "\n\t" | ||
393 | "movi a0, _spill_registers\n\t" | ||
394 | "rsync\n\t" | ||
395 | "callx0 a0\n\t" | ||
396 | "mov a0, a12\n\t" | ||
397 | "wsr a13," __stringify(SAR) "\n\t" | ||
398 | "wsr a14," __stringify(PS) "\n\t" | ||
399 | :: "a" (&a0), "a" (&ps) | ||
400 | : "a2", "a3", "a4", "a7", "a11", "a12", "a13", "a14", "a15", "memory"); | ||
401 | } | ||
402 | |||
384 | void show_trace(struct task_struct *task, unsigned long *sp) | 403 | void show_trace(struct task_struct *task, unsigned long *sp) |
385 | { | 404 | { |
386 | unsigned long a0, a1, pc; | 405 | unsigned long a0, a1, pc; |
diff --git a/arch/xtensa/mm/fault.c b/arch/xtensa/mm/fault.c index e367e3026436..b17885a0b508 100644 --- a/arch/xtensa/mm/fault.c +++ b/arch/xtensa/mm/fault.c | |||
@@ -19,7 +19,6 @@ | |||
19 | #include <asm/cacheflush.h> | 19 | #include <asm/cacheflush.h> |
20 | #include <asm/hardirq.h> | 20 | #include <asm/hardirq.h> |
21 | #include <asm/uaccess.h> | 21 | #include <asm/uaccess.h> |
22 | #include <asm/system.h> | ||
23 | #include <asm/pgalloc.h> | 22 | #include <asm/pgalloc.h> |
24 | 23 | ||
25 | unsigned long asid_cache = ASID_USER_FIRST; | 24 | unsigned long asid_cache = ASID_USER_FIRST; |
diff --git a/arch/xtensa/mm/tlb.c b/arch/xtensa/mm/tlb.c index 239461d8ea88..e2700b21395b 100644 --- a/arch/xtensa/mm/tlb.c +++ b/arch/xtensa/mm/tlb.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <asm/processor.h> | 18 | #include <asm/processor.h> |
19 | #include <asm/mmu_context.h> | 19 | #include <asm/mmu_context.h> |
20 | #include <asm/tlbflush.h> | 20 | #include <asm/tlbflush.h> |
21 | #include <asm/system.h> | ||
22 | #include <asm/cacheflush.h> | 21 | #include <asm/cacheflush.h> |
23 | 22 | ||
24 | 23 | ||