URL
https://opencores.org/ocsvn/openrisc/openrisc/trunk
Subversion Repositories openrisc
[/] [openrisc/] [tags/] [gnu-src/] [newlib-1.18.0/] [newlib-1.18.0-or32-1.0rc2/] [newlib/] [libc/] [machine/] [m68k/] [strlen.c] - Rev 753
Go to most recent revision | Compare with Previous | Blame | View Log
/* * C library strlen routine * * This routine has been optimized for the CPU32+. * It should run on all 68k machines. * * W. Eric Norum * Saskatchewan Accelerator Laboratory * University of Saskatchewan * Saskatoon, Saskatchewan, CANADA * eric@skatter.usask.ca */ #include <string.h> /* * Test bytes using CPU32+ loop mode if possible. */ size_t strlen (const char *str) { unsigned int n = ~0; const char *cp = str; asm volatile ("1:\n" "\ttst.b (%0)+\n" #if defined(__mcpu32__) "\tdbeq %1,1b\n" #endif "\tbne.b 1b\n" : "=a" (cp), "=d" (n) : "0" (cp), "1" (n) : "cc"); return (cp - str) - 1; }
Go to most recent revision | Compare with Previous | Blame | View Log