Commit c48be43eb5248ff96dacda58f9e51ee8bfd058ac

Authored by Markos Chandras
Committed by Ralf Baechle
1 parent 078dde5e21

MIPS: lib: strnlen_user: Use macro to build the strnlen_user symbol

Build the __strnlen_user symbol using a macro. In EVA mode we will
need to use similar code to do the userspace load operations so
it is better if we use a macro to avoid code duplications.

Signed-off-by: Markos Chandras <markos.chandras@imgtec.com>

Showing 1 changed file with 10 additions and 6 deletions Side-by-side Diff

arch/mips/lib/strnlen_user.S
... ... @@ -25,23 +25,27 @@
25 25 * bytes. There's nothing secret there. On 64-bit accessing beyond
26 26 * the maximum is a tad hairier ...
27 27 */
28   -LEAF(__strnlen_user_asm)
  28 + .macro __BUILD_STRNLEN_ASM func
  29 +LEAF(__strnlen_\func\()_asm)
29 30 LONG_L v0, TI_ADDR_LIMIT($28) # pointer ok?
30 31 and v0, a0
31   - bnez v0, .Lfault
  32 + bnez v0, .Lfault\@
32 33  
33   -FEXPORT(__strnlen_user_nocheck_asm)
  34 +FEXPORT(__strnlen_\func\()_nocheck_asm)
34 35 move v0, a0
35 36 PTR_ADDU a1, a0 # stop pointer
36 37 1: beq v0, a1, 1f # limit reached?
37   - EX(lb, t0, (v0), .Lfault)
  38 + EX(lb, t0, (v0), .Lfault\@)
38 39 PTR_ADDIU v0, 1
39 40 bnez t0, 1b
40 41 1: PTR_SUBU v0, a0
41 42 jr ra
42   - END(__strnlen_user_asm)
  43 + END(__strnlen_\func\()_asm)
43 44  
44   -.Lfault:
  45 +.Lfault\@:
45 46 move v0, zero
46 47 jr ra
  48 + .endm
  49 +
  50 +__BUILD_STRNLEN_ASM user