mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-02 15:23:53 -06:00
target/arm: Use uint32_t in t32_expandimm_imm()
In t32_expandimm_imm(), we take an 8 bit value XY and construct a 32-bit value which might be of the form XY, 00XY00XY, XY00XY00, or XYXYXYXY. We do this with multiplications, and we use an 'int' type. For the cases where we're setting the high byte of the 32-bit value to XY, this means that we do an integer multiplication that might overflow, and rely on the -fwrapv semantics to keep this from being undefined behaviour. It's clearer to use an unsigned type here, because we're really doing operations on the value considered as a set of bits. The result is the same. The return value from the function remains 'int', because this is a decodetree !function function, and follows the API for those functions. Signed-off-by: Stephen Longfield <slongfield@google.com> Signed-off-by: Roque Arcudia Hernandez <roqueh@google.com> Message-id: 20250219165534.3387376-1-slongfield@google.com [PMM: Rewrote the commit message] Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
464ce71a96
commit
b2ba5ff272
1 changed files with 1 additions and 1 deletions
|
@ -3510,7 +3510,7 @@ static int t32_expandimm_rot(DisasContext *s, int x)
|
|||
/* Return the unrotated immediate from T32ExpandImm. */
|
||||
static int t32_expandimm_imm(DisasContext *s, int x)
|
||||
{
|
||||
int imm = extract32(x, 0, 8);
|
||||
uint32_t imm = extract32(x, 0, 8);
|
||||
|
||||
switch (extract32(x, 8, 4)) {
|
||||
case 0: /* XY */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue