Message ID | 20220616121611.3316074-10-gaosong@loongson.cn |
---|---|
State | New |
Headers | show |
Series | Add LoongArch linux-user emulation support | expand |
On 6/16/22 05:16, Song Gao wrote: > Raising EXCCODE_BCE instead of EXCCODE_ADEM for helper_asrtle_d/asrtgt_d. > > Signed-off-by: Song Gao <gaosong@loongson.cn> > Signed-off-by: Xiaojuan Yang <yangxiaojuan@loongson.cn> > --- > target/loongarch/cpu.c | 2 ++ > target/loongarch/op_helper.c | 4 ++-- > 2 files changed, 4 insertions(+), 2 deletions(-) "Raise" not "Raising". Reviewed-by: Richard Henderson <richard.henderson@linaro.org> r~ > > diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c > index e32d4cc269..0013582a3a 100644 > --- a/target/loongarch/cpu.c > +++ b/target/loongarch/cpu.c > @@ -51,6 +51,7 @@ static const char * const excp_names[] = { > [EXCCODE_IPE] = "Instruction privilege error", > [EXCCODE_FPE] = "Floating Point Exception", > [EXCCODE_DBP] = "Debug breakpoint", > + [EXCCODE_BCE] = "Bound Check Exception", > }; > > const char *loongarch_exception_name(int32_t exception) > @@ -176,6 +177,7 @@ static void loongarch_cpu_do_interrupt(CPUState *cs) > case EXCCODE_INE: > case EXCCODE_IPE: > case EXCCODE_FPE: > + case EXCCODE_BCE: > env->CSR_BADV = env->pc; > QEMU_FALLTHROUGH; > case EXCCODE_ADEM: > diff --git a/target/loongarch/op_helper.c b/target/loongarch/op_helper.c > index d87049851f..df049cec59 100644 > --- a/target/loongarch/op_helper.c > +++ b/target/loongarch/op_helper.c > @@ -49,14 +49,14 @@ target_ulong helper_bitswap(target_ulong v) > void helper_asrtle_d(CPULoongArchState *env, target_ulong rj, target_ulong rk) > { > if (rj > rk) { > - do_raise_exception(env, EXCCODE_ADEM, GETPC()); > + do_raise_exception(env, EXCCODE_BCE, 0); > } > } > > void helper_asrtgt_d(CPULoongArchState *env, target_ulong rj, target_ulong rk) > { > if (rj <= rk) { > - do_raise_exception(env, EXCCODE_ADEM, GETPC()); > + do_raise_exception(env, EXCCODE_BCE, 0); > } > } >
diff --git a/target/loongarch/cpu.c b/target/loongarch/cpu.c index e32d4cc269..0013582a3a 100644 --- a/target/loongarch/cpu.c +++ b/target/loongarch/cpu.c @@ -51,6 +51,7 @@ static const char * const excp_names[] = { [EXCCODE_IPE] = "Instruction privilege error", [EXCCODE_FPE] = "Floating Point Exception", [EXCCODE_DBP] = "Debug breakpoint", + [EXCCODE_BCE] = "Bound Check Exception", }; const char *loongarch_exception_name(int32_t exception) @@ -176,6 +177,7 @@ static void loongarch_cpu_do_interrupt(CPUState *cs) case EXCCODE_INE: case EXCCODE_IPE: case EXCCODE_FPE: + case EXCCODE_BCE: env->CSR_BADV = env->pc; QEMU_FALLTHROUGH; case EXCCODE_ADEM: diff --git a/target/loongarch/op_helper.c b/target/loongarch/op_helper.c index d87049851f..df049cec59 100644 --- a/target/loongarch/op_helper.c +++ b/target/loongarch/op_helper.c @@ -49,14 +49,14 @@ target_ulong helper_bitswap(target_ulong v) void helper_asrtle_d(CPULoongArchState *env, target_ulong rj, target_ulong rk) { if (rj > rk) { - do_raise_exception(env, EXCCODE_ADEM, GETPC()); + do_raise_exception(env, EXCCODE_BCE, 0); } } void helper_asrtgt_d(CPULoongArchState *env, target_ulong rj, target_ulong rk) { if (rj <= rk) { - do_raise_exception(env, EXCCODE_ADEM, GETPC()); + do_raise_exception(env, EXCCODE_BCE, 0); } }