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;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (op_flags & XTENSA_OP_SYSCALL) {
|
||||||
|
gen_exception_cause(dc, SYSCALL_CAUSE);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
for (slot = 0; slot < slots; ++slot) {
|
for (slot = 0; slot < slots; ++slot) {
|
||||||
XtensaOpcodeOps *ops = slot_prop[slot].ops;
|
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[],
|
static void translate_waiti(DisasContext *dc, const uint32_t arg[],
|
||||||
const uint32_t par[])
|
const uint32_t par[])
|
||||||
{
|
{
|
||||||
@ -4094,7 +4093,7 @@ static const XtensaOpcodeOps core_ops[] = {
|
|||||||
.par = (const uint32_t[]){3},
|
.par = (const uint32_t[]){3},
|
||||||
}, {
|
}, {
|
||||||
.name = "syscall",
|
.name = "syscall",
|
||||||
.translate = translate_syscall,
|
.op_flags = XTENSA_OP_SYSCALL,
|
||||||
}, {
|
}, {
|
||||||
.name = "umul.aa.hh",
|
.name = "umul.aa.hh",
|
||||||
.translate = translate_mac16,
|
.translate = translate_mac16,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user