Commit | Line | Data |
---|---|---|
3cea8c43 AG |
1 | /* |
2 | * This program is free software; you can redistribute it and/or modify | |
3 | * it under the terms of the GNU General Public License, version 2, as | |
4 | * published by the Free Software Foundation. | |
5 | * | |
6 | * This program is distributed in the hope that it will be useful, | |
7 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
8 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
9 | * GNU General Public License for more details. | |
10 | * | |
11 | * You should have received a copy of the GNU General Public License | |
12 | * along with this program; if not, write to the Free Software | |
13 | * Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. | |
14 | * | |
15 | * Copyright SUSE Linux Products GmbH 2009 | |
16 | * | |
17 | * Authors: Alexander Graf <agraf@suse.de> | |
18 | */ | |
19 | ||
20 | #ifndef __ASM_KVM_BOOK3S_ASM_H__ | |
21 | #define __ASM_KVM_BOOK3S_ASM_H__ | |
22 | ||
7e57cba0 AG |
23 | #ifdef __ASSEMBLY__ |
24 | ||
3cea8c43 AG |
25 | #ifdef CONFIG_KVM_BOOK3S_64_HANDLER |
26 | ||
27 | #include <asm/kvm_asm.h> | |
28 | ||
29 | .macro DO_KVM intno | |
30 | .if (\intno == BOOK3S_INTERRUPT_SYSTEM_RESET) || \ | |
31 | (\intno == BOOK3S_INTERRUPT_MACHINE_CHECK) || \ | |
32 | (\intno == BOOK3S_INTERRUPT_DATA_STORAGE) || \ | |
33 | (\intno == BOOK3S_INTERRUPT_INST_STORAGE) || \ | |
34 | (\intno == BOOK3S_INTERRUPT_DATA_SEGMENT) || \ | |
35 | (\intno == BOOK3S_INTERRUPT_INST_SEGMENT) || \ | |
36 | (\intno == BOOK3S_INTERRUPT_EXTERNAL) || \ | |
37 | (\intno == BOOK3S_INTERRUPT_ALIGNMENT) || \ | |
38 | (\intno == BOOK3S_INTERRUPT_PROGRAM) || \ | |
39 | (\intno == BOOK3S_INTERRUPT_FP_UNAVAIL) || \ | |
40 | (\intno == BOOK3S_INTERRUPT_DECREMENTER) || \ | |
41 | (\intno == BOOK3S_INTERRUPT_SYSCALL) || \ | |
42 | (\intno == BOOK3S_INTERRUPT_TRACE) || \ | |
43 | (\intno == BOOK3S_INTERRUPT_PERFMON) || \ | |
44 | (\intno == BOOK3S_INTERRUPT_ALTIVEC) || \ | |
45 | (\intno == BOOK3S_INTERRUPT_VSX) | |
46 | ||
47 | b kvmppc_trampoline_\intno | |
48 | kvmppc_resume_\intno: | |
49 | ||
50 | .endif | |
51 | .endm | |
52 | ||
53 | #else | |
54 | ||
55 | .macro DO_KVM intno | |
56 | .endm | |
57 | ||
58 | #endif /* CONFIG_KVM_BOOK3S_64_HANDLER */ | |
59 | ||
7e57cba0 AG |
60 | #else /*__ASSEMBLY__ */ |
61 | ||
62 | struct kvmppc_book3s_shadow_vcpu { | |
63 | ulong gpr[14]; | |
64 | u32 cr; | |
65 | u32 xer; | |
66 | ulong host_r1; | |
67 | ulong host_r2; | |
68 | ulong handler; | |
69 | ulong scratch0; | |
70 | ulong scratch1; | |
71 | ulong vmhandler; | |
7e57cba0 AG |
72 | }; |
73 | ||
74 | #endif /*__ASSEMBLY__ */ | |
75 | ||
3cea8c43 | 76 | #endif /* __ASM_KVM_BOOK3S_ASM_H__ */ |