249251e8b4be62562a9312704682a2ee6de173e4
1 from nmigen
import Module
, Signal
2 from nmigen
.cli
import main
5 def __init__(self
, asid_size
, pte_size
):
7 self
.asid_start
= pte_size
8 self
.asid_end
= pte_size
+ asid_size
11 self
.i
= Signal(asid_size
+ pte_size
)
14 self
.d
= Signal(1) # Dirty bit (From pte)
15 self
.a
= Signal(1) # Accessed bit (From pte)
16 self
.g
= Signal(1) # Global Access (From pte)
17 self
.u
= Signal(1) # User Mode (From pte)
18 self
.xwr
= Signal(3) # Execute Read Write (From pte)
19 self
.v
= Signal(1) # Valid (From pte)
20 self
.asid
= Signal(asid_size
) # Associated Address Space IDentifier
21 self
.pte
= Signal(pte_size
) # Full Page Table Entry
23 def elaborate(self
, platform
=None):
25 # Pull out all control bites from PTE
31 self
.xwr
.eq(self
.i
[1:4]),
34 m
.d
.comb
+= self
.asid
.eq(self
.i
[self
.asid_start
:self
.asid_end
])
35 m
.d
.comb
+= self
.pte
.eq(self
.i
[0:self
.asid_start
])