summaryrefslogtreecommitdiff
path: root/sys/lib/libkern/crt_glue.h
diff options
context:
space:
mode:
Diffstat (limited to 'sys/lib/libkern/crt_glue.h')
-rw-r--r--sys/lib/libkern/crt_glue.h66
1 files changed, 66 insertions, 0 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_ */