diff mbox series

[2/2] target/hppa: Fix B,GATE for wide mode

Message ID 20240321192813.371526-3-richard.henderson@linaro.org
State Superseded
Headers show
Series target/hppa: two more simple fixes | expand

Commit Message

Richard Henderson March 21, 2024, 7:28 p.m. UTC
Do not clobber the high bits of the address by using a 32-bit deposit.

Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
---
 target/hppa/translate.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Philippe Mathieu-Daudé March 21, 2024, 7:34 p.m. UTC | #1
On 21/3/24 20:28, Richard Henderson wrote:
> Do not clobber the high bits of the address by using a 32-bit deposit.
> 
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
> ---
>   target/hppa/translate.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/target/hppa/translate.c b/target/hppa/translate.c
> index 1766a63001..f875d76a23 100644
> --- a/target/hppa/translate.c
> +++ b/target/hppa/translate.c
> @@ -3880,7 +3880,7 @@ static bool trans_b_gate(DisasContext *ctx, arg_b_gate *a)
>           }
>           /* No change for non-gateway pages or for priv decrease.  */
>           if (type >= 4 && type - 4 < ctx->privilege) {
> -            dest = deposit32(dest, 0, 2, type - 4);
> +            dest = deposit64(dest, 0, 2, type - 4);
>           }
>       } else {
>           dest &= -4;  /* priv = 0 */

Fixes: 43e056522f ("target/hppa: Implement B,GATE insn")
Reviewed-by: Philippe Mathieu-Daudé <philmd@linaro.org>
Richard Henderson March 21, 2024, 8:05 p.m. UTC | #2
On 3/21/24 09:34, Philippe Mathieu-Daudé wrote:
> On 21/3/24 20:28, Richard Henderson wrote:
>> Do not clobber the high bits of the address by using a 32-bit deposit.
>>
>> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
>> ---
>>   target/hppa/translate.c | 2 +-
>>   1 file changed, 1 insertion(+), 1 deletion(-)
>>
>> diff --git a/target/hppa/translate.c b/target/hppa/translate.c
>> index 1766a63001..f875d76a23 100644
>> --- a/target/hppa/translate.c
>> +++ b/target/hppa/translate.c
>> @@ -3880,7 +3880,7 @@ static bool trans_b_gate(DisasContext *ctx, arg_b_gate *a)
>>           }
>>           /* No change for non-gateway pages or for priv decrease.  */
>>           if (type >= 4 && type - 4 < ctx->privilege) {
>> -            dest = deposit32(dest, 0, 2, type - 4);
>> +            dest = deposit64(dest, 0, 2, type - 4);
>>           }
>>       } else {
>>           dest &= -4;  /* priv = 0 */
> 
> Fixes: 43e056522f ("target/hppa: Implement B,GATE insn")

Certainly not.  That predates hppa64 support by years.


r~
Helge Deller March 22, 2024, 6:57 a.m. UTC | #3
On 3/21/24 20:28, Richard Henderson wrote:
> Do not clobber the high bits of the address by using a 32-bit deposit.
>
> Signed-off-by: Richard Henderson <richard.henderson@linaro.org>

Reviewed-by: Helge Deller <deller@gmx.de>

Helge

> ---
>   target/hppa/translate.c | 2 +-
>   1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/target/hppa/translate.c b/target/hppa/translate.c
> index 1766a63001..f875d76a23 100644
> --- a/target/hppa/translate.c
> +++ b/target/hppa/translate.c
> @@ -3880,7 +3880,7 @@ static bool trans_b_gate(DisasContext *ctx, arg_b_gate *a)
>           }
>           /* No change for non-gateway pages or for priv decrease.  */
>           if (type >= 4 && type - 4 < ctx->privilege) {
> -            dest = deposit32(dest, 0, 2, type - 4);
> +            dest = deposit64(dest, 0, 2, type - 4);
>           }
>       } else {
>           dest &= -4;  /* priv = 0 */
diff mbox series

Patch

diff --git a/target/hppa/translate.c b/target/hppa/translate.c
index 1766a63001..f875d76a23 100644
--- a/target/hppa/translate.c
+++ b/target/hppa/translate.c
@@ -3880,7 +3880,7 @@  static bool trans_b_gate(DisasContext *ctx, arg_b_gate *a)
         }
         /* No change for non-gateway pages or for priv decrease.  */
         if (type >= 4 && type - 4 < ctx->privilege) {
-            dest = deposit32(dest, 0, 2, type - 4);
+            dest = deposit64(dest, 0, 2, type - 4);
         }
     } else {
         dest &= -4;  /* priv = 0 */