forked from Mirrors/opensbi
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>
This commit is contained in:

committed by
Anup Patel

parent
2942777425
commit
17729d44da
12
lib/utils/libquad/include/sys/cdefs.h
Normal file
12
lib/utils/libquad/include/sys/cdefs.h
Normal file
@@ -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
|
25
lib/utils/libquad/include/sys/types.h
Normal file
25
lib/utils/libquad/include/sys/types.h
Normal file
@@ -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
|
Reference in New Issue
Block a user