aboutsummaryrefslogtreecommitdiffstats
path: root/arch/powerpc/include/asm/tm.h
diff options
context:
space:
mode:
authorMichael Neuling <mikey@neuling.org>2013-02-13 16:21:35 +0000
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>2013-02-15 16:58:52 +1100
commit98ae22e15b430bfed5def01ac1a88ec9396284c8 (patch)
treedc4119b4c88a094039206851c7f12f42b4ce75df /arch/powerpc/include/asm/tm.h
parentpowerpc: Add transactional memory paca scratch register to show_regs (diff)
downloadlinux-dev-98ae22e15b430bfed5def01ac1a88ec9396284c8.tar.xz
linux-dev-98ae22e15b430bfed5def01ac1a88ec9396284c8.zip
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>
Diffstat (limited to 'arch/powerpc/include/asm/tm.h')
-rw-r--r--arch/powerpc/include/asm/tm.h20
1 files changed, 20 insertions, 0 deletions
diff --git a/arch/powerpc/include/asm/tm.h b/arch/powerpc/include/asm/tm.h
new file mode 100644
index 000000000000..4b4449abf3f8
--- /dev/null
+++ b/arch/powerpc/include/asm/tm.h
@@ -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);