aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRene Gollent <anevilyak@gmail.com>2012-07-02 19:42:20 -0400
committerRene Gollent <anevilyak@gmail.com>2012-07-02 19:42:20 -0400
commit29291c8c924ada62bf015aaf70d04616cc2e7314 (patch)
tree0bae029530cb52ba872b0f2e11361e6dca78d520
parentdc5a16bb70c95c64b1203682acf5a67e19b2b882 (diff)
Cleanups/optimizations.hrev44284
-rw-r--r--src/system/kernel/arch/x86/arch_x86.S19
1 files changed, 6 insertions, 13 deletions
diff --git a/src/system/kernel/arch/x86/arch_x86.S b/src/system/kernel/arch/x86/arch_x86.S
index f731299222..d5c51507f7 100644
--- a/src/system/kernel/arch/x86/arch_x86.S
+++ b/src/system/kernel/arch/x86/arch_x86.S
@@ -278,9 +278,8 @@ FUNCTION(arch_cpu_user_strlcpy):
/* If count is now 0, skip straight to null terminating
as our loop will otherwise overflow */
- cmp $0,%ecx
- jne .L_user_strlcpy_copy_begin
- movb $0,(%edi)
+ jnz .L_user_strlcpy_copy_begin
+ movb $0,(%edi)
jmp .L_user_strlcpy_source_count
.L_user_strlcpy_copy_begin:
@@ -289,30 +288,24 @@ FUNCTION(arch_cpu_user_strlcpy):
/* move data by bytes */
movsb
cmpb $0,-1(%esi)
- je .L_user_strlcpy_copy_loop_done
+ je .L_user_strlcpy_source_done
loop .L_user_strlcpy_copy_loop
-.L_user_strlcpy_copy_loop_done:
- /* check if we copied the entire source string */
- cmp $0,%ecx
- jne .L_user_strlcpy_source_done
-
-.L_user_strlcpy_zero_terminate:
/* null terminate string */
movb $0,(%edi)
- dec %esi
+ dec %esi
/* count remaining bytes in src */
.L_user_strlcpy_source_count:
not %ecx
- movb $0,%al
+ xor %al,%al
repnz
scasb
.L_user_strlcpy_source_done:
movl %esi,%eax
subl 20(%esp),%eax
- subl $1,%eax
+ dec %eax
/* restore the old fault handler */
movl %ebx,(%edx)