diff --git a/target-sparc/translate.c b/target-sparc/translate.c index 41a33193d8..63440dd792 100644 --- a/target-sparc/translate.c +++ b/target-sparc/translate.c @@ -5097,7 +5097,8 @@ static void disas_sparc_insn(DisasContext * dc, unsigned int insn) if (IS_IMM) { goto illegal_insn; } - if (!supervisor(dc)) { + /* LEON3 allows CASA from user space with ASI 0xa */ + if ((GET_FIELD(insn, 19, 26) != 0xa) && !supervisor(dc)) { goto priv_insn; } #endif