Log message:
sys_init_module now sets context for flush_icache_range,
so we can merge flush_icache_range/flush_icache_user_range
and rename flush_icache_user_page back.

Modified files:
    linux/arch/m68k/kernel:
        m68k_ksyms.c 
    linux/arch/m68k/mm:
        cache.c 
    linux/fs:
        binfmt_aout.c binfmt_elf.c 
    linux/include/asm-m68k:
        cacheflush.h 


Index: linux/arch/m68k/kernel/m68k_ksyms.c
Stats: 1 deletion
http://linux-m68k-cvs.ubb.ca/c/cvsweb/linux/arch/m68k/kernel/m68k_ksyms%2ec.diff?r1=1.11&r2=1.12
========================================================================
--- m68k_ksyms.c        19 Oct 2004 23:06:39 -0000      1.11
+++ m68k_ksyms.c        30 Aug 2005 10:39:38 -0000      1.12
@@ -46,7 +46,6 @@
 EXPORT_SYMBOL(iounmap);
 EXPORT_SYMBOL(kernel_set_cachemode);
 #endif /* !CONFIG_SUN3 */
-EXPORT_SYMBOL(flush_icache_user_range);
 EXPORT_SYMBOL(m68k_debug_device);
 EXPORT_SYMBOL(mach_hwclk);
 EXPORT_SYMBOL(mach_get_ss);
Index: linux/arch/m68k/mm/cache.c
Stats: 2 insertions, 44 deletions, 10 modifications
http://linux-m68k-cvs.ubb.ca/c/cvsweb/linux/arch/m68k/mm/cache%2ec.diff?r1=1.3&r2=1.4
========================================================================
--- cache.c     5 Apr 2004 13:09:06 -0000       1.3
+++ cache.c     30 Aug 2005 10:39:39 -0000      1.4
@@ -6,18 +6,16 @@
  *  Copyright (C) 1995  Hamish Macdonald
  */
 
+#include <linux/module.h>
 #include <asm/pgalloc.h>
 #include <asm/traps.h>
 
 
-static unsigned long virt_to_phys_slow(unsigned long vaddr, mm_segment_t fs)
+static unsigned long virt_to_phys_slow(unsigned long vaddr)
 {
        if (CPU_IS_060) {
-               mm_segment_t old_fs = get_fs();
                unsigned long paddr;
 
-               set_fs(fs);
-
                /* The PLPAR instruction causes an access error if the 
translation
                 * is not possible. To catch this we use the same exception 
mechanism
                 * as for user space accesses in <asm/uaccess.h>. */
@@ -36,21 +34,16 @@
                              ".previous"
                              : "=a" (paddr)
                              : "0" (vaddr));
-               set_fs(old_fs);
                return paddr;
        } else if (CPU_IS_040) {
-               mm_segment_t old_fs = get_fs();
                unsigned long mmusr;
 
-               set_fs(fs);
-
                asm volatile (".chip 68040\n\t"
                              "ptestr (%1)\n\t"
                              "movec %%mmusr, %0\n\t"
                              ".chip 68k"
                              : "=r" (mmusr)
                              : "a" (vaddr));
-               set_fs(old_fs);
 
                if (mmusr & MMU_R_040)
                        return (mmusr & PAGE_MASK) | (vaddr & ~PAGE_MASK);
@@ -61,7 +54,7 @@
                asm volatile ("ptestr %3,%2@,#7,%0\n\t"
                              "pmove %%psr,%1@"
                              : "=a&" (descaddr)
-                             : "a" (&mmusr), "a" (vaddr), "d" (fs.seg));
+                             : "a" (&mmusr), "a" (vaddr), "d" (get_fs().seg));
                if (mmusr & (MMU_I|MMU_B|MMU_L))
                        return 0;
                descaddr = phys_to_virt((unsigned long)descaddr);
@@ -81,42 +74,6 @@
 /* RZ: use cpush %bc instead of cpush %dc, cinv %ic */
 void flush_icache_range(unsigned long address, unsigned long endaddr)
 {
-       if (CPU_IS_040_OR_060) {
-               address &= PAGE_MASK;
-
-               if (address >= PAGE_OFFSET && address < (unsigned 
long)high_memory) {
-                       do {
-                               asm volatile ("nop\n\t"
-                                             ".chip 68040\n\t"
-                                             "cpushp %%bc,(%0)\n\t"
-                                             ".chip 68k"
-                                             : : "a" (virt_to_phys((void 
*)address)));
-                               address += PAGE_SIZE;
-                       } while (address < endaddr);
-               } else {
-                       do {
-                               asm volatile ("nop\n\t"
-                                             ".chip 68040\n\t"
-                                             "cpushp %%bc,(%0)\n\t"
-                                             ".chip 68k"
-                                             : : "a" 
(virt_to_phys_slow(address, KERNEL_DS)));
-                               address += PAGE_SIZE;
-                       } while (address < endaddr);
-               }
-       } else {
-               unsigned long tmp;
-               asm volatile ("movec %%cacr,%0\n\t"
-                             "orw %1,%0\n\t"
-                             "movec %0,%%cacr"
-                             : "=&d" (tmp)
-                             : "di" (FLUSH_I));
-       }
-}
-
-void flush_icache_user_range(void *addr, unsigned long size)
-{
-       unsigned long address = (unsigned long)addr;
-       unsigned long endaddr = address + size;
 
        if (CPU_IS_040_OR_060) {
                address &= PAGE_MASK;
@@ -126,7 +83,7 @@
                                      ".chip 68040\n\t"
                                      "cpushp %%bc,(%0)\n\t"
                                      ".chip 68k"
-                                     : : "a" (virt_to_phys_slow(address, 
get_fs())));
+                                     : : "a" (virt_to_phys_slow(address)));
                        address += PAGE_SIZE;
                } while (address < endaddr);
        } else {
@@ -138,9 +95,10 @@
                              : "di" (FLUSH_I));
        }
 }
+EXPORT_SYMBOL(flush_icache_range);
 
-void flush_icache_user_page(struct vm_area_struct *vma, struct page *page,
-                           unsigned long addr, int len)
+void flush_icache_user_range(struct vm_area_struct *vma, struct page *page,
+                            unsigned long addr, int len)
 {
        if (CPU_IS_040_OR_060) {
                asm volatile ("nop\n\t"
Index: linux/fs/binfmt_aout.c
Stats: 14 modifications
http://linux-m68k-cvs.ubb.ca/c/cvsweb/linux/fs/binfmt_aout%2ec.diff?r1=1.13&r2=1.14
========================================================================
--- binfmt_aout.c       29 Aug 2005 15:37:06 -0000      1.13
+++ binfmt_aout.c       30 Aug 2005 10:39:39 -0000      1.14
@@ -369,9 +369,8 @@
                        send_sig(SIGKILL, current, 0);
                        return error;
                }
-
-               flush_icache_user_range((void *)text_addr,
-                                       ex.a_text + ex.a_data);
+                        
+               flush_icache_range(text_addr, text_addr+ex.a_text+ex.a_data);
        } else {
                static unsigned long error_time, error_time2;
                if ((ex.a_text & 0xfff || ex.a_data & 0xfff) &&
@@ -398,8 +397,9 @@
                        bprm->file->f_op->read(bprm->file,
                                        (char __user *)N_TXTADDR(ex),
                                        ex.a_text+ex.a_data, &pos);
-                       flush_icache_user_range((void *)N_TXTADDR(ex),
-                                               ex.a_text + ex.a_data);
+                       flush_icache_range((unsigned long) N_TXTADDR(ex),
+                                          (unsigned long) N_TXTADDR(ex) +
+                                          ex.a_text+ex.a_data);
                        goto beyond_if;
                }
 
@@ -504,8 +504,8 @@
                
                file->f_op->read(file, (char __user *)start_addr,
                        ex.a_text + ex.a_data, &pos);
-               flush_icache_user_range((void *)start_addr,
-                                       ex.a_text + ex.a_data);
+               flush_icache_range((unsigned long) start_addr,
+                                  (unsigned long) start_addr + ex.a_text + 
ex.a_data);
 
                retval = 0;
                goto out;
Index: linux/fs/binfmt_elf.c
Stats: 3 modifications
http://linux-m68k-cvs.ubb.ca/c/cvsweb/linux/fs/binfmt_elf%2ec.diff?r1=1.29&r2=1.30
========================================================================
--- binfmt_elf.c        29 Aug 2005 15:37:06 -0000      1.29
+++ binfmt_elf.c        30 Aug 2005 10:39:39 -0000      1.30
@@ -471,7 +471,8 @@
                goto out;
        if (interpreter->f_op->read(interpreter, addr, text_data, &offset) < 0)
                goto out;
-       flush_icache_user_range(addr, text_data);
+       flush_icache_range((unsigned long)addr,
+                          (unsigned long)addr + text_data);
 
 
        down_write(&current->mm->mmap_sem);     
Index: linux/include/asm-m68k/cacheflush.h
Stats: 1 deletion, 6 modifications
http://linux-m68k-cvs.ubb.ca/c/cvsweb/linux/include/asm%2dm68k/cacheflush%2eh.diff?r1=1.12&r2=1.13
========================================================================
--- cacheflush.h        18 Jun 2005 17:50:26 -0000      1.12
+++ cacheflush.h        30 Aug 2005 10:39:39 -0000      1.13
@@ -131,10 +131,9 @@
 #define flush_dcache_mmap_unlock(mapping)      do { } while (0)
 #define flush_icache_page(vma, page)   __flush_page_to_ram(page_address(page))
 
-extern void flush_icache_user_page(struct vm_area_struct *vma, struct page 
*page,
-                                  unsigned long addr, int len);
+extern void flush_icache_user_range(struct vm_area_struct *vma, struct page 
*page,
+                                   unsigned long addr, int len);
 extern void flush_icache_range(unsigned long address, unsigned long endaddr);
-extern void flush_icache_user_range(void *address, unsigned long size);
 
 static inline void copy_to_user_page(struct vm_area_struct *vma,
                                     struct page *page, unsigned long vaddr,
@@ -142,7 +141,7 @@
 {
        flush_cache_page(vma, vaddr, page_to_pfn(page));
        memcpy(dst, src, len);
-       flush_icache_user_page(vma, page, vaddr, len);
+       flush_icache_user_range(vma, page, vaddr, len);
 }
 static inline void copy_from_user_page(struct vm_area_struct *vma,
                                       struct page *page, unsigned long vaddr,
-
To unsubscribe from this list: send the line "unsubscribe linux-m68k-cvscommit" 
in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to