1
2
3
4
5
6
7
8
9#include <asm/asm.h>
10#include <asm/asm-offsets.h>
11#include <asm/regdef.h>
12
13#define EX(insn,reg,addr,handler) \
149: insn reg, addr; \
15 .section __ex_table,"a"; \
16 PTR 9b, handler; \
17 .previous
18
19
20
21
22
23
24LEAF(__strlen_user_asm)
25 LONG_L v0, TI_ADDR_LIMIT($28)
26 and v0, a0
27 bnez v0, .Lfault
28
29FEXPORT(__strlen_user_nocheck_asm)
30 move v0, a0
311: EX(lb, t0, (v0), .Lfault)
32 PTR_ADDIU v0, 1
33 bnez t0, 1b
34 PTR_SUBU v0, a0
35 jr ra
36 END(__strlen_user_asm)
37
38.Lfault: move v0, zero
39 jr ra
40