target/xtensa: extract test for syscall instruction
- mark syscall instruction; - put syscall exception check right after privileged exception check; Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
This commit is contained in:
parent
21a2dad5c4
commit
4c6ec5f3cd
|
@ -1047,6 +1047,11 @@ static void disas_xtensa_insn(CPUXtensaState *env, DisasContext *dc)
|
|||
return;
|
||||
}
|
||||
|
||||
if (op_flags & XTENSA_OP_SYSCALL) {
|
||||
gen_exception_cause(dc, SYSCALL_CAUSE);
|
||||
return;
|
||||
}
|
||||
|
||||
for (slot = 0; slot < slots; ++slot) {
|
||||
XtensaOpcodeOps *ops = slot_prop[slot].ops;
|
||||
|
||||
|
@ -2557,12 +2562,6 @@ static void translate_subx(DisasContext *dc, const uint32_t arg[],
|
|||
}
|
||||
}
|
||||
|
||||
static void translate_syscall(DisasContext *dc, const uint32_t arg[],
|
||||
const uint32_t par[])
|
||||
{
|
||||
gen_exception_cause(dc, SYSCALL_CAUSE);
|
||||
}
|
||||
|
||||
static void translate_waiti(DisasContext *dc, const uint32_t arg[],
|
||||
const uint32_t par[])
|
||||
{
|
||||
|
@ -4094,7 +4093,7 @@ static const XtensaOpcodeOps core_ops[] = {
|
|||
.par = (const uint32_t[]){3},
|
||||
}, {
|
||||
.name = "syscall",
|
||||
.translate = translate_syscall,
|
||||
.op_flags = XTENSA_OP_SYSCALL,
|
||||
}, {
|
||||
.name = "umul.aa.hh",
|
||||
.translate = translate_mac16,
|
||||
|
|
Loading…
Reference in a new issue