diff options
Diffstat (limited to 'arch/tile')
-rw-r--r-- | arch/tile/Kconfig | 3 | ||||
-rw-r--r-- | arch/tile/kernel/ptrace.c | 13 | ||||
-rw-r--r-- | arch/tile/kernel/setup.c | 2 | ||||
-rw-r--r-- | arch/tile/mm/highmem.c | 3 |
4 files changed, 13 insertions, 8 deletions
diff --git a/arch/tile/Kconfig b/arch/tile/Kconfig index 89cfee07efa9..7e8c2844e093 100644 --- a/arch/tile/Kconfig +++ b/arch/tile/Kconfig | |||
@@ -58,6 +58,9 @@ config ARCH_SUPPORTS_OPTIMIZED_INLINING | |||
58 | config ARCH_PHYS_ADDR_T_64BIT | 58 | config ARCH_PHYS_ADDR_T_64BIT |
59 | def_bool y | 59 | def_bool y |
60 | 60 | ||
61 | config ARCH_DMA_ADDR_T_64BIT | ||
62 | def_bool y | ||
63 | |||
61 | config LOCKDEP_SUPPORT | 64 | config LOCKDEP_SUPPORT |
62 | def_bool y | 65 | def_bool y |
63 | 66 | ||
diff --git a/arch/tile/kernel/ptrace.c b/arch/tile/kernel/ptrace.c index 5b20c2874d51..9cd29884c09f 100644 --- a/arch/tile/kernel/ptrace.c +++ b/arch/tile/kernel/ptrace.c | |||
@@ -45,7 +45,8 @@ void ptrace_disable(struct task_struct *child) | |||
45 | clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); | 45 | clear_tsk_thread_flag(child, TIF_SYSCALL_TRACE); |
46 | } | 46 | } |
47 | 47 | ||
48 | long arch_ptrace(struct task_struct *child, long request, long addr, long data) | 48 | long arch_ptrace(struct task_struct *child, long request, |
49 | unsigned long addr, unsigned long data) | ||
49 | { | 50 | { |
50 | unsigned long __user *datap = (long __user __force *)data; | 51 | unsigned long __user *datap = (long __user __force *)data; |
51 | unsigned long tmp; | 52 | unsigned long tmp; |
@@ -57,7 +58,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
57 | switch (request) { | 58 | switch (request) { |
58 | 59 | ||
59 | case PTRACE_PEEKUSR: /* Read register from pt_regs. */ | 60 | case PTRACE_PEEKUSR: /* Read register from pt_regs. */ |
60 | if (addr < 0 || addr >= PTREGS_SIZE) | 61 | if (addr >= PTREGS_SIZE) |
61 | break; | 62 | break; |
62 | childreg = (char *)task_pt_regs(child) + addr; | 63 | childreg = (char *)task_pt_regs(child) + addr; |
63 | #ifdef CONFIG_COMPAT | 64 | #ifdef CONFIG_COMPAT |
@@ -76,7 +77,7 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
76 | break; | 77 | break; |
77 | 78 | ||
78 | case PTRACE_POKEUSR: /* Write register in pt_regs. */ | 79 | case PTRACE_POKEUSR: /* Write register in pt_regs. */ |
79 | if (addr < 0 || addr >= PTREGS_SIZE) | 80 | if (addr >= PTREGS_SIZE) |
80 | break; | 81 | break; |
81 | childreg = (char *)task_pt_regs(child) + addr; | 82 | childreg = (char *)task_pt_regs(child) + addr; |
82 | #ifdef CONFIG_COMPAT | 83 | #ifdef CONFIG_COMPAT |
@@ -98,7 +99,8 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
98 | if (!access_ok(VERIFY_WRITE, datap, PTREGS_SIZE)) | 99 | if (!access_ok(VERIFY_WRITE, datap, PTREGS_SIZE)) |
99 | break; | 100 | break; |
100 | childregs = (long *)task_pt_regs(child); | 101 | childregs = (long *)task_pt_regs(child); |
101 | for (i = 0; i < sizeof(struct pt_regs)/sizeof(long); ++i) { | 102 | for (i = 0; i < sizeof(struct pt_regs)/sizeof(unsigned long); |
103 | ++i) { | ||
102 | ret = __put_user(childregs[i], &datap[i]); | 104 | ret = __put_user(childregs[i], &datap[i]); |
103 | if (ret != 0) | 105 | if (ret != 0) |
104 | break; | 106 | break; |
@@ -109,7 +111,8 @@ long arch_ptrace(struct task_struct *child, long request, long addr, long data) | |||
109 | if (!access_ok(VERIFY_READ, datap, PTREGS_SIZE)) | 111 | if (!access_ok(VERIFY_READ, datap, PTREGS_SIZE)) |
110 | break; | 112 | break; |
111 | childregs = (long *)task_pt_regs(child); | 113 | childregs = (long *)task_pt_regs(child); |
112 | for (i = 0; i < sizeof(struct pt_regs)/sizeof(long); ++i) { | 114 | for (i = 0; i < sizeof(struct pt_regs)/sizeof(unsigned long); |
115 | ++i) { | ||
113 | ret = __get_user(childregs[i], &datap[i]); | 116 | ret = __get_user(childregs[i], &datap[i]); |
114 | if (ret != 0) | 117 | if (ret != 0) |
115 | break; | 118 | break; |
diff --git a/arch/tile/kernel/setup.c b/arch/tile/kernel/setup.c index f3a50e74f9a4..ae51cad12da0 100644 --- a/arch/tile/kernel/setup.c +++ b/arch/tile/kernel/setup.c | |||
@@ -30,8 +30,6 @@ | |||
30 | #include <linux/timex.h> | 30 | #include <linux/timex.h> |
31 | #include <asm/setup.h> | 31 | #include <asm/setup.h> |
32 | #include <asm/sections.h> | 32 | #include <asm/sections.h> |
33 | #include <asm/sections.h> | ||
34 | #include <asm/cacheflush.h> | ||
35 | #include <asm/cacheflush.h> | 33 | #include <asm/cacheflush.h> |
36 | #include <asm/pgalloc.h> | 34 | #include <asm/pgalloc.h> |
37 | #include <asm/mmu_context.h> | 35 | #include <asm/mmu_context.h> |
diff --git a/arch/tile/mm/highmem.c b/arch/tile/mm/highmem.c index 8ef6595e162c..abb57331cf6e 100644 --- a/arch/tile/mm/highmem.c +++ b/arch/tile/mm/highmem.c | |||
@@ -241,7 +241,7 @@ void __kunmap_atomic(void *kvaddr) | |||
241 | pte_t pteval = *pte; | 241 | pte_t pteval = *pte; |
242 | int idx, type; | 242 | int idx, type; |
243 | 243 | ||
244 | type = kmap_atomic_idx_pop(); | 244 | type = kmap_atomic_idx(); |
245 | idx = type + KM_TYPE_NR*smp_processor_id(); | 245 | idx = type + KM_TYPE_NR*smp_processor_id(); |
246 | 246 | ||
247 | /* | 247 | /* |
@@ -252,6 +252,7 @@ void __kunmap_atomic(void *kvaddr) | |||
252 | BUG_ON(!pte_present(pteval) && !pte_migrating(pteval)); | 252 | BUG_ON(!pte_present(pteval) && !pte_migrating(pteval)); |
253 | kmap_atomic_unregister(pte_page(pteval), vaddr); | 253 | kmap_atomic_unregister(pte_page(pteval), vaddr); |
254 | kpte_clear_flush(pte, vaddr); | 254 | kpte_clear_flush(pte, vaddr); |
255 | kmap_atomic_idx_pop(); | ||
255 | } else { | 256 | } else { |
256 | /* Must be a lowmem page */ | 257 | /* Must be a lowmem page */ |
257 | BUG_ON(vaddr < PAGE_OFFSET); | 258 | BUG_ON(vaddr < PAGE_OFFSET); |