target-ppc: Bug Fix: rlwinm
authorTom Musta <tommusta@gmail.com>
Tue, 12 Aug 2014 13:45:03 +0000 (08:45 -0500)
committerAlexander Graf <agraf@suse.de>
Mon, 8 Sep 2014 10:50:49 +0000 (12:50 +0200)
commita7f23d0f8bfbe76864a6427c0e21fe794ab9b7ef
treeea0c224ffcde6644324d901cb3088ea67cb15142
parent9674a356267ee9cf8230775f88c90c299a4affc9
target-ppc: Bug Fix: rlwinm

The rlwinm specification includes the ROTL32 operation, which is defined
to be a left rotation of two copies of the least significant 32 bits of
the source GPR.

The current implementation is incorrect on 64-bit implementations in that
it rotates a single copy of the least significant 32 bits, padding with
zeroes in the most significant bits.

Fix the code to properly implement this ROTL32 operation.

Example:
R3 = F7487D82EC6F75DF
rlwinm 3,3,5,12,4

R3 expected : 8DEEBBFD880EBBFD
R3 actual   : 00000000880EBBFD (without this fix)

Signed-off-by: Tom Musta <tommusta@gmail.com>
Signed-off-by: Alexander Graf <agraf@suse.de>
target-ppc/translate.c