OpenCores
URL https://opencores.org/ocsvn/or1k_soc_on_altera_embedded_dev_kit/or1k_soc_on_altera_embedded_dev_kit/trunk

Subversion Repositories or1k_soc_on_altera_embedded_dev_kit

[/] [or1k_soc_on_altera_embedded_dev_kit/] [trunk/] [linux-2.6/] [linux-2.6.24/] [arch/] [sparc/] [lib/] [strncpy_from_user.S] - Rev 17

Go to most recent revision | Compare with Previous | Blame | View Log

/* strncpy_from_user.S: Sparc strncpy from userspace.
 *
 *  Copyright(C) 1996 David S. Miller
 */

#include <asm/ptrace.h>
#include <asm/errno.h>

        .text
        .align  4

        /* Must return:
         *
         * -EFAULT              for an exception
         * count                if we hit the buffer limit
         * bytes copied         if we hit a null byte
         */

        .globl  __strncpy_from_user
__strncpy_from_user:
        /* %o0=dest, %o1=src, %o2=count */
        mov     %o2, %o3
1:
        subcc   %o2, 1, %o2
        bneg    2f
         nop
10:
        ldub    [%o1], %o4
        add     %o0, 1, %o0
        cmp     %o4, 0
        add     %o1, 1, %o1
        bne     1b
         stb    %o4, [%o0 - 1]
2:
        add     %o2, 1, %o0
        retl
         sub    %o3, %o0, %o0

        .section .fixup,#alloc,#execinstr
        .align  4
4:
        retl
         mov    -EFAULT, %o0

        .section __ex_table,#alloc
        .align  4
        .word   10b, 4b

Go to most recent revision | Compare with Previous | Blame | View Log

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.