#define OFFB_NRADDR_GPR2 offsetofPPCGuestState(guest_NRADDR_GPR2)
#define OFFB_TFHAR offsetofPPCGuestState(guest_TFHAR)
#define OFFB_TEXASR offsetofPPCGuestState(guest_TEXASR)
+#define OFFB_TEXASRU offsetofPPCGuestState(guest_TEXASRU)
#define OFFB_TFIAR offsetofPPCGuestState(guest_TFIAR)
PPC_GST_TFHAR, // Transactional Failure Handler Address Register
PPC_GST_TFIAR, // Transactional Failure Instruction Address Register
PPC_GST_TEXASR, // Transactional EXception And Summary Register
+ PPC_GST_TEXASRU, // Transactional EXception And Summary Register Upper
PPC_GST_MAX
} PPC_GST;
case PPC_GST_TEXASR:
return IRExpr_Get( OFFB_TEXASR, ty );
+ case PPC_GST_TEXASRU:
+ return IRExpr_Get( OFFB_TEXASRU, ty );
+
case PPC_GST_TFIAR:
return IRExpr_Get( OFFB_TFIAR, ty );
vassert( ty_src == Ity_I64 );
stmt( IRStmt_Put( OFFB_TEXASR, src ) );
break;
+
+ case PPC_GST_TEXASRU:
+ vassert( ty_src == Ity_I32 );
+ stmt( IRStmt_Put( OFFB_TEXASRU, src ) );
+ break;
+
case PPC_GST_TFIAR:
vassert( ty_src == Ity_I64 );
stmt( IRStmt_Put( OFFB_TFIAR, src ) );
static void storeTMfailure( Addr64 err_address, ULong tm_reason,
Addr64 handler_address )
{
- putGST( PPC_GST_TFIAR, mkU64( err_address ) );
- putGST( PPC_GST_TEXASR, mkU64( tm_reason ) );
- putGST( PPC_GST_TFHAR, mkU64( handler_address ) );
+ putGST( PPC_GST_TFIAR, mkU64( err_address ) );
+ putGST( PPC_GST_TEXASR, mkU64( tm_reason ) );
+ putGST( PPC_GST_TEXASRU, mkU32( 0 ) );
+ putGST( PPC_GST_TFHAR, mkU64( handler_address ) );
}
/*------------------------------------------------------------*/
DIP("mfspr r%u (TEXASR)\n", rD_addr);
putIReg( rD_addr, getGST( PPC_GST_TEXASR) );
break;
+ case 0x83: // 131
+ DIP("mfspr r%u (TEXASRU)\n", rD_addr);
+ putIReg( rD_addr, getGST( PPC_GST_TEXASRU) );
+ break;
case 0x100:
DIP("mfvrsave r%u\n", rD_addr);
putIReg( rD_addr, mkWidenFrom32(ty, getGST( PPC_GST_VRSAVE ),
/* 1656 */ ULong guest_TFHAR; // Transaction Failure Handler Address Register
/* 1664 */ ULong guest_TEXASR; // Transaction EXception And Summary Register
/* 1672 */ ULong guest_TFIAR; // Transaction Failure Instruction Address Register
+ /* 1680 */ UInt guest_TEXASRU; // Transaction EXception And Summary Register Upper
+
+ /* Padding to make it have an 16-aligned size */
+ /* 1684 */ UInt padding1;
+ /* 1688 */ UInt padding2;
+ /* 1692 */ UInt padding3;
}
VexGuestPPC64State;