mirror of
https://github.com/riscv-software-src/opensbi.git
synced 2026-06-17 16:41:19 +01:00
1475f147f6
The load/store address offset between the uptrap and the orig_trap can be derived by orig_trap->tval - uptrap->tval, thus refactor the function prototype for simplicity. For vector load, sbi_misaligned_v_tinst_fixup is introduced. There's no transformed instruction for vector load/store, so null out tinst if the fault is not a guest-page fault. 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-3-ganboing@gmail.com Signed-off-by: Anup Patel <anup@brainfault.org>
38 lines
811 B
C
38 lines
811 B
C
/*
|
|
* SPDX-License-Identifier: BSD-2-Clause
|
|
*
|
|
* Copyright (c) 2019 Western Digital Corporation or its affiliates.
|
|
*
|
|
* Authors:
|
|
* Anup Patel <anup.patel@wdc.com>
|
|
*/
|
|
|
|
#ifndef __SBI_TRAP_LDST_H__
|
|
#define __SBI_TRAP_LDST_H__
|
|
|
|
#include <sbi/sbi_types.h>
|
|
#include <sbi/sbi_trap.h>
|
|
|
|
union sbi_ldst_data {
|
|
u64 data_u64;
|
|
u32 data_u32;
|
|
u8 data_bytes[8];
|
|
ulong data_ulong;
|
|
};
|
|
|
|
int sbi_misaligned_load_handler(struct sbi_trap_context *tcntx);
|
|
|
|
int sbi_misaligned_store_handler(struct sbi_trap_context *tcntx);
|
|
|
|
int sbi_load_access_handler(struct sbi_trap_context *tcntx);
|
|
|
|
int sbi_store_access_handler(struct sbi_trap_context *tcntx);
|
|
|
|
int sbi_misaligned_v_ld_emulator(ulong insn,
|
|
struct sbi_trap_context *tcntx);
|
|
|
|
int sbi_misaligned_v_st_emulator(ulong insn,
|
|
struct sbi_trap_context *tcntx);
|
|
|
|
#endif
|