[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH v6 09/11] RISC-V: Add libgcc helpers for clz
From: |
Daniel Kiper |
Subject: |
Re: [PATCH v6 09/11] RISC-V: Add libgcc helpers for clz |
Date: |
Mon, 18 Feb 2019 20:55:28 +0100 |
User-agent: |
NeoMutt/20170113 (1.7.2) |
On Tue, Feb 12, 2019 at 11:31:06AM +0100, Alexander Graf wrote:
> Gcc may decide it wants to call helper functions to execute clz. Provide
Do we know when it happens? Could we add that to the commit message?
> them in our own copy of libgcc.
>
> Signed-off-by: Alexander Graf <address@hidden>
> ---
> grub-core/kern/compiler-rt.c | 42 ++++++++++++++++++++++++++++++++++++++++++
> include/grub/compiler-rt.h | 7 +++++++
> 2 files changed, 49 insertions(+)
>
> diff --git a/grub-core/kern/compiler-rt.c b/grub-core/kern/compiler-rt.c
> index 5cfcb3907..404902119 100644
> --- a/grub-core/kern/compiler-rt.c
> +++ b/grub-core/kern/compiler-rt.c
> @@ -417,3 +417,45 @@ __aeabi_llsl (grub_uint64_t u, int b)
> __attribute__ ((alias ("__ashldi3")));
>
> #endif
> +
> +#ifdef __riscv
> +
> +/* Based on libgcc from gcc suite. */
> +int
> +__clzsi2 (grub_uint32_t val)
> +{
> + int i = 32;
> + int j = 16;
> + int temp;
> +
> + for (; j; j >>= 1)
> + {
> + if ((temp = val) >> j)
> + {
> + if (j == 1)
> + {
> + return (i - 2);
> + }
> + else
> + {
> + i -= j;
> + val = temp;
> + }
> + }
> + }
> + return (i - val);
> +}
> +
> +int
> +__clzdi2 (grub_uint64_t val)
> +{
> + if (val >> 32)
> + {
> + return __clzsi2 (val >> 32);
> + }
> + else
> + {
> + return __clzsi2 (val) + 32;
> + }
> +}
I assume that __clzsi2() and __clzdi2() are exact copies from libgcc.
If no then I have an itching to drop redundant curly braces.
Daniel
- Re: [PATCH v6 10/11] RISC-V: Add to build system, (continued)
[PATCH v6 11/11] fdt: Treat device tree file type like ACPI, Alexander Graf, 2019/02/12
[PATCH v6 08/11] RISC-V: Add auxiliary files, Alexander Graf, 2019/02/12
[PATCH v6 02/11] PE: Add RISC-V definitions, Alexander Graf, 2019/02/12
[PATCH v6 09/11] RISC-V: Add libgcc helpers for clz, Alexander Graf, 2019/02/12
- Re: [PATCH v6 09/11] RISC-V: Add libgcc helpers for clz,
Daniel Kiper <=
[PATCH v6 04/11] RISC-V: Add setjmp implementation, Alexander Graf, 2019/02/12
[PATCH v6 01/11] efi: Rename armxx to arch, Alexander Graf, 2019/02/12
[PATCH v6 06/11] RISC-V: Add Linux load logic, Alexander Graf, 2019/02/12
[PATCH v6 07/11] RISC-V: Add awareness for RISC-V reloations, Alexander Graf, 2019/02/12