lib: sbi: cosmetic changes to reduce indentation

In preparation for subsequent patches.

Signed-off-by: Bo Gan <ganboing@gmail.com>
Tested-by: Anirudh Srinivasan <asrinivasan@oss.tenstorrent.com>
Reviewed-by: Anup Patel <anup@brainfault.org>
Link: https://lore.kernel.org/r/20260609060024.706-2-ganboing@gmail.com
Signed-off-by: Anup Patel <anup@brainfault.org>
This commit is contained in:
Bo Gan
2026-06-08 23:00:21 -07:00
committed by Anup Patel
parent 3afe63d4e3
commit 4120e6dce2
+56 -53
View File
@@ -11,6 +11,7 @@
#include <sbi/riscv_asm.h> #include <sbi/riscv_asm.h>
#include <sbi/riscv_encoding.h> #include <sbi/riscv_encoding.h>
#include <sbi/sbi_bitops.h>
#include <sbi/sbi_error.h> #include <sbi/sbi_error.h>
#include <sbi/sbi_trap_ldst.h> #include <sbi/sbi_trap_ldst.h>
#include <sbi/sbi_trap.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); get_vreg(vlenb, 0, 0, vlenb, mask);
do { do {
if (!masked || ((mask[vstart / 8] >> (vstart % 8)) & 1)) { if (masked && (~mask[vstart / 8] & BIT(vstart % 8)))
/* compute element address */ continue;
ulong addr = base + vstart * stride;
if (IS_INDEXED_LOAD(insn)) { /* compute element address */
ulong offset = 0; ulong addr = base + vstart * stride;
get_vreg(vlenb, vs2, vstart << view, 1 << view, (uint8_t *)&offset); if (IS_INDEXED_LOAD(insn)) {
addr = base + offset; ulong offset = 0;
}
csr_write(CSR_VSTART, vstart); get_vreg(vlenb, vs2, vstart << view, 1 << view, (uint8_t *)&offset);
addr = base + offset;
}
/* obtain load data from memory */ csr_write(CSR_VSTART, vstart);
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) { /* obtain load data from memory */
if (IS_FAULT_ONLY_FIRST_LOAD(insn) && vstart != 0) { for (ulong seg = 0; seg < nf; seg++) {
vl = vstart; for (ulong i = 0; i < len; i++) {
break; bytes[seg * len + i] =
} sbi_load_u8((void *)(addr + seg * len + i),
vsetvl(vl, vtype); &uptrap);
uptrap.tinst = sbi_misaligned_tinst_fixup(
orig_trap->tinst, uptrap.tinst, i); if (uptrap.cause) {
return sbi_trap_redirect(regs, &uptrap); 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); } while (++vstart < vl);
/* restore clobbered vl/vtype */ /* 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); get_vreg(vlenb, 0, 0, vlenb, mask);
do { do {
if (!masked || ((mask[vstart / 8] >> (vstart % 8)) & 1)) { if (masked && (~mask[vstart / 8] & BIT(vstart % 8)))
/* compute element address */ continue;
ulong addr = base + vstart * stride;
if (IS_INDEXED_STORE(insn)) { /* compute element address */
ulong offset = 0; ulong addr = base + vstart * stride;
get_vreg(vlenb, vs2, vstart << view, 1 << view, (uint8_t *)&offset); if (IS_INDEXED_STORE(insn)) {
addr = base + offset; ulong offset = 0;
}
/* obtain store data from regfile */ get_vreg(vlenb, vs2, vstart << view, 1 << view, (uint8_t *)&offset);
for (ulong seg = 0; seg < nf; seg++) addr = base + offset;
get_vreg(vlenb, vd + seg * emul, vstart * len, }
len, &bytes[seg * len]);
csr_write(CSR_VSTART, vstart); /* obtain store data from regfile */
for (ulong seg = 0; seg < nf; seg++)
get_vreg(vlenb, vd + seg * emul, vstart * len,
len, &bytes[seg * len]);
/* write store data to memory */ csr_write(CSR_VSTART, vstart);
for (ulong seg = 0; seg < nf; seg++) {
for (ulong i = 0; i < len; i++) { /* write store data to memory */
sbi_store_u8((void *)(addr + seg * len + i), for (ulong seg = 0; seg < nf; seg++) {
bytes[seg * len + i], &uptrap); for (ulong i = 0; i < len; i++) {
if (uptrap.cause) { sbi_store_u8((void *)(addr + seg * len + i),
vsetvl(vl, vtype); bytes[seg * len + i], &uptrap);
uptrap.tinst = sbi_misaligned_tinst_fixup( if (uptrap.cause) {
orig_trap->tinst, uptrap.tinst, i); vsetvl(vl, vtype);
return sbi_trap_redirect(regs, &uptrap); uptrap.tinst = sbi_misaligned_tinst_fixup(
} orig_trap->tinst, uptrap.tinst, i);
return sbi_trap_redirect(regs, &uptrap);
} }
} }
} }