summaryrefslogtreecommitdiffstats
path: root/newlib/libc/machine/riscv/sys/string.h
diff options
context:
space:
mode:
Diffstat (limited to 'newlib/libc/machine/riscv/sys/string.h')
-rw-r--r--newlib/libc/machine/riscv/sys/string.h23
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