[PATCH v2 1/4] lib: sbi: cosmetic changes to reduce indentation

Anup Patel apatel at ventanamicro.com
Tue Jun 16 22:51:04 PDT 2026


On Tue, Jun 9, 2026 at 2:18 PM Bo Gan <ganboing at gmail.com> wrote:
>
> In preparation for subsequent patches
>
> Signed-off-by: Bo Gan <ganboing at gmail.com>

LGTM.

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

Regards,
Anup

> ---
>  lib/sbi/sbi_trap_v_ldst.c | 117 +++++++++++++++++++-------------------
>  1 file changed, 60 insertions(+), 57 deletions(-)
>
> diff --git a/lib/sbi/sbi_trap_v_ldst.c b/lib/sbi/sbi_trap_v_ldst.c
> index 57f12b83..7d2e1409 100644
> --- a/lib/sbi/sbi_trap_v_ldst.c
> +++ b/lib/sbi/sbi_trap_v_ldst.c
> @@ -11,6 +11,7 @@
>
>  #include <sbi/riscv_asm.h>
>  #include <sbi/riscv_encoding.h>
> +#include <sbi/sbi_bitops.h>
>  #include <sbi/sbi_error.h>
>  #include <sbi/sbi_trap_ldst.h>
>  #include <sbi/sbi_trap.h>
> @@ -189,44 +190,45 @@ int sbi_misaligned_v_ld_emulator(ulong insn, struct sbi_trap_context *tcntx)
>                 get_vreg(vlenb, 0, 0, vlenb, mask);
>
>         do {
> -               if (!masked || ((mask[vstart / 8] >> (vstart % 8)) & 1)) {
> -                       /* compute element address */
> -                       ulong addr = base + vstart * stride;
> +               if (masked && (~mask[vstart / 8] & BIT(vstart % 8)))
> +                       continue;
>
> -                       if (IS_INDEXED_LOAD(insn)) {
> -                               ulong offset = 0;
> +               /* compute element address */
> +               ulong addr = base + vstart * stride;
>
> -                               get_vreg(vlenb, vs2, vstart << view, 1 << view, (uint8_t *)&offset);
> -                               addr = base + offset;
> -                       }
> +               if (IS_INDEXED_LOAD(insn)) {
> +                       ulong offset = 0;
> +
> +                       get_vreg(vlenb, vs2, vstart << view, 1 << view, (uint8_t *)&offset);
> +                       addr = base + offset;
> +               }
>
> -                       csr_write(CSR_VSTART, vstart);
> -
> -                       /* obtain load data from memory */
> -                       for (ulong seg = 0; seg < nf; seg++) {
> -                               for (ulong i = 0; i < len; i++) {
> -                                       bytes[seg * len + i] =
> -                                               sbi_load_u8((void *)(addr + seg * len + i),
> -                                                           &uptrap);
> -
> -                                       if (uptrap.cause) {
> -                                               if (IS_FAULT_ONLY_FIRST_LOAD(insn) && vstart != 0) {
> -                                                       vl = vstart;
> -                                                       break;
> -                                               }
> -                                               vsetvl(vl, vtype);
> -                                               uptrap.tinst = sbi_misaligned_tinst_fixup(
> -                                                       orig_trap->tinst, uptrap.tinst, i);
> -                                               return sbi_trap_redirect(regs, &uptrap);
> +               csr_write(CSR_VSTART, vstart);
> +
> +               /* obtain load data from memory */
> +               for (ulong seg = 0; seg < nf; seg++) {
> +                       for (ulong i = 0; i < len; i++) {
> +                               bytes[seg * len + i] =
> +                                       sbi_load_u8((void *)(addr + seg * len + i),
> +                                                   &uptrap);
> +
> +                               if (uptrap.cause) {
> +                                       if (IS_FAULT_ONLY_FIRST_LOAD(insn) && vstart != 0) {
> +                                               vl = vstart;
> +                                               break;
>                                         }
> +                                       vsetvl(vl, vtype);
> +                                       uptrap.tinst = sbi_misaligned_tinst_fixup(
> +                                               orig_trap->tinst, uptrap.tinst, i);
> +                                       return sbi_trap_redirect(regs, &uptrap);
>                                 }
>                         }
> -
> -                       /* write load data to regfile */
> -                       for (ulong seg = 0; seg < nf; seg++)
> -                               set_vreg(vlenb, vd + seg * emul, vstart * len,
> -                                        len, &bytes[seg * len]);
>                 }
> +
> +               /* write load data to regfile */
> +               for (ulong seg = 0; seg < nf; seg++)
> +                       set_vreg(vlenb, vd + seg * emul, vstart * len,
> +                                len, &bytes[seg * len]);
>         } while (++vstart < vl);
>
>         /* restore clobbered vl/vtype */
> @@ -288,35 +290,36 @@ int sbi_misaligned_v_st_emulator(ulong insn, struct sbi_trap_context *tcntx)
>                 get_vreg(vlenb, 0, 0, vlenb, mask);
>
>         do {
> -               if (!masked || ((mask[vstart / 8] >> (vstart % 8)) & 1)) {
> -                       /* compute element address */
> -                       ulong addr = base + vstart * stride;
> +               if (masked && (~mask[vstart / 8] & BIT(vstart % 8)))
> +                       continue;
>
> -                       if (IS_INDEXED_STORE(insn)) {
> -                               ulong offset = 0;
> +               /* compute element address */
> +               ulong addr = base + vstart * stride;
>
> -                               get_vreg(vlenb, vs2, vstart << view, 1 << view, (uint8_t *)&offset);
> -                               addr = base + offset;
> -                       }
> +               if (IS_INDEXED_STORE(insn)) {
> +                       ulong offset = 0;
>
> -                       /* obtain store data from regfile */
> -                       for (ulong seg = 0; seg < nf; seg++)
> -                               get_vreg(vlenb, vd + seg * emul, vstart * len,
> -                                        len, &bytes[seg * len]);
> -
> -                       csr_write(CSR_VSTART, vstart);
> -
> -                       /* write store data to memory */
> -                       for (ulong seg = 0; seg < nf; seg++) {
> -                               for (ulong i = 0; i < len; i++) {
> -                                       sbi_store_u8((void *)(addr + seg * len + i),
> -                                                    bytes[seg * len + i], &uptrap);
> -                                       if (uptrap.cause) {
> -                                               vsetvl(vl, vtype);
> -                                               uptrap.tinst = sbi_misaligned_tinst_fixup(
> -                                                       orig_trap->tinst, uptrap.tinst, i);
> -                                               return sbi_trap_redirect(regs, &uptrap);
> -                                       }
> +                       get_vreg(vlenb, vs2, vstart << view, 1 << view, (uint8_t *)&offset);
> +                       addr = base + offset;
> +               }
> +
> +               /* obtain store data from regfile */
> +               for (ulong seg = 0; seg < nf; seg++)
> +                       get_vreg(vlenb, vd + seg * emul, vstart * len,
> +                                len, &bytes[seg * len]);
> +
> +               csr_write(CSR_VSTART, vstart);
> +
> +               /* write store data to memory */
> +               for (ulong seg = 0; seg < nf; seg++) {
> +                       for (ulong i = 0; i < len; i++) {
> +                               sbi_store_u8((void *)(addr + seg * len + i),
> +                                            bytes[seg * len + i], &uptrap);
> +                               if (uptrap.cause) {
> +                                       vsetvl(vl, vtype);
> +                                       uptrap.tinst = sbi_misaligned_tinst_fixup(
> +                                               orig_trap->tinst, uptrap.tinst, i);
> +                                       return sbi_trap_redirect(regs, &uptrap);
>                                 }
>                         }
>                 }
> --
> 2.34.1
>
>
> --
> opensbi mailing list
> opensbi at lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/opensbi



More information about the opensbi mailing list