mirror of
https://github.com/riscv-software-src/opensbi.git
synced 2026-06-17 16:41:19 +01:00
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:
+56
-53
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user