Thread (8 messages) flat view 8 messages, 3 authors, 12d ago

Re: [PATCH 1/2] powerpc/sstep: Consistently use one define to check arch bit width

From: LEROY Christophe <hidden>
Date: 2026-07-30 06:03:01
Also in: lkml


Le 29/07/2026 à 22:49, Link Mauve a écrit :
Previously, both CONFIG_PPC64 and __powerpc64__ were being used to check
whether we were on 32-bit or on 64-bit PowerPC, sometimes in a single
function.

I picked __powerpc64__ since it was used six times as much as
CONFIG_PPC64 in this file, but could be convinced to use the other one
if there is any reason to prefer it.
Well, we tend to use the other as much as possible:

$ git grep -w -e "#ifdef CONFIG_PPC64" -e "defined(CONFIG_PPC64)" | wc -l
368
$ git grep -w -e "#ifdef __powerpc64__"  | wc -l
118

Allthough in most cases you can use one or the other, they don't mean 
the same.

CONFIG_PPC64 means you are building a 64 bit kernel.
__powerpc64__ means you are building 64 bit code.

In a 64 bit kernel you can have 32 bit code, for instance the vdso32.

If you look into include/asm/feature-fixups.h for instance you have :

#if defined(CONFIG_PPC64) && !defined(__powerpc64__)
/* 64 bits kernel, 32 bits code (ie. vdso32) */
#define FTR_ENTRY_LONG		.8byte
#define FTR_ENTRY_OFFSET	.long 0xffffffff; .long
#elif defined(CONFIG_PPC64)
#define FTR_ENTRY_LONG		.8byte
#define FTR_ENTRY_OFFSET	.8byte
#else
#define FTR_ENTRY_LONG		.long
#define FTR_ENTRY_OFFSET	.long
#endif

Unless you are a good reason to use __powerpc64__ it is often better to 
use CONFIG_PPC64

Christophe
quoted hunk ↗ jump to hunk
Signed-off-by: Link Mauve <redacted>
---
  arch/powerpc/lib/sstep.c | 16 ++++++++--------
  1 file changed, 8 insertions(+), 8 deletions(-)
diff --git a/arch/powerpc/lib/sstep.c b/arch/powerpc/lib/sstep.c
index f0d6aa657c1a..597a0d841fe8 100644
--- a/arch/powerpc/lib/sstep.c
+++ b/arch/powerpc/lib/sstep.c
@@ -15,7 +15,7 @@
  #include <asm/cputable.h>
  #include <asm/disassemble.h>
  
-#ifdef CONFIG_PPC64
+#ifdef __powerpc64__
  /* Bits in SRR1 that are copied from MSR */
  #define MSR_MASK	0xffffffff87c0ffffUL
  #else
@@ -1256,7 +1256,7 @@ static nokprobe_inline void do_popcnt(const struct pt_regs *regs,
  	op->val = out;	/* popcntd */
  }
  
-#ifdef CONFIG_PPC64
+#ifdef __powerpc64__
  static nokprobe_inline void do_bpermd(const struct pt_regs *regs,
  				      struct instruction_op *op,
  				      unsigned long v1, unsigned long v2)
@@ -1273,7 +1273,7 @@ static nokprobe_inline void do_bpermd(const struct pt_regs *regs,
  	}
  	op->val = perm;
  }
-#endif /* CONFIG_PPC64 */
+#endif /* __powerpc64__ */
  /*
   * The size parameter adjusts the equivalent prty instruction.
   * prtyw = 32, prtyd = 64
@@ -1340,7 +1340,7 @@ static nokprobe_inline int trap_compare(long v1, long v2)
  int analyse_instr(struct instruction_op *op, const struct pt_regs *regs,
  		  ppc_inst_t instr)
  {
-#ifdef CONFIG_PPC64
+#ifdef __powerpc64__
  	unsigned int suffixopcode, prefixtype, prefix_r;
  #endif
  	unsigned int opcode, ra, rb, rc, rd, spr, u;
@@ -1739,7 +1739,7 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs,
  			op->reg = rd;
  			op->val = 0xffffffff & ~(MSR_ME | MSR_LE);
  			return 0;
-#ifdef CONFIG_PPC64
+#ifdef __powerpc64__
  		case 178:	/* mtmsrd */
  			if (user_mode(regs))
  				goto priv;
@@ -2054,7 +2054,7 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs,
  		case 186:	/* prtyd */
  			do_prty(regs, op, regs->gpr[rd], 64);
  			goto logical_done_nocc;
-#ifdef CONFIG_PPC64
+#ifdef __powerpc64__
  		case 252:	/* bpermd */
  			do_bpermd(regs, op, regs->gpr[rd], regs->gpr[rb]);
  			goto logical_done_nocc;
@@ -2082,7 +2082,7 @@ int analyse_instr(struct instruction_op *op, const struct pt_regs *regs,
  		case 476:	/* nand */
  			op->val = ~(regs->gpr[rd] & regs->gpr[rb]);
  			goto logical_done;
-#ifdef CONFIG_PPC64
+#ifdef __powerpc64__
  		case 506:	/* popcntd */
  			do_popcnt(regs, op, regs->gpr[rd], 64);
  			goto logical_done_nocc;
@@ -3247,7 +3247,7 @@ void emulate_update_regs(struct pt_regs *regs, struct instruction_op *op)
  		case BARRIER_EIEIO:
  			eieio();
  			break;
-#ifdef CONFIG_PPC64
+#ifdef __powerpc64__
  		case BARRIER_LWSYNC:
  			asm volatile("lwsync" : : : "memory");
  			break;
  
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help