diff --git a/target-ppc/translate_init.c b/target-ppc/translate_init.c
index b511afa..1286ddf 100644
--- a/target-ppc/translate_init.c
+++ b/target-ppc/translate_init.c
@@ -670,6 +670,11 @@ static void gen_spr_ne_601 (CPUPPCState *env)
                   SPR_NOACCESS, SPR_NOACCESS,
&spr_read_generic, &spr_write_sdr1,
                   0x00000000);
+    /* Processor identification */
+    spr_register(env, SPR_PIR, "PIR",
+                 SPR_NOACCESS, SPR_NOACCESS,
+ &spr_read_generic, &spr_write_pir,
+                 env->cpu_index);
  }

  /* BATs 0-3 */
@@ -1019,11 +1024,6 @@ static void gen_spr_thrm (CPUPPCState *env)
  /* SPR specific to PowerPC 604 implementation */
  static void gen_spr_604 (CPUPPCState *env)
  {
-    /* Processor identification */
-    spr_register(env, SPR_PIR, "PIR",
-                 SPR_NOACCESS, SPR_NOACCESS,
- &spr_read_generic, &spr_write_pir,
-                 0x00000000);
      /* Breakpoints */
      /* XXX : not implemented */
      spr_register(env, SPR_IABR, "IABR",
@@ -1259,11 +1259,6 @@ static void gen_spr_601 (CPUPPCState *env)

  static void gen_spr_74xx (CPUPPCState *env)
  {
-    /* Processor identification */
-    spr_register(env, SPR_PIR, "PIR",
-                 SPR_NOACCESS, SPR_NOACCESS,
- &spr_read_generic, &spr_write_pir,
-                 0x00000000);
      /* XXX : not implemented */
      spr_register(env, SPR_MMCR2, "MMCR2",
                   SPR_NOACCESS, SPR_NOACCESS,
@@ -2118,11 +2113,6 @@ static void gen_spr_compress (CPUPPCState *env)
  /* SPR specific to PowerPC 620 */
  static void gen_spr_620 (CPUPPCState *env)
  {
-    /* Processor identification */
-    spr_register(env, SPR_PIR, "PIR",
-                 SPR_NOACCESS, SPR_NOACCESS,
- &spr_read_generic, &spr_write_pir,
-                 0x00000000);
      spr_register(env, SPR_ASR, "ASR",
                   SPR_NOACCESS, SPR_NOACCESS,
&spr_read_asr, &spr_write_asr,
