Linux Kernel
3.7.1
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
arch
powerpc
include
asm
kvm_44x.h
Go to the documentation of this file.
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 IBM Corp. 2008
16
*
17
* Authors: Hollis Blanchard <
[email protected]
>
18
*/
19
20
#ifndef __ASM_44X_H__
21
#define __ASM_44X_H__
22
23
#include <
linux/kvm_host.h
>
24
25
#define PPC44x_TLB_SIZE 64
26
27
/* If the guest is expecting it, this can be as large as we like; we'd just
28
* need to find some way of advertising it. */
29
#define KVM44x_GUEST_TLB_SIZE 64
30
31
struct
kvmppc_44x_tlbe
{
32
u32
tid
;
/* Only the low 8 bits are used. */
33
u32
word0
;
34
u32
word1
;
35
u32
word2
;
36
};
37
38
struct
kvmppc_44x_shadow_ref
{
39
struct
page
*
page
;
40
u16
gtlb_index
;
41
u8
writeable
;
42
u8
tid
;
43
};
44
45
struct
kvmppc_vcpu_44x
{
46
/* Unmodified copy of the guest's TLB. */
47
struct
kvmppc_44x_tlbe
guest_tlb
[
KVM44x_GUEST_TLB_SIZE
];
48
49
/* References to guest pages in the hardware TLB. */
50
struct
kvmppc_44x_shadow_ref
shadow_refs
[
PPC44x_TLB_SIZE
];
51
52
/* State of the shadow TLB at guest context switch time. */
53
struct
kvmppc_44x_tlbe
shadow_tlb
[
PPC44x_TLB_SIZE
];
54
u8
shadow_tlb_mod
[
PPC44x_TLB_SIZE
];
55
56
struct
kvm_vcpu
vcpu
;
57
};
58
59
static
inline
struct
kvmppc_vcpu_44x
*to_44x(
struct
kvm_vcpu
*
vcpu
)
60
{
61
return
container_of
(vcpu,
struct
kvmppc_vcpu_44x
, vcpu);
62
}
63
64
void
kvmppc_44x_tlb_put
(
struct
kvm_vcpu
*
vcpu
);
65
void
kvmppc_44x_tlb_load
(
struct
kvm_vcpu
*
vcpu
);
66
67
#endif
/* __ASM_44X_H__ */
Generated on Thu Jan 10 2013 13:13:20 for Linux Kernel by
1.8.2