URL
https://opencores.org/ocsvn/or1k_old/or1k_old/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 1765 |
Rev 1782 |
|
|
#include <linux/types.h>
|
#include <linux/types.h>
|
#include <linux/string.h>
|
#include <linux/string.h>
|
|
|
/* Optimization used unaligned access, so it had to go. */
|
/* Optimization used unaligned access, so it had to go. */
|
|
|
void bzero(void * s, size_t count) {
|
void bzero(void * s, size_t count) {
|
memset(s, '\0', count);
|
memset(s, '\0', count);
|
}
|
}
|
|
|
#if 0
|
#if 0
|
void * memset(void * s, int c, size_t count)
|
void * memset(void * s, int c, size_t count)
|
{
|
{
|
void *xs = s;
|
void *xs = s;
|
size_t temp, temp1;
|
size_t temp, temp1;
|
|
|
if (!count)
|
if (!count)
|
return xs;
|
return xs;
|
c &= 0xff;
|
c &= 0xff;
|
c |= c << 8;
|
c |= c << 8;
|
c |= c << 16;
|
c |= c << 16;
|
if ((long) s & 1)
|
if ((long) s & 1)
|
{
|
{
|
char *cs = s;
|
char *cs = s;
|
*cs++ = c;
|
*cs++ = c;
|
s = cs;
|
s = cs;
|
count--;
|
count--;
|
}
|
}
|
if (count > 2 && (long) s & 2)
|
if (count > 2 && (long) s & 2)
|
{
|
{
|
short *ss = s;
|
short *ss = s;
|
*ss++ = c;
|
*ss++ = c;
|
s = ss;
|
s = ss;
|
count -= 2;
|
count -= 2;
|
}
|
}
|
temp = count >> 2;
|
temp = count >> 2;
|
if (temp)
|
if (temp)
|
{
|
{
|
long *ls = s;
|
long *ls = s;
|
|
|
__asm__ __volatile__("movel %1,%2\n\t"
|
__asm__ __volatile__("movel %1,%2\n\t"
|
"andw #7,%2\n\t"
|
"andw #7,%2\n\t"
|
"lsrl #3,%1\n\t"
|
"lsrl #3,%1\n\t"
|
"negw %2\n\t"
|
"negw %2\n\t"
|
"jmp %%pc@(2f,%2:w:2)\n\t"
|
"jmp %%pc@(2f,%2:w:2)\n\t"
|
"1:\t"
|
"1:\t"
|
"movel %3,%0@+\n\t"
|
"movel %3,%0@+\n\t"
|
"movel %3,%0@+\n\t"
|
"movel %3,%0@+\n\t"
|
"movel %3,%0@+\n\t"
|
"movel %3,%0@+\n\t"
|
"movel %3,%0@+\n\t"
|
"movel %3,%0@+\n\t"
|
"movel %3,%0@+\n\t"
|
"movel %3,%0@+\n\t"
|
"movel %3,%0@+\n\t"
|
"movel %3,%0@+\n\t"
|
"movel %3,%0@+\n\t"
|
"movel %3,%0@+\n\t"
|
"movel %3,%0@+\n\t"
|
"movel %3,%0@+\n\t"
|
"2:\t"
|
"2:\t"
|
"dbra %1,1b\n\t"
|
"dbra %1,1b\n\t"
|
"clrw %1\n\t"
|
"clrw %1\n\t"
|
"subql #1,%1\n\t"
|
"subql #1,%1\n\t"
|
"jpl 1b\n\t"
|
"jpl 1b\n\t"
|
: "=a" (ls), "=d" (temp), "=&d" (temp1)
|
: "=a" (ls), "=d" (temp), "=&d" (temp1)
|
: "d" (c), "0" (ls), "1" (temp)
|
: "d" (c), "0" (ls), "1" (temp)
|
);
|
);
|
s = ls;
|
s = ls;
|
}
|
}
|
if (count & 2)
|
if (count & 2)
|
{
|
{
|
short *ss = s;
|
short *ss = s;
|
*ss++ = c;
|
*ss++ = c;
|
s = ss;
|
s = ss;
|
}
|
}
|
if (count & 1)
|
if (count & 1)
|
{
|
{
|
char *cs = s;
|
char *cs = s;
|
*cs = c;
|
*cs = c;
|
}
|
}
|
return xs;
|
return xs;
|
}
|
}
|
#endif
|
#endif
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.