Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/arm/lib/strnlen_user.S
10817 views
1
/*
2
* linux/arch/arm/lib/strnlen_user.S
3
*
4
* Copyright (C) 1995-2000 Russell King
5
*
6
* This program is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License version 2 as
8
* published by the Free Software Foundation.
9
*/
10
#include <linux/linkage.h>
11
#include <asm/assembler.h>
12
#include <asm/errno.h>
13
14
.text
15
.align 5
16
17
/* Prototype: unsigned long __strnlen_user(const char *str, long n)
18
* Purpose : get length of a string in user memory
19
* Params : str - address of string in user memory
20
* Returns : length of string *including terminator*
21
* or zero on exception, or n + 1 if too long
22
*/
23
ENTRY(__strnlen_user)
24
mov r2, r0
25
1:
26
ldrusr r3, r0, 1
27
teq r3, #0
28
beq 2f
29
subs r1, r1, #1
30
bne 1b
31
add r0, r0, #1
32
2: sub r0, r0, r2
33
mov pc, lr
34
ENDPROC(__strnlen_user)
35
36
.pushsection .fixup,"ax"
37
.align 0
38
9001: mov r0, #0
39
mov pc, lr
40
.popsection
41
42