patch-2.1.44 linux/include/asm-mips/string.h
Next file: linux/include/asm-mips/sysmips.h
Previous file: linux/include/asm-mips/statfs.h
Back to the patch index
Back to the overall index
- Lines: 247
- Date:
Thu Jun 26 12:33:40 1997
- Orig file:
v2.1.43/linux/include/asm-mips/string.h
- Orig date:
Wed Dec 13 02:39:47 1995
diff -u --recursive --new-file v2.1.43/linux/include/asm-mips/string.h linux/include/asm-mips/string.h
@@ -5,16 +5,15 @@
* License. See the file "COPYING" in the main directory of this archive
* for more details.
*
- * Copyright (c) 1994, 1995 Waldorf Electronics
- * written by Ralf Baechle
+ * Copyright (c) 1994, 1995, 1996 by Ralf Baechle
*/
#ifndef __ASM_MIPS_STRING_H
#define __ASM_MIPS_STRING_H
#define __HAVE_ARCH_STRCPY
-extern __inline__ char * strcpy(char * dest, const char *src)
+extern __inline__ char *strcpy(char *__dest, __const__ char *__src)
{
- char *xdest = dest;
+ char *__xdest = __dest;
__asm__ __volatile__(
".set\tnoreorder\n\t"
@@ -26,43 +25,43 @@
"addiu\t%0,1\n\t"
".set\tat\n\t"
".set\treorder"
- : "=r" (dest), "=r" (src)
- : "0" (dest), "1" (src)
+ : "=r" (__dest), "=r" (__src)
+ : "0" (__dest), "1" (__src)
: "$1","memory");
- return xdest;
+ return __xdest;
}
#define __HAVE_ARCH_STRNCPY
-extern __inline__ char * strncpy(char *dest, const char *src, size_t n)
+extern __inline__ char *strncpy(char *__dest, __const__ char *__src, size_t __n)
{
- char *xdest = dest;
+ char *__xdest = __dest;
- if (n == 0)
- return xdest;
+ if (__n == 0)
+ return __xdest;
__asm__ __volatile__(
".set\tnoreorder\n\t"
".set\tnoat\n"
"1:\tlbu\t$1,(%1)\n\t"
- "subu\t%2,%2,1\n\t"
+ "subu\t%2,1\n\t"
"sb\t$1,(%0)\n\t"
"beqz\t$1,2f\n\t"
- "addiu\t%0,%0,1\n\t"
+ "addiu\t%0,1\n\t"
"bnez\t%2,1b\n\t"
- "addiu\t%1,%1,1\n"
+ "addiu\t%1,1\n"
"2:\n\t"
".set\tat\n\t"
- ".set\treorder\n\t"
- : "=r" (dest), "=r" (src), "=r" (n)
- : "0" (dest), "1" (src), "2" (n)
+ ".set\treorder"
+ : "=r" (__dest), "=r" (__src), "=r" (__n)
+ : "0" (__dest), "1" (__src), "2" (__n)
: "$1","memory");
- return dest;
+ return __dest;
}
#define __HAVE_ARCH_STRCMP
-extern __inline__ int strcmp(const char * cs, const char * ct)
+extern __inline__ int strcmp(__const__ char *__cs, __const__ char *__ct)
{
int __res;
@@ -76,22 +75,22 @@
"addiu\t%1,1\n\t"
"bnez\t%2,1b\n\t"
"lbu\t%2,(%0)\n\t"
-#ifndef __R4000__
+#if _MIPS_ISA == _MIPS_ISA_MIPS1
"nop\n\t"
#endif
"move\t%2,$1\n"
"2:\tsubu\t%2,$1\n"
"3:\t.set\tat\n\t"
".set\treorder"
- : "=d" (cs), "=d" (ct), "=d" (__res)
- : "0" (cs), "1" (ct)
+ : "=r" (__cs), "=r" (__ct), "=r" (__res)
+ : "0" (__cs), "1" (__ct)
: "$1");
return __res;
}
#define __HAVE_ARCH_STRNCMP
-extern __inline__ int strncmp(const char * cs, const char * ct, size_t count)
+extern __inline__ int strncmp(__const__ char *__cs, __const__ char *__ct, size_t __count)
{
char __res;
@@ -110,118 +109,50 @@
"3:\tsubu\t%3,$1\n\t"
".set\tat\n\t"
".set\treorder"
- : "=d" (cs), "=d" (ct), "=d" (count), "=d" (__res)
- : "0" (cs), "1" (ct), "2" (count)
+ : "=r" (__cs), "=r" (__ct), "=r" (__count), "=r" (__res)
+ : "0" (__cs), "1" (__ct), "2" (__count)
: "$1");
return __res;
}
#define __HAVE_ARCH_MEMSET
-extern __inline__ void * memset(void * s, int c, size_t count)
-{
- void *xs = s;
-
- if (!count)
- return xs;
- __asm__ __volatile__(
- ".set\tnoreorder\n"
- "1:\tsb\t%3,(%0)\n\t"
- "bne\t%0,%1,1b\n\t"
- "addiu\t%0,%0,1\n\t"
- ".set\treorder"
- : "=r" (s), "=r" (count)
- : "0" (s), "r" (c), "1" (s + count - 1)
- : "memory");
-
- return xs;
-}
+extern void *memset(void *__s, char __c, size_t __count);
#define __HAVE_ARCH_MEMCPY
-extern __inline__ void * memcpy(void * to, const void * from, size_t n)
-{
- void *xto = to;
-
- if (!n)
- return xto;
- __asm__ __volatile__(
- ".set\tnoreorder\n\t"
- ".set\tnoat\n"
- "1:\tlbu\t$1,(%1)\n\t"
- "addiu\t%1,1\n\t"
- "sb\t$1,(%0)\n\t"
- "subu\t%2,1\n\t"
- "bnez\t%2,1b\n\t"
- "addiu\t%0,1\n\t"
- ".set\tat\n\t"
- ".set\treorder"
- : "=r" (to), "=r" (from), "=r" (n)
- : "0" (to), "1" (from), "2" (n)
- : "$1","memory" );
- return xto;
-}
+extern void *memcpy(void *__to, __const__ void *__from, size_t __n);
#define __HAVE_ARCH_MEMMOVE
-extern __inline__ void * memmove(void * dest,const void * src, size_t n)
-{
- void *xdest = dest;
-
- if (!n)
- return xdest;
+extern void *memmove(void *__dest, __const__ void *__src, size_t __n);
- if (dest < src)
- __asm__ __volatile__(
- ".set\tnoreorder\n\t"
- ".set\tnoat\n"
- "1:\tlbu\t$1,(%1)\n\t"
- "addiu\t%1,1\n\t"
- "sb\t$1,(%0)\n\t"
- "subu\t%2,1\n\t"
- "bnez\t%2,1b\n\t"
- "addiu\t%0,1\n\t"
- ".set\tat\n\t"
- ".set\treorder"
- : "=r" (dest), "=r" (src), "=r" (n)
- : "0" (dest), "1" (src), "2" (n)
- : "$1","memory" );
- else
- __asm__ __volatile__(
- ".set\tnoreorder\n\t"
- ".set\tnoat\n"
- "1:\tlbu\t$1,-1(%1)\n\t"
- "subu\t%1,1\n\t"
- "sb\t$1,-1(%0)\n\t"
- "subu\t%2,1\n\t"
- "bnez\t%2,1b\n\t"
- "subu\t%0,1\n\t"
- ".set\tat\n\t"
- ".set\treorder"
- : "=r" (dest), "=r" (src), "=r" (n)
- : "0" (dest+n), "1" (src+n), "2" (n)
- : "$1","memory" );
- return xdest;
-}
+#define __HAVE_ARCH_BCOPY
+extern char * bcopy(const char * src, char * dest, int count);
#define __HAVE_ARCH_MEMSCAN
-extern __inline__ void * memscan(void * addr, int c, size_t size)
+extern __inline__ void *memscan(void *__addr, int __c, size_t __size)
{
- if (!size)
- return addr;
+ char *__end = (char *)__addr + __size;
+
+ if (!__size)
+ return __addr;
__asm__(".set\tnoreorder\n\t"
".set\tnoat\n"
- "1:\tbeqz\t%1,2f\n\t"
- "lbu\t$1,(%0)\n\t"
- "subu\t%1,1\n\t"
- "bnez\t%1,1b\n\t"
+ "1:\tlbu\t$1,(%0)\n\t"
+#if _MIPS_ISA == _MIPS_ISA_MIPS1
+ "nop\n\t"
+#endif
+ "beq\t$1,%3,2f\n\t"
"addiu\t%0,1\n\t"
+ "bne\t%0,%2,1b\n\t"
+ "nop\n\t"
".set\tat\n\t"
".set\treorder\n"
"2:"
- : "=r" (addr), "=r" (size)
- : "0" (addr), "1" (size), "r" (c)
+ : "=r" (__addr)
+ : "0" (__addr), "1" (__end), "r" (__c)
: "$1");
- return addr;
+ return __addr;
}
#endif /* __ASM_MIPS_STRING_H */
FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen, slshen@lbl.gov