/* 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
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;