linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Re: [PATCH] powerpc/xmon: Fix comparing pointer
       [not found] ` <8adeeee071d085cac905d5752c2b7632@208suo.com>
@ 2023-06-13  6:06   ` Christophe Leroy
  2023-06-14  5:48   ` wuyonggang001
  1 sibling, 0 replies; 4+ messages in thread
From: Christophe Leroy @ 2023-06-13  6:06 UTC (permalink / raw)
  To: wuyonggang001, mpe, npiggin; +Cc: linuxppc-dev, linux-kernel



Le 13/06/2023 à 05:38, wuyonggang001@208suo.com a écrit :
> 	
> 
> Fix the following coccicheck warning:
> 
> arch/powerpc/xmon/spu-dis.c:51:34-35: WARNING comparing pointer to 0


Please send text messages, not html.

And please check your patch, a lot of lines have no modifications but 
appears as modified in your patch because you changed the formating.

Please don't change more than what is intended to change.

Thanks

> 
> Signed-off-by: Yonggang Wu <wuyonggang001@208suo.com>
> ---
>   arch/powerpc/xmon/spu-dis.c | 384 ++++++++++++++++++------------------
>   1 file changed, 193 insertions(+), 191 deletions(-)
> 
> diff --git a/arch/powerpc/xmon/spu-dis.c b/arch/powerpc/xmon/spu-dis.c
> index 4b0a4e640f08..f48a2ddd7440 100644
> --- a/arch/powerpc/xmon/spu-dis.c
> +++ b/arch/powerpc/xmon/spu-dis.c
> @@ -22,216 +22,218 @@ extern const int spu_num_opcodes;
>   #define SPU_DISASM_TBL_SIZE (1 << 11)
>   static const struct spu_opcode 
> *spu_disassemble_table[SPU_DISASM_TBL_SIZE];
> 
> -static void
> -init_spu_disassemble (void)
> +static void init_spu_disassemble(void)
>   {
> -  int i;
> -
> -  /* If two instructions have the same opcode then we prefer the first
> -   * one.  In most cases it is just an alternate mnemonic. */
> -  for (i = 0; i < spu_num_opcodes; i++)
> -    {
> -      int o = spu_opcodes[i].opcode;
> -      if (o >= SPU_DISASM_TBL_SIZE)
> -    continue; /* abort (); */
> -      if (spu_disassemble_table[o] == 0)
> -    spu_disassemble_table[o] = &spu_opcodes[i];
> -    }
> +    int i;
> +
> +    /*
> +     * If two instructions have the same opcode then we prefer the first
> +     * one.  In most cases it is just an alternate mnemonic.
> +     */
> +    for (i = 0; i < spu_num_opcodes; i++) {
> +        int o = spu_opcodes[i].opcode;
> +
> +        if (o >= SPU_DISASM_TBL_SIZE)
> +            continue; /* abort(); */
> +        if (spu_disassemble_table[o] == NULL)
> +            spu_disassemble_table[o] = &spu_opcodes[i];
> +    }
>   }
> 
>   /* Determine the instruction from the 10 least significant bits. */
> -static const struct spu_opcode *
> -get_index_for_opcode (unsigned int insn)
> +static const struct spu_opcode *get_index_for_opcode(unsigned int insn)
>   {
> -  const struct spu_opcode *index;
> -  unsigned int opcode = insn >> (32-11);
> -
> -  /* Init the table.  This assumes that element 0/opcode 0 (currently
> -   * NOP) is always used */
> -  if (spu_disassemble_table[0] == 0)
> -    init_spu_disassemble ();
> -
> -  if ((index = spu_disassemble_table[opcode & 0x780]) != 0
> -      && index->insn_type == RRR)
> -    return index;
> -
> -  if ((index = spu_disassemble_table[opcode & 0x7f0]) != 0
> -      && (index->insn_type == RI18 || index->insn_type == LBT))
> -    return index;
> -
> -  if ((index = spu_disassemble_table[opcode & 0x7f8]) != 0
> -      && index->insn_type == RI10)
> -    return index;
> -
> -  if ((index = spu_disassemble_table[opcode & 0x7fc]) != 0
> -      && (index->insn_type == RI16))
> -    return index;
> -
> -  if ((index = spu_disassemble_table[opcode & 0x7fe]) != 0
> -      && (index->insn_type == RI8))
> -    return index;
> -
> -  if ((index = spu_disassemble_table[opcode & 0x7ff]) != 0)
> -    return index;
> -
> -  return NULL;
> +    const struct spu_opcode *index;
> +    unsigned int opcode = insn >> (32-11);
> +
> +    /*
> +     * Init the table.  This assumes that element 0/opcode 0 (currently
> +     * NOP) is always used
> +     */
> +    if (spu_disassemble_table[0] == NULL)
> +        init_spu_disassemble();
> +
> +    index = spu_disassemble_table[opcode & 0x780];
> +    if (index != NULL && index->insn_type == RRR)
> +        return index;
> +
> +    index = spu_disassemble_table[opcode & 0x7f0];
> +    if (index != NULL
> +      && (index->insn_type == RI18 || index->insn_type == LBT))
> +        return index;
> +
> +    index = spu_disassemble_table[opcode & 0x7f8];
> +    if (index != NULL
> +      && index->insn_type == RI10)
> +        return index;
> +
> +    index = spu_disassemble_table[opcode & 0x7fc]
> +    if (index != NULL && (index->insn_type == RI16))
> +        return index;
> +
> +    index = spu_disassemble_table[opcode & 0x7fe];
> +    if (index != NULL && (index->insn_type == RI8))
> +        return index;
> +
> +    index = spu_disassemble_table[opcode & 0x7ff];
> +    if (index != NULL)
> +        return index;
> +
> +    return NULL;
>   }
> 
>   /* Print a Spu instruction.  */
> 
> -int
> -print_insn_spu (unsigned long insn, unsigned long memaddr)
> +int print_insn_spu(unsigned long insn, unsigned long memaddr)
>   {
> -  int value;
> -  int hex_value;
> -  const struct spu_opcode *index;
> -  enum spu_insns tag;
> +    int value;
> +    int hex_value;
> +    const struct spu_opcode *index;
> +    enum spu_insns tag;
> 
> -  index = get_index_for_opcode (insn);
> +    index = get_index_for_opcode(insn);
> 
> -  if (index == 0)
> -    {
> -      printf(".long 0x%lx", insn);
> -    }
> -  else
> -    {
> -      int i;
> -      int paren = 0;
> -      tag = (enum spu_insns)(index - spu_opcodes);
> -      printf("%s", index->mnemonic);
> -      if (tag == M_BI || tag == M_BISL || tag == M_IRET || tag == M_BISLED
> -      || tag == M_BIHNZ || tag == M_BIHZ || tag == M_BINZ || tag == M_BIZ
> -          || tag == M_SYNC || tag == M_HBR)
> +    if (index == NULL)
>       {
> -      int fb = (insn >> (32-18)) & 0x7f;
> -      if (fb & 0x40)
> -        printf(tag == M_SYNC ? "c" : "p");
> -      if (fb & 0x20)
> -        printf("d");
> -      if (fb & 0x10)
> -        printf("e");
> -    }
> -      if (index->arg[0] != 0)
> -    printf("\t");
> -      hex_value = 0;
> -      for (i = 1;  i <= index->arg[0]; i++)
> +        printf(".long 0x%lx", insn);
> +    } else
>       {
> -      int arg = index->arg[i];
> -      if (arg != A_P && !paren && i > 1)
> -        printf(",");
> -
> -      switch (arg)
> -        {
> -        case A_T:
> -          printf("$%lu",
> -                     DECODE_INSN_RT (insn));
> -          break;
> -        case A_A:
> -          printf("$%lu",
> -                     DECODE_INSN_RA (insn));
> -          break;
> -        case A_B:
> -          printf("$%lu",
> -                     DECODE_INSN_RB (insn));
> -          break;
> -        case A_C:
> -          printf("$%lu",
> -                     DECODE_INSN_RC (insn));
> -          break;
> -        case A_S:
> -          printf("$sp%lu",
> -                     DECODE_INSN_RA (insn));
> -          break;
> -        case A_H:
> -          printf("$ch%lu",
> -                     DECODE_INSN_RA (insn));
> -          break;
> -        case A_P:
> -          paren++;
> -          printf("(");
> -          break;
> -        case A_U7A:
> -          printf("%lu",
> -                     173 - DECODE_INSN_U8 (insn));
> -          break;
> -        case A_U7B:
> -          printf("%lu",
> -                     155 - DECODE_INSN_U8 (insn));
> -          break;
> -        case A_S3:
> -        case A_S6:
> -        case A_S7:
> -        case A_S7N:
> -        case A_U3:
> -        case A_U5:
> -        case A_U6:
> -        case A_U7:
> -          hex_value = DECODE_INSN_I7 (insn);
> -          printf("%d", hex_value);
> -          break;
> -        case A_S11:
> -          print_address(memaddr + DECODE_INSN_I9a (insn) * 4);
> -          break;
> -        case A_S11I:
> -          print_address(memaddr + DECODE_INSN_I9b (insn) * 4);
> -          break;
> -        case A_S10:
> -        case A_S10B:
> -          hex_value = DECODE_INSN_I10 (insn);
> -          printf("%d", hex_value);
> -          break;
> -        case A_S14:
> -          hex_value = DECODE_INSN_I10 (insn) * 16;
> -          printf("%d", hex_value);
> -          break;
> -        case A_S16:
> -          hex_value = DECODE_INSN_I16 (insn);
> -          printf("%d", hex_value);
> -          break;
> -        case A_X16:
> -          hex_value = DECODE_INSN_U16 (insn);
> -          printf("%u", hex_value);
> -          break;
> -        case A_R18:
> -          value = DECODE_INSN_I16 (insn) * 4;
> -          if (value == 0)
> -        printf("%d", value);
> -          else
> +        int i;
> +        int paren = 0;
> +
> +        tag = (enum spu_insns)(index - spu_opcodes);
> +
> +        printf("%s", index->mnemonic);
> +        if (tag == M_BI || tag == M_BISL || tag == M_IRET || tag == 
> M_BISLED
> +        || tag == M_BIHNZ || tag == M_BIHZ || tag == M_BINZ || tag == M_BIZ
> +          || tag == M_SYNC || tag == M_HBR)
>           {
> -          hex_value = memaddr + value;
> -          print_address(hex_value & 0x3ffff);
> +            int fb = (insn >> (32-18)) & 0x7f;
> +
> +            if (fb & 0x40)
> +                printf(tag == M_SYNC ? "c" : "p");
> +            if (fb & 0x20)
> +                printf("d");
> +            if (fb & 0x10)
> +                printf("e");
>           }
> -          break;
> -        case A_S18:
> -          value = DECODE_INSN_U16 (insn) * 4;
> -          if (value == 0)
> -        printf("%d", value);
> -          else
> -        print_address(value);
> -          break;
> -        case A_U18:
> -          value = DECODE_INSN_U18 (insn);
> -          if (value == 0 || 1)
> +        if (index->arg[0] != 0)
> +            printf("\t");
> +        hex_value = 0;
> +        for (i = 1;  i <= index->arg[0]; i++) {
> +            int arg = index->arg[i];
> +
> +            if (arg != A_P && !paren && i > 1)
> +                printf(",");
> +
> +            switch (arg) {
> +            case A_T:
> +                printf("$%lu",
> +                        DECODE_INSN_RT(insn));
> +                break;
> +            case A_A:
> +                printf("$%lu",
> +                        DECODE_INSN_RA(insn));
> +                break;
> +            case A_B:
> +                printf("$%lu",
> +                        DECODE_INSN_RB(insn));
> +                break;
> +            case A_C:
> +                printf("$%lu",
> +                        DECODE_INSN_RC(insn));
> +                break;
> +            case A_S:
> +                printf("$sp%lu",
> +                        DECODE_INSN_RA(insn));
> +                break;
> +            case A_H:
> +                printf("$ch%lu",
> +                        DECODE_INSN_RA(insn));
> +                break;
> +            case A_P:
> +                paren++;
> +                printf("(");
> +                break;
> +            case A_U7A:
> +                printf("%lu",
> +                        173 - DECODE_INSN_U8(insn));
> +                break;
> +            case A_U7B:
> +                printf("%lu",
> +                        155 - DECODE_INSN_U8(insn));
> +                break;
> +            case A_S3:
> +            case A_S6:
> +            case A_S7:
> +            case A_S7N:
> +            case A_U3:
> +            case A_U5:
> +            case A_U6:
> +            case A_U7:
> +                hex_value = DECODE_INSN_I7(insn);
> +                printf("%d", hex_value);
> +                break;
> +            case A_S11:
> +                print_address(memaddr + DECODE_INSN_I9a(insn) * 4);
> +                break;
> +            case A_S11I:
> +                print_address(memaddr + DECODE_INSN_I9b(insn) * 4);
> +                break;
> +            case A_S10:
> +            case A_S10B:
> +                hex_value = DECODE_INSN_I10(insn);
> +                printf("%d", hex_value);
> +                break;
> +            case A_S14:
> +                hex_value = DECODE_INSN_I10(insn) * 16;
> +                printf("%d", hex_value);
> +                break;
> +            case A_S16:
> +                hex_value = DECODE_INSN_I16(insn);
> +                printf("%d", hex_value);
> +                break;
> +            case A_X16:
> +                hex_value = DECODE_INSN_U16(insn);
> +                printf("%u", hex_value);
> +                break;
> +            case A_R18:
> +                value = DECODE_INSN_I16(insn) * 4;
> +                if (value == 0)
> +                    printf("%d", value);
> +                else {
> +                    hex_value = memaddr + value;
> +                    print_address(hex_value & 0x3ffff);
> +                }
> +                break;
> +            case A_S18:
> +                value = DECODE_INSN_U16(insn) * 4;
> +                if (value == 0)
> +                    printf("%d", value);
> +                else
> +                    print_address(value);
> +                break;
> +            case A_U18:
> +                value = DECODE_INSN_U18(insn);
> +                if (value == 0 || 1) {
> +                    hex_value = value;
> +                    printf("%u", value);
> +                } else
> +                    print_address(value);
> +                break;
> +            case A_U14:
> +                hex_value = DECODE_INSN_U14(insn);
> +                printf("%u", hex_value);
> +                break;
> +            }
> +        if (arg != A_P && paren)
>           {
> -          hex_value = value;
> -          printf("%u", value);
> +            printf(")");
> +            paren--;
>           }
> -          else
> -        print_address(value);
> -          break;
> -        case A_U14:
> -          hex_value = DECODE_INSN_U14 (insn);
> -          printf("%u", hex_value);
> -          break;
> -        }
> -      if (arg != A_P && paren)
> -        {
> -          printf(")");
> -          paren--;
> -        }
>       }
> -      if (hex_value > 16)
> -    printf("\t# %x", hex_value);
> +        if (hex_value > 16)
> +            printf("\t# %x", hex_value);
>       }
>     return 4;
>   }

^ permalink raw reply	[flat|nested] 4+ messages in thread

* [PATCH] powerpc/xmon: Fix comparing pointer
       [not found] ` <8adeeee071d085cac905d5752c2b7632@208suo.com>
  2023-06-13  6:06   ` [PATCH] powerpc/xmon: Fix comparing pointer Christophe Leroy
@ 2023-06-14  5:48   ` wuyonggang001
  2023-06-14  5:54     ` Christophe Leroy
  1 sibling, 1 reply; 4+ messages in thread
From: wuyonggang001 @ 2023-06-14  5:48 UTC (permalink / raw)
  To: npiggin, mpe; +Cc: linuxppc-dev, linux-kernel

Fix the following coccicheck warning:

arch/powerpc/xmon/spu-dis.c:51:34-35: WARNING comparing pointer to 0

Signed-off-by: Yonggang Wu <wuyonggang001@208suo.com>
---
  arch/powerpc/xmon/spu-dis.c | 384 ++++++++++++++++++------------------
  1 file changed, 193 insertions(+), 191 deletions(-)

diff --git a/arch/powerpc/xmon/spu-dis.c b/arch/powerpc/xmon/spu-dis.c
index 4b0a4e640f08..f48a2ddd7440 100644
--- a/arch/powerpc/xmon/spu-dis.c
+++ b/arch/powerpc/xmon/spu-dis.c
@@ -22,216 +22,218 @@ extern const int spu_num_opcodes;
  #define SPU_DISASM_TBL_SIZE (1 << 11)
  static const struct spu_opcode 
*spu_disassemble_table[SPU_DISASM_TBL_SIZE];

-static void
-init_spu_disassemble (void)
+static void init_spu_disassemble(void)
  {
-  int i;
-
-  /* If two instructions have the same opcode then we prefer the first
-   * one.  In most cases it is just an alternate mnemonic. */
-  for (i = 0; i < spu_num_opcodes; i++)
-    {
-      int o = spu_opcodes[i].opcode;
-      if (o >= SPU_DISASM_TBL_SIZE)
-    continue; /* abort (); */
-      if (spu_disassemble_table[o] == 0)
-    spu_disassemble_table[o] = &spu_opcodes[i];
-    }
+    int i;
+
+    /*
+     * If two instructions have the same opcode then we prefer the 
first
+     * one.  In most cases it is just an alternate mnemonic.
+     */
+    for (i = 0; i < spu_num_opcodes; i++) {
+        int o = spu_opcodes[i].opcode;
+
+        if (o >= SPU_DISASM_TBL_SIZE)
+            continue; /* abort(); */
+        if (spu_disassemble_table[o] == NULL)
+            spu_disassemble_table[o] = &spu_opcodes[i];
+    }
  }

  /* Determine the instruction from the 10 least significant bits. */
-static const struct spu_opcode *
-get_index_for_opcode (unsigned int insn)
+static const struct spu_opcode *get_index_for_opcode(unsigned int insn)
  {
-  const struct spu_opcode *index;
-  unsigned int opcode = insn >> (32-11);
-
-  /* Init the table.  This assumes that element 0/opcode 0 (currently
-   * NOP) is always used */
-  if (spu_disassemble_table[0] == 0)
-    init_spu_disassemble ();
-
-  if ((index = spu_disassemble_table[opcode & 0x780]) != 0
-      && index->insn_type == RRR)
-    return index;
-
-  if ((index = spu_disassemble_table[opcode & 0x7f0]) != 0
-      && (index->insn_type == RI18 || index->insn_type == LBT))
-    return index;
-
-  if ((index = spu_disassemble_table[opcode & 0x7f8]) != 0
-      && index->insn_type == RI10)
-    return index;
-
-  if ((index = spu_disassemble_table[opcode & 0x7fc]) != 0
-      && (index->insn_type == RI16))
-    return index;
-
-  if ((index = spu_disassemble_table[opcode & 0x7fe]) != 0
-      && (index->insn_type == RI8))
-    return index;
-
-  if ((index = spu_disassemble_table[opcode & 0x7ff]) != 0)
-    return index;
-
-  return NULL;
+    const struct spu_opcode *index;
+    unsigned int opcode = insn >> (32-11);
+
+    /*
+     * Init the table.  This assumes that element 0/opcode 0 (currently
+     * NOP) is always used
+     */
+    if (spu_disassemble_table[0] == NULL)
+        init_spu_disassemble();
+
+    index = spu_disassemble_table[opcode & 0x780];
+    if (index != NULL && index->insn_type == RRR)
+        return index;
+
+    index = spu_disassemble_table[opcode & 0x7f0];
+    if (index != NULL
+      && (index->insn_type == RI18 || index->insn_type == LBT))
+        return index;
+
+    index = spu_disassemble_table[opcode & 0x7f8];
+    if (index != NULL
+      && index->insn_type == RI10)
+        return index;
+
+    index = spu_disassemble_table[opcode & 0x7fc]
+    if (index != NULL && (index->insn_type == RI16))
+        return index;
+
+    index = spu_disassemble_table[opcode & 0x7fe];
+    if (index != NULL && (index->insn_type == RI8))
+        return index;
+
+    index = spu_disassemble_table[opcode & 0x7ff];
+    if (index != NULL)
+        return index;
+
+    return NULL;
  }

  /* Print a Spu instruction.  */

-int
-print_insn_spu (unsigned long insn, unsigned long memaddr)
+int print_insn_spu(unsigned long insn, unsigned long memaddr)
  {
-  int value;
-  int hex_value;
-  const struct spu_opcode *index;
-  enum spu_insns tag;
+    int value;
+    int hex_value;
+    const struct spu_opcode *index;
+    enum spu_insns tag;

-  index = get_index_for_opcode (insn);
+    index = get_index_for_opcode(insn);

-  if (index == 0)
-    {
-      printf(".long 0x%lx", insn);
-    }
-  else
-    {
-      int i;
-      int paren = 0;
-      tag = (enum spu_insns)(index - spu_opcodes);
-      printf("%s", index->mnemonic);
-      if (tag == M_BI || tag == M_BISL || tag == M_IRET || tag == 
M_BISLED
-      || tag == M_BIHNZ || tag == M_BIHZ || tag == M_BINZ || tag == 
M_BIZ
-          || tag == M_SYNC || tag == M_HBR)
+    if (index == NULL)
      {
-      int fb = (insn >> (32-18)) & 0x7f;
-      if (fb & 0x40)
-        printf(tag == M_SYNC ? "c" : "p");
-      if (fb & 0x20)
-        printf("d");
-      if (fb & 0x10)
-        printf("e");
-    }
-      if (index->arg[0] != 0)
-    printf("\t");
-      hex_value = 0;
-      for (i = 1;  i <= index->arg[0]; i++)
+        printf(".long 0x%lx", insn);
+    } else
      {
-      int arg = index->arg[i];
-      if (arg != A_P && !paren && i > 1)
-        printf(",");
-
-      switch (arg)
-        {
-        case A_T:
-          printf("$%lu",
-                     DECODE_INSN_RT (insn));
-          break;
-        case A_A:
-          printf("$%lu",
-                     DECODE_INSN_RA (insn));
-          break;
-        case A_B:
-          printf("$%lu",
-                     DECODE_INSN_RB (insn));
-          break;
-        case A_C:
-          printf("$%lu",
-                     DECODE_INSN_RC (insn));
-          break;
-        case A_S:
-          printf("$sp%lu",
-                     DECODE_INSN_RA (insn));
-          break;
-        case A_H:
-          printf("$ch%lu",
-                     DECODE_INSN_RA (insn));
-          break;
-        case A_P:
-          paren++;
-          printf("(");
-          break;
-        case A_U7A:
-          printf("%lu",
-                     173 - DECODE_INSN_U8 (insn));
-          break;
-        case A_U7B:
-          printf("%lu",
-                     155 - DECODE_INSN_U8 (insn));
-          break;
-        case A_S3:
-        case A_S6:
-        case A_S7:
-        case A_S7N:
-        case A_U3:
-        case A_U5:
-        case A_U6:
-        case A_U7:
-          hex_value = DECODE_INSN_I7 (insn);
-          printf("%d", hex_value);
-          break;
-        case A_S11:
-          print_address(memaddr + DECODE_INSN_I9a (insn) * 4);
-          break;
-        case A_S11I:
-          print_address(memaddr + DECODE_INSN_I9b (insn) * 4);
-          break;
-        case A_S10:
-        case A_S10B:
-          hex_value = DECODE_INSN_I10 (insn);
-          printf("%d", hex_value);
-          break;
-        case A_S14:
-          hex_value = DECODE_INSN_I10 (insn) * 16;
-          printf("%d", hex_value);
-          break;
-        case A_S16:
-          hex_value = DECODE_INSN_I16 (insn);
-          printf("%d", hex_value);
-          break;
-        case A_X16:
-          hex_value = DECODE_INSN_U16 (insn);
-          printf("%u", hex_value);
-          break;
-        case A_R18:
-          value = DECODE_INSN_I16 (insn) * 4;
-          if (value == 0)
-        printf("%d", value);
-          else
+        int i;
+        int paren = 0;
+
+        tag = (enum spu_insns)(index - spu_opcodes);
+
+        printf("%s", index->mnemonic);
+        if (tag == M_BI || tag == M_BISL || tag == M_IRET || tag == 
M_BISLED
+        || tag == M_BIHNZ || tag == M_BIHZ || tag == M_BINZ || tag == 
M_BIZ
+          || tag == M_SYNC || tag == M_HBR)
          {
-          hex_value = memaddr + value;
-          print_address(hex_value & 0x3ffff);
+            int fb = (insn >> (32-18)) & 0x7f;
+
+            if (fb & 0x40)
+                printf(tag == M_SYNC ? "c" : "p");
+            if (fb & 0x20)
+                printf("d");
+            if (fb & 0x10)
+                printf("e");
          }
-          break;
-        case A_S18:
-          value = DECODE_INSN_U16 (insn) * 4;
-          if (value == 0)
-        printf("%d", value);
-          else
-        print_address(value);
-          break;
-        case A_U18:
-          value = DECODE_INSN_U18 (insn);
-          if (value == 0 || 1)
+        if (index->arg[0] != 0)
+            printf("\t");
+        hex_value = 0;
+        for (i = 1;  i <= index->arg[0]; i++) {
+            int arg = index->arg[i];
+
+            if (arg != A_P && !paren && i > 1)
+                printf(",");
+
+            switch (arg) {
+            case A_T:
+                printf("$%lu",
+                        DECODE_INSN_RT(insn));
+                break;
+            case A_A:
+                printf("$%lu",
+                        DECODE_INSN_RA(insn));
+                break;
+            case A_B:
+                printf("$%lu",
+                        DECODE_INSN_RB(insn));
+                break;
+            case A_C:
+                printf("$%lu",
+                        DECODE_INSN_RC(insn));
+                break;
+            case A_S:
+                printf("$sp%lu",
+                        DECODE_INSN_RA(insn));
+                break;
+            case A_H:
+                printf("$ch%lu",
+                        DECODE_INSN_RA(insn));
+                break;
+            case A_P:
+                paren++;
+                printf("(");
+                break;
+            case A_U7A:
+                printf("%lu",
+                        173 - DECODE_INSN_U8(insn));
+                break;
+            case A_U7B:
+                printf("%lu",
+                        155 - DECODE_INSN_U8(insn));
+                break;
+            case A_S3:
+            case A_S6:
+            case A_S7:
+            case A_S7N:
+            case A_U3:
+            case A_U5:
+            case A_U6:
+            case A_U7:
+                hex_value = DECODE_INSN_I7(insn);
+                printf("%d", hex_value);
+                break;
+            case A_S11:
+                print_address(memaddr + DECODE_INSN_I9a(insn) * 4);
+                break;
+            case A_S11I:
+                print_address(memaddr + DECODE_INSN_I9b(insn) * 4);
+                break;
+            case A_S10:
+            case A_S10B:
+                hex_value = DECODE_INSN_I10(insn);
+                printf("%d", hex_value);
+                break;
+            case A_S14:
+                hex_value = DECODE_INSN_I10(insn) * 16;
+                printf("%d", hex_value);
+                break;
+            case A_S16:
+                hex_value = DECODE_INSN_I16(insn);
+                printf("%d", hex_value);
+                break;
+            case A_X16:
+                hex_value = DECODE_INSN_U16(insn);
+                printf("%u", hex_value);
+                break;
+            case A_R18:
+                value = DECODE_INSN_I16(insn) * 4;
+                if (value == 0)
+                    printf("%d", value);
+                else {
+                    hex_value = memaddr + value;
+                    print_address(hex_value & 0x3ffff);
+                }
+                break;
+            case A_S18:
+                value = DECODE_INSN_U16(insn) * 4;
+                if (value == 0)
+                    printf("%d", value);
+                else
+                    print_address(value);
+                break;
+            case A_U18:
+                value = DECODE_INSN_U18(insn);
+                if (value == 0 || 1) {
+                    hex_value = value;
+                    printf("%u", value);
+                } else
+                    print_address(value);
+                break;
+            case A_U14:
+                hex_value = DECODE_INSN_U14(insn);
+                printf("%u", hex_value);
+                break;
+            }
+        if (arg != A_P && paren)
          {
-          hex_value = value;
-          printf("%u", value);
+            printf(")");
+            paren--;
          }
-          else
-        print_address(value);
-          break;
-        case A_U14:
-          hex_value = DECODE_INSN_U14 (insn);
-          printf("%u", hex_value);
-          break;
-        }
-      if (arg != A_P && paren)
-        {
-          printf(")");
-          paren--;
-        }
      }
-      if (hex_value > 16)
-    printf("\t# %x", hex_value);
+        if (hex_value > 16)
+            printf("\t# %x", hex_value);
      }
    return 4;
  }

^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [PATCH] powerpc/xmon: Fix comparing pointer
  2023-06-14  5:48   ` wuyonggang001
@ 2023-06-14  5:54     ` Christophe Leroy
  2023-06-14  8:25       ` Michael Ellerman
  0 siblings, 1 reply; 4+ messages in thread
From: Christophe Leroy @ 2023-06-14  5:54 UTC (permalink / raw)
  To: wuyonggang001, npiggin, mpe; +Cc: linuxppc-dev, linux-kernel



Le 14/06/2023 à 07:48, wuyonggang001@208suo.com a écrit :
> [Vous ne recevez pas souvent de courriers de wuyonggang001@208suo.com. 
> D?couvrez pourquoi ceci est important ? 
> https://aka.ms/LearnAboutSenderIdentification ]
> 
> Fix the following coccicheck warning:
> 
> arch/powerpc/xmon/spu-dis.c:51:34-35: WARNING comparing pointer to 0

Once again, why do you change the formating of the document ?

> 
> Signed-off-by: Yonggang Wu <wuyonggang001@208suo.com>
> ---
>   arch/powerpc/xmon/spu-dis.c | 384 ++++++++++++++++++------------------
>   1 file changed, 193 insertions(+), 191 deletions(-)
> 
> diff --git a/arch/powerpc/xmon/spu-dis.c b/arch/powerpc/xmon/spu-dis.c
> index 4b0a4e640f08..f48a2ddd7440 100644
> --- a/arch/powerpc/xmon/spu-dis.c
> +++ b/arch/powerpc/xmon/spu-dis.c
> @@ -22,216 +22,218 @@ extern const int spu_num_opcodes;
>   #define SPU_DISASM_TBL_SIZE (1 << 11)
>   static const struct spu_opcode
> *spu_disassemble_table[SPU_DISASM_TBL_SIZE];
> 
> -static void
> -init_spu_disassemble (void)
> +static void init_spu_disassemble(void)
>   {
> -  int i;
> -
> -  /* If two instructions have the same opcode then we prefer the first
> -   * one.  In most cases it is just an alternate mnemonic. */
> -  for (i = 0; i < spu_num_opcodes; i++)
> -    {
> -      int o = spu_opcodes[i].opcode;
> -      if (o >= SPU_DISASM_TBL_SIZE)
> -    continue; /* abort (); */
> -      if (spu_disassemble_table[o] == 0)
> -    spu_disassemble_table[o] = &spu_opcodes[i];
> -    }
> +    int i;
> +
> +    /*
> +     * If two instructions have the same opcode then we prefer the
> first
> +     * one.  In most cases it is just an alternate mnemonic.
> +     */
> +    for (i = 0; i < spu_num_opcodes; i++) {
> +        int o = spu_opcodes[i].opcode;
> +
> +        if (o >= SPU_DISASM_TBL_SIZE)
> +            continue; /* abort(); */
> +        if (spu_disassemble_table[o] == NULL)
> +            spu_disassemble_table[o] = &spu_opcodes[i];
> +    }
>   }
> 
>   /* Determine the instruction from the 10 least significant bits. */
> -static const struct spu_opcode *
> -get_index_for_opcode (unsigned int insn)
> +static const struct spu_opcode *get_index_for_opcode(unsigned int insn)
>   {
> -  const struct spu_opcode *index;
> -  unsigned int opcode = insn >> (32-11);
> -
> -  /* Init the table.  This assumes that element 0/opcode 0 (currently
> -   * NOP) is always used */
> -  if (spu_disassemble_table[0] == 0)
> -    init_spu_disassemble ();
> -
> -  if ((index = spu_disassemble_table[opcode & 0x780]) != 0
> -      && index->insn_type == RRR)
> -    return index;
> -
> -  if ((index = spu_disassemble_table[opcode & 0x7f0]) != 0
> -      && (index->insn_type == RI18 || index->insn_type == LBT))
> -    return index;
> -
> -  if ((index = spu_disassemble_table[opcode & 0x7f8]) != 0
> -      && index->insn_type == RI10)
> -    return index;
> -
> -  if ((index = spu_disassemble_table[opcode & 0x7fc]) != 0
> -      && (index->insn_type == RI16))
> -    return index;
> -
> -  if ((index = spu_disassemble_table[opcode & 0x7fe]) != 0
> -      && (index->insn_type == RI8))
> -    return index;
> -
> -  if ((index = spu_disassemble_table[opcode & 0x7ff]) != 0)
> -    return index;
> -
> -  return NULL;
> +    const struct spu_opcode *index;
> +    unsigned int opcode = insn >> (32-11);
> +
> +    /*
> +     * Init the table.  This assumes that element 0/opcode 0 (currently
> +     * NOP) is always used
> +     */
> +    if (spu_disassemble_table[0] == NULL)
> +        init_spu_disassemble();
> +
> +    index = spu_disassemble_table[opcode & 0x780];
> +    if (index != NULL && index->insn_type == RRR)
> +        return index;
> +
> +    index = spu_disassemble_table[opcode & 0x7f0];
> +    if (index != NULL
> +      && (index->insn_type == RI18 || index->insn_type == LBT))
> +        return index;
> +
> +    index = spu_disassemble_table[opcode & 0x7f8];
> +    if (index != NULL
> +      && index->insn_type == RI10)
> +        return index;
> +
> +    index = spu_disassemble_table[opcode & 0x7fc]
> +    if (index != NULL && (index->insn_type == RI16))
> +        return index;
> +
> +    index = spu_disassemble_table[opcode & 0x7fe];
> +    if (index != NULL && (index->insn_type == RI8))
> +        return index;
> +
> +    index = spu_disassemble_table[opcode & 0x7ff];
> +    if (index != NULL)
> +        return index;
> +
> +    return NULL;
>   }
> 
>   /* Print a Spu instruction.  */
> 
> -int
> -print_insn_spu (unsigned long insn, unsigned long memaddr)
> +int print_insn_spu(unsigned long insn, unsigned long memaddr)
>   {
> -  int value;
> -  int hex_value;
> -  const struct spu_opcode *index;
> -  enum spu_insns tag;
> +    int value;
> +    int hex_value;
> +    const struct spu_opcode *index;
> +    enum spu_insns tag;
> 
> -  index = get_index_for_opcode (insn);
> +    index = get_index_for_opcode(insn);
> 
> -  if (index == 0)
> -    {
> -      printf(".long 0x%lx", insn);
> -    }
> -  else
> -    {
> -      int i;
> -      int paren = 0;
> -      tag = (enum spu_insns)(index - spu_opcodes);
> -      printf("%s", index->mnemonic);
> -      if (tag == M_BI || tag == M_BISL || tag == M_IRET || tag ==
> M_BISLED
> -      || tag == M_BIHNZ || tag == M_BIHZ || tag == M_BINZ || tag ==
> M_BIZ
> -          || tag == M_SYNC || tag == M_HBR)
> +    if (index == NULL)
>       {
> -      int fb = (insn >> (32-18)) & 0x7f;
> -      if (fb & 0x40)
> -        printf(tag == M_SYNC ? "c" : "p");
> -      if (fb & 0x20)
> -        printf("d");
> -      if (fb & 0x10)
> -        printf("e");
> -    }
> -      if (index->arg[0] != 0)
> -    printf("\t");
> -      hex_value = 0;
> -      for (i = 1;  i <= index->arg[0]; i++)
> +        printf(".long 0x%lx", insn);
> +    } else
>       {
> -      int arg = index->arg[i];
> -      if (arg != A_P && !paren && i > 1)
> -        printf(",");
> -
> -      switch (arg)
> -        {
> -        case A_T:
> -          printf("$%lu",
> -                     DECODE_INSN_RT (insn));
> -          break;
> -        case A_A:
> -          printf("$%lu",
> -                     DECODE_INSN_RA (insn));
> -          break;
> -        case A_B:
> -          printf("$%lu",
> -                     DECODE_INSN_RB (insn));
> -          break;
> -        case A_C:
> -          printf("$%lu",
> -                     DECODE_INSN_RC (insn));
> -          break;
> -        case A_S:
> -          printf("$sp%lu",
> -                     DECODE_INSN_RA (insn));
> -          break;
> -        case A_H:
> -          printf("$ch%lu",
> -                     DECODE_INSN_RA (insn));
> -          break;
> -        case A_P:
> -          paren++;
> -          printf("(");
> -          break;
> -        case A_U7A:
> -          printf("%lu",
> -                     173 - DECODE_INSN_U8 (insn));
> -          break;
> -        case A_U7B:
> -          printf("%lu",
> -                     155 - DECODE_INSN_U8 (insn));
> -          break;
> -        case A_S3:
> -        case A_S6:
> -        case A_S7:
> -        case A_S7N:
> -        case A_U3:
> -        case A_U5:
> -        case A_U6:
> -        case A_U7:
> -          hex_value = DECODE_INSN_I7 (insn);
> -          printf("%d", hex_value);
> -          break;
> -        case A_S11:
> -          print_address(memaddr + DECODE_INSN_I9a (insn) * 4);
> -          break;
> -        case A_S11I:
> -          print_address(memaddr + DECODE_INSN_I9b (insn) * 4);
> -          break;
> -        case A_S10:
> -        case A_S10B:
> -          hex_value = DECODE_INSN_I10 (insn);
> -          printf("%d", hex_value);
> -          break;
> -        case A_S14:
> -          hex_value = DECODE_INSN_I10 (insn) * 16;
> -          printf("%d", hex_value);
> -          break;
> -        case A_S16:
> -          hex_value = DECODE_INSN_I16 (insn);
> -          printf("%d", hex_value);
> -          break;
> -        case A_X16:
> -          hex_value = DECODE_INSN_U16 (insn);
> -          printf("%u", hex_value);
> -          break;
> -        case A_R18:
> -          value = DECODE_INSN_I16 (insn) * 4;
> -          if (value == 0)
> -        printf("%d", value);
> -          else
> +        int i;
> +        int paren = 0;
> +
> +        tag = (enum spu_insns)(index - spu_opcodes);
> +
> +        printf("%s", index->mnemonic);
> +        if (tag == M_BI || tag == M_BISL || tag == M_IRET || tag ==
> M_BISLED
> +        || tag == M_BIHNZ || tag == M_BIHZ || tag == M_BINZ || tag ==
> M_BIZ
> +          || tag == M_SYNC || tag == M_HBR)
>           {
> -          hex_value = memaddr + value;
> -          print_address(hex_value & 0x3ffff);
> +            int fb = (insn >> (32-18)) & 0x7f;
> +
> +            if (fb & 0x40)
> +                printf(tag == M_SYNC ? "c" : "p");
> +            if (fb & 0x20)
> +                printf("d");
> +            if (fb & 0x10)
> +                printf("e");
>           }
> -          break;
> -        case A_S18:
> -          value = DECODE_INSN_U16 (insn) * 4;
> -          if (value == 0)
> -        printf("%d", value);
> -          else
> -        print_address(value);
> -          break;
> -        case A_U18:
> -          value = DECODE_INSN_U18 (insn);
> -          if (value == 0 || 1)
> +        if (index->arg[0] != 0)
> +            printf("\t");
> +        hex_value = 0;
> +        for (i = 1;  i <= index->arg[0]; i++) {
> +            int arg = index->arg[i];
> +
> +            if (arg != A_P && !paren && i > 1)
> +                printf(",");
> +
> +            switch (arg) {
> +            case A_T:
> +                printf("$%lu",
> +                        DECODE_INSN_RT(insn));
> +                break;
> +            case A_A:
> +                printf("$%lu",
> +                        DECODE_INSN_RA(insn));
> +                break;
> +            case A_B:
> +                printf("$%lu",
> +                        DECODE_INSN_RB(insn));
> +                break;
> +            case A_C:
> +                printf("$%lu",
> +                        DECODE_INSN_RC(insn));
> +                break;
> +            case A_S:
> +                printf("$sp%lu",
> +                        DECODE_INSN_RA(insn));
> +                break;
> +            case A_H:
> +                printf("$ch%lu",
> +                        DECODE_INSN_RA(insn));
> +                break;
> +            case A_P:
> +                paren++;
> +                printf("(");
> +                break;
> +            case A_U7A:
> +                printf("%lu",
> +                        173 - DECODE_INSN_U8(insn));
> +                break;
> +            case A_U7B:
> +                printf("%lu",
> +                        155 - DECODE_INSN_U8(insn));
> +                break;
> +            case A_S3:
> +            case A_S6:
> +            case A_S7:
> +            case A_S7N:
> +            case A_U3:
> +            case A_U5:
> +            case A_U6:
> +            case A_U7:
> +                hex_value = DECODE_INSN_I7(insn);
> +                printf("%d", hex_value);
> +                break;
> +            case A_S11:
> +                print_address(memaddr + DECODE_INSN_I9a(insn) * 4);
> +                break;
> +            case A_S11I:
> +                print_address(memaddr + DECODE_INSN_I9b(insn) * 4);
> +                break;
> +            case A_S10:
> +            case A_S10B:
> +                hex_value = DECODE_INSN_I10(insn);
> +                printf("%d", hex_value);
> +                break;
> +            case A_S14:
> +                hex_value = DECODE_INSN_I10(insn) * 16;
> +                printf("%d", hex_value);
> +                break;
> +            case A_S16:
> +                hex_value = DECODE_INSN_I16(insn);
> +                printf("%d", hex_value);
> +                break;
> +            case A_X16:
> +                hex_value = DECODE_INSN_U16(insn);
> +                printf("%u", hex_value);
> +                break;
> +            case A_R18:
> +                value = DECODE_INSN_I16(insn) * 4;
> +                if (value == 0)
> +                    printf("%d", value);
> +                else {
> +                    hex_value = memaddr + value;
> +                    print_address(hex_value & 0x3ffff);
> +                }
> +                break;
> +            case A_S18:
> +                value = DECODE_INSN_U16(insn) * 4;
> +                if (value == 0)
> +                    printf("%d", value);
> +                else
> +                    print_address(value);
> +                break;
> +            case A_U18:
> +                value = DECODE_INSN_U18(insn);
> +                if (value == 0 || 1) {
> +                    hex_value = value;
> +                    printf("%u", value);
> +                } else
> +                    print_address(value);
> +                break;
> +            case A_U14:
> +                hex_value = DECODE_INSN_U14(insn);
> +                printf("%u", hex_value);
> +                break;
> +            }
> +        if (arg != A_P && paren)
>           {
> -          hex_value = value;
> -          printf("%u", value);
> +            printf(")");
> +            paren--;
>           }
> -          else
> -        print_address(value);
> -          break;
> -        case A_U14:
> -          hex_value = DECODE_INSN_U14 (insn);
> -          printf("%u", hex_value);
> -          break;
> -        }
> -      if (arg != A_P && paren)
> -        {
> -          printf(")");
> -          paren--;
> -        }
>       }
> -      if (hex_value > 16)
> -    printf("\t# %x", hex_value);
> +        if (hex_value > 16)
> +            printf("\t# %x", hex_value);
>       }
>     return 4;
>   }

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [PATCH] powerpc/xmon: Fix comparing pointer
  2023-06-14  5:54     ` Christophe Leroy
@ 2023-06-14  8:25       ` Michael Ellerman
  0 siblings, 0 replies; 4+ messages in thread
From: Michael Ellerman @ 2023-06-14  8:25 UTC (permalink / raw)
  To: Christophe Leroy, wuyonggang001, npiggin; +Cc: linuxppc-dev, linux-kernel

Christophe Leroy <christophe.leroy@csgroup.eu> writes:
> Le 14/06/2023 à 07:48, wuyonggang001@208suo.com a écrit :
>> [Vous ne recevez pas souvent de courriers de wuyonggang001@208suo.com. 
>> D?couvrez pourquoi ceci est important ? 
>> https://aka.ms/LearnAboutSenderIdentification ]
>> 
>> Fix the following coccicheck warning:
>> 
>> arch/powerpc/xmon/spu-dis.c:51:34-35: WARNING comparing pointer to 0
>
> Once again, why do you change the formating of the document ?

And regardless, this file is taken from binutils, so we don't want to
take pointless cleanup patches to it, because then it needlessly
diverges from the binutils source.

cheers

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2023-06-14  8:25 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
     [not found] <20230613033455.44992-1-zhanglibing@cdjrlc.com>
     [not found] ` <8adeeee071d085cac905d5752c2b7632@208suo.com>
2023-06-13  6:06   ` [PATCH] powerpc/xmon: Fix comparing pointer Christophe Leroy
2023-06-14  5:48   ` wuyonggang001
2023-06-14  5:54     ` Christophe Leroy
2023-06-14  8:25       ` Michael Ellerman

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).