aboutsummaryrefslogtreecommitdiffstats
path: root/arch/frv
diff options
context:
space:
mode:
Diffstat (limited to 'arch/frv')
-rw-r--r--arch/frv/include/asm/pgtable.h29
-rw-r--r--arch/frv/include/asm/string.h1
-rw-r--r--arch/frv/include/asm/thread_info.h4
-rw-r--r--arch/frv/kernel/asm-offsets.c1
-rw-r--r--arch/frv/kernel/signal.c2
-rw-r--r--arch/frv/mb93090-mb00/pci-frv.c2
-rw-r--r--arch/frv/mb93090-mb00/pci-vdk.c4
-rw-r--r--arch/frv/mm/extable.c23
-rw-r--r--arch/frv/mm/fault.c2
9 files changed, 12 insertions, 56 deletions
diff --git a/arch/frv/include/asm/pgtable.h b/arch/frv/include/asm/pgtable.h
index eb0110acd19b..93bcf2abd1a1 100644
--- a/arch/frv/include/asm/pgtable.h
+++ b/arch/frv/include/asm/pgtable.h
@@ -62,10 +62,6 @@ typedef pte_t *pte_addr_t;
62#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) }) 62#define __pte_to_swp_entry(pte) ((swp_entry_t) { pte_val(pte) })
63#define __swp_entry_to_pte(x) ((pte_t) { (x).val }) 63#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
64 64
65#ifndef __ASSEMBLY__
66static inline int pte_file(pte_t pte) { return 0; }
67#endif
68
69#define ZERO_PAGE(vaddr) ({ BUG(); NULL; }) 65#define ZERO_PAGE(vaddr) ({ BUG(); NULL; })
70 66
71#define swapper_pg_dir ((pgd_t *) NULL) 67#define swapper_pg_dir ((pgd_t *) NULL)
@@ -144,7 +140,7 @@ extern unsigned long empty_zero_page;
144#define PTRS_PER_PTE 4096 140#define PTRS_PER_PTE 4096
145 141
146#define USER_PGDS_IN_LAST_PML4 (TASK_SIZE / PGDIR_SIZE) 142#define USER_PGDS_IN_LAST_PML4 (TASK_SIZE / PGDIR_SIZE)
147#define FIRST_USER_ADDRESS 0 143#define FIRST_USER_ADDRESS 0UL
148 144
149#define USER_PGD_PTRS (PAGE_OFFSET >> PGDIR_SHIFT) 145#define USER_PGD_PTRS (PAGE_OFFSET >> PGDIR_SHIFT)
150#define KERNEL_PGD_PTRS (PTRS_PER_PGD - USER_PGD_PTRS) 146#define KERNEL_PGD_PTRS (PTRS_PER_PGD - USER_PGD_PTRS)
@@ -298,7 +294,6 @@ static inline pmd_t *pmd_offset(pud_t *dir, unsigned long address)
298 294
299#define _PAGE_RESERVED_MASK (xAMPRx_RESERVED8 | xAMPRx_RESERVED13) 295#define _PAGE_RESERVED_MASK (xAMPRx_RESERVED8 | xAMPRx_RESERVED13)
300 296
301#define _PAGE_FILE 0x002 /* set:pagecache unset:swap */
302#define _PAGE_PROTNONE 0x000 /* If not present */ 297#define _PAGE_PROTNONE 0x000 /* If not present */
303 298
304#define _PAGE_CHG_MASK (PTE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY) 299#define _PAGE_CHG_MASK (PTE_MASK | _PAGE_ACCESSED | _PAGE_DIRTY)
@@ -463,27 +458,15 @@ static inline pte_t pte_modify(pte_t pte, pgprot_t newprot)
463 * Handle swap and file entries 458 * Handle swap and file entries
464 * - the PTE is encoded in the following format: 459 * - the PTE is encoded in the following format:
465 * bit 0: Must be 0 (!_PAGE_PRESENT) 460 * bit 0: Must be 0 (!_PAGE_PRESENT)
466 * bit 1: Type: 0 for swap, 1 for file (_PAGE_FILE) 461 * bits 1-6: Swap type
467 * bits 2-7: Swap type 462 * bits 7-31: Swap offset
468 * bits 8-31: Swap offset
469 * bits 2-31: File pgoff
470 */ 463 */
471#define __swp_type(x) (((x).val >> 2) & 0x1f) 464#define __swp_type(x) (((x).val >> 1) & 0x1f)
472#define __swp_offset(x) ((x).val >> 8) 465#define __swp_offset(x) ((x).val >> 7)
473#define __swp_entry(type, offset) ((swp_entry_t) { ((type) << 2) | ((offset) << 8) }) 466#define __swp_entry(type, offset) ((swp_entry_t) { ((type) << 1) | ((offset) << 7) })
474#define __pte_to_swp_entry(_pte) ((swp_entry_t) { (_pte).pte }) 467#define __pte_to_swp_entry(_pte) ((swp_entry_t) { (_pte).pte })
475#define __swp_entry_to_pte(x) ((pte_t) { (x).val }) 468#define __swp_entry_to_pte(x) ((pte_t) { (x).val })
476 469
477static inline int pte_file(pte_t pte)
478{
479 return pte.pte & _PAGE_FILE;
480}
481
482#define PTE_FILE_MAX_BITS 29
483
484#define pte_to_pgoff(PTE) ((PTE).pte >> 2)
485#define pgoff_to_pte(off) __pte((off) << 2 | _PAGE_FILE)
486
487/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */ 470/* Needs to be defined here and not in linux/mm.h, as it is arch dependent */
488#define PageSkip(page) (0) 471#define PageSkip(page) (0)
489#define kern_addr_valid(addr) (1) 472#define kern_addr_valid(addr) (1)
diff --git a/arch/frv/include/asm/string.h b/arch/frv/include/asm/string.h
index 5ed310f64b7e..1f6c35990439 100644
--- a/arch/frv/include/asm/string.h
+++ b/arch/frv/include/asm/string.h
@@ -33,7 +33,6 @@ extern void *memcpy(void *, const void *, __kernel_size_t);
33#define __HAVE_ARCH_STRNCAT 1 33#define __HAVE_ARCH_STRNCAT 1
34#define __HAVE_ARCH_STRCMP 1 34#define __HAVE_ARCH_STRCMP 1
35#define __HAVE_ARCH_STRNCMP 1 35#define __HAVE_ARCH_STRNCMP 1
36#define __HAVE_ARCH_STRNICMP 1
37#define __HAVE_ARCH_STRCHR 1 36#define __HAVE_ARCH_STRCHR 1
38#define __HAVE_ARCH_STRRCHR 1 37#define __HAVE_ARCH_STRRCHR 1
39#define __HAVE_ARCH_STRSTR 1 38#define __HAVE_ARCH_STRSTR 1
diff --git a/arch/frv/include/asm/thread_info.h b/arch/frv/include/asm/thread_info.h
index af29e17c0181..6b917f1c2955 100644
--- a/arch/frv/include/asm/thread_info.h
+++ b/arch/frv/include/asm/thread_info.h
@@ -41,7 +41,6 @@ struct thread_info {
41 * 0-0xBFFFFFFF for user-thead 41 * 0-0xBFFFFFFF for user-thead
42 * 0-0xFFFFFFFF for kernel-thread 42 * 0-0xFFFFFFFF for kernel-thread
43 */ 43 */
44 struct restart_block restart_block;
45 44
46 __u8 supervisor_stack[0]; 45 __u8 supervisor_stack[0];
47}; 46};
@@ -65,9 +64,6 @@ struct thread_info {
65 .cpu = 0, \ 64 .cpu = 0, \
66 .preempt_count = INIT_PREEMPT_COUNT, \ 65 .preempt_count = INIT_PREEMPT_COUNT, \
67 .addr_limit = KERNEL_DS, \ 66 .addr_limit = KERNEL_DS, \
68 .restart_block = { \
69 .fn = do_no_restart_syscall, \
70 }, \
71} 67}
72 68
73#define init_thread_info (init_thread_union.thread_info) 69#define init_thread_info (init_thread_union.thread_info)
diff --git a/arch/frv/kernel/asm-offsets.c b/arch/frv/kernel/asm-offsets.c
index 9de96843a278..446e89d500cc 100644
--- a/arch/frv/kernel/asm-offsets.c
+++ b/arch/frv/kernel/asm-offsets.c
@@ -40,7 +40,6 @@ void foo(void)
40 OFFSET(TI_CPU, thread_info, cpu); 40 OFFSET(TI_CPU, thread_info, cpu);
41 OFFSET(TI_PREEMPT_COUNT, thread_info, preempt_count); 41 OFFSET(TI_PREEMPT_COUNT, thread_info, preempt_count);
42 OFFSET(TI_ADDR_LIMIT, thread_info, addr_limit); 42 OFFSET(TI_ADDR_LIMIT, thread_info, addr_limit);
43 OFFSET(TI_RESTART_BLOCK, thread_info, restart_block);
44 BLANK(); 43 BLANK();
45 44
46 /* offsets into register file storage */ 45 /* offsets into register file storage */
diff --git a/arch/frv/kernel/signal.c b/arch/frv/kernel/signal.c
index dc3d59de0870..336713ab4745 100644
--- a/arch/frv/kernel/signal.c
+++ b/arch/frv/kernel/signal.c
@@ -62,7 +62,7 @@ static int restore_sigcontext(struct sigcontext __user *sc, int *_gr8)
62 unsigned long tbr, psr; 62 unsigned long tbr, psr;
63 63
64 /* Always make any pending restarted system calls return -EINTR */ 64 /* Always make any pending restarted system calls return -EINTR */
65 current_thread_info()->restart_block.fn = do_no_restart_syscall; 65 current->restart_block.fn = do_no_restart_syscall;
66 66
67 tbr = user->i.tbr; 67 tbr = user->i.tbr;
68 psr = user->i.psr; 68 psr = user->i.psr;
diff --git a/arch/frv/mb93090-mb00/pci-frv.c b/arch/frv/mb93090-mb00/pci-frv.c
index 67b1d1685759..0635bd6c2af3 100644
--- a/arch/frv/mb93090-mb00/pci-frv.c
+++ b/arch/frv/mb93090-mb00/pci-frv.c
@@ -94,7 +94,7 @@ static void __init pcibios_allocate_bus_resources(struct list_head *bus_list)
94 r = &dev->resource[idx]; 94 r = &dev->resource[idx];
95 if (!r->start) 95 if (!r->start)
96 continue; 96 continue;
97 pci_claim_resource(dev, idx); 97 pci_claim_bridge_resource(dev, idx);
98 } 98 }
99 } 99 }
100 pcibios_allocate_bus_resources(&bus->children); 100 pcibios_allocate_bus_resources(&bus->children);
diff --git a/arch/frv/mb93090-mb00/pci-vdk.c b/arch/frv/mb93090-mb00/pci-vdk.c
index efa5d65b0007..b073f4d771a5 100644
--- a/arch/frv/mb93090-mb00/pci-vdk.c
+++ b/arch/frv/mb93090-mb00/pci-vdk.c
@@ -168,8 +168,8 @@ static int pci_frv_write_config(struct pci_bus *bus, unsigned int devfn, int whe
168} 168}
169 169
170static struct pci_ops pci_direct_frv = { 170static struct pci_ops pci_direct_frv = {
171 pci_frv_read_config, 171 .read = pci_frv_read_config,
172 pci_frv_write_config, 172 .write = pci_frv_write_config,
173}; 173};
174 174
175/* 175/*
diff --git a/arch/frv/mm/extable.c b/arch/frv/mm/extable.c
index 2fb9b3ab57b9..8863d6c1df6e 100644
--- a/arch/frv/mm/extable.c
+++ b/arch/frv/mm/extable.c
@@ -10,29 +10,6 @@ extern const void __memset_end, __memset_user_error_lr, __memset_user_error_hand
10extern const void __memcpy_end, __memcpy_user_error_lr, __memcpy_user_error_handler; 10extern const void __memcpy_end, __memcpy_user_error_lr, __memcpy_user_error_handler;
11extern spinlock_t modlist_lock; 11extern spinlock_t modlist_lock;
12 12
13/*****************************************************************************/
14/*
15 *
16 */
17static inline unsigned long search_one_table(const struct exception_table_entry *first,
18 const struct exception_table_entry *last,
19 unsigned long value)
20{
21 while (first <= last) {
22 const struct exception_table_entry __attribute__((aligned(8))) *mid;
23 long diff;
24
25 mid = (last - first) / 2 + first;
26 diff = mid->insn - value;
27 if (diff == 0)
28 return mid->fixup;
29 else if (diff < 0)
30 first = mid + 1;
31 else
32 last = mid - 1;
33 }
34 return 0;
35} /* end search_one_table() */
36 13
37/*****************************************************************************/ 14/*****************************************************************************/
38/* 15/*
diff --git a/arch/frv/mm/fault.c b/arch/frv/mm/fault.c
index 9a66372fc7c7..ec4917ddf678 100644
--- a/arch/frv/mm/fault.c
+++ b/arch/frv/mm/fault.c
@@ -168,6 +168,8 @@ asmlinkage void do_page_fault(int datammu, unsigned long esr0, unsigned long ear
168 if (unlikely(fault & VM_FAULT_ERROR)) { 168 if (unlikely(fault & VM_FAULT_ERROR)) {
169 if (fault & VM_FAULT_OOM) 169 if (fault & VM_FAULT_OOM)
170 goto out_of_memory; 170 goto out_of_memory;
171 else if (fault & VM_FAULT_SIGSEGV)
172 goto bad_area;
171 else if (fault & VM_FAULT_SIGBUS) 173 else if (fault & VM_FAULT_SIGBUS)
172 goto do_sigbus; 174 goto do_sigbus;
173 BUG(); 175 BUG();