aboutsummaryrefslogtreecommitdiff
path: root/lib/utils/libquad/include
diff options
context:
space:
mode:
authorJessica Clarke <jrtc27@jrtc27.com>2021-07-11 03:28:24 +0100
committerAnup Patel <anup@brainfault.org>2021-07-11 21:01:44 +0530
commit17729d44daf879e015950b0e9636afceefea0a59 (patch)
treeb367007dadc7d1c2cf3de4250addec137dc5414a /lib/utils/libquad/include
parent2942777425516f7b31181fbaecc5485263dfcb01 (diff)
lib: utils: Drop dependency on libgcc by importing part of FreeBSD's libquad
We only need libgcc for 64-bit division on RV32. Whilst GCC toolchains bundle libgcc, Clang toolchains tend not to ship libclang_rt.builtins given every compiler is a cross-compiler for every target and so you would need a silly number of builds of it, with only the native library available; only vendor-provided Clang toolchains specifically for bare metal cross-compiling are likely to provide it. Thus, import part of FreeBSD's implementation of the division support functions needed and stop linking against libgcc. Signed-off-by: Jessica Clarke <jrtc27@jrtc27.com> Reviewed-by: Anup Patel <anup.patel@wdc.com> Tested-by: Anup Patel <anup.patel@wdc.com>
Diffstat (limited to 'lib/utils/libquad/include')
-rw-r--r--lib/utils/libquad/include/limits.h12
-rw-r--r--lib/utils/libquad/include/sys/cdefs.h12
-rw-r--r--lib/utils/libquad/include/sys/types.h25
3 files changed, 49 insertions, 0 deletions
diff --git a/lib/utils/libquad/include/limits.h b/lib/utils/libquad/include/limits.h
new file mode 100644
index 0000000..9c69d27
--- /dev/null
+++ b/lib/utils/libquad/include/limits.h
@@ -0,0 +1,12 @@
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Copyright (c) 2021 Jessica Clarke <jrtc27@jrtc27.com>
+ */
+
+#ifndef __LIMITS_H__
+#define __LIMITS_H__
+
+#define CHAR_BIT 8
+
+#endif
diff --git a/lib/utils/libquad/include/sys/cdefs.h b/lib/utils/libquad/include/sys/cdefs.h
new file mode 100644
index 0000000..e8d6faa
--- /dev/null
+++ b/lib/utils/libquad/include/sys/cdefs.h
@@ -0,0 +1,12 @@
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Copyright (c) 2021 Jessica Clarke <jrtc27@jrtc27.com>
+ */
+
+#ifndef __SYS_CDEFS_H__
+#define __SYS_CDEFS_H__
+
+#define __FBSDID(s) struct __hack
+
+#endif
diff --git a/lib/utils/libquad/include/sys/types.h b/lib/utils/libquad/include/sys/types.h
new file mode 100644
index 0000000..e372437
--- /dev/null
+++ b/lib/utils/libquad/include/sys/types.h
@@ -0,0 +1,25 @@
+/*
+ * SPDX-License-Identifier: BSD-2-Clause
+ *
+ * Copyright (c) 2021 Jessica Clarke <jrtc27@jrtc27.com>
+ */
+
+#ifndef __SYS_TYPES_H__
+#define __SYS_TYPES_H__
+
+#include <sbi/sbi_types.h>
+
+typedef unsigned long u_long;
+
+typedef int64_t quad_t;
+typedef uint64_t u_quad_t;
+
+#if __BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
+#define _QUAD_LOWWORD 1
+#define _QUAD_HIGHWORD 0
+#else
+#define _QUAD_LOWWORD 0
+#define _QUAD_HIGHWORD 1
+#endif
+
+#endif