diff options
author | Olof Johansson <olof@lixom.net> | 2012-09-05 18:35:48 -0400 |
---|---|---|
committer | Olof Johansson <olof@lixom.net> | 2012-09-05 18:35:48 -0400 |
commit | 1875962377574b4edb7b164001e3e341c25290d5 (patch) | |
tree | 374a5299403ec21e2d9a66a6548ce876a388b589 /arch/arm/include | |
parent | 5cbee140a28c2746449ae31e85738043ae4da927 (diff) | |
parent | c88a79a7789b2909ad1cf69ea2c9142030bbd6f4 (diff) |
Merge branch 'soc-core' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas into next/dt
* 'soc-core' of git://git.kernel.org/pub/scm/linux/kernel/git/horms/renesas:
ARM: mach-shmobile: Add compilation support for dtbs using 'make dtbs'
+ sync to 3.6-rc3
Diffstat (limited to 'arch/arm/include')
-rw-r--r-- | arch/arm/include/asm/pgtable.h | 40 | ||||
-rw-r--r-- | arch/arm/include/asm/sched_clock.h | 2 |
2 files changed, 23 insertions, 19 deletions
diff --git a/arch/arm/include/asm/pgtable.h b/arch/arm/include/asm/pgtable.h index f66626d71e7d..41dc31f834c3 100644 --- a/arch/arm/include/asm/pgtable.h +++ b/arch/arm/include/asm/pgtable.h | |||
@@ -195,6 +195,18 @@ static inline pte_t *pmd_page_vaddr(pmd_t pmd) | |||
195 | 195 | ||
196 | #define pte_clear(mm,addr,ptep) set_pte_ext(ptep, __pte(0), 0) | 196 | #define pte_clear(mm,addr,ptep) set_pte_ext(ptep, __pte(0), 0) |
197 | 197 | ||
198 | #define pte_none(pte) (!pte_val(pte)) | ||
199 | #define pte_present(pte) (pte_val(pte) & L_PTE_PRESENT) | ||
200 | #define pte_write(pte) (!(pte_val(pte) & L_PTE_RDONLY)) | ||
201 | #define pte_dirty(pte) (pte_val(pte) & L_PTE_DIRTY) | ||
202 | #define pte_young(pte) (pte_val(pte) & L_PTE_YOUNG) | ||
203 | #define pte_exec(pte) (!(pte_val(pte) & L_PTE_XN)) | ||
204 | #define pte_special(pte) (0) | ||
205 | |||
206 | #define pte_present_user(pte) \ | ||
207 | ((pte_val(pte) & (L_PTE_PRESENT | L_PTE_USER)) == \ | ||
208 | (L_PTE_PRESENT | L_PTE_USER)) | ||
209 | |||
198 | #if __LINUX_ARM_ARCH__ < 6 | 210 | #if __LINUX_ARM_ARCH__ < 6 |
199 | static inline void __sync_icache_dcache(pte_t pteval) | 211 | static inline void __sync_icache_dcache(pte_t pteval) |
200 | { | 212 | { |
@@ -206,25 +218,15 @@ extern void __sync_icache_dcache(pte_t pteval); | |||
206 | static inline void set_pte_at(struct mm_struct *mm, unsigned long addr, | 218 | static inline void set_pte_at(struct mm_struct *mm, unsigned long addr, |
207 | pte_t *ptep, pte_t pteval) | 219 | pte_t *ptep, pte_t pteval) |
208 | { | 220 | { |
209 | if (addr >= TASK_SIZE) | 221 | unsigned long ext = 0; |
210 | set_pte_ext(ptep, pteval, 0); | 222 | |
211 | else { | 223 | if (addr < TASK_SIZE && pte_present_user(pteval)) { |
212 | __sync_icache_dcache(pteval); | 224 | __sync_icache_dcache(pteval); |
213 | set_pte_ext(ptep, pteval, PTE_EXT_NG); | 225 | ext |= PTE_EXT_NG; |
214 | } | 226 | } |
215 | } | ||
216 | 227 | ||
217 | #define pte_none(pte) (!pte_val(pte)) | 228 | set_pte_ext(ptep, pteval, ext); |
218 | #define pte_present(pte) (pte_val(pte) & L_PTE_PRESENT) | 229 | } |
219 | #define pte_write(pte) (!(pte_val(pte) & L_PTE_RDONLY)) | ||
220 | #define pte_dirty(pte) (pte_val(pte) & L_PTE_DIRTY) | ||
221 | #define pte_young(pte) (pte_val(pte) & L_PTE_YOUNG) | ||
222 | #define pte_exec(pte) (!(pte_val(pte) & L_PTE_XN)) | ||
223 | #define pte_special(pte) (0) | ||
224 | |||
225 | #define pte_present_user(pte) \ | ||
226 | ((pte_val(pte) & (L_PTE_PRESENT | L_PTE_USER)) == \ | ||
227 | (L_PTE_PRESENT | L_PTE_USER)) | ||
228 | 230 | ||
229 | #define PTE_BIT_FUNC(fn,op) \ | 231 | #define PTE_BIT_FUNC(fn,op) \ |
230 | static inline pte_t pte_##fn(pte_t pte) { pte_val(pte) op; return pte; } | 232 | static inline pte_t pte_##fn(pte_t pte) { pte_val(pte) op; return pte; } |
@@ -251,13 +253,13 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot) | |||
251 | * | 253 | * |
252 | * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 | 254 | * 3 3 2 2 2 2 2 2 2 2 2 2 1 1 1 1 1 1 1 1 1 1 |
253 | * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 | 255 | * 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 |
254 | * <--------------- offset --------------------> <- type --> 0 0 0 | 256 | * <--------------- offset ----------------------> < type -> 0 0 0 |
255 | * | 257 | * |
256 | * This gives us up to 63 swap files and 32GB per swap file. Note that | 258 | * This gives us up to 31 swap files and 64GB per swap file. Note that |
257 | * the offset field is always non-zero. | 259 | * the offset field is always non-zero. |
258 | */ | 260 | */ |
259 | #define __SWP_TYPE_SHIFT 3 | 261 | #define __SWP_TYPE_SHIFT 3 |
260 | #define __SWP_TYPE_BITS 6 | 262 | #define __SWP_TYPE_BITS 5 |
261 | #define __SWP_TYPE_MASK ((1 << __SWP_TYPE_BITS) - 1) | 263 | #define __SWP_TYPE_MASK ((1 << __SWP_TYPE_BITS) - 1) |
262 | #define __SWP_OFFSET_SHIFT (__SWP_TYPE_BITS + __SWP_TYPE_SHIFT) | 264 | #define __SWP_OFFSET_SHIFT (__SWP_TYPE_BITS + __SWP_TYPE_SHIFT) |
263 | 265 | ||
diff --git a/arch/arm/include/asm/sched_clock.h b/arch/arm/include/asm/sched_clock.h index e3f757263438..05b8e82ec9f5 100644 --- a/arch/arm/include/asm/sched_clock.h +++ b/arch/arm/include/asm/sched_clock.h | |||
@@ -10,5 +10,7 @@ | |||
10 | 10 | ||
11 | extern void sched_clock_postinit(void); | 11 | extern void sched_clock_postinit(void); |
12 | extern void setup_sched_clock(u32 (*read)(void), int bits, unsigned long rate); | 12 | extern void setup_sched_clock(u32 (*read)(void), int bits, unsigned long rate); |
13 | extern void setup_sched_clock_needs_suspend(u32 (*read)(void), int bits, | ||
14 | unsigned long rate); | ||
13 | 15 | ||
14 | #endif | 16 | #endif |