]> Git Repo - qemu.git/commitdiff
target/hppa: Implement LDSID for system mode
authorHelge Deller <[email protected]>
Tue, 2 Jan 2018 20:31:45 +0000 (21:31 +0100)
committerRichard Henderson <[email protected]>
Wed, 31 Jan 2018 13:30:50 +0000 (05:30 -0800)
Signed-off-by: Helge Deller <[email protected]>
Message-Id: <20180102203145[email protected]>
Signed-off-by: Richard Henderson <[email protected]>
target/hppa/translate.c

index b773b0ef092332800564d8302ba777983448aeff..2f8e87bba9bb8a5eb66aab3d65d00f5a899832e7 100644 (file)
@@ -2211,8 +2211,20 @@ static DisasJumpType trans_ldsid(DisasContext *ctx, uint32_t insn,
     unsigned rt = extract32(insn, 0, 5);
     TCGv_reg dest = dest_gpr(ctx, rt);
 
-    /* Since we don't implement space registers, this returns zero.  */
+#ifdef CONFIG_USER_ONLY
+    /* We don't implement space registers in user mode. */
     tcg_gen_movi_reg(dest, 0);
+#else
+    unsigned rb = extract32(insn, 21, 5);
+    unsigned sp = extract32(insn, 14, 2);
+    TCGv_i64 t0 = tcg_temp_new_i64();
+
+    tcg_gen_mov_i64(t0, space_select(ctx, sp, load_gpr(ctx, rb)));
+    tcg_gen_shri_i64(t0, t0, 32);
+    tcg_gen_trunc_i64_reg(dest, t0);
+
+    tcg_temp_free_i64(t0);
+#endif
     save_gpr(ctx, rt, dest);
 
     cond_free(&ctx->null_cond);
This page took 0.030851 seconds and 4 git commands to generate.