mirror of https://github.com/xemu-project/xemu.git
MIPS patches 2016-12-04
Changes: * Fix Loongson instructions * Fix bad shifts in {dextp|dextpdp} -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.5 (GNU/Linux) iQIVAwUAWENz2iI464bV95fCAQLnXA/+Oaem/96FtluFasdihj8S2IA416JL+eu3 cuSh/SV7gkJ7Y1eXNJoKzX43F5yVMq72jXkva5EImRvUAWROgx4p8JkGCfn4APWo 2PKJiUupKpszfxHNCzKJV5mRg+cjjRysnjSemHOG+Rnfrkw+zcjdRDRZHj5JFxRl Gfa61n0BnvIx7fbEkgJvpsmnNtj0if2EOd4dHMV3OvJ7m2mlsYA4/ONs7RhJCzAg ZcEOPoRjvv1QbYfH4k/qwkiFezbgUJ8/Oij4qFE3yyNgoIU7xwg/YgA3LudC37Pr FjkDwIOGrTMNau8l+icZPio00ciDjca+KkU6hvMcTpLkJ5RiopIg55HXji4Y5CEt hfdAzOSodIDZNM6sB96BmstA8/nMKk3VibaaOovKervjc3hu/XX/Avp7/AKdqDHI qqwjsmi8jF8XWnAEIGjXIQe5MfHd9xUCQoj94kJkdT7G7arB/L3834r0h+P79yUX buggEhvc34KMWAmohuV/YB6+6QWJRHmaSagEtnVsdfUJnV+61PbUZDQ6RGH9z7UI pHkc0bPt8dOuu8KcBhCkKzcmsxGd3PEfw8KJio7rzZ4jMr3GTQotTWx+0wZvchXg F5JL/9WIhGFxzXAQfva6D2lwIUN4Vj1UktruU6I1nxlSMhfl1sMBcbtzWIJU9OmK dMP7650HTgw= =72lo -----END PGP SIGNATURE----- Merge remote-tracking branch 'yongbok/tags/mips-20161204' into staging MIPS patches 2016-12-04 Changes: * Fix Loongson instructions * Fix bad shifts in {dextp|dextpdp} # gpg: Signature made Sun 04 Dec 2016 01:39:38 AM GMT # gpg: using RSA key 0x2238EB86D5F797C2 # gpg: Can't check signature: public key not found * yongbok/tags/mips-20161204: target-mips: fix bad shifts in {dextp|dextpdp} target-mips: Fix Loongson multimedia instructions. target-mips: Fix Loongson multimedia 'or' instruction. target-mips: Fix Loongson pandn instruction. Message-id: 1480816817-53245-1-git-send-email-yongbok.kim@imgtec.com Signed-off-by: Stefan Hajnoczi <stefanha@redhat.com>
This commit is contained in:
commit
bc66cedb41
|
@ -3477,7 +3477,7 @@ target_ulong helper_dextp(target_ulong ac, target_ulong size, CPUMIPSState *env)
|
|||
|
||||
if (sub >= -1) {
|
||||
temp = (tempB << (64 - len)) | (tempA >> len);
|
||||
temp = temp & ((0x01 << (size + 1)) - 1);
|
||||
temp = temp & ((1ULL << (size + 1)) - 1);
|
||||
set_DSPControl_efi(0, env);
|
||||
} else {
|
||||
set_DSPControl_efi(1, env);
|
||||
|
@ -3506,7 +3506,7 @@ target_ulong helper_dextpdp(target_ulong ac, target_ulong size,
|
|||
|
||||
if (sub >= -1) {
|
||||
temp = (tempB << (64 - len)) | (tempA >> len);
|
||||
temp = temp & ((0x01 << (size + 1)) - 1);
|
||||
temp = temp & ((1ULL << (size + 1)) - 1);
|
||||
set_DSPControl_pos(sub, env);
|
||||
set_DSPControl_efi(0, env);
|
||||
} else {
|
||||
|
|
|
@ -3871,6 +3871,7 @@ static void gen_loongson_multimedia(DisasContext *ctx, int rd, int rs, int rt)
|
|||
break;
|
||||
}
|
||||
|
||||
check_cp1_enabled(ctx);
|
||||
gen_load_fpr64(ctx, t0, rs);
|
||||
gen_load_fpr64(ctx, t1, rt);
|
||||
|
||||
|
@ -3945,8 +3946,11 @@ static void gen_loongson_multimedia(DisasContext *ctx, int rd, int rs, int rt)
|
|||
LMI_DIRECT(XOR_CP2, xor, xor);
|
||||
LMI_DIRECT(NOR_CP2, nor, nor);
|
||||
LMI_DIRECT(AND_CP2, and, and);
|
||||
LMI_DIRECT(PANDN, pandn, andc);
|
||||
LMI_DIRECT(OR, or, or);
|
||||
LMI_DIRECT(OR_CP2, or, or);
|
||||
|
||||
case OPC_PANDN:
|
||||
tcg_gen_andc_i64(t0, t1, t0);
|
||||
break;
|
||||
|
||||
case OPC_PINSRH_0:
|
||||
tcg_gen_deposit_i64(t0, t0, t1, 0, 16);
|
||||
|
|
Loading…
Reference in New Issue