powerpc: Update asm-prototypes.h comment
[linux-2.6-block.git] / arch / powerpc / include / asm / asm-prototypes.h
1 /* SPDX-License-Identifier: GPL-2.0-or-later */
2 #ifndef _ASM_POWERPC_ASM_PROTOTYPES_H
3 #define _ASM_POWERPC_ASM_PROTOTYPES_H
4 /*
5  * This file is for C prototypes of asm symbols that are EXPORTed.
6  * It allows the modversions logic to see their prototype and
7  * generate proper CRCs for them.
8  *
9  * Copyright 2016, Daniel Axtens, IBM Corporation.
10  */
11
12 #include <linux/threads.h>
13 #include <asm/cacheflush.h>
14 #include <asm/checksum.h>
15 #include <linux/uaccess.h>
16 #include <asm/epapr_hcalls.h>
17 #include <asm/dcr.h>
18 #include <asm/mmu_context.h>
19 #include <asm/ultravisor-api.h>
20
21 #include <uapi/asm/ucontext.h>
22
23 /* Ultravisor */
24 #if defined(CONFIG_PPC_POWERNV) || defined(CONFIG_PPC_SVM)
25 long ucall_norets(unsigned long opcode, ...);
26 #else
27 static inline long ucall_norets(unsigned long opcode, ...)
28 {
29         return U_NOT_AVAILABLE;
30 }
31 #endif
32
33 /* OPAL */
34 int64_t __opal_call(int64_t a0, int64_t a1, int64_t a2, int64_t a3,
35                     int64_t a4, int64_t a5, int64_t a6, int64_t a7,
36                     int64_t opcode, uint64_t msr);
37
38 /* misc runtime */
39 extern u64 __bswapdi2(u64);
40 extern s64 __lshrdi3(s64, int);
41 extern s64 __ashldi3(s64, int);
42 extern s64 __ashrdi3(s64, int);
43 extern int __cmpdi2(s64, s64);
44 extern int __ucmpdi2(u64, u64);
45
46 /* tracing */
47 void _mcount(void);
48
49 /* Transaction memory related */
50 void tm_enable(void);
51 void tm_disable(void);
52 void tm_abort(uint8_t cause);
53
54 struct kvm_vcpu;
55 void _kvmppc_restore_tm_pr(struct kvm_vcpu *vcpu, u64 guest_msr);
56 void _kvmppc_save_tm_pr(struct kvm_vcpu *vcpu, u64 guest_msr);
57
58 /* Patch sites */
59 extern s32 patch__call_flush_branch_caches1;
60 extern s32 patch__call_flush_branch_caches2;
61 extern s32 patch__call_flush_branch_caches3;
62 extern s32 patch__flush_count_cache_return;
63 extern s32 patch__flush_link_stack_return;
64 extern s32 patch__call_kvm_flush_link_stack;
65 extern s32 patch__call_kvm_flush_link_stack_p9;
66 extern s32 patch__memset_nocache, patch__memcpy_nocache;
67
68 extern long flush_branch_caches;
69 extern long kvm_flush_link_stack;
70
71 #ifdef CONFIG_PPC_TRANSACTIONAL_MEM
72 void kvmppc_save_tm_hv(struct kvm_vcpu *vcpu, u64 msr, bool preserve_nv);
73 void kvmppc_restore_tm_hv(struct kvm_vcpu *vcpu, u64 msr, bool preserve_nv);
74 #else
75 static inline void kvmppc_save_tm_hv(struct kvm_vcpu *vcpu, u64 msr,
76                                      bool preserve_nv) { }
77 static inline void kvmppc_restore_tm_hv(struct kvm_vcpu *vcpu, u64 msr,
78                                         bool preserve_nv) { }
79 #endif /* CONFIG_PPC_TRANSACTIONAL_MEM */
80
81 void kvmppc_p9_enter_guest(struct kvm_vcpu *vcpu);
82
83 long kvmppc_h_set_dabr(struct kvm_vcpu *vcpu, unsigned long dabr);
84 long kvmppc_h_set_xdabr(struct kvm_vcpu *vcpu, unsigned long dabr,
85                         unsigned long dabrx);
86
87 #endif /* _ASM_POWERPC_ASM_PROTOTYPES_H */