powerpc: Export tm_enable()/tm_disable/tm_abort() APIs
authorSimon Guo <wei.guo.simon@gmail.com>
Wed, 23 May 2018 07:01:46 +0000 (15:01 +0800)
committerMichael Ellerman <mpe@ellerman.id.au>
Thu, 24 May 2018 06:04:02 +0000 (16:04 +1000)
This patch exports tm_enable()/tm_disable/tm_abort() APIs, which
will be used for PR KVM transactional memory logic.

Signed-off-by: Simon Guo <wei.guo.simon@gmail.com>
Reviewed-by: Paul Mackerras <paulus@ozlabs.org>
Signed-off-by: Michael Ellerman <mpe@ellerman.id.au>
arch/powerpc/include/asm/asm-prototypes.h
arch/powerpc/include/asm/tm.h
arch/powerpc/kernel/tm.S
arch/powerpc/mm/hash_utils_64.c

index d9713ad62e3ca47fb99c786aeaf4e95c0a6377db..dfdcb2374c2847aaef2dbae6b3e84134eaa2f472 100644 (file)
@@ -141,4 +141,7 @@ unsigned long prepare_ftrace_return(unsigned long parent, unsigned long ip);
 void pnv_power9_force_smt4_catch(void);
 void pnv_power9_force_smt4_release(void);
 
+void tm_enable(void);
+void tm_disable(void);
+void tm_abort(uint8_t cause);
 #endif /* _ASM_POWERPC_ASM_PROTOTYPES_H */
index b1658c97047cb7df371f37f504d6df5106065573..e94f6db5e367b3ff7de34d97db260589c177eb5d 100644 (file)
 
 #ifndef __ASSEMBLY__
 
-extern void tm_enable(void);
 extern void tm_reclaim(struct thread_struct *thread,
                       uint8_t cause);
 extern void tm_reclaim_current(uint8_t cause);
 extern void tm_recheckpoint(struct thread_struct *thread);
-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);
 
index b92ac8e711db072c0c831d973169f69ad380f71c..ff12f47a96b618363f71b1f74be386b0dea64d3d 100644 (file)
@@ -12,6 +12,7 @@
 #include <asm/ptrace.h>
 #include <asm/reg.h>
 #include <asm/bug.h>
+#include <asm/export.h>
 
 #ifdef CONFIG_VSX
 /* See fpu.S, this is borrowed from there */
@@ -55,6 +56,16 @@ _GLOBAL(tm_enable)
        or      r4, r4, r3
        mtmsrd  r4
 1:     blr
+EXPORT_SYMBOL_GPL(tm_enable);
+
+_GLOBAL(tm_disable)
+       mfmsr   r4
+       li      r3, MSR_TM >> 32
+       sldi    r3, r3, 32
+       andc    r4, r4, r3
+       mtmsrd  r4
+       blr
+EXPORT_SYMBOL_GPL(tm_disable);
 
 _GLOBAL(tm_save_sprs)
        mfspr   r0, SPRN_TFHAR
@@ -78,6 +89,7 @@ _GLOBAL(tm_restore_sprs)
 _GLOBAL(tm_abort)
        TABORT(R3)
        blr
+EXPORT_SYMBOL_GPL(tm_abort);
 
 /* void tm_reclaim(struct thread_struct *thread,
  *                uint8_t cause)
index 0bd3790d35df419d1622f10754abd38be1575963..1bd8b4c1aab89ddf325fb37de2273480714fbdca 100644 (file)
@@ -64,6 +64,7 @@
 #include <asm/trace.h>
 #include <asm/ps3.h>
 #include <asm/pte-walk.h>
+#include <asm/asm-prototypes.h>
 
 #ifdef DEBUG
 #define DBG(fmt...) udbg_printf(fmt)