powerpc: Add additional state needed for transactional memory to thread struct
Set of new archtected state for saving away on context switch. Signed-off-by: Matt Evans <matt@ozlabs.org> Signed-off-by: Michael Neuling <mikey@neuling.org> Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
This commit is contained in:
parent
14c39a4cf6
commit
f4c3aff223
1 changed files with 28 additions and 0 deletions
|
|
@ -246,6 +246,34 @@ struct thread_struct {
|
||||||
unsigned long spefscr; /* SPE & eFP status */
|
unsigned long spefscr; /* SPE & eFP status */
|
||||||
int used_spe; /* set if process has used spe */
|
int used_spe; /* set if process has used spe */
|
||||||
#endif /* CONFIG_SPE */
|
#endif /* CONFIG_SPE */
|
||||||
|
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
||||||
|
u64 tm_tfhar; /* Transaction fail handler addr */
|
||||||
|
u64 tm_texasr; /* Transaction exception & summary */
|
||||||
|
u64 tm_tfiar; /* Transaction fail instr address reg */
|
||||||
|
unsigned long tm_orig_msr; /* Thread's MSR on ctx switch */
|
||||||
|
struct pt_regs ckpt_regs; /* Checkpointed registers */
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Transactional FP and VSX 0-31 register set.
|
||||||
|
* NOTE: the sense of these is the opposite of the integer ckpt_regs!
|
||||||
|
*
|
||||||
|
* When a transaction is active/signalled/scheduled etc., *regs is the
|
||||||
|
* most recent set of/speculated GPRs with ckpt_regs being the older
|
||||||
|
* checkpointed regs to which we roll back if transaction aborts.
|
||||||
|
*
|
||||||
|
* However, fpr[] is the checkpointed 'base state' of FP regs, and
|
||||||
|
* transact_fpr[] is the new set of transactional values.
|
||||||
|
* VRs work the same way.
|
||||||
|
*/
|
||||||
|
double transact_fpr[32][TS_FPRWIDTH];
|
||||||
|
struct {
|
||||||
|
unsigned int pad;
|
||||||
|
unsigned int val; /* Floating point status */
|
||||||
|
} transact_fpscr;
|
||||||
|
vector128 transact_vr[32] __attribute__((aligned(16)));
|
||||||
|
vector128 transact_vscr __attribute__((aligned(16)));
|
||||||
|
unsigned long transact_vrsave;
|
||||||
|
#endif /* CONFIG_PPC_TRANSACTIONAL_MEM */
|
||||||
#ifdef CONFIG_KVM_BOOK3S_32_HANDLER
|
#ifdef CONFIG_KVM_BOOK3S_32_HANDLER
|
||||||
void* kvm_shadow_vcpu; /* KVM internal data */
|
void* kvm_shadow_vcpu; /* KVM internal data */
|
||||||
#endif /* CONFIG_KVM_BOOK3S_32_HANDLER */
|
#endif /* CONFIG_KVM_BOOK3S_32_HANDLER */
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue