Go to the documentation of this file.
47 case 1:
return pte & 0x1;
48 case 2:
return pte & 0x1;
49 case 3:
return (pte & 0x1) && (pte & 0x2);
58 case 1:
return !(pte & 0x2);
59 case 2:
return !(pte & 0x2);
68 return stage2 ?
bits(pte, 7, 6)==3 :
bits(pte, 7)==0;
76 case 1:
return mbits(pte, 39, 30);
77 case 2:
return mbits(pte, 39, 21);
78 case 3:
return mbits(pte, 39, 12);
82 return mbits(pte, 39, 12);
93 case 1:
return bits(
va, 26+
n, 30) << 3;
break;
94 case 2:
return bits(
va, 29, 21) << 3;
break;
95 case 3:
return bits(
va, 20, 12) << 3;
break;
104 case 1:
return ~
mask(30);
105 case 2:
return ~
mask(21);
115 case 1:
return ~
mask(30);
116 case 2:
return ~
mask(21);
117 case 3:
return ~
mask(12);
138 case 0:
return pte & 0x1;
139 case 1:
return pte & 0x1;
140 case 2:
return pte & 0x1;
141 case 3:
return (pte & 0x1) && (pte & 0x2);
150 case 0:
return false;
151 case 1:
return !(pte & 0x2);
152 case 2:
return !(pte & 0x2);
161 return stage2 ?
bits(pte, 7, 6)==3 :
bits(pte, 7)==0;
170 case 1:
return mbits(pte, 47, 30);
171 case 2:
return mbits(pte, 47, 21);
172 case 3:
return mbits(pte, 47, 12);
176 return mbits(pte, 47, 12);
184 case 0:
return bits(
va, 47, 39) << 3;
break;
185 case 1:
return bits(
va, 38, 30) << 3;
break;
186 case 2:
return bits(
va, 29, 21) << 3;
break;
187 case 3:
return bits(
va, 20, 12) << 3;
break;
197 case 1:
return ~
mask(30);
198 case 2:
return ~
mask(21);
208 case 0:
return ~
mask(39);
209 case 1:
return ~
mask(30);
210 case 2:
return ~
mask(21);
211 case 3:
return ~
mask(12);
219 if (tsz >= 16 && tsz <= 24)
return 0;
220 if (tsz >= 25 && tsz <= 33)
return 1;
221 if (tsz >= 34 && tsz <= 39)
return 2;
223 panic(
"Unsupported TnSZ: %d\n", tsz);
236 case 0:
return pte & 0x1;
237 case 1:
return pte & 0x1;
238 case 2:
return pte & 0x1;
239 case 3:
return (pte & 0x1) && (pte & 0x2);
248 case 0:
return false;
249 case 1:
return false;
250 case 2:
return !(pte & 0x2);
259 return stage2 ?
bits(pte, 7, 6) == 3 :
bits(pte, 7) == 0;
268 case 1:
return mbits(pte, 47, 36);
269 case 2:
return mbits(pte, 47, 25);
270 case 3:
return mbits(pte, 47, 14);
274 return mbits(pte, 47, 14);
282 case 0:
return bits(
va, 47, 47) << 3;
break;
283 case 1:
return bits(
va, 46, 36) << 3;
break;
284 case 2:
return bits(
va, 35, 25) << 3;
break;
285 case 3:
return bits(
va, 24, 14) << 3;
break;
295 case 1:
return ~
mask(36);
308 case 0:
return ~
mask(47);
309 case 1:
return ~
mask(36);
310 case 2:
return ~
mask(25);
311 case 3:
return ~
mask(14);
319 if (tsz == 16)
return 0;
320 if (tsz >= 17 && tsz <= 27)
return 1;
321 if (tsz >= 28 && tsz <= 38)
return 2;
322 if (tsz == 39)
return 3;
324 panic(
"Unsupported TnSZ: %d\n", tsz);
337 case 1:
return pte & 0x1;
338 case 2:
return pte & 0x1;
339 case 3:
return (pte & 0x1) && (pte & 0x2);
348 case 1:
return false;
349 case 2:
return !(pte & 0x2);
358 return stage2 ?
bits(pte, 7, 6)==3 :
bits(pte, 7)==0;
367 case 2:
return mbits(pte, 47, 29);
368 case 3:
return mbits(pte, 47, 16);
372 return mbits(pte, 47, 16);
380 case 1:
return bits(
va, 47, 42) << 3;
break;
381 case 2:
return bits(
va, 41, 29) << 3;
break;
382 case 3:
return bits(
va, 28, 16) << 3;
break;
392 case 2:
return ~
mask(29);
402 case 1:
return ~
mask(42);
403 case 2:
return ~
mask(29);
404 case 3:
return ~
mask(16);
412 if (tsz >= 12 && tsz <= 21)
return 1;
413 if (tsz >= 22 && tsz <= 34)
return 2;
414 if (tsz >= 35 && tsz <= 39)
return 3;
416 panic(
"Unsupported TnSZ: %d\n", tsz);
Addr pageMask(pte_t pte, unsigned level) const override
unsigned firstLevel(uint8_t tsz) const override
unsigned firstLevel(uint8_t tsz) const override
Addr nextLevelPointer(pte_t pte, unsigned level) const override
bool isValid(pte_t pte, unsigned level) const override
bool isLeaf(pte_t pte, unsigned level) const override
T mbits(T val, int first, int last)
Mask off the given bits in place like bits() but without shifting.
unsigned lastLevel() const override
bool isWritable(pte_t pte, unsigned level, bool stage2) const override
unsigned lastLevel() const override
Addr nextLevelPointer(pte_t pte, unsigned level) const override
Addr walkMask(unsigned level) const override
unsigned firstLevel(uint8_t tsz) const override
Addr index(Addr va, unsigned level) const override
bool isLeaf(pte_t pte, unsigned level) const override
bool isValid(pte_t pte, unsigned level) const override
Addr index(Addr va, unsigned level) const override
bool isLeaf(pte_t pte, unsigned level) const override
unsigned lastLevel() const override
bool isValid(pte_t pte, unsigned level) const override
Addr index(Addr va, unsigned level) const override
Addr walkMask(unsigned level) const override
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
unsigned lastLevel() const override
bool isWritable(pte_t pte, unsigned level, bool stage2) const override
Addr walkMask(unsigned level) const override
unsigned firstLevel(uint8_t tsz) const override
Addr nextLevelPointer(pte_t pte, unsigned level) const override
Addr walkMask(unsigned level) const override
Addr pageMask(pte_t pte, unsigned level) const override
bool isLeaf(pte_t pte, unsigned level) const override
Addr index(Addr va, unsigned level) const override
bool isValid(pte_t pte, unsigned level) const override
Addr pageMask(pte_t pte, unsigned level) const override
bool isWritable(pte_t pte, unsigned level, bool stage2) const override
Addr nextLevelPointer(pte_t pte, unsigned level) const override
#define panic(...)
This implements a cprintf based panic() function.
bool isWritable(pte_t pte, unsigned level, bool stage2) const override
Addr pageMask(pte_t pte, unsigned level) const override
T bits(T val, int first, int last)
Extract the bitfield from position 'first' to 'last' (inclusive) from 'val' and right justify it.
Generated on Wed Sep 30 2020 14:02:10 for gem5 by doxygen 1.8.17