The Design and Implementation of the FreeBSD Operating System, Second Edition
Now available: The Design and Implementation of the FreeBSD Operating System (Second Edition)


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]

FreeBSD/Linux Kernel Cross Reference
sys/arch/score/lib/string.S

Version: -  FREEBSD  -  FREEBSD-13-STABLE  -  FREEBSD-13-0  -  FREEBSD-12-STABLE  -  FREEBSD-12-0  -  FREEBSD-11-STABLE  -  FREEBSD-11-0  -  FREEBSD-10-STABLE  -  FREEBSD-10-0  -  FREEBSD-9-STABLE  -  FREEBSD-9-0  -  FREEBSD-8-STABLE  -  FREEBSD-8-0  -  FREEBSD-7-STABLE  -  FREEBSD-7-0  -  FREEBSD-6-STABLE  -  FREEBSD-6-0  -  FREEBSD-5-STABLE  -  FREEBSD-5-0  -  FREEBSD-4-STABLE  -  FREEBSD-3-STABLE  -  FREEBSD22  -  l41  -  OPENBSD  -  linux-2.6  -  MK84  -  PLAN9  -  xnu-8792 
SearchContext: -  none  -  3  -  10 

    1 /*
    2  * arch/score/lib/string.S
    3  *
    4  * Score Processor version.
    5  *
    6  * Copyright (C) 2009 Sunplus Core Technology Co., Ltd.
    7  *  Chen Liqin <liqin.chen@sunplusct.com>
    8  *  Lennox Wu <lennox.wu@sunplusct.com>
    9  *
   10  * This program is free software; you can redistribute it and/or modify
   11  * it under the terms of the GNU General Public License as published by
   12  * the Free Software Foundation; either version 2 of the License, or
   13  * (at your option) any later version.
   14  *
   15  * This program is distributed in the hope that it will be useful,
   16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
   17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   18  * GNU General Public License for more details.
   19  *
   20  * You should have received a copy of the GNU General Public License
   21  * along with this program; if not, see the file COPYING, or write
   22  * to the Free Software Foundation, Inc.,
   23  * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
   24  */
   25 
   26 #include <linux/linkage.h>
   27 #include <asm-generic/errno.h>
   28 
   29         .text
   30         .align 2
   31 ENTRY(__strncpy_from_user)
   32         cmpi.c  r6, 0
   33         mv      r9, r6
   34         ble     .L2
   35 0:      lbu     r7, [r5]
   36         ldi     r8, 0
   37 1:      sb      r7, [r4]
   38 2:      lb      r6, [r5]
   39         cmp.c   r6, r8
   40         beq     .L2
   41 
   42 .L5:
   43         addi    r8, 1
   44         cmp.c   r8, r9
   45         beq     .L7
   46 3:      lbu     r6, [r5, 1]+
   47 4:      sb      r6, [r4, 1]+
   48 5:      lb      r7, [r5]
   49         cmpi.c  r7, 0
   50         bne     .L5
   51 .L7:
   52         mv      r4, r8
   53         br      r3
   54 .L2:
   55         ldi     r8, 0
   56         mv      r4, r8
   57         br      r3
   58         .section .fixup, "ax"
   59 99:
   60         ldi     r4, -EFAULT
   61         br      r3
   62         .previous
   63         .section __ex_table, "a"
   64         .align  2
   65         .word   0b ,99b
   66         .word   1b ,99b
   67         .word   2b ,99b
   68         .word   3b ,99b
   69         .word   4b ,99b
   70         .word   5b ,99b
   71         .previous
   72 
   73         .align 2
   74 ENTRY(__strnlen_user)
   75         cmpi.c  r5, 0
   76         ble     .L11
   77 0:      lb      r6, [r4]
   78         ldi     r7, 0
   79         cmp.c   r6, r7
   80         beq     .L11
   81 .L15:
   82         addi    r7, 1
   83         cmp.c   r7, r5
   84         beq     .L23
   85 1:      lb      r6, [r4,1]+
   86         cmpi.c  r6, 0
   87         bne     .L15
   88 .L23:
   89         addri   r4, r7, 1
   90         br      r3
   91 
   92 .L11:
   93         ldi     r4, 1
   94         br      r3
   95         .section .fixup, "ax"
   96 99:
   97         ldi     r4, 0
   98         br      r3
   99 
  100         .section __ex_table,"a"
  101         .align 2
  102         .word   0b, 99b
  103         .word   1b, 99b
  104         .previous
  105 
  106         .align 2
  107 ENTRY(__strlen_user)
  108 0:      lb      r6, [r4]
  109         mv      r7, r4
  110         extsb   r6, r6
  111         cmpi.c  r6, 0
  112         mv      r4, r6
  113         beq     .L27
  114 .L28:
  115 1:      lb      r6, [r7, 1]+
  116         addi    r6, 1
  117         cmpi.c  r6, 0
  118         bne     .L28
  119 .L27:
  120         br      r3
  121         .section .fixup, "ax"
  122         ldi     r4, 0x0
  123         br      r3
  124 99:
  125         ldi     r4, 0
  126         br      r3
  127         .previous
  128         .section __ex_table, "a"
  129         .align  2
  130         .word   0b ,99b
  131         .word   1b ,99b
  132         .previous
  133 
  134         .align 2
  135 ENTRY(__copy_tofrom_user)
  136         cmpi.c  r6, 0
  137         mv      r10,r6
  138         beq     .L32
  139         ldi     r9, 0
  140 .L34:
  141         add     r6, r5, r9
  142 0:      lbu     r8, [r6]
  143         add     r7, r4, r9
  144 1:      sb      r8, [r7]
  145         addi    r9, 1
  146         cmp.c   r9, r10
  147         bne     .L34
  148 .L32:
  149         ldi     r4, 0
  150         br      r3
  151         .section .fixup, "ax"
  152 99:
  153         sub     r4, r10, r9
  154         br      r3
  155         .previous
  156         .section __ex_table, "a"
  157         .align  2
  158         .word   0b, 99b
  159         .word   1b, 99b
  160         .previous
  161 
  162         .align 2
  163 ENTRY(__clear_user)
  164         cmpi.c  r5, 0
  165         beq     .L38
  166         ldi     r6, 0
  167         mv      r7, r6
  168 .L40:
  169         addi    r6, 1
  170 0:      sb      r7, [r4]+, 1
  171         cmp.c   r6, r5
  172         bne     .L40
  173 .L38:
  174         ldi     r4, 0
  175         br      r3
  176 
  177         .section .fixup, "ax"
  178         br      r3
  179         .previous
  180         .section __ex_table, "a"
  181         .align  2
  182 99:
  183         .word   0b, 99b
  184         .previous

Cache object: 7470a4ae232a1b586a1913f7ab72f548


[ source navigation ] [ diff markup ] [ identifier search ] [ freetext search ] [ file search ] [ list types ] [ track identifier ]


This page is part of the FreeBSD/Linux Linux Kernel Cross-Reference, and was automatically generated using a modified version of the LXR engine.