diff options
| -rw-r--r-- | arch/m68k/include/asm/mcf_pgtable.h | 3 | ||||
| -rw-r--r-- | arch/m68k/mm/mcfmmu.c | 9 | ||||
| -rw-r--r-- | arch/m68k/platform/coldfire/entry.S | 4 |
3 files changed, 8 insertions, 8 deletions
diff --git a/arch/m68k/include/asm/mcf_pgtable.h b/arch/m68k/include/asm/mcf_pgtable.h index 756bde4fb4f8..3c793682e5d9 100644 --- a/arch/m68k/include/asm/mcf_pgtable.h +++ b/arch/m68k/include/asm/mcf_pgtable.h | |||
| @@ -78,7 +78,8 @@ | |||
| 78 | | CF_PAGE_READABLE \ | 78 | | CF_PAGE_READABLE \ |
| 79 | | CF_PAGE_WRITABLE \ | 79 | | CF_PAGE_WRITABLE \ |
| 80 | | CF_PAGE_EXEC \ | 80 | | CF_PAGE_EXEC \ |
| 81 | | CF_PAGE_SYSTEM) | 81 | | CF_PAGE_SYSTEM \ |
| 82 | | CF_PAGE_SHARED) | ||
| 82 | 83 | ||
| 83 | #define PAGE_COPY __pgprot(CF_PAGE_VALID \ | 84 | #define PAGE_COPY __pgprot(CF_PAGE_VALID \ |
| 84 | | CF_PAGE_ACCESSED \ | 85 | | CF_PAGE_ACCESSED \ |
diff --git a/arch/m68k/mm/mcfmmu.c b/arch/m68k/mm/mcfmmu.c index babd5a97cdcb..875b800ef0dd 100644 --- a/arch/m68k/mm/mcfmmu.c +++ b/arch/m68k/mm/mcfmmu.c | |||
| @@ -87,7 +87,7 @@ void __init paging_init(void) | |||
| 87 | 87 | ||
| 88 | int cf_tlb_miss(struct pt_regs *regs, int write, int dtlb, int extension_word) | 88 | int cf_tlb_miss(struct pt_regs *regs, int write, int dtlb, int extension_word) |
| 89 | { | 89 | { |
| 90 | unsigned long flags, mmuar; | 90 | unsigned long flags, mmuar, mmutr; |
| 91 | struct mm_struct *mm; | 91 | struct mm_struct *mm; |
| 92 | pgd_t *pgd; | 92 | pgd_t *pgd; |
| 93 | pmd_t *pmd; | 93 | pmd_t *pmd; |
| @@ -137,9 +137,10 @@ int cf_tlb_miss(struct pt_regs *regs, int write, int dtlb, int extension_word) | |||
| 137 | if (!pte_dirty(*pte) && !KMAPAREA(mmuar)) | 137 | if (!pte_dirty(*pte) && !KMAPAREA(mmuar)) |
| 138 | set_pte(pte, pte_wrprotect(*pte)); | 138 | set_pte(pte, pte_wrprotect(*pte)); |
| 139 | 139 | ||
| 140 | mmu_write(MMUTR, (mmuar & PAGE_MASK) | (asid << MMUTR_IDN) | | 140 | mmutr = (mmuar & PAGE_MASK) | (asid << MMUTR_IDN) | MMUTR_V; |
| 141 | (((int)(pte->pte) & (int)CF_PAGE_MMUTR_MASK) | 141 | if ((mmuar < TASK_UNMAPPED_BASE) || (mmuar >= TASK_SIZE)) |
| 142 | >> CF_PAGE_MMUTR_SHIFT) | MMUTR_V); | 142 | mmutr |= (pte->pte & CF_PAGE_MMUTR_MASK) >> CF_PAGE_MMUTR_SHIFT; |
| 143 | mmu_write(MMUTR, mmutr); | ||
| 143 | 144 | ||
| 144 | mmu_write(MMUDR, (pte_val(*pte) & PAGE_MASK) | | 145 | mmu_write(MMUDR, (pte_val(*pte) & PAGE_MASK) | |
| 145 | ((pte->pte) & CF_PAGE_MMUDR_MASK) | MMUDR_SZ_8KB | MMUDR_X); | 146 | ((pte->pte) & CF_PAGE_MMUDR_MASK) | MMUDR_SZ_8KB | MMUDR_X); |
diff --git a/arch/m68k/platform/coldfire/entry.S b/arch/m68k/platform/coldfire/entry.S index 863889fc31c9..281e38c2b6c7 100644 --- a/arch/m68k/platform/coldfire/entry.S +++ b/arch/m68k/platform/coldfire/entry.S | |||
| @@ -136,7 +136,7 @@ Luser_return: | |||
| 136 | movel %sp,%d1 /* get thread_info pointer */ | 136 | movel %sp,%d1 /* get thread_info pointer */ |
| 137 | andl #-THREAD_SIZE,%d1 /* at base of kernel stack */ | 137 | andl #-THREAD_SIZE,%d1 /* at base of kernel stack */ |
| 138 | movel %d1,%a0 | 138 | movel %d1,%a0 |
| 139 | movel %a0@(TINFO_FLAGS),%d1 /* get thread_info->flags */ | 139 | moveb %a0@(TINFO_FLAGS+3),%d1 /* thread_info->flags (low 8 bits) */ |
| 140 | jne Lwork_to_do /* still work to do */ | 140 | jne Lwork_to_do /* still work to do */ |
| 141 | 141 | ||
| 142 | Lreturn: | 142 | Lreturn: |
| @@ -148,8 +148,6 @@ Lwork_to_do: | |||
| 148 | btst #TIF_NEED_RESCHED,%d1 | 148 | btst #TIF_NEED_RESCHED,%d1 |
| 149 | jne reschedule | 149 | jne reschedule |
| 150 | 150 | ||
| 151 | /* GERG: do we need something here for TRACEing?? */ | ||
| 152 | |||
| 153 | Lsignal_return: | 151 | Lsignal_return: |
| 154 | subql #4,%sp /* dummy return address */ | 152 | subql #4,%sp /* dummy return address */ |
| 155 | SAVE_SWITCH_STACK | 153 | SAVE_SWITCH_STACK |
