]> rtime.felk.cvut.cz Git - l4.git/blobdiff - l4/pkg/valgrind/src/valgrind-3.6.0-svn/VEX/pub/libvex_guest_ppc32.h
update
[l4.git] / l4 / pkg / valgrind / src / valgrind-3.6.0-svn / VEX / pub / libvex_guest_ppc32.h
index 33533198756f62eaf585cd8ea8621283fa659887..d90c11c1dbb08fd034ba45ceefa89520351a105c 100644 (file)
@@ -82,120 +82,128 @@ typedef
       /* 120 */ UInt guest_GPR30;
       /* 124 */ UInt guest_GPR31;
 
-      // Floating Point Registers
-      /* 128 */ ULong guest_FPR0;
-      /* 136 */ ULong guest_FPR1;
-      /* 144 */ ULong guest_FPR2;
-      /* 152 */ ULong guest_FPR3;
-      /* 160 */ ULong guest_FPR4;
-      /* 168 */ ULong guest_FPR5;
-      /* 176 */ ULong guest_FPR6;
-      /* 184 */ ULong guest_FPR7;
-      /* 192 */ ULong guest_FPR8;
-      /* 200 */ ULong guest_FPR9;
-      /* 208 */ ULong guest_FPR10;
-      /* 216 */ ULong guest_FPR11;
-      /* 224 */ ULong guest_FPR12;
-      /* 232 */ ULong guest_FPR13;
-      /* 240 */ ULong guest_FPR14;
-      /* 248 */ ULong guest_FPR15;
-      /* 256 */ ULong guest_FPR16;
-      /* 264 */ ULong guest_FPR17;
-      /* 272 */ ULong guest_FPR18;
-      /* 280 */ ULong guest_FPR19;
-      /* 288 */ ULong guest_FPR20;
-      /* 296 */ ULong guest_FPR21;
-      /* 304 */ ULong guest_FPR22;
-      /* 312 */ ULong guest_FPR23;
-      /* 320 */ ULong guest_FPR24;
-      /* 328 */ ULong guest_FPR25;
-      /* 336 */ ULong guest_FPR26;
-      /* 344 */ ULong guest_FPR27;
-      /* 352 */ ULong guest_FPR28;
-      /* 360 */ ULong guest_FPR29;
-      /* 368 */ ULong guest_FPR30;
-      /* 376 */ ULong guest_FPR31;
-
-      // Vector Registers
+      // Vector Registers, Floating Point Registers, and VSX Registers
+      // With ISA 2.06, the "Vector-Scalar Floating-point" category
+      // provides facilities to support vector and scalar binary floating-
+      // point operations.  A unified register file is an integral part
+      // of this new facility, combining floating point and vector registers
+      // using a 64x128-bit vector.  These are referred to as VSR[0..63].
+      // The floating point registers are now mapped into double word element 0
+      // of VSR[0..31]. The 32x128-bit vector registers defined by the "Vector
+      // Facility [Category: Vector]" are now mapped to VSR[32..63].
+
       // IMPORTANT: the user of libvex must place the guest state so as
-      // to ensure that guest_VR{0..31}, and any shadows thereof, are
+      // to ensure that guest_VSR{0..63}, and any shadows thereof, are
       // 16-aligned.
-      /* 384 */ U128 guest_VR0;
-      /* 400 */ U128 guest_VR1;
-      /* 416 */ U128 guest_VR2;
-      /* 432 */ U128 guest_VR3;
-      /* 448 */ U128 guest_VR4;
-      /* 464 */ U128 guest_VR5;
-      /* 480 */ U128 guest_VR6;
-      /* 496 */ U128 guest_VR7;
-      /* 512 */ U128 guest_VR8;
-      /* 528 */ U128 guest_VR9;
-      /* 544 */ U128 guest_VR10;
-      /* 560 */ U128 guest_VR11;
-      /* 576 */ U128 guest_VR12;
-      /* 592 */ U128 guest_VR13;
-      /* 608 */ U128 guest_VR14;
-      /* 624 */ U128 guest_VR15;
-      /* 640 */ U128 guest_VR16;
-      /* 656 */ U128 guest_VR17;
-      /* 672 */ U128 guest_VR18;
-      /* 688 */ U128 guest_VR19;
-      /* 704 */ U128 guest_VR20;
-      /* 720 */ U128 guest_VR21;
-      /* 736 */ U128 guest_VR22;
-      /* 752 */ U128 guest_VR23;
-      /* 768 */ U128 guest_VR24;
-      /* 784 */ U128 guest_VR25;
-      /* 800 */ U128 guest_VR26;
-      /* 816 */ U128 guest_VR27;
-      /* 832 */ U128 guest_VR28;
-      /* 848 */ U128 guest_VR29;
-      /* 864 */ U128 guest_VR30;
-      /* 880 */ U128 guest_VR31;
-
-      /* 896 */ UInt guest_CIA;    // IP (no arch visible register)
-      /* 900 */ UInt guest_LR;     // Link Register
-      /* 904 */ UInt guest_CTR;    // Count Register
+
+      /*  128 */ U128 guest_VSR0;
+      /*  144 */ U128 guest_VSR1;
+      /*  160 */ U128 guest_VSR2;
+      /*  176 */ U128 guest_VSR3;
+      /*  192 */ U128 guest_VSR4;
+      /*  208 */ U128 guest_VSR5;
+      /*  224 */ U128 guest_VSR6;
+      /*  240 */ U128 guest_VSR7;
+      /*  256 */ U128 guest_VSR8;
+      /*  272 */ U128 guest_VSR9;
+      /*  288 */ U128 guest_VSR10;
+      /*  304 */ U128 guest_VSR11;
+      /*  320 */ U128 guest_VSR12;
+      /*  336 */ U128 guest_VSR13;
+      /*  352 */ U128 guest_VSR14;
+      /*  368 */ U128 guest_VSR15;
+      /*  384 */ U128 guest_VSR16;
+      /*  400 */ U128 guest_VSR17;
+      /*  416 */ U128 guest_VSR18;
+      /*  432 */ U128 guest_VSR19;
+      /*  448 */ U128 guest_VSR20;
+      /*  464 */ U128 guest_VSR21;
+      /*  480 */ U128 guest_VSR22;
+      /*  496 */ U128 guest_VSR23;
+      /*  512 */ U128 guest_VSR24;
+      /*  528 */ U128 guest_VSR25;
+      /*  544 */ U128 guest_VSR26;
+      /*  560 */ U128 guest_VSR27;
+      /*  576 */ U128 guest_VSR28;
+      /*  592 */ U128 guest_VSR29;
+      /*  608 */ U128 guest_VSR30;
+      /*  624 */ U128 guest_VSR31;
+      /*  640 */ U128 guest_VSR32;
+      /*  656 */ U128 guest_VSR33;
+      /*  672 */ U128 guest_VSR34;
+      /*  688 */ U128 guest_VSR35;
+      /*  704 */ U128 guest_VSR36;
+      /*  720 */ U128 guest_VSR37;
+      /*  736 */ U128 guest_VSR38;
+      /*  752 */ U128 guest_VSR39;
+      /*  768 */ U128 guest_VSR40;
+      /*  784 */ U128 guest_VSR41;
+      /*  800 */ U128 guest_VSR42;
+      /*  816 */ U128 guest_VSR43;
+      /*  832 */ U128 guest_VSR44;
+      /*  848 */ U128 guest_VSR45;
+      /*  864 */ U128 guest_VSR46;
+      /*  880 */ U128 guest_VSR47;
+      /*  896 */ U128 guest_VSR48;
+      /*  912 */ U128 guest_VSR49;
+      /*  928 */ U128 guest_VSR50;
+      /*  944 */ U128 guest_VSR51;
+      /*  960 */ U128 guest_VSR52;
+      /*  976 */ U128 guest_VSR53;
+      /*  992 */ U128 guest_VSR54;
+      /* 1008 */ U128 guest_VSR55;
+      /* 1024 */ U128 guest_VSR56;
+      /* 1040 */ U128 guest_VSR57;
+      /* 1056 */ U128 guest_VSR58;
+      /* 1072 */ U128 guest_VSR59;
+      /* 1088 */ U128 guest_VSR60;
+      /* 1104 */ U128 guest_VSR61;
+      /* 1120 */ U128 guest_VSR62;
+      /* 1136 */ U128 guest_VSR63;
+
+      /* 1152 */ UInt guest_CIA;    // IP (no arch visible register)
+      /* 1156 */ UInt guest_LR;     // Link Register
+      /* 1160 */ UInt guest_CTR;    // Count Register
 
       /* XER pieces */
-      /* 908 */ UChar guest_XER_SO; /* in lsb */
-      /* 909 */ UChar guest_XER_OV; /* in lsb */
-      /* 910 */ UChar guest_XER_CA; /* in lsb */
-      /* 911 */ UChar guest_XER_BC; /* all bits */
+      /* 1164 */ UChar guest_XER_SO; /* in lsb */
+      /* 1165 */ UChar guest_XER_OV; /* in lsb */
+      /* 1166 */ UChar guest_XER_CA; /* in lsb */
+      /* 1167 */ UChar guest_XER_BC; /* all bits */
 
       /* CR pieces */
-      /* 912 */ UChar guest_CR0_321; /* in [3:1] */
-      /* 913 */ UChar guest_CR0_0;   /* in lsb */
-      /* 914 */ UChar guest_CR1_321; /* in [3:1] */
-      /* 915 */ UChar guest_CR1_0;   /* in lsb */
-      /* 916 */ UChar guest_CR2_321; /* in [3:1] */
-      /* 917 */ UChar guest_CR2_0;   /* in lsb */
-      /* 918 */ UChar guest_CR3_321; /* in [3:1] */
-      /* 919 */ UChar guest_CR3_0;   /* in lsb */
-      /* 920 */ UChar guest_CR4_321; /* in [3:1] */
-      /* 921 */ UChar guest_CR4_0;   /* in lsb */
-      /* 922 */ UChar guest_CR5_321; /* in [3:1] */
-      /* 923 */ UChar guest_CR5_0;   /* in lsb */
-      /* 924 */ UChar guest_CR6_321; /* in [3:1] */
-      /* 925 */ UChar guest_CR6_0;   /* in lsb */
-      /* 926 */ UChar guest_CR7_321; /* in [3:1] */
-      /* 927 */ UChar guest_CR7_0;   /* in lsb */
+      /* 1168 */ UChar guest_CR0_321; /* in [3:1] */
+      /* 1169 */ UChar guest_CR0_0;   /* in lsb */
+      /* 1170 */ UChar guest_CR1_321; /* in [3:1] */
+      /* 1171 */ UChar guest_CR1_0;   /* in lsb */
+      /* 1172 */ UChar guest_CR2_321; /* in [3:1] */
+      /* 1173 */ UChar guest_CR2_0;   /* in lsb */
+      /* 1174 */ UChar guest_CR3_321; /* in [3:1] */
+      /* 1175 */ UChar guest_CR3_0;   /* in lsb */
+      /* 1176 */ UChar guest_CR4_321; /* in [3:1] */
+      /* 1177 */ UChar guest_CR4_0;   /* in lsb */
+      /* 1178 */ UChar guest_CR5_321; /* in [3:1] */
+      /* 1179 */ UChar guest_CR5_0;   /* in lsb */
+      /* 1180 */ UChar guest_CR6_321; /* in [3:1] */
+      /* 1181 */ UChar guest_CR6_0;   /* in lsb */
+      /* 1182 */ UChar guest_CR7_321; /* in [3:1] */
+      /* 1183 */ UChar guest_CR7_0;   /* in lsb */
 
       /* FP Status & Control Register fields */
-      /* 928 */ UInt guest_FPROUND; // FP Rounding Mode
+      /* 1184 */ UInt guest_FPROUND; // FP Rounding Mode
 
       /* Vector Save/Restore Register */
-      /* 932 */ UInt guest_VRSAVE;
+      /* 1188 */ UInt guest_VRSAVE;
 
       /* Vector Status and Control Register */
-      /* 936 */ UInt guest_VSCR;
+      /* 1192 */ UInt guest_VSCR;
 
       /* Emulation warnings */
-      /* 940 */ UInt guest_EMWARN;
+      /* 1196 */ UInt guest_EMWARN;
 
       /* For icbi: record start and length of area to invalidate */
-      /* 944 */ UInt guest_TISTART;
-      /* 948 */ UInt guest_TILEN;
+      /* 1200 */ UInt guest_TISTART;
+      /* 1204 */ UInt guest_TILEN;
 
       /* Used to record the unredirected guest address at the start of
          a translation whose start has been redirected.  By reading
@@ -203,27 +211,27 @@ typedef
          find out what the corresponding no-redirection address was.
          Note, this is only set for wrap-style redirects, not for
          replace-style ones. */
-      /* 952 */ UInt guest_NRADDR;
-      /* 956 */ UInt guest_NRADDR_GPR2; /* needed by aix */
+      /* 1208 */ UInt guest_NRADDR;
+      /* 1212 */ UInt guest_NRADDR_GPR2; /* needed by aix */
 
      /* A grows-upwards stack for hidden saves/restores of LR and R2
         needed for function interception and wrapping on ppc32-aix5.
         A horrible hack.  REDIR_SP points to the highest live entry,
         and so starts at -1. */
-      /* 960 */ UInt guest_REDIR_SP;
-      /* 964 */ UInt guest_REDIR_STACK[VEX_GUEST_PPC32_REDIR_STACK_SIZE];
+      /* 1216 */ UInt guest_REDIR_SP;
+      /* 1220 */ UInt guest_REDIR_STACK[VEX_GUEST_PPC32_REDIR_STACK_SIZE];
 
       /* Needed for AIX (but mandated for all guest architectures):
          CIA at the last SC insn.  Used when backing up to restart a
          syscall that has been interrupted by a signal. */
-      /* ??? */ UInt guest_IP_AT_SYSCALL; 
+      /* 1348 */ UInt guest_IP_AT_SYSCALL;
 
       /* SPRG3, which AIUI is readonly in user space.  Needed for
          threading on AIX. */
-      /* ??? */ UInt guest_SPRG3_RO;
+      /* 1352 */ UInt guest_SPRG3_RO;
 
       /* Padding to make it have an 8-aligned size */
-      /* UInt  padding; */
+      /* 1356 */ UInt  padding;
    }
    VexGuestPPC32State;