home *** CD-ROM | disk | FTP | other *** search
- /* string.h - vbcc PowerPC */
-
- #ifndef __STRING_H
- #define __STRING_H 1
-
- #include <stddef.h>
-
- void *memcpy(void *s1,const void *s2,size_t n);
- void *memmove(void *,const void *,size_t);
- void *memset(void *,int,size_t);
- int memcmp(const void *,const void *,size_t);
- void *memchr(const void *,int,size_t);
- char *strcat(char *,const char *);
- char *strncat(char *,const char *,size_t);
- char *strchr(const char *,int);
- size_t strcspn(const char *,const char *);
- char *strpbrk(const char *,const char *);
- char *strrchr(const char *,int);
- size_t strspn(const char *,const char *);
- char *strstr(const char *,const char *);
- char *strtok(char *,const char *);
- char *strerror(int);
-
- /* PowerPC inline functions */
- size_t strlen(__reg("r3") const char *) =
- "\tsubi\t4,3,1\n"
- "\tlbzu\t0,1(4)\n"
- "\tcmpwi\t0,0\n"
- "\tbne\t$-8\n"
- "\tsub\t3,4,3";
- char *strcpy(__reg("r3") char *, __reg("r4") const char *) =
- "\tsubi\t5,3,1\n"
- "\tsubi\t4,4,1\n"
- "\tlbzu\t0,1(4)\n"
- "\tstbu\t0,1(5)\n"
- "\tcmpwi\t0,0\n"
- "\tbne\t$-12";
- char *strncpy(__reg("r3") char *, __reg("r4") const char *,
- __reg("r5") size_t) =
- "\tcmpwi\t5,0\n"
- "\tbeq\t$+32\n"
- "\tmtctr\t5\n"
- "\tsubi\t5,3,1\n"
- "\tsubi\t4,4,1\n"
- "\tlbzu\t0,1(4)\n"
- "\tstbu\t0,1(5)\n"
- "\tcmpwi\t0,0\n"
- "\tbdnzf\t2,$-12";
- int strcmp(__reg("r3") const char *, __reg("r4") const char *) =
- "\tsubi\t5,3,1\n"
- "\tsubi\t4,4,1\n"
- "\tlbzu\t3,1(5)\n"
- "\tlbzu\t6,1(4)\n"
- "\tsub.\t3,3,6\n"
- "\tbne\t$+12\n"
- "\tcmpwi\t6,0\n"
- "\tbne\t$-20";
- int strncmp(__reg("r3") const char *, __reg("r4") const char *,
- __reg("r5") size_t) =
- "\tsubi\t6,3,1\n"
- "\tli\t3,0\n"
- "\tcmpwi\t5,0\n"
- "\tbeq\t$+36\n"
- "\tsubi\t4,4,1\n"
- "\tmtctr\t5\n"
- "\tlbzu\t3,1(6)\n"
- "\tlbzu\t5,1(4)\n"
- "\tsub.\t3,3,5\n"
- "\tbne\t$+12\n"
- "\tcmpwi\t6,0\n"
- "\tbdnzf\t2,$-20";
- #endif
-