mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-04 00:03:54 -06:00
tci: Support deposit operations
The operations for INDEX_op_deposit_i32 and INDEX_op_deposit_i64 are now supported and enabled by default. Signed-off-by: Stefan Weil <sw@weilnetz.de> Signed-off-by: Blue Swirl <blauwirbel@gmail.com>
This commit is contained in:
parent
1358681344
commit
e24dc9feb0
3 changed files with 48 additions and 2 deletions
22
tci.c
22
tci.c
|
@ -688,6 +688,17 @@ tcg_target_ulong tcg_qemu_tb_exec(CPUArchState *cpustate, uint8_t *tb_ptr)
|
|||
t2 = tci_read_ri32(&tb_ptr);
|
||||
tci_write_reg32(t0, (t1 >> t2) | (t1 << (32 - t2)));
|
||||
break;
|
||||
#endif
|
||||
#if TCG_TARGET_HAS_deposit_i32
|
||||
case INDEX_op_deposit_i32:
|
||||
t0 = *tb_ptr++;
|
||||
t1 = tci_read_r32(&tb_ptr);
|
||||
t2 = tci_read_r32(&tb_ptr);
|
||||
tmp16 = *tb_ptr++;
|
||||
tmp8 = *tb_ptr++;
|
||||
tmp32 = (((1 << tmp8) - 1) << tmp16);
|
||||
tci_write_reg32(t0, (t1 & ~tmp32) | ((t2 << tmp16) & tmp32));
|
||||
break;
|
||||
#endif
|
||||
case INDEX_op_brcond_i32:
|
||||
t0 = tci_read_r32(&tb_ptr);
|
||||
|
@ -935,6 +946,17 @@ tcg_target_ulong tcg_qemu_tb_exec(CPUArchState *cpustate, uint8_t *tb_ptr)
|
|||
case INDEX_op_rotr_i64:
|
||||
TODO();
|
||||
break;
|
||||
#endif
|
||||
#if TCG_TARGET_HAS_deposit_i64
|
||||
case INDEX_op_deposit_i64:
|
||||
t0 = *tb_ptr++;
|
||||
t1 = tci_read_r64(&tb_ptr);
|
||||
t2 = tci_read_r64(&tb_ptr);
|
||||
tmp16 = *tb_ptr++;
|
||||
tmp8 = *tb_ptr++;
|
||||
tmp64 = (((1ULL << tmp8) - 1) << tmp16);
|
||||
tci_write_reg64(t0, (t1 & ~tmp64) | ((t2 << tmp16) & tmp64));
|
||||
break;
|
||||
#endif
|
||||
case INDEX_op_brcond_i64:
|
||||
t0 = tci_read_r64(&tb_ptr);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue