diff options
Diffstat (limited to 'newlib/libc/machine/riscv/sys/string.h')
-rw-r--r-- | newlib/libc/machine/riscv/sys/string.h | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/newlib/libc/machine/riscv/sys/string.h b/newlib/libc/machine/riscv/sys/string.h new file mode 100644 index 000000000..d8ae6f5a7 --- /dev/null +++ b/newlib/libc/machine/riscv/sys/string.h @@ -0,0 +1,23 @@ +/* Copyright (c) 2017 SiFive Inc. All rights reserved. + + This copyrighted material is made available to anyone wishing to use, + modify, copy, or redistribute it subject to the terms and conditions + of the BSD License. This program is distributed in the hope that + it will be useful, but WITHOUT ANY WARRANTY expressed or implied, + including the implied warranties of MERCHANTABILITY or FITNESS FOR + A PARTICULAR PURPOSE. A copy of this license is available at + http://www.opensource.org/licenses. +*/ + +#ifndef _SYS_STRING_H +#define _SYS_STRING_H + +static __inline unsigned long __libc_detect_null(unsigned long w) +{ + unsigned long mask = 0x7f7f7f7f; + if (sizeof (long) == 8) + mask = ((mask << 16) << 16) | mask; + return ~(((w & mask) + mask) | w | mask); +} + +#endif |