* Shift a (signed) quad value right (arithmetic shift right).
*/
quad_t
__ashrdi3(a, shift)
__ashrdi3(quad_t a, qshift_t shift)
quad_t a;
qshift_t shift;
{
union uu aa;
* bcmp -- vax cmpc3 instruction
int
bcmp(b1, b2, length)
bcmp(const void *b1, const void *b2, size_t length)
const void *b1, *b2;
size_t length;
#if BYTE_ORDER == LITTLE_ENDIAN
/*
* look at item 3.
void *
bsearch(key, base0, nmemb, size, compar)
bsearch(const void *key, const void *base0, size_t nmemb, size_t size,
const void *key;
int (*compar)(const void *, const void *))
const void *base0;
size_t nmemb;
size_t size;
int (*compar)(const void *, const void *);
const char *base = base0;
size_t lim;
* signed.
__cmpdi2(a, b)
__cmpdi2(quad_t a, quad_t b)
quad_t a, b;
union uu aa, bb;
* ??? if -1/2 should produce -1 on this machine, this code is wrong
__divdi3(a, b)
__divdi3(quad_t a, quad_t b)
u_quad_t ua, ub, uq;
int neg;
* Shift an (unsigned) quad value right (logical shift right).
__lshrdi3(a, shift)
__lshrdi3(quad_t a, qshift_t shift)
* both frompcindex and frompc. Any reasonable, modern compiler will
* perform this optimization.
_MCOUNT_DECL(frompc, selfpc) /* _mcount; may be static, inline, etc */
_MCOUNT_DECL(uintfptr_t frompc, uintfptr_t selfpc) /* _mcount; may be static, inline, etc */
uintfptr_t frompc, selfpc;
#ifdef GUPROF
int delta;
void
mexitcount(selfpc)
mexitcount(uintfptr_t selfpc)
uintfptr_t selfpc;
struct gmonparam *p;
uintfptr_t selfpcdiff;
* If -1/2 should produce -1 on this machine, this code is wrong.
__moddi3(a, b)
__moddi3(quad_t a, quad_t b)
u_quad_t ua, ub, ur;
* leading zeros).
u_quad_t
__qdivrem(uq, vq, arq)
__qdivrem(u_quad_t uq, u_quad_t vq, u_quad_t *arq)
u_quad_t uq, vq, *arq;
union uu tmp;
digit *u, *v, *q;
static u_long randseed = 937186357; /* after srandom(1), NSHUFF counted */
srandom(seed)
srandom(u_long seed)
u_long seed;
int i;
#include <sys/libkern.h>
scanc(size, cp, table, mask0)
scanc(u_int size, const u_char *cp, const u_char table[], int mask0)
u_int size;
const u_char *cp, table[];
int mask0;
const u_char *end;
u_char mask;
* Compare strings.
strcmp(s1, s2)
strcmp(const char *s1, const char *s2)
const char *s1, *s2;
while (*s1 == *s2++)
if (*s1++ == 0)
* If retval >= siz, truncation occurred.
size_t
strlcat(dst, src, siz)
strlcat(char *dst, const char *src, size_t siz)
char *dst;
const char *src;
size_t siz;
char *d = dst;
const char *s = src;
* If *stringp is NULL, strsep returns NULL.
char *
strsep(stringp, delim)
strsep(char **stringp, const char *delim)
char **stringp;
const char *delim;
char *s;
const char *spanp;
* alphabets and digits are each contiguous.
long
strtol(nptr, endptr, base)
strtol(const char *nptr, char **endptr, int base)
const char *nptr;
char **endptr;
int base;
const char *s = nptr;
unsigned long acc;
unsigned long
strtoul(nptr, endptr, base)
strtoul(const char *nptr, char **endptr, int base)
* Neither a nor b are considered signed.
__ucmpdi2(a, b)
__ucmpdi2(u_quad_t a, u_quad_t b)
u_quad_t a, b;
* Divide two unsigned quads.
__udivdi3(a, b)
__udivdi3(u_quad_t a, u_quad_t b)
return (__qdivrem(a, b, (u_quad_t *)0));
* Return remainder after dividing two unsigned quads.
__umoddi3(a, b)
__umoddi3(u_quad_t a, u_quad_t b)
u_quad_t r;