On 3/20/26 2:10 AM, Philippe Mathieu-Daudé wrote:
Truncate manually, removing the need of target-specific
code in get_monitor_def().

Signed-off-by: Philippe Mathieu-Daudé <[email protected]>
---
  monitor/hmp-target.c | 3 +--
  1 file changed, 1 insertion(+), 2 deletions(-)

diff --git a/monitor/hmp-target.c b/monitor/hmp-target.c
index 155caedd784..5e9f1b0db5b 100644
--- a/monitor/hmp-target.c
+++ b/monitor/hmp-target.c
@@ -34,7 +34,6 @@
  #include "qapi/qapi-commands-control.h"
  #include "qapi/qapi-commands-misc.h"
  #include "qapi/qapi-commands-machine.h"
-#include "exec/target_long.h"
#if defined(TARGET_S390X)
  #include "hw/s390x/storage-keys.h"
@@ -93,7 +92,7 @@ int get_monitor_def(Monitor *mon, int64_t *pval, const char 
*name)
ret = target_get_monitor_def(cs, name, &tmp);
      if (!ret) {
-        *pval = (target_long) tmp;
+        *pval = target_long_bits() == 32 ? (int32_t)tmp : tmp;
      }
return ret;

Looking a second time at it, I don't think you need it. Same in previous commit.

Since pval is a pointer to a (signed) int64, sign will be extended from 32 bit value automatically. So either, it's a positive value, and will be treated as it is. Or it's a negative value, and all upper bits will be set to 1.

So the casting in int32_t has no effect, since it will be extended again automatically.

Regards,
Pierrick

Reply via email to