|
| From: | Richard Henderson |
| Subject: | Re: [Qemu-devel] [PATCH 23/29] target-sparc: implement ST_BLKINIT_ ASIs |
| Date: | Tue, 11 Oct 2016 09:22:02 -0500 |
| User-agent: | Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.3.0 |
On 10/01/2016 05:05 AM, Artyom Tarasenko wrote:
@@ -2234,13 +2234,24 @@ static void gen_st_asi(DisasContext *dc, TCGv src, TCGv
addr,
switch (da.type) {
case GET_ASI_EXCP:
break;
- case GET_ASI_DTWINX: /* Reserved for stda. */
- gen_exception(dc, TT_ILL_INSN);
- break;
case GET_ASI_DIRECT:
gen_address_mask(dc, addr);
tcg_gen_qemu_st_tl(src, addr, da.mem_idx, da.memop);
break;
+ case GET_ASI_DTWINX:
+#ifndef TARGET_SPARC64
+ gen_exception(dc, TT_ILL_INSN);
+ break;
+#else
+ if (!(dc->def->features & CPU_FEATURE_HYPV)) {
+ /* Pre OpenSPARC CPUs don't have these */
+ gen_exception(dc, TT_ILL_INSN);
+ return;
+ }
+ /* in OpenSPARC T1+ CPUs TWINX ASIs in store instructions
+ * are ST_BLKINIT_ ASIs */
+ /* fall through */
+#endif
default:
Of course, "DTWINX" is short for "DIRECT TWINX", so you don't need to fall into the default case, but into the DIRECT case.
Indeed, built upon my patch set that would reach g_assert_not_reached, since I removed all the cases that are handled inline.
r~
| [Prev in Thread] | Current Thread | [Next in Thread] |