Admin Panel
#include <stdlib.h>
#define NNN 16
asm("___bcopz: .globl ___bcopz");
/* This is a _fast_ block move routine! */
void bcopy(const void *s1, void *s2, size_t n) {
size_t m;
register char const * from asm("a1") = (char const *)s1;
register char * to asm("a0") = (char *) s2;
if (!n)
return;
if (s2 < s1) {
if (n > NNN) {
#if !defined(__mc68020) && !defined(__mc68030) && !defined(__mc68040) && !defined(__mc68060) && !defined(__mc68080)
if (((((char)(long)from) ^ ((char)(long)to))) % 2 == 0) {
#endif
if (((long) to) & 1) {
asm volatile("move.b (%1)+,(%0)+" : "=r" (to), "=r" (from): "r" (to), "r" (from));
n--;
}
if (((long) to) & 2) {
asm volatile("move.w (%1)+,(%0)+" : "+rm" (to), "+rm" (from): "r" (to), "r" (from));
n -= 2;
}
for (m = n / (8 * sizeof(long)); m; --m) {
asm volatile("move.l (%1)+,(%0)+" : "=r" (to), "=r" (from): "r" (to), "r" (from));
asm volatile("move.l (%1)+,(%0)+" : "=r" (to), "=r" (from): "r" (to), "r" (from));
asm volatile("move.l (%1)+,(%0)+" : "=r" (to), "=r" (from): "r" (to), "r" (from));
asm volatile("move.l (%1)+,(%0)+" : "=r" (to), "=r" (from): "r" (to), "r" (from));
asm volatile("move.l (%1)+,(%0)+" : "=r" (to), "=r" (from): "r" (to), "r" (from));
asm volatile("move.l (%1)+,(%0)+" : "=r" (to), "=r" (from): "r" (to), "r" (from));
asm volatile("move.l (%1)+,(%0)+" : "=r" (to), "=r" (from): "r" (to), "r" (from));
asm volatile("move.l (%1)+,(%0)+" : "=r" (to), "=r" (from): "r" (to), "r" (from));
}
n &= 8 * sizeof(long) - 1;
for (m = n / sizeof(long); m; --m)
asm volatile("move.l (%1)+,(%0)+" : "=r" (to), "=r" (from): "r" (to), "r" (from));
n &= sizeof(long) - 1;
if (!n)
return;
}
#if !defined(__mc68020) && !defined(__mc68030) && !defined(__mc68040) && !defined(__mc68060) && !defined(__mc68080)
}
#endif
while (n--){
asm volatile("move.b (%1)+,(%0)+" : "=r" (to), "=r" (from): "r" (to), "r" (from));
}
} else {
from += n;
to += n;
#if !defined(__mc68020) && !defined(__mc68030) && !defined(__mc68040) && !defined(__mc68060) && !defined(__mc68080)
if (((((char)(long)from) ^ ((char)(long)to))) % 2 == 0) {
#endif
if (n > NNN) {
if (((long) to) & 1) {
asm volatile("move.b -(%1),-(%0)" : "=r" (to), "=r" (from): "r" (to), "r" (from));
n--;
}
if (((long) to) & 2) {
asm volatile("move.w -(%1),-(%0)" : "=r" (to), "=r" (from): "r" (to), "r" (from));
n -= 2;
}
for (m = n / (8 * sizeof(long)); m; --m) {
asm volatile("move.l -(%1),-(%0)" : "=r" (to), "=r" (from): "r" (to), "r" (from));
asm volatile("move.l -(%1),-(%0)" : "=r" (to), "=r" (from): "r" (to), "r" (from));
asm volatile("move.l -(%1),-(%0)" : "=r" (to), "=r" (from): "r" (to), "r" (from));
asm volatile("move.l -(%1),-(%0)" : "=r" (to), "=r" (from): "r" (to), "r" (from));
asm volatile("move.l -(%1),-(%0)" : "=r" (to), "=r" (from): "r" (to), "r" (from));
asm volatile("move.l -(%1),-(%0)" : "=r" (to), "=r" (from): "r" (to), "r" (from));
asm volatile("move.l -(%1),-(%0)" : "=r" (to), "=r" (from): "r" (to), "r" (from));
asm volatile("move.l -(%1),-(%0)" : "=r" (to), "=r" (from): "r" (to), "r" (from));
}
n &= 8 * sizeof(long) - 1;
for (m = n / sizeof(long); m; --m)
asm volatile("move.l -(%1),-(%0)" : "=r" (to), "=r" (from): "r" (to), "r" (from));
n &= sizeof(long) - 1;
if (!n)
return;
}
#if !defined(__mc68020) && !defined(__mc68030) && !defined(__mc68040) && !defined(__mc68060) && !defined(__mc68080)
}
#endif
while (n--){
asm volatile("move.b -(%1),-(%0)" : "=r" (to), "=r" (from): "r" (to), "r" (from));
}
}
}