Memory Protection Unit (MPU)
MPC5510 Microcontroller Family Reference Manual, Rev. 1
Freescale Semiconductor
17-15
Preliminary
17.4.1.1
Access Evaluation—Hit Determination
To determine if the current AHB reference hits in the given region, two magnitude comparators are used
with the region’s start and end addresses. The boolean equation for this portion of the hit determination is
defined as:
region_hit =
((haddr[0:26] >= rgdn.srtaddr[0:26]) & (haddr[0:26] <= rgdn.endaddr[0:26]))
& rgdn.vld
where
haddr[*]
is the current AHB reference address,
rgdn.srtaddr[*]
and
rgdn.endaddr[*]
are the start
and end addresses, and
rgdn.vld
is the valid bit, all from region descriptor
n
. There are no hardware checks
to verify that
rgdn.endaddr
≥
rgdn.srtaddr
, and the software must properly load appropriate values into
these fields of the region descriptor.
In addition to the algebraic comparison of the AHB reference address versus the region descriptor’s start
and end addresses, the optional process identifier is examined against the region descriptor’s PID and
PIDMASK fields. Using the
hmaster[*]
number to select the appropriate MxPE field from the region
descriptor, a process identifier hit term is formed as:
pid_hit = ~rgdn.mxpe
| ((current_pid[0:7] | rgdn.pidmask[0:7]) == (rgdn.pid[0:7] | rgdn.pidmask[0:7]))
where the
current_pid[*]
is the selected process identifier from the current bus master, and
rgdn.pid[*]
and
rgdn.pidmask[*]
are the appropriate process identifier fields from the region descriptor
n
. For AHB
bus masters that do not output a process identifier, the MPU forces the
pid_hit
term to be asserted.
, the access evaluation macro forms the logical complement
(hit_b)
of the
combined region_hit and pid_hit boolean equations.
17.4.1.2
Access Evaluation—Privilege Violation Determination
While the access evaluation macro is making the region hit determination, the logic is also evaluating if
the current access is allowed by the permissions defined in the region descriptor. Using the AHB
hmaster[*]
and
hprot[1]
(supervisor/user mode) signals, a set of effective permissions (
eff_rgd[r,w,x]
)
is generated from the appropriate fields in the region descriptor. The protection violation logic then
evaluates the access against the effective permissions using the specification shown in
.
Table 17-10. Protection Violation Definition
Description
Inputs
Output
hwrite hprot[0] eff_rgd[r] eff_rgd[w] eff_rgd[x]
Protection
Violation?
inst fetch read
0
0
—
—
0
yes, no x permission
inst fetch read
0
0
—
—
1
no, access is allowed
data read
0
1
0
—
—
yes, no r permission
data read
0
1
1
—
—
no, access is allowed
data write
1
—
—
0
—
yes, no w permission
data write
1
—
—
1
—
no, access is allowed