diff options
author | Jeremie Courreges-Anglas <jca@cvs.openbsd.org> | 2020-08-13 10:02:47 +0000 |
---|---|---|
committer | Jeremie Courreges-Anglas <jca@cvs.openbsd.org> | 2020-08-13 10:02:47 +0000 |
commit | ce803099f3b364054f7a64faa8163dfb7d272b40 (patch) | |
tree | e37c507e0b30cf8f2ac5b76f083edec125eac8e3 /sys/lib/libkern/crt_glue.h | |
parent | 64bbc8e322d6caafd2b0373cfe0eb463698155f9 (diff) |
Move compiler_rt type definitions to a separate header
so that we can reuse them in other compiler_rt routines.
ok kettenis@
Diffstat (limited to 'sys/lib/libkern/crt_glue.h')
-rw-r--r-- | sys/lib/libkern/crt_glue.h | 66 |
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_ */ |