Lines Matching full:translation
1 Translation (XLAT) Tables Library
4 This document describes the design of the translation tables library (version 2)
8 required Translation Lookaside Buffer (TLB) maintenance operations.
12 #. Statically allocate translation tables and populate them (at run-time) based
16 #. Support for generating translation tables pertaining to a different
17 translation regime than the exception level the library code is executing at;
57 translation tables library.
74 library transpose that in a set of translation tables. As a result, the library
75 might create new translation tables, update or split existing ones.
80 the EL1&0 translation regime, the attributes also specify whether the region is
82 in ``xlat_tables_v2.h``. Note that for the EL1&0 translation regime the Execute
85 The granularity controls the translation table level to go down to when mapping
90 - using a single level-2 translation table entry;
91 - using a level-2 intermediate entry to a level-3 translation table (which
94 The first solution potentially requires less translation tables, hence
115 timing, the MPU hardware does not involve memory-resident translation tables.
117 Currently, the MPU library is also limited to MPU translation at EL2 with no
118 MMU translation at other ELs. These limitations, however, are expected to be
121 Translation Context
124 The library can create or modify translation tables pertaining to a different
125 translation regime than the exception level the library code is executing at.
127 create translation tables pertaining to the S-EL1&0 translation regime.
129 This flexibility comes from the use of *translation contexts*. A *translation
131 the status of a set of translation tables for a given translation regime.
133 The library internally allocates a default translation context, which pertains
134 to the translation regime of the current exception level. Additional contexts
137 the default translation context or on an alternative one.
139 To register a translation context, the user must provide the library with the
144 The resulting translation context variable will be called after this name, to
152 * The number of sub-translation tables to allocate.
154 Number of translation tables to statically allocate for this context,
155 excluding the initial lookup level translation table, which is always
157 specify the number of level-2 and level-3 translation tables to pre-allocate
164 translation table : the library will allocate as many entries as is required
171 The default translation context is internally initialized using information
177 - number of sub-translation tables: ``MAX_XLAT_TABLES``;
194 added early on, before the translation tables are created and populated. They
256 #. Initialize translation tables based on the list of mmap regions (using one of
271 successfully added before updating the translation context structure. If the
300 translation tables contexts and mapping/unmapping memory regions. This module
302 the translation tables context affected by them.
318 translation tables and helpers to query memory attributes and to modify them.
327 translation context to work on.
331 From mmap regions to translation tables
334 A translation context contains a list of ``mmap_region_t``, which holds the
340 some point, the library has to convert this information into actual translation
345 of the ``mmap_add*()`` APIs does not affect the translation tables in any way,
347 user calls the ``init_xlat_tables()`` that the translation tables are populated
349 optimization that allows creation of the initial set of translation tables in
353 be added. Changes to the translation tables (as well as the mmap regions list)
360 bound by the level of depth of the translation tables (the Armv8-A architecture
364 number of translation tables created to satisfy the user's request. It will
372 memory than expected. The reason is that all levels of translation are
378 Note that not every translation level allows any type of descriptor. Depending
379 on the page size, levels 0 and 1 of translation may only allow table
380 descriptors. If a block entry could be able to describe a translation, but that
390 entries in the translation tables are checked to ensure consistency. Please
404 that uses the changed translation table entries.
406 A counter-example is the initialization of translation tables. In this case,
409 address translation at reset [#tlb-reset-ref]_. Therefore, the TLBs invalidation
421 that was not mapped in this translation regime and the library will have
422 initialized its corresponding translation table entry to an invalid
424 invalid translation table entry [#tlb-no-invalid-entry]_, this means that this
432 .. [#tlb-reset-ref] See section D4.9 ``Translation Lookaside Buffers (TLBs)``,