* Philippe Mathieu-Daudé ([email protected]) wrote:
> get_monitor_def() doesn't use any target-specific declaration
> anymore, move it to hmp.c to compile it once.
> 
> Signed-off-by: Philippe Mathieu-Daudé <[email protected]>

Reviewed-by: Dr. David Alan Gilbert <[email protected]>

> ---
>  monitor/monitor-internal.h |  1 -
>  monitor/hmp-target.c       | 49 -----------------------------------
>  monitor/hmp.c              | 52 ++++++++++++++++++++++++++++++++++++++
>  3 files changed, 52 insertions(+), 50 deletions(-)
> 
> diff --git a/monitor/monitor-internal.h b/monitor/monitor-internal.h
> index 8dc88963630..3ecd394ecf6 100644
> --- a/monitor/monitor-internal.h
> +++ b/monitor/monitor-internal.h
> @@ -181,7 +181,6 @@ void monitor_data_destroy_qmp(MonitorQMP *mon);
>  void coroutine_fn monitor_qmp_dispatcher_co(void *data);
>  void qmp_dispatcher_co_wake(void);
>  
> -int get_monitor_def(Monitor *mon, uint64_t *pval, const char *name);
>  void handle_hmp_command(MonitorHMP *mon, const char *cmdline);
>  int hmp_compare_cmd(const char *name, const char *list);
>  
> diff --git a/monitor/hmp-target.c b/monitor/hmp-target.c
> index 01be0a0b426..a3306b69c93 100644
> --- a/monitor/hmp-target.c
> +++ b/monitor/hmp-target.c
> @@ -23,7 +23,6 @@
>   */
>  
>  #include "qemu/osdep.h"
> -#include "qemu/bswap.h"
>  #include "monitor-internal.h"
>  #include "monitor/qdev.h"
>  #include "net/slirp.h"
> @@ -60,54 +59,6 @@ HMPCommand *hmp_cmds_for_target(bool info_command)
>      return info_command ? hmp_info_cmds : hmp_cmds;
>  }
>  
> -/*
> - * Set @pval to the value in the register identified by @name.
> - * return 0 if OK, -1 if not found
> - */
> -int get_monitor_def(Monitor *mon, uint64_t *pval, const char *name)
> -{
> -    const unsigned length = target_long_bits() / 8;
> -    const MonitorDef *md = target_monitor_defs();
> -    CPUState *cs = mon_get_cpu(mon);
> -    uint64_t tmp = 0;
> -    int ret;
> -
> -    if (cs == NULL || md == NULL) {
> -        return -1;
> -    }
> -
> -    for(; md->name != NULL; md++) {
> -        if (hmp_compare_cmd(name, md->name)) {
> -            if (md->get_value) {
> -                *pval = md->get_value(mon, md, md->offset);
> -            } else {
> -                CPUArchState *env = mon_get_cpu_env(mon);
> -                void *ptr = (uint8_t *)env + md->offset;
> -
> -                switch(md->type) {
> -                case MD_I32:
> -                    *pval = *(uint32_t *)ptr;
> -                    break;
> -                case MD_TLONG:
> -                    *pval = ldn_he_p(ptr, length);
> -                    break;
> -                default:
> -                    *pval = 0;
> -                    break;
> -                }
> -            }
> -            return 0;
> -        }
> -    }
> -
> -    ret = target_get_monitor_def(cs, name, &tmp);
> -    if (!ret) {
> -        *pval = ldn_he_p(&tmp, length);
> -    }
> -
> -    return ret;
> -}
> -
>  static int
>  compare_mon_cmd(const void *a, const void *b)
>  {
> diff --git a/monitor/hmp.c b/monitor/hmp.c
> index eee8b7e964e..82d2bbdf77d 100644
> --- a/monitor/hmp.c
> +++ b/monitor/hmp.c
> @@ -27,8 +27,10 @@
>  #include "hw/core/qdev.h"
>  #include "monitor-internal.h"
>  #include "monitor/hmp.h"
> +#include "monitor/hmp-target.h"
>  #include "qobject/qdict.h"
>  #include "qobject/qnum.h"
> +#include "qemu/bswap.h"
>  #include "qemu/config-file.h"
>  #include "qemu/ctype.h"
>  #include "qemu/cutils.h"
> @@ -311,6 +313,8 @@ void hmp_help_cmd(Monitor *mon, const char *name)
>  static const char *pch;
>  static sigjmp_buf expr_env;
>  
> +static int get_monitor_def(Monitor *mon, uint64_t *pval, const char *name);
> +
>  static G_NORETURN G_GNUC_PRINTF(2, 3)
>  void expr_error(Monitor *mon, const char *fmt, ...)
>  {
> @@ -1552,3 +1556,51 @@ void monitor_register_hmp_info_hrt(const char *name,
>      }
>      g_assert_not_reached();
>  }
> +
> +/*
> + * Set @pval to the value in the register identified by @name.
> + * return 0 if OK, -1 if not found
> + */
> +static int get_monitor_def(Monitor *mon, uint64_t *pval, const char *name)
> +{
> +    const unsigned length = target_long_bits() / 8;
> +    const MonitorDef *md = target_monitor_defs();
> +    CPUState *cs = mon_get_cpu(mon);
> +    uint64_t tmp = 0;
> +    int ret;
> +
> +    if (cs == NULL || md == NULL) {
> +        return -1;
> +    }
> +
> +    for(; md->name != NULL; md++) {
> +        if (hmp_compare_cmd(name, md->name)) {
> +            if (md->get_value) {
> +                *pval = md->get_value(mon, md, md->offset);
> +            } else {
> +                CPUArchState *env = mon_get_cpu_env(mon);
> +                void *ptr = (uint8_t *)env + md->offset;
> +
> +                switch(md->type) {
> +                case MD_I32:
> +                    *pval = *(uint32_t *)ptr;
> +                    break;
> +                case MD_TLONG:
> +                    *pval = ldn_he_p(ptr, length);
> +                    break;
> +                default:
> +                    *pval = 0;
> +                    break;
> +                }
> +            }
> +            return 0;
> +        }
> +    }
> +
> +    ret = target_get_monitor_def(cs, name, &tmp);
> +    if (!ret) {
> +        *pval = ldn_he_p(&tmp, length);
> +    }
> +
> +    return ret;
> +}
> -- 
> 2.52.0
> 
-- 
 -----Open up your eyes, open up your mind, open up your code -------   
/ Dr. David Alan Gilbert    |       Running GNU/Linux       | Happy  \ 
\        dave @ treblig.org |                               | In Hex /
 \ _________________________|_____ http://www.treblig.org   |_______/

Reply via email to