xref: /linux/arch/arm64/tools/sysreg (revision 66847e0618d7dcaf34d9626e2b1f699fc05a2fef)
1*66847e06SMark Rutland# SPDX-License-Identifier: GPL-2.0-only
2*66847e06SMark Rutland#
3*66847e06SMark Rutland# System register metadata
4*66847e06SMark Rutland
5*66847e06SMark Rutland# Each System register is described by a Sysreg block:
6*66847e06SMark Rutland
7*66847e06SMark Rutland# Sysreg 	<name>	<op0> 	<op1>	<crn>	<crm>	<op2>
8*66847e06SMark Rutland# <field>
9*66847e06SMark Rutland# ...
10*66847e06SMark Rutland# EndSysreg
11*66847e06SMark Rutland
12*66847e06SMark Rutland# Within a Sysreg block, each field can be described as one of:
13*66847e06SMark Rutland
14*66847e06SMark Rutland# Res0	<msb>[:<lsb>]
15*66847e06SMark Rutland
16*66847e06SMark Rutland# Res1	<msb>[:<lsb>]
17*66847e06SMark Rutland
18*66847e06SMark Rutland# Field	<msb>[:<lsb>]	<name>
19*66847e06SMark Rutland
20*66847e06SMark Rutland# Enum	<msb>[:<lsb>]	<name>
21*66847e06SMark Rutland#	<enumval>	<enumname>
22*66847e06SMark Rutland#	...
23*66847e06SMark Rutland# EndEnum
24*66847e06SMark Rutland
25*66847e06SMark Rutland# Alternatively if multiple registers share the same layout then
26*66847e06SMark Rutland# a SysregFields block can be used to describe the shared layout
27*66847e06SMark Rutland
28*66847e06SMark Rutland# SysregFields	<fieldsname>
29*66847e06SMark Rutland# <field>
30*66847e06SMark Rutland# ...
31*66847e06SMark Rutland# EndSysregFields
32*66847e06SMark Rutland
33*66847e06SMark Rutland# and referenced from within the Sysreg:
34*66847e06SMark Rutland
35*66847e06SMark Rutland# Sysreg 	<name>	<op0> 	<op1>	<crn>	<crm>	<op2>
36*66847e06SMark Rutland# Fields	<fieldsname>
37*66847e06SMark Rutland# EndSysreg
38*66847e06SMark Rutland
39*66847e06SMark Rutland# For ID registers we adopt a few conventions for translating the
40*66847e06SMark Rutland# language in the ARM into defines:
41*66847e06SMark Rutland#
42*66847e06SMark Rutland# NI  - Not implemented
43*66847e06SMark Rutland# IMP - Implemented
44*66847e06SMark Rutland#
45*66847e06SMark Rutland# In general it is recommended that new enumeration items be named for the
46*66847e06SMark Rutland# feature that introduces them (eg, FEAT_LS64_ACCDATA introduces enumeration
47*66847e06SMark Rutland# item ACCDATA) though it may be more taseful to do something else.
48*66847e06SMark Rutland
49