diff mbox series

[v2] lib: sbi_scratch: Optimize the alignment code for alloc size

Message ID 20230309103528.78775-1-wxjstz@126.com
State Accepted
Headers show
Series [v2] lib: sbi_scratch: Optimize the alignment code for alloc size | expand

Commit Message

Xiang W March 9, 2023, 10:35 a.m. UTC
Signed-off-by: Xiang W <wxjstz@126.com>
---
Changes in v2:
- Added type conversion as suggested by Andreas Schwab to prevent
  errors when extending sign bits

 lib/sbi/sbi_scratch.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Anup Patel April 6, 2023, 10:36 a.m. UTC | #1
On Thu, Mar 9, 2023 at 4:57 PM Xiang W <wxjstz@126.com> wrote:
>
> Signed-off-by: Xiang W <wxjstz@126.com>

Looks good to me.

Reviewed-by: Anup Patel <anup@brainfault.org>

Applied this patch to the riscv/opensbi repo.

Thanks,
Anup

> ---
> Changes in v2:
> - Added type conversion as suggested by Andreas Schwab to prevent
>   errors when extending sign bits
>
>  lib/sbi/sbi_scratch.c | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
>
> diff --git a/lib/sbi/sbi_scratch.c b/lib/sbi/sbi_scratch.c
> index 87b34c6..55ebdbb 100644
> --- a/lib/sbi/sbi_scratch.c
> +++ b/lib/sbi/sbi_scratch.c
> @@ -59,8 +59,8 @@ unsigned long sbi_scratch_alloc_offset(unsigned long size)
>         if (!size)
>                 return 0;
>
> -       if (size & (__SIZEOF_POINTER__ - 1))
> -               size = (size & ~(__SIZEOF_POINTER__ - 1)) + __SIZEOF_POINTER__;
> +       size += __SIZEOF_POINTER__ - 1;
> +       size &= ~((unsigned long)__SIZEOF_POINTER__ - 1);
>
>         spin_lock(&extra_lock);
>
> --
> 2.39.2
>
>
> --
> opensbi mailing list
> opensbi@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/opensbi
diff mbox series

Patch

diff --git a/lib/sbi/sbi_scratch.c b/lib/sbi/sbi_scratch.c
index 87b34c6..55ebdbb 100644
--- a/lib/sbi/sbi_scratch.c
+++ b/lib/sbi/sbi_scratch.c
@@ -59,8 +59,8 @@  unsigned long sbi_scratch_alloc_offset(unsigned long size)
 	if (!size)
 		return 0;
 
-	if (size & (__SIZEOF_POINTER__ - 1))
-		size = (size & ~(__SIZEOF_POINTER__ - 1)) + __SIZEOF_POINTER__;
+	size += __SIZEOF_POINTER__ - 1;
+	size &= ~((unsigned long)__SIZEOF_POINTER__ - 1);
 
 	spin_lock(&extra_lock);