target-mips: Fix ALIGN instruction when bp=0
authorMiodrag Dinic <miodrag.dinic@imgtec.com>
Thu, 3 Dec 2015 15:48:57 +0000 (16:48 +0100)
committerLeon Alrae <leon.alrae@imgtec.com>
Sat, 23 Jan 2016 14:30:04 +0000 (14:30 +0000)
commit51243852af322f0a1103a90c936c43db84def82f
treec48b75c9bd394803217186b933c258f10f30c955
parent1aa56f6ee7d2375b0734e98ba69cc41416894bbc
target-mips: Fix ALIGN instruction when bp=0

If executing ALIGN with shift count bp=0 within mips64 emulation,
the result of the operation should be sign extended.

Taken from the official documentation (pseudo code) :

ALIGN:
tmp_rt_hi = unsigned_word(GPR[rt]) << (8*bp)
tmp_rs_lo = unsigned_word(GPR[rs]) >> (8*(4-bp))
tmp = tmp_rt_hi || tmp_rt_lo
GPR[rd] = sign_extend.32(tmp)

Signed-off-by: Miodrag Dinic <miodrag.dinic@imgtec.com>
Reviewed-by: Aurelien Jarno <aurelien@aurel32.net>
Reviewed-by: Leon Alrae <leon.alrae@imgtec.com>
Signed-off-by: Leon Alrae <leon.alrae@imgtec.com>
target-mips/translate.c