diff options
Diffstat (limited to 'arch/powerpc/lib')
-rw-r--r-- | arch/powerpc/lib/rheap.c | 4 | ||||
-rw-r--r-- | arch/powerpc/lib/string.S | 14 |
2 files changed, 16 insertions, 2 deletions
diff --git a/arch/powerpc/lib/rheap.c b/arch/powerpc/lib/rheap.c index 22c3b4f53de7..29b2941cada0 100644 --- a/arch/powerpc/lib/rheap.c +++ b/arch/powerpc/lib/rheap.c | |||
@@ -54,7 +54,7 @@ static int grow(rh_info_t * info, int max_blocks) | |||
54 | 54 | ||
55 | new_blocks = max_blocks - info->max_blocks; | 55 | new_blocks = max_blocks - info->max_blocks; |
56 | 56 | ||
57 | block = kmalloc(sizeof(rh_block_t) * max_blocks, GFP_KERNEL); | 57 | block = kmalloc(sizeof(rh_block_t) * max_blocks, GFP_ATOMIC); |
58 | if (block == NULL) | 58 | if (block == NULL) |
59 | return -ENOMEM; | 59 | return -ENOMEM; |
60 | 60 | ||
@@ -258,7 +258,7 @@ rh_info_t *rh_create(unsigned int alignment) | |||
258 | if ((alignment & (alignment - 1)) != 0) | 258 | if ((alignment & (alignment - 1)) != 0) |
259 | return ERR_PTR(-EINVAL); | 259 | return ERR_PTR(-EINVAL); |
260 | 260 | ||
261 | info = kmalloc(sizeof(*info), GFP_KERNEL); | 261 | info = kmalloc(sizeof(*info), GFP_ATOMIC); |
262 | if (info == NULL) | 262 | if (info == NULL) |
263 | return ERR_PTR(-ENOMEM); | 263 | return ERR_PTR(-ENOMEM); |
264 | 264 | ||
diff --git a/arch/powerpc/lib/string.S b/arch/powerpc/lib/string.S index c4c622d8e6ac..49eb1f1a2bb4 100644 --- a/arch/powerpc/lib/string.S +++ b/arch/powerpc/lib/string.S | |||
@@ -75,6 +75,20 @@ _GLOBAL(strcmp) | |||
75 | beq 1b | 75 | beq 1b |
76 | blr | 76 | blr |
77 | 77 | ||
78 | _GLOBAL(strncmp) | ||
79 | PPC_LCMPI r5,0 | ||
80 | beqlr | ||
81 | mtctr r5 | ||
82 | addi r5,r3,-1 | ||
83 | addi r4,r4,-1 | ||
84 | 1: lbzu r3,1(r5) | ||
85 | cmpwi 1,r3,0 | ||
86 | lbzu r0,1(r4) | ||
87 | subf. r3,r0,r3 | ||
88 | beqlr 1 | ||
89 | bdnzt eq,1b | ||
90 | blr | ||
91 | |||
78 | _GLOBAL(strlen) | 92 | _GLOBAL(strlen) |
79 | addi r4,r3,-1 | 93 | addi r4,r3,-1 |
80 | 1: lbzu r0,1(r4) | 94 | 1: lbzu r0,1(r4) |