Go to the documentation of this file.
50 case 1:
return pte & 0x1;
51 case 2:
return pte & 0x1;
52 case 3:
return (pte & 0x1) && (pte & 0x2);
61 case 1:
return !(pte & 0x2);
62 case 2:
return !(pte & 0x2);
71 return stage2 ?
bits(pte, 7, 6)==3 :
bits(pte, 7)==0;
79 case 1:
return mbits(pte, 39, 30);
80 case 2:
return mbits(pte, 39, 21);
81 case 3:
return mbits(pte, 39, 12);
85 return mbits(pte, 39, 12);
96 case 1:
return bits(
va, 26+
n, 30) << 3;
break;
97 case 2:
return bits(
va, 29, 21) << 3;
break;
98 case 3:
return bits(
va, 20, 12) << 3;
break;
107 case 1:
return ~
mask(30);
108 case 2:
return ~
mask(21);
118 case 1:
return ~
mask(30);
119 case 2:
return ~
mask(21);
120 case 3:
return ~
mask(12);
141 case 0:
return pte & 0x1;
142 case 1:
return pte & 0x1;
143 case 2:
return pte & 0x1;
144 case 3:
return (pte & 0x1) && (pte & 0x2);
153 case 0:
return false;
154 case 1:
return !(pte & 0x2);
155 case 2:
return !(pte & 0x2);
164 return stage2 ?
bits(pte, 7, 6)==3 :
bits(pte, 7)==0;
173 case 1:
return mbits(pte, 47, 30);
174 case 2:
return mbits(pte, 47, 21);
175 case 3:
return mbits(pte, 47, 12);
179 return mbits(pte, 47, 12);
187 case 0:
return bits(
va, 47, 39) << 3;
break;
188 case 1:
return bits(
va, 38, 30) << 3;
break;
189 case 2:
return bits(
va, 29, 21) << 3;
break;
190 case 3:
return bits(
va, 20, 12) << 3;
break;
200 case 1:
return ~
mask(30);
201 case 2:
return ~
mask(21);
211 case 0:
return ~
mask(39);
212 case 1:
return ~
mask(30);
213 case 2:
return ~
mask(21);
214 case 3:
return ~
mask(12);
222 if (tsz >= 16 && tsz <= 24)
return 0;
223 if (tsz >= 25 && tsz <= 33)
return 1;
224 if (tsz >= 34 && tsz <= 39)
return 2;
226 panic(
"Unsupported TnSZ: %d\n", tsz);
239 case 0:
return pte & 0x1;
240 case 1:
return pte & 0x1;
241 case 2:
return pte & 0x1;
242 case 3:
return (pte & 0x1) && (pte & 0x2);
251 case 0:
return false;
252 case 1:
return false;
253 case 2:
return !(pte & 0x2);
262 return stage2 ?
bits(pte, 7, 6) == 3 :
bits(pte, 7) == 0;
271 case 1:
return mbits(pte, 47, 36);
272 case 2:
return mbits(pte, 47, 25);
273 case 3:
return mbits(pte, 47, 14);
277 return mbits(pte, 47, 14);
285 case 0:
return bits(
va, 47, 47) << 3;
break;
286 case 1:
return bits(
va, 46, 36) << 3;
break;
287 case 2:
return bits(
va, 35, 25) << 3;
break;
288 case 3:
return bits(
va, 24, 14) << 3;
break;
298 case 1:
return ~
mask(36);
311 case 0:
return ~
mask(47);
312 case 1:
return ~
mask(36);
313 case 2:
return ~
mask(25);
314 case 3:
return ~
mask(14);
322 if (tsz == 16)
return 0;
323 if (tsz >= 17 && tsz <= 27)
return 1;
324 if (tsz >= 28 && tsz <= 38)
return 2;
325 if (tsz == 39)
return 3;
327 panic(
"Unsupported TnSZ: %d\n", tsz);
340 case 1:
return pte & 0x1;
341 case 2:
return pte & 0x1;
342 case 3:
return (pte & 0x1) && (pte & 0x2);
351 case 1:
return false;
352 case 2:
return !(pte & 0x2);
361 return stage2 ?
bits(pte, 7, 6)==3 :
bits(pte, 7)==0;
370 case 2:
return mbits(pte, 47, 29);
371 case 3:
return mbits(pte, 47, 16);
375 return mbits(pte, 47, 16);
383 case 1:
return bits(
va, 47, 42) << 3;
break;
384 case 2:
return bits(
va, 41, 29) << 3;
break;
385 case 3:
return bits(
va, 28, 16) << 3;
break;
395 case 2:
return ~
mask(29);
405 case 1:
return ~
mask(42);
406 case 2:
return ~
mask(29);
407 case 3:
return ~
mask(16);
415 if (tsz >= 12 && tsz <= 21)
return 1;
416 if (tsz >= 22 && tsz <= 34)
return 2;
417 if (tsz >= 35 && tsz <= 39)
return 3;
419 panic(
"Unsupported TnSZ: %d\n", tsz);
unsigned lastLevel() const override
bool isLeaf(pte_t pte, unsigned level) const override
bool isLeaf(pte_t pte, unsigned level) const override
Addr pageMask(pte_t pte, unsigned level) const override
bool isLeaf(pte_t pte, unsigned level) const override
bool isWritable(pte_t pte, unsigned level, bool stage2) const override
bool isWritable(pte_t pte, unsigned level, bool stage2) const override
Addr pageMask(pte_t pte, unsigned level) const override
bool isWritable(pte_t pte, unsigned level, bool stage2) const override
Addr index(Addr va, unsigned level) const override
unsigned lastLevel() const override
constexpr T mbits(T val, unsigned first, unsigned last)
Mask off the given bits in place like bits() but without shifting.
Addr pageMask(pte_t pte, unsigned level) const override
constexpr uint64_t mask(unsigned nbits)
Generate a 64-bit mask of 'nbits' 1s, right justified.
Addr nextLevelPointer(pte_t pte, unsigned level) const override
Addr walkMask(unsigned level) const override
unsigned firstLevel(uint8_t tsz) const override
Addr walkMask(unsigned level) const override
Addr nextLevelPointer(pte_t pte, unsigned level) const override
bool isValid(pte_t pte, unsigned level) const override
unsigned firstLevel(uint8_t tsz) const override
bool isValid(pte_t pte, unsigned level) const override
Addr pageMask(pte_t pte, unsigned level) const override
bool isValid(pte_t pte, unsigned level) const override
constexpr T bits(T val, unsigned first, unsigned last)
Extract the bitfield from position 'first' to 'last' (inclusive) from 'val' and right justify it.
uint64_t Addr
Address type This will probably be moved somewhere else in the near future.
bool isLeaf(pte_t pte, unsigned level) const override
unsigned firstLevel(uint8_t tsz) const override
unsigned firstLevel(uint8_t tsz) const override
Addr index(Addr va, unsigned level) const override
Addr nextLevelPointer(pte_t pte, unsigned level) const override
Addr index(Addr va, unsigned level) const override
unsigned lastLevel() const override
bool isWritable(pte_t pte, unsigned level, bool stage2) const override
Addr walkMask(unsigned level) const override
Reference material can be found at the JEDEC website: UFS standard http://www.jedec....
Addr nextLevelPointer(pte_t pte, unsigned level) const override
unsigned lastLevel() const override
Addr index(Addr va, unsigned level) const override
bool isValid(pte_t pte, unsigned level) const override
Addr walkMask(unsigned level) const override
#define panic(...)
This implements a cprintf based panic() function.
Generated on Tue Sep 7 2021 14:53:46 for gem5 by doxygen 1.8.17