gem5
v20.1.0.0
arch
power
pagetable.hh
Go to the documentation of this file.
1
/*
2
* Copyright (c) 2002-2005 The Regents of The University of Michigan
3
* Copyright (c) 2007 MIPS Technologies, Inc.
4
* Copyright (c) 2007-2008 The Florida State University
5
* Copyright (c) 2009 The University of Edinburgh
6
* All rights reserved.
7
*
8
* Redistribution and use in source and binary forms, with or without
9
* modification, are permitted provided that the following conditions are
10
* met: redistributions of source code must retain the above copyright
11
* notice, this list of conditions and the following disclaimer;
12
* redistributions in binary form must reproduce the above copyright
13
* notice, this list of conditions and the following disclaimer in the
14
* documentation and/or other materials provided with the distribution;
15
* neither the name of the copyright holders nor the names of its
16
* contributors may be used to endorse or promote products derived from
17
* this software without specific prior written permission.
18
*
19
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
20
* "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
21
* LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
22
* A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
23
* OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
24
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
25
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
26
* DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
27
* THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
28
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
29
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
30
*/
31
32
#ifndef __ARCH_POWER_PAGETABLE_H__
33
#define __ARCH_POWER_PAGETABLE_H__
34
35
#include "
arch/power/isa_traits.hh
"
36
#include "
arch/power/utility.hh
"
37
38
namespace
PowerISA
39
{
40
41
// ITB/DTB page table entry
42
struct
PTE
43
{
44
// What parts of the VAddr (from bits 28..11) should be used in
45
// translation (includes Mask and MaskX from PageMask)
46
Addr
Mask
;
47
48
// Virtual Page Number (/2) (Includes VPN2 + VPN2X .. bits 31..11
49
// from EntryHi)
50
Addr
VPN
;
51
52
// Address Space ID (8 bits) // Lower 8 bits of EntryHi
53
uint8_t
asid
;
54
55
// Global Bit - Obtained by an *AND* of EntryLo0 and EntryLo1 G bit
56
bool
G
;
57
58
/* Contents of Entry Lo0 */
59
Addr
PFN0
;
// Physical Frame Number - Even
60
bool
D0
;
// Even entry Dirty Bit
61
bool
V0
;
// Even entry Valid Bit
62
uint8_t
C0
;
// Cache Coherency Bits - Even
63
64
/* Contents of Entry Lo1 */
65
Addr
PFN1
;
// Physical Frame Number - Odd
66
bool
D1
;
// Odd entry Dirty Bit
67
bool
V1
;
// Odd entry Valid Bit
68
uint8_t
C1
;
// Cache Coherency Bits (3 bits)
69
70
// The next few variables are put in as optimizations to reduce TLB
71
// lookup overheads. For a given Mask, what is the address shift amount
72
// and what is the OffsetMask
73
int
AddrShiftAmount
;
74
int
OffsetMask
;
75
76
bool
77
Valid
()
78
{
79
return
(
V0
|
V1
);
80
};
81
82
void
serialize
(
CheckpointOut
&
cp
)
const
;
83
void
unserialize
(
CheckpointIn
&
cp
);
84
};
85
86
}
// namespace PowerISA
87
88
#endif // __ARCH_POWER_PAGETABLE_H__
89
utility.hh
PowerISA::PTE::V1
bool V1
Definition:
pagetable.hh:67
PowerISA::PTE::Mask
Addr Mask
Definition:
pagetable.hh:46
PowerISA::PTE
Definition:
pagetable.hh:42
PowerISA::PTE::asid
uint8_t asid
Definition:
pagetable.hh:53
PowerISA::PTE::D1
bool D1
Definition:
pagetable.hh:66
cp
Definition:
cprintf.cc:40
PowerISA::PTE::VPN
Addr VPN
Definition:
pagetable.hh:50
PowerISA
Definition:
decoder.cc:31
PowerISA::PTE::Valid
bool Valid()
Definition:
pagetable.hh:77
PowerISA::PTE::PFN1
Addr PFN1
Definition:
pagetable.hh:65
PowerISA::PTE::C1
uint8_t C1
Definition:
pagetable.hh:68
Addr
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
Definition:
types.hh:142
PowerISA::PTE::OffsetMask
int OffsetMask
Definition:
pagetable.hh:74
isa_traits.hh
PowerISA::PTE::D0
bool D0
Definition:
pagetable.hh:60
CheckpointOut
std::ostream CheckpointOut
Definition:
serialize.hh:63
PowerISA::PTE::PFN0
Addr PFN0
Definition:
pagetable.hh:59
PowerISA::PTE::AddrShiftAmount
int AddrShiftAmount
Definition:
pagetable.hh:73
PowerISA::PTE::C0
uint8_t C0
Definition:
pagetable.hh:62
CheckpointIn
Definition:
serialize.hh:67
PowerISA::PTE::G
bool G
Definition:
pagetable.hh:56
PowerISA::PTE::V0
bool V0
Definition:
pagetable.hh:61
PowerISA::PTE::serialize
void serialize(CheckpointOut &cp) const
Definition:
pagetable.cc:40
PowerISA::PTE::unserialize
void unserialize(CheckpointIn &cp)
Definition:
pagetable.cc:59
Generated on Wed Sep 30 2020 14:02:01 for gem5 by
doxygen
1.8.17