URL
https://opencores.org/ocsvn/or1k/or1k/trunk
Subversion Repositories or1k
[/] [or1k/] [trunk/] [linux/] [linux-2.4/] [arch/] [sh/] [lib/] [memset.S] - Rev 1781
Go to most recent revision | Compare with Previous | Blame | View Log
/* $Id: memset.S,v 1.1.1.1 2004-04-15 01:17:17 phoenix Exp $** "memset" implementation of SuperH** Copyright (C) 1999 Niibe Yutaka**//** void *memset(void *s, int c, size_t n);*/#include <linux/linkage.h>ENTRY(memset)tst r6,r6bt/s 5f ! if n=0, do nothingadd r6,r4mov #12,r0cmp/gt r6,r0bt/s 4f ! if it's too small, set a byte at oncemov r4,r0and #3,r0cmp/eq #0,r0bt/s 2f ! It's alignedsub r0,r61:dt r0bf/s 1bmov.b r5,@-r42: ! make VVVVswap.b r5,r0 ! V0or r0,r5 ! VVswap.w r5,r0 ! VV00or r0,r5 ! VVVV!mov r6,r0shlr2 r0shlr r0 ! r0 = r6 >> 33:dt r0mov.l r5,@-r4 ! set 8-byte at oncebf/s 3bmov.l r5,@-r4!mov #7,r0and r0,r6tst r6,r6bt 5f! fill bytes4:dt r6bf/s 4bmov.b r5,@-r45:rtsmov r4,r0
Go to most recent revision | Compare with Previous | Blame | View Log
