All of lore.kernel.org
 help / color / mirror / Atom feed
From: Chen Gang <chengang@emindsoft.com.cn>
To: rth@twiddle.net, peter.maydell@linaro.org, cmetcalf@ezchip.com,
	laurent@vivier.eu
Cc: walt@tilera.com, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH] target-tilegx: Support dumping working flow instructions and registers
Date: Sun, 27 Mar 2016 17:56:57 +0800	[thread overview]
Message-ID: <56F7AE69.5030205@emindsoft.com.cn> (raw)
In-Reply-To: <56E9811B.90006@emindsoft.com.cn>

Hello all:

Is this patch helpful? If it shouldn't be merged into our master branch,
please let me know, I shall treat it as my own local patch (when I
update my local master branch, I'll merge it at last).

Thanks.

On 3/16/16 23:51, Chen Gang wrote:
> Hello all:
> 
> It is only for analyzing issues, I guess it is helpful, so I send it,
> welcome any other ideas, suggestions, and completions.
> 
> And next, I shall continue to improve the floating point instruction
> features: "remove (u)int64_to_float64 from fdouble implementation".
> 
> Thanks.
> 
> On 3/16/16 23:38, chengang@emindsoft.com.cn wrote:
>> From: Chen Gang <gang.chen.5i5j@gmail.com>
>>
>> It is only for debug and analyzing tilegx qemu related issues.
>>
>> Signed-off-by: Chen Gang <gang.chen.5i5j@gmail.com>
>> ---
>>  target-tilegx/helper.c    | 34 ++++++++++++++++++++++++++++++++++
>>  target-tilegx/helper.h    |  2 ++
>>  target-tilegx/translate.c | 37 +++++++++++++++++++++++++++++++++++++
>>  3 files changed, 73 insertions(+)
>>
>> diff --git a/target-tilegx/helper.c b/target-tilegx/helper.c
>> index 616c5c7..c7cfe66 100644
>> --- a/target-tilegx/helper.c
>> +++ b/target-tilegx/helper.c
>> @@ -160,3 +160,37 @@ uint64_t helper_cmul2(uint64_t srca, uint64_t srcb, int shift, int round)
>>  
>>      return deposit32(realr >> shift, 16, 16, imagr >> shift);
>>  }
>> +
>> +extern char **debug_buf;
>> +
>> +#define DEBUG_DUMP_REGS
>> +
>> +static void dump_regs(CPUTLGState *env, int idx)
>> +{
>> +#ifdef DEBUG_DUMP_REGS
>> +    int i;
>> +
>> +    if (debug_buf[idx][2] == '\n') {
>> +        for (i = 0; i < TILEGX_R_COUNT; i++) {
>> +            if (!(i % 4)) {
>> +                fprintf(stderr, "\n");
>> +            }
>> +            fprintf(stderr, "r%2.2u = %16.16lx, ", i, env->regs[i]);
>> +        }
>> +        fprintf(stderr, "\n");
>> +        for (i = 0; i < TILEGX_SPR_COUNT; i++) {
>> +            if (!(i % 8)) {
>> +                fprintf(stderr, "\n");
>> +            }
>> +            fprintf(stderr, "s%2.2u = %16.16lx, ", i, env->spregs[i]);
>> +        }
>> +        fprintf(stderr, "\n");
>> +    }
>> +#endif
>> +}
>> +
>> +void helper_print_step(CPUTLGState *env, int idx)
>> +{
>> +    fprintf(stderr, "%s", debug_buf[idx]);
>> +    dump_regs(env, idx);
>> +}
>> diff --git a/target-tilegx/helper.h b/target-tilegx/helper.h
>> index 9281d0f..74f796a 100644
>> --- a/target-tilegx/helper.h
>> +++ b/target-tilegx/helper.h
>> @@ -24,3 +24,5 @@ DEF_HELPER_FLAGS_2(v1shrs, TCG_CALL_NO_RWG_SE, i64, i64, i64)
>>  DEF_HELPER_FLAGS_2(v2shl, TCG_CALL_NO_RWG_SE, i64, i64, i64)
>>  DEF_HELPER_FLAGS_2(v2shru, TCG_CALL_NO_RWG_SE, i64, i64, i64)
>>  DEF_HELPER_FLAGS_2(v2shrs, TCG_CALL_NO_RWG_SE, i64, i64, i64)
>> +
>> +DEF_HELPER_2(print_step, void, env, int)
>> diff --git a/target-tilegx/translate.c b/target-tilegx/translate.c
>> index 03918eb..8489494 100644
>> --- a/target-tilegx/translate.c
>> +++ b/target-tilegx/translate.c
>> @@ -47,6 +47,43 @@ static const char * const reg_names[64] = {
>>      "sn", "idn0", "idn1", "udn0", "udn1", "udn2", "udn2", "zero"
>>  };
>>  
>> +#define STATIC_DEBUG
>> +
>> +char **debug_buf;
>> +
>> +#ifdef STATIC_DEBUG
>> +
>> +#include <stdarg.h>
>> +
>> +#define qemu_log_mask(flag, fmt, ...)  debug_print(flag, fmt, ##__VA_ARGS__)
>> +
>> +static int debug_idx;
>> +
>> +extern void debug_print(int flag, const char *fmt, ...);
>> +
>> +void debug_print(int flag, const char *fmt, ...)
>> +{
>> +    va_list args;
>> +    char buf[0x400];
>> +    TCGv_i32 tmp;
>> +
>> +    va_start(args, fmt);
>> +    vsprintf(buf, fmt, args);
>> +    va_end(args);
>> +
>> +    if (!debug_buf) {
>> +        debug_buf = malloc(sizeof(char *) * 0x400000);
>> +    }
>> +    debug_buf[debug_idx] = malloc(strlen(buf) + 1);
>> +    strcpy(debug_buf[debug_idx], buf);
>> +
>> +    tmp = tcg_const_i32(debug_idx++);
>> +    gen_helper_print_step(cpu_env, tmp);
>> +    tcg_temp_free_i32(tmp);
>> +}
>> +
>> +#endif
>> +
>>  /* Modified registers are cached in temporaries until the end of the bundle. */
>>  typedef struct {
>>      unsigned reg;
>>
> 

-- 
Chen Gang (陈刚)

Managing Natural Environments is the Duty of Human Beings.

      reply	other threads:[~2016-03-27  9:52 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-16 15:38 [Qemu-devel] [PATCH] target-tilegx: Support dumping working flow instructions and registers chengang
2016-03-16 15:51 ` Chen Gang
2016-03-27  9:56   ` Chen Gang [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=56F7AE69.5030205@emindsoft.com.cn \
    --to=chengang@emindsoft.com.cn \
    --cc=cmetcalf@ezchip.com \
    --cc=laurent@vivier.eu \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    --cc=walt@tilera.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.