]> xenbits.xensource.com Git - people/liuw/libxenctrl-split/qemu-xen.git/commitdiff
target-xtensa: implement S32NB
authorMax Filippov <jcmvbkbc@gmail.com>
Sun, 19 Jul 2015 06:49:00 +0000 (09:49 +0300)
committerMax Filippov <jcmvbkbc@gmail.com>
Wed, 21 Oct 2015 18:29:25 +0000 (21:29 +0300)
S32NB provides the same functionality as S32I with two exceptions.
First, when its operation leaves the processor, the external transaction
is marked Non-Bufferable. Second, it may not be used to write to
Instruction RAM.
In QEMU S32NB is equivalent to S32I.

Signed-off-by: Max Filippov <jcmvbkbc@gmail.com>
target-xtensa/translate.c

index be5eb256272a1a28604c2bc349bb2c876eefcd99..aa0c527dc42dc45d94d4c9c33b06b1183601c55c 100644 (file)
@@ -1965,6 +1965,17 @@ static void disas_xtensa_insn(CPUXtensaState *env, DisasContext *dc)
                 }
                 break;
 
+            case 5: /*S32N*/
+                if (gen_window_check2(dc, RRI4_S, RRI4_T)) {
+                    TCGv_i32 addr = tcg_temp_new_i32();
+
+                    tcg_gen_addi_i32(addr, cpu_R[RRI4_S], RRI4_IMM4 << 2);
+                    gen_load_store_alignment(dc, 2, addr, false);
+                    tcg_gen_qemu_st32(cpu_R[RRI4_T], addr, dc->cring);
+                    tcg_temp_free(addr);
+                }
+                break;
+
             default:
                 RESERVED();
                 break;