summaryrefslogtreecommitdiffstats
path: root/sys/lib
diff options
context:
space:
mode:
Diffstat (limited to 'sys/lib')
-rw-r--r--sys/lib/libkern/crt_glue.h66
-rw-r--r--sys/lib/libkern/lshrti3.c34
2 files changed, 68 insertions, 32 deletions
diff --git a/sys/lib/libkern/crt_glue.h b/sys/lib/libkern/crt_glue.h
new file mode 100644
index 00000000000..a00bea0a70e
--- /dev/null
+++ b/sys/lib/libkern/crt_glue.h
@@ -0,0 +1,66 @@
+/* ===-- int_lib.h - configuration header for compiler-rt -----------------===
+ *
+ * The LLVM Compiler Infrastructure
+ *
+ * This file is dual licensed under the MIT and the University of Illinois Open
+ * Source Licenses. See LICENSE.TXT for details.
+ *
+ * ===----------------------------------------------------------------------===
+ *
+ * This file is a compat header for compiler-rt source files used in the OpenBSD
+ * kernel.
+ * This file is not part of the interface of this library.
+ *
+ * ===----------------------------------------------------------------------===
+ */
+
+#ifndef _CRT_INT_LIB_H_
+#define _CRT_INT_LIB_H_
+
+#include <sys/limits.h>
+#include <sys/endian.h>
+
+typedef int si_int;
+typedef unsigned int su_int;
+typedef long long di_int;
+typedef unsigned long long du_int;
+typedef int ti_int __attribute__ ((mode (TI)));
+typedef int tu_int __attribute__ ((mode (TI)));
+
+#if BYTE_ORDER == LITTLE_ENDIAN
+#define _YUGA_LITTLE_ENDIAN 0
+#else
+#define _YUGA_LITTLE_ENDIAN 1
+#endif
+
+typedef union
+{
+ ti_int all;
+ struct
+ {
+#if _YUGA_LITTLE_ENDIAN
+ du_int low;
+ di_int high;
+#else
+ di_int high;
+ du_int low;
+#endif /* _YUGA_LITTLE_ENDIAN */
+ }s;
+} twords;
+
+typedef union
+{
+ tu_int all;
+ struct
+ {
+#if _YUGA_LITTLE_ENDIAN
+ du_int low;
+ du_int high;
+#else
+ du_int high;
+ du_int low;
+#endif /* _YUGA_LITTLE_ENDIAN */
+ }s;
+} utwords;
+
+#endif /* _CRT_INT_LIB_H_ */
diff --git a/sys/lib/libkern/lshrti3.c b/sys/lib/libkern/lshrti3.c
index 1e1009f142a..82fa63ceca6 100644
--- a/sys/lib/libkern/lshrti3.c
+++ b/sys/lib/libkern/lshrti3.c
@@ -12,42 +12,12 @@
* ===----------------------------------------------------------------------===
*/
+#include "crt_glue.h"
+
/* Returns: logical a >> b */
/* Precondition: 0 <= b < bits_in_tword */
-#include <sys/limits.h>
-#include <sys/endian.h>
-
-typedef int si_int;
-typedef unsigned int su_int;
-typedef long long di_int;
-typedef unsigned long long du_int;
-typedef int ti_int __attribute__ ((mode (TI)));
-typedef int tu_int __attribute__ ((mode (TI)));
-
-#if BYTE_ORDER == LITTLE_ENDIAN
-#define _YUGA_LITTLE_ENDIAN 0
-#else
-#define _YUGA_LITTLE_ENDIAN 1
-#endif
-
-typedef union
-{
- tu_int all;
- struct
- {
-#if _YUGA_LITTLE_ENDIAN
- du_int low;
- du_int high;
-#else
- du_int high;
- du_int low;
-#endif /* _YUGA_LITTLE_ENDIAN */
- }s;
-} utwords;
-
-
ti_int
__lshrti3(ti_int a, si_int b)
{