diff options
author | Arvind Sankar <[email protected]> | 2020-06-17 16:02:34 -0400 |
---|---|---|
committer | Brian Behlendorf <[email protected]> | 2020-06-18 12:21:46 -0700 |
commit | c0673571d03a51d9ac014ecb8cbb7a6ca9dee384 (patch) | |
tree | 2b01ddaac134dc07cecdfb6324dc8b757961a860 /module/os | |
parent | eebba5d8f486fd069e9fccd9e653894a7d635cdd (diff) |
Switch off -Wmissing-prototypes for libgcc math functions
spl-generic.c defines some of the libgcc integer library functions on
32-bit. Don't bother checking -Wmissing-prototypes since nothing should
directly call these functions from C code.
Reviewed-by: Ryan Moeller <[email protected]>
Reviewed-by: Brian Behlendorf <[email protected]>
Signed-off-by: Arvind Sankar <[email protected]>
Closes #10470
Diffstat (limited to 'module/os')
-rw-r--r-- | module/os/linux/spl/spl-generic.c | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/module/os/linux/spl/spl-generic.c b/module/os/linux/spl/spl-generic.c index aa74f6042..820fb86c3 100644 --- a/module/os/linux/spl/spl-generic.c +++ b/module/os/linux/spl/spl-generic.c @@ -173,6 +173,7 @@ random_get_pseudo_bytes(uint8_t *ptr, size_t len) EXPORT_SYMBOL(random_get_pseudo_bytes); #if BITS_PER_LONG == 32 + /* * Support 64/64 => 64 division on a 32-bit platform. While the kernel * provides a div64_u64() function for this we do not use it because the @@ -220,6 +221,14 @@ __div_u64(uint64_t u, uint32_t v) } /* + * Turn off missing prototypes warning for these functions. They are + * replacements for libgcc-provided functions and will never be called + * directly. + */ +#pragma GCC diagnostic push +#pragma GCC diagnostic ignored "-Wmissing-prototypes" + +/* * Implementation of 64-bit unsigned division for 32-bit machines. * * First the procedure takes care of the case in which the divisor is a @@ -294,6 +303,26 @@ __umoddi3(uint64_t dividend, uint64_t divisor) } EXPORT_SYMBOL(__umoddi3); +/* 64-bit signed modulo for 32-bit machines. */ +int64_t +__moddi3(int64_t n, int64_t d) +{ + int64_t q; + boolean_t nn = B_FALSE; + + if (n < 0) { + nn = B_TRUE; + n = -n; + } + if (d < 0) + d = -d; + + q = __umoddi3(n, d); + + return (nn ? -q : q); +} +EXPORT_SYMBOL(__moddi3); + /* * Implementation of 64-bit unsigned division/modulo for 32-bit machines. */ @@ -397,6 +426,9 @@ __aeabi_ldivmod(int64_t u, int64_t v) } EXPORT_SYMBOL(__aeabi_ldivmod); #endif /* __arm || __arm__ */ + +#pragma GCC diagnostic pop + #endif /* BITS_PER_LONG */ /* |