docs/devel/hexagon-sys.rst
.. SPDX-License-Identifier: GPL-2.0-or-later
.. _Hexagon-System-arch:
The hexagon architecture has some unique elements which are described here.
When interrupts arrive at a Hexagon DSP core, they are priority-steered to be handled by an eligible hardware thread with the lowest priority.
Each hardware thread has an SSR.ASID field that contains its Address
Space Identifier. This value is catenated with a 32-bit virtual address -
the MMU can then resolve this extended virtual address to a physical address.
The format of a TLB entry is shown below.
.. note:: The Small Core DSPs have a different TLB format which is not yet supported.
.. admonition:: Diagram
.. code:: text
6 5 4 3
3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
|v|g|x|A|A| | |
|a|l|P|1|0| ASID | Virtual Page |
|l|b| | | | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
3 2 1 0
1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0 9 8 7 6 5 4 3 2 1 0
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
| | | | | | | |
|x|w|r|u|Cacheab| Physical Page |S|
| | | | | | | |
+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+
.. list-table:: Page sizes :widths: 25 25 50 :header-rows: 1
glb: if the global bit is set, the ASID is not considered when matching TLBs.
Cacheab: the cacheability attributes of TLBs are not modeled, these bits are ignored.
RWX: read-, write-, execute-, enable bits. Indicates if user programs are permitted to read/write/execute the given page.
U: indicates if user programs can access this page.
The Hexagon system architecture has a feature to assist the guest OS
task scheduler. The guest OS can enable this feature by setting
SCHEDCFG.EN. The BESTWAIT register is programmed by the guest OS
to indicate the priority of the highest priority task waiting to run on a
hardware thread. The reschedule interrupt is triggered when any hardware
thread's priority in STID.PRIO is worse than the BESTWAIT. When
it is triggered, the BESTWAIT.PRIO value is reset to 0x1ff.
The Supervisor Status Register field SSR.XA binds a DSP hardware thread
to one of the eight possible HVX contexts. The guest OS is responsible for
managing this resource.
.. seealso::
``target/hexagon/README`` in the QEMU source tree for more info about Hexagon.