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

Richard Henderson posted 2 patches 1 year, 10 months ago
Maintainers: Richard Henderson <richard.henderson@linaro.org>
[PATCH 2/2] target/hppa: Fix B,GATE for wide mode
Posted by Richard Henderson 1 year, 10 months ago
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 */
-- 
2.34.1
Re: [PATCH 2/2] target/hppa: Fix B,GATE for wide mode
Posted by Helge Deller 1 year, 10 months ago
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 */
Re: [PATCH 2/2] target/hppa: Fix B,GATE for wide mode
Posted by Philippe Mathieu-Daudé 1 year, 10 months ago
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>


Re: [PATCH 2/2] target/hppa: Fix B,GATE for wide mode
Posted by Richard Henderson 1 year, 10 months ago
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~