Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6
[pandora-kernel.git] / arch / powerpc / lib / string.S
index c4c622d..64e2e49 100644 (file)
 #include <asm/ppc_asm.h>
 
        .section __ex_table,"a"
-#ifdef CONFIG_PPC64
-       .align  3
-#define EXTBL  .llong
-#else
-       .align  2
-#define EXTBL  .long
-#endif
+       PPC_LONG_ALIGN
        .text
        
 _GLOBAL(strcpy)
@@ -75,6 +69,20 @@ _GLOBAL(strcmp)
        beq     1b
        blr
 
+_GLOBAL(strncmp)
+       PPC_LCMPI r5,0
+       beqlr
+       mtctr   r5
+       addi    r5,r3,-1
+       addi    r4,r4,-1
+1:     lbzu    r3,1(r5)
+       cmpwi   1,r3,0
+       lbzu    r0,1(r4)
+       subf.   r3,r0,r3
+       beqlr   1
+       bdnzt   eq,1b
+       blr
+
 _GLOBAL(strlen)
        addi    r4,r3,-1
 1:     lbzu    r0,1(r4)
@@ -146,9 +154,9 @@ _GLOBAL(__clear_user)
        blr
 
        .section __ex_table,"a"
-       EXTBL   11b,90b
-       EXTBL   1b,91b
-       EXTBL   8b,92b
+       PPC_LONG        11b,90b
+       PPC_LONG        1b,91b
+       PPC_LONG        8b,92b
        .text
 
 _GLOBAL(__strncpy_from_user)
@@ -169,7 +177,7 @@ _GLOBAL(__strncpy_from_user)
        blr
 
        .section __ex_table,"a"
-       EXTBL   1b,99b
+       PPC_LONG        1b,99b
        .text
 
 /* r3 = str, r4 = len (> 0), r5 = top (highest addr) */
@@ -194,4 +202,4 @@ _GLOBAL(__strnlen_user)
        blr
 
        .section __ex_table,"a"
-       EXTBL   1b,99b
+       PPC_LONG        1b,99b