mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-12-11 16:00:50 -07:00
Fix smlald, smlsld, pkhtp, pkhbt, ssat, usat, umul, smul... (Laurent Desnogues).
helper.c
- copy reference c0_c2 to runtime c0_c2 and not c0_c1
op_helper.c
- remove old code (PARAM1, probably some left over from old dyngen)
that broke do_[us]sat
translate.c
- gen_smul_dual should sign-extend from 16 bit to 32 bit and not from
8 to 32
- disas_arm_insn:
* smlalxy: that was completely wrong; now the addition is
performed as for smlald
* pkhtb: optional ASR not taken into account (similar
* to [us]sat)
* pkhtb/pkhbt: tmp2 is dead
* smlald, smlsld, smuad, smusd, smlad, smlsd: rd
* and rn swapped
git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@4898 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
parent
f617a9a6bb
commit
22478e79f2
3 changed files with 21 additions and 18 deletions
|
|
@ -185,7 +185,6 @@ static inline uint32_t do_ssat(int32_t val, int shift)
|
|||
int32_t top;
|
||||
uint32_t mask;
|
||||
|
||||
shift = PARAM1;
|
||||
top = val >> shift;
|
||||
mask = (1u << shift) - 1;
|
||||
if (top > 0) {
|
||||
|
|
@ -203,7 +202,6 @@ static inline uint32_t do_usat(int32_t val, int shift)
|
|||
{
|
||||
uint32_t max;
|
||||
|
||||
shift = PARAM1;
|
||||
max = (1u << shift) - 1;
|
||||
if (val < 0) {
|
||||
env->QF = 1;
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue