diff options
Diffstat (limited to 'mdk-stage1/dietlibc/i386/strchr.S')
-rw-r--r-- | mdk-stage1/dietlibc/i386/strchr.S | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/mdk-stage1/dietlibc/i386/strchr.S b/mdk-stage1/dietlibc/i386/strchr.S new file mode 100644 index 000000000..0a2a5aa52 --- /dev/null +++ b/mdk-stage1/dietlibc/i386/strchr.S @@ -0,0 +1,47 @@ +#define NEW + +.text +.global strchr +strchr: + mov %esi,%edx + mov 0x4(%esp,1),%esi + mov 0x8(%esp,1),%cl + cld +.L1: + lods (%esi),%eax + cmp %al,%cl + jz .Lafound + test %al,%al + jz .Lnotfound + + cmp %ah,%cl + jz .Lbfound + test %ah,%ah + jz .Lnotfound + + shr $16,%eax + cmp %al,%cl + jz .Lcfound + test %al,%al + jz .Lnotfound + + cmp %ah,%cl + jz .Ldfound + test %ah,%ah + + jnz .L1 +.Lnotfound: + sub %eax,%eax + mov %edx,%esi + ret +.Lafound: + dec %esi +.Lbfound: + dec %esi +.Lcfound: + dec %esi +.Ldfound: + mov %esi,%eax + mov %edx,%esi + dec %eax + ret |