1 /*
2  *  C library strcpy routine
3  *
4  *  This routine has been optimized for the CPU32+.
5  *  It should run on all 68k machines.
6  *
7  *  W. Eric Norum
8  *  Saskatchewan Accelerator Laboratory
9  *  University of Saskatchewan
10  *  Saskatoon, Saskatchewan, CANADA
11  *  eric@skatter.usask.ca
12  */
13 
14 #include <string.h>
15 
16 /*
17  * Copy bytes using CPU32+ loop mode if possible
18  */
19 
20 char *
21 strcpy (char *to, const char *from)
22 {
23 	char *pto = to;
24 	unsigned int n = 0xFFFF;
25 
26 	asm volatile ("1:\n"
27 	     "\tmove.b (%0)+,(%1)+\n"
28 #if defined(__mcpu32__)
29 	     "\tdbeq %2,1b\n"
30 #endif
31 	     "\tbne.b 1b\n" :
32 		"=a" (from), "=a" (pto), "=d" (n) :
33 		 "0" (from),  "1" (pto), "2" (n) :
34 		 "cc", "memory");
35 	return to;
36 }
37