powerpc: Add helper functions for transactional memory context switching
Here we add the helper functions to be used when context switching. These allow us to fully reclaim and recheckpoint a transaction. We introduce a new paca field called tm_scratch to help us store away register values when doing the low level tm reclaim register save. 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:

committed by
Benjamin Herrenschmidt

parent
afc07701ce
commit
98ae22e15b
@@ -797,7 +797,7 @@
|
||||
* HV mode in which case it is HSPRG0
|
||||
*
|
||||
* 64-bit server:
|
||||
* - SPRG0 unused (reserved for HV on Power4)
|
||||
* - SPRG0 scratch for TM recheckpoint/reclaim (reserved for HV on Power4)
|
||||
* - SPRG2 scratch for exception vectors
|
||||
* - SPRG3 CPU and NUMA node for VDSO getcpu (user visible)
|
||||
* - HSPRG0 stores PACA in HV mode
|
||||
|
20
arch/powerpc/include/asm/tm.h
Normal file
20
arch/powerpc/include/asm/tm.h
Normal file
@@ -0,0 +1,20 @@
|
||||
/*
|
||||
* Transactional memory support routines to reclaim and recheckpoint
|
||||
* transactional process state.
|
||||
*
|
||||
* Copyright 2012 Matt Evans & Michael Neuling, IBM Corporation.
|
||||
*/
|
||||
|
||||
#ifdef CONFIG_PPC_TRANSACTIONAL_MEM
|
||||
extern void do_load_up_transact_fpu(struct thread_struct *thread);
|
||||
extern void do_load_up_transact_altivec(struct thread_struct *thread);
|
||||
#endif
|
||||
|
||||
extern void tm_enable(void);
|
||||
extern void tm_reclaim(struct thread_struct *thread,
|
||||
unsigned long orig_msr, uint8_t cause);
|
||||
extern void tm_recheckpoint(struct thread_struct *thread,
|
||||
unsigned long orig_msr);
|
||||
extern void tm_abort(uint8_t cause);
|
||||
extern void tm_save_sprs(struct thread_struct *thread);
|
||||
extern void tm_restore_sprs(struct thread_struct *thread);
|
Reference in New Issue
Block a user