Merge git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6 into next
authorMichal Simek <monstr@monstr.eu>
Fri, 30 Mar 2012 10:10:03 +0000 (12:10 +0200)
committerMichal Simek <monstr@monstr.eu>
Fri, 30 Mar 2012 10:10:03 +0000 (12:10 +0200)
arch/microblaze/include/asm/futex.h
arch/microblaze/kernel/setup.c
arch/microblaze/lib/uaccess_old.S

index b0526d2..ff8cde1 100644 (file)
@@ -24,7 +24,7 @@
                        .word   1b,4b,2b,4b;                            \
                        .previous;"                                     \
        : "=&r" (oldval), "=&r" (ret)                                   \
-       : "b" (uaddr), "i" (-EFAULT), "r" (oparg)                       \
+       : "r" (uaddr), "i" (-EFAULT), "r" (oparg)                       \
        );                                                              \
 })
 
index 71af974..16d8dfd 100644 (file)
@@ -206,6 +206,7 @@ static int microblaze_debugfs_init(void)
 }
 arch_initcall(microblaze_debugfs_init);
 
+# ifdef CONFIG_MMU
 static int __init debugfs_tlb(void)
 {
        struct dentry *d;
@@ -218,6 +219,7 @@ static int __init debugfs_tlb(void)
                return -ENOMEM;
 }
 device_initcall(debugfs_tlb);
+# endif
 #endif
 
 static int dflt_bus_notify(struct notifier_block *nb,
index f037266..f085995 100644 (file)
@@ -122,22 +122,22 @@ __strnlen_user:
 15:    swi     r24, r5, 0x0018 + offset;       \
 16:    swi     r25, r5, 0x001C + offset;       \
        .section __ex_table,"a";                \
-       .word   1b, 0f;                         \
-       .word   2b, 0f;                         \
-       .word   3b, 0f;                         \
-       .word   4b, 0f;                         \
-       .word   5b, 0f;                         \
-       .word   6b, 0f;                         \
-       .word   7b, 0f;                         \
-       .word   8b, 0f;                         \
-       .word   9b, 0f;                         \
-       .word   10b, 0f;                        \
-       .word   11b, 0f;                        \
-       .word   12b, 0f;                        \
-       .word   13b, 0f;                        \
-       .word   14b, 0f;                        \
-       .word   15b, 0f;                        \
-       .word   16b, 0f;                        \
+       .word   1b, 33f;                        \
+       .word   2b, 33f;                        \
+       .word   3b, 33f;                        \
+       .word   4b, 33f;                        \
+       .word   5b, 33f;                        \
+       .word   6b, 33f;                        \
+       .word   7b, 33f;                        \
+       .word   8b, 33f;                        \
+       .word   9b, 33f;                        \
+       .word   10b, 33f;                       \
+       .word   11b, 33f;                       \
+       .word   12b, 33f;                       \
+       .word   13b, 33f;                       \
+       .word   14b, 33f;                       \
+       .word   15b, 33f;                       \
+       .word   16b, 33f;                       \
        .text
 
 #define COPY_80(offset)        \
@@ -190,14 +190,17 @@ w2:       sw      r4, r5, r3
 
 .align 4 /* Alignment is important to keep icache happy */
 page:  /* Create room on stack and save registers for storign values */
-       addik   r1, r1, -32
-       swi     r19, r1, 4
-       swi     r20, r1, 8
-       swi     r21, r1, 12
-       swi     r22, r1, 16
-       swi     r23, r1, 20
-       swi     r24, r1, 24
-       swi     r25, r1, 28
+       addik   r1, r1, -40
+       swi     r5, r1, 0
+       swi     r6, r1, 4
+       swi     r7, r1, 8
+       swi     r19, r1, 12
+       swi     r20, r1, 16
+       swi     r21, r1, 20
+       swi     r22, r1, 24
+       swi     r23, r1, 28
+       swi     r24, r1, 32
+       swi     r25, r1, 36
 loop:  /* r4, r19, r20, r21, r22, r23, r24, r25 are used for storing values */
        /* Loop unrolling to get performance boost */
        COPY_80(0x000);
@@ -205,21 +208,44 @@ loop:     /* r4, r19, r20, r21, r22, r23, r24, r25 are used for storing values */
        COPY_80(0x100);
        COPY_80(0x180);
        /* copy loop */
-       addik   r6, r6, 0x200
-       addik   r7, r7, -0x200
-       bneid   r7, loop
-       addik   r5, r5, 0x200
+       addik   r6, r6, 0x200
+       addik   r7, r7, -0x200
+       bneid   r7, loop
+       addik   r5, r5, 0x200
+
        /* Restore register content */
-       lwi     r19, r1, 4
-       lwi     r20, r1, 8
-       lwi     r21, r1, 12
-       lwi     r22, r1, 16
-       lwi     r23, r1, 20
-       lwi     r24, r1, 24
-       lwi     r25, r1, 28
-       addik   r1, r1, 32
+       lwi     r5, r1, 0
+       lwi     r6, r1, 4
+       lwi     r7, r1, 8
+       lwi     r19, r1, 12
+       lwi     r20, r1, 16
+       lwi     r21, r1, 20
+       lwi     r22, r1, 24
+       lwi     r23, r1, 28
+       lwi     r24, r1, 32
+       lwi     r25, r1, 36
+       addik   r1, r1, 40
        /* return back */
+       addik   r3, r0, 0
+       rtsd    r15, 8
+       nop
+
+/* Fault case - return temp count */
+33:
        addik   r3, r7, 0
+       /* Restore register content */
+       lwi     r5, r1, 0
+       lwi     r6, r1, 4
+       lwi     r7, r1, 8
+       lwi     r19, r1, 12
+       lwi     r20, r1, 16
+       lwi     r21, r1, 20
+       lwi     r22, r1, 24
+       lwi     r23, r1, 28
+       lwi     r24, r1, 32
+       lwi     r25, r1, 36
+       addik   r1, r1, 40
+       /* return back */
        rtsd    r15, 8
        nop