| <!-- Copyright (c) 2010-2026 Arm Limited or its affiliates. All rights reserved. --> | |
| <!-- This document is Non-confidential and licensed under the BSD 3-clause license. --> | |
| <!DOCTYPE html> | |
| <html> | |
| <head> | |
| <meta charset="utf-8" /> | |
| <meta name="viewport" content="width=device-width, initial-scale=1"> | |
| <meta http-equiv="x-ua-compatible" content="ie=edge"> | |
| <!--FAVICON.ico--> | |
| <meta name="msapplication-TileColor" content="#2b5797"> | |
| <meta name="msapplication-TileImage" content="./img/mstile-144x144.png"> | |
| <link rel="icon" href="./img/favicon.ico"> | |
| <title>RegisterBlock - ARM Machine Readable Schema - 2.9.6</title> | |
| <!--CSS--> | |
| <link rel="stylesheet" type="text/css" href="./css/bootstrap.min.css"> | |
| <link rel="stylesheet" type="text/css" href="./css/schema.css"> | |
| <link rel="stylesheet" type="text/css" href="./css/hljs-github.css"> | |
| </head> | |
| <body> | |
| <div class="container"> | |
| <div class="row heading"> | |
| <div class="col-md-6 pull-left"><a href="./index.html"><img src="./img/arm.svg" class="logo" /></a></div> | |
| <div class="col-md-6 pull-left"><h1>AARCHMRS Schema <small>2.9.6</small></h1></div> | |
| <!--Show the home button--> | |
| <a href="./index.html"><div class="back-to-home">↚ Home</div></a> | |
| </div> | |
| </div> | |
| <div class="container"> | |
| <div class="row"> | |
| <h2> | |
| <span class=" title-type">RegisterBlock</span> | |
| <!-- if oneOf is set, then type is ignored --> | |
| <span class="type">object</span> | |
| </h2> | |
| <div class="static-markdown"><p>The RegisterBlock class captures all the information about an MMIO | |
| register block for an architecture specification or peripheral IP.</p> | |
| <p>It is a contiguous range of the address map of length <strong>size</strong>, where only the | |
| least-significant bits affect the decoding of addresses inside it.</p> | |
| <p>Accesses inside the address range of the RegisterBlock that do not | |
| resolve to a register behave as specified in the <strong>default_access</strong> | |
| field.</p></div> | |
| </div> | |
| <div class="row"> | |
| <div> | |
| <!-- A simple object --> | |
| <h3 class="type">object</h3> | |
| <table class="table table-hover properties"> | |
| <thead> | |
| <tr> | |
| <th class="col-md-4">Properties</th> | |
| <th class="col-md-4">Type</th> | |
| <th class="col-md-4">Description</th> | |
| </tr> | |
| </thead> | |
| <tbody> | |
| <!-- properties --> | |
| <tr id="/properties/_meta" class="property"> | |
| <th class="col-md-4"> | |
| <a href="#/properties/_meta">_meta</a> | |
| </th> | |
| <td class="col-md-4"> | |
| <a href="Meta_schema.html" class="schema_link">Meta</a> | |
| </td> | |
| <td class="col-md-4"> | |
| <div> | |
| See | |
| <a href="Meta_schema.html" class="schema_link">Meta</a> | |
| for more information. | |
| </div> | |
| </td> | |
| </tr> | |
| <tr id="/properties/_type" class="property"> | |
| <th class="col-md-4"> | |
| <a href="#/properties/_type">_type</a> | |
| </th> | |
| <td class="col-md-4"> | |
| </td> | |
| <td class="col-md-4"> | |
| <dl> | |
| <dt>Enum</dt> | |
| <dd> | |
| <code>RegisterBlock</code> | |
| </dd> | |
| </dl> | |
| </td> | |
| </tr> | |
| <tr id="/properties/accessors" class="property"> | |
| <th class="col-md-4"> | |
| <a href="#/properties/accessors">accessors</a> | |
| </th> | |
| <td class="col-md-4"> | |
| <div><span class="type">array</span> [</div> | |
| <div class="items-oneOf"> | |
| <a href="Accessors/BlockAccess_schema.html" class="schema_link">Accessors.BlockAccess</a> | |
| </div> | |
| <div class="items-oneOf"> | |
| <a href="Accessors/WriteOffsetAccessor_schema.html" class="schema_link">Accessors.WriteOffsetAccessor</a> | |
| </div> | |
| <div class="items-oneOf"> | |
| <a href="Accessors/ReadOffsetAccessor_schema.html" class="schema_link">Accessors.ReadOffsetAccessor</a> | |
| </div> | |
| <div class="items-oneOf"> | |
| <a href="Accessors/SystemAccessor_schema.html" class="schema_link">Accessors.SystemAccessor</a> | |
| </div> | |
| <div class="items-oneOf"> | |
| <a href="Accessors/ImplementationDefinedOffsetAccessor_schema.html" class="schema_link">Accessors.ImplementationDefinedOffsetAccessor</a> | |
| </div> | |
| <div class="items-oneOf"> | |
| <a href="Accessors/BlockAccessArray_schema.html" class="schema_link">Accessors.BlockAccessArray</a> | |
| </div> | |
| <div class="items-oneOf"> | |
| <a href="Accessors/WriteOffsetAccessorArray_schema.html" class="schema_link">Accessors.WriteOffsetAccessorArray</a> | |
| </div> | |
| <div class="items-oneOf"> | |
| <a href="Accessors/ReadOffsetAccessorArray_schema.html" class="schema_link">Accessors.ReadOffsetAccessorArray</a> | |
| </div> | |
| <div class="items-oneOf"> | |
| <a href="Accessors/SystemAccessorArray_schema.html" class="schema_link">Accessors.SystemAccessorArray</a> | |
| </div> | |
| <div class="items-oneOf"> | |
| <a href="Accessors/ImplementationDefinedOffsetAccessorArray_schema.html" class="schema_link">Accessors.ImplementationDefinedOffsetAccessorArray</a> | |
| </div> | |
| <div class="items-oneOf"> | |
| <a href="Accessors/Getter_schema.html" class="schema_link">Accessors.Getter</a> | |
| </div> | |
| <div class="items-oneOf"> | |
| <a href="Accessors/Setter_schema.html" class="schema_link">Accessors.Setter</a> | |
| </div> | |
| <div class="items-oneOf"> | |
| <a href="Accessors/WriteFunction_schema.html" class="schema_link">Accessors.WriteFunction</a> | |
| </div> | |
| <div class="items-oneOf"> | |
| <a href="Accessors/ReadFunction_schema.html" class="schema_link">Accessors.ReadFunction</a> | |
| </div> | |
| <div>]</div> | |
| </td> | |
| <td class="col-md-4"> | |
| <div><p>Defines the access behaviors for each of the Registers and RegisterBlocks present in the <code>blocks</code> property.</p> | |
| <p>Note that the contents of <code>blocks</code> should not contain any register accessors. It can, however, contain field level access information.</p></div> | |
| </td> | |
| </tr> | |
| <tr id="/properties/blocks" class="property"> | |
| <th class="col-md-4"> | |
| <a href="#/properties/blocks">blocks</a> | |
| </th> | |
| <td class="col-md-4"> | |
| <div><span class="type">array</span> [</div> | |
| <div class="items-anyOf"> | |
| <a href="Register_schema.html" class="schema_link">Register</a> | |
| </div> | |
| <div class="items-anyOf"> | |
| <a href="RegisterArray_schema.html" class="schema_link">RegisterArray</a> | |
| </div> | |
| <div class="items-anyOf"> | |
| <a href="" class="schema_link">#</a> | |
| </div> | |
| <div>]</div> | |
| </td> | |
| <td class="col-md-4"> | |
| <div><p>Array of all the Registers and RegisterBlocks in this RegisterBlock.</p> | |
| <p>All the names within <code>blocks</code> must be unique. For example:</p> | |
| <p>BLK0.BLK1 and BLK1.BLK1 would be valid as BLK1 does not appear twice in BLK0's context, but BLK0.BLK1 and BLK0.BLK1 would be invalid.</p></div> | |
| </td> | |
| </tr> | |
| <tr id="/properties/condition" class="property"> | |
| <th class="col-md-4"> | |
| <a href="#/properties/condition">condition</a> | |
| </th> | |
| <td class="col-md-4"> | |
| <a href="Traits/HasCondition_schema.html#/definitions/condition" class="schema_link">Traits.HasCondition</a> | |
| </td> | |
| <td class="col-md-4"> | |
| <div><p>The condition that must be true for this registerblock to be present.</p> | |
| <p>Certain registerblocks are only present based on the value of this property | |
| being evaluated to true. If the value is evaluated false see the <code>default_access</code> property.</p></div> | |
| <div> | |
| See | |
| <a href="Traits/HasCondition_schema.html#/definitions/condition" class="schema_link">definitions.condition</a> in | |
| <a href="Traits/HasCondition_schema.html#/definitions/condition" class="schema_link">Traits.HasCondition</a> | |
| for more information. | |
| </div> | |
| </td> | |
| </tr> | |
| <tr id="/properties/default_access" class="property"> | |
| <th class="col-md-4"> | |
| <a href="#/properties/default_access">default_access<sup>◊</sup></a> | |
| </th> | |
| <td class="col-md-4"> | |
| <div><span class="type Xof">oneOf</span> [</div> | |
| <div class="items-oneOf"> | |
| <a href="Accessors/Permission/AccessTypes/Memory/ReadWriteAccess_schema.html" class="schema_link">Accessors.Permission.AccessTypes.Memory.ReadWriteAccess</a> | |
| </div> | |
| <div class="items-oneOf"> | |
| <a href="Accessors/Permission/AccessTypes/Memory/ImplementationDefined_schema.html" class="schema_link">Accessors.Permission.AccessTypes.Memory.ImplementationDefined</a> | |
| </div> | |
| <div>]</div> | |
| </td> | |
| <td class="col-md-4"> | |
| <div><p>Behaviour of accesses that are inside the register block, but | |
| do not resolve to a register.</p></div> | |
| <div> | |
| <!-- Can be one of following objects --> | |
| <div class="item-type"> | |
| <span><span class="type Xof">oneOf</span> <a class="title-type" href="Accessors/Permission/AccessTypes/Memory/ReadWriteAccess_schema.html">Accessors.Permission.AccessTypes.Memory.ReadWriteAccess</a></span> | |
| </div> | |
| <div class="item-type"> | |
| <span><span class="type Xof">oneOf</span> <a class="title-type" href="Accessors/Permission/AccessTypes/Memory/ImplementationDefined_schema.html">Accessors.Permission.AccessTypes.Memory.ImplementationDefined</a></span> | |
| </div> | |
| </div> | |
| </td> | |
| </tr> | |
| <tr id="/properties/mapset" class="property"> | |
| <th class="col-md-4"> | |
| <a href="#/properties/mapset">mapset</a> | |
| </th> | |
| <td class="col-md-4"> | |
| <a href="Mapset_schema.html" class="schema_link">Mapset</a> | |
| </td> | |
| <td class="col-md-4"> | |
| <div><p>Architecturally registers may be mapped to other registers or register blocks. <code>mapset</code> provides an array of unique mappings for this <code>RegisterBlock</code>.</p> | |
| <p>Only <code>RegisterBlockMapping</code> is allowed in this Mapset.</p></div> | |
| <div> | |
| See | |
| <a href="Mapset_schema.html" class="schema_link">Mapset</a> | |
| for more information. | |
| </div> | |
| </td> | |
| </tr> | |
| <tr id="/properties/name" class="property"> | |
| <th class="col-md-4"> | |
| <a href="#/properties/name">name<sup>◊</sup></a> | |
| </th> | |
| <td class="col-md-4"> | |
| <ul class="inline list-type"> | |
| <li class="inline type">string</li> | |
| </ul> | |
| </td> | |
| <td class="col-md-4"> | |
| <div><p>The canonical name of the register block. Should be globally unique.</p></div> | |
| </td> | |
| </tr> | |
| <tr id="/properties/purpose" class="property"> | |
| <th class="col-md-4"> | |
| <a href="#/properties/purpose">purpose</a> | |
| </th> | |
| <td class="col-md-4"> | |
| <a href="Text_schema.html" class="schema_link">Text</a> | |
| </td> | |
| <td class="col-md-4"> | |
| <div><p>A short human-readable description of purpose of this register block.</p></div> | |
| <div> | |
| See | |
| <a href="Text_schema.html" class="schema_link">Text</a> | |
| for more information. | |
| </div> | |
| </td> | |
| </tr> | |
| <tr id="/properties/references" class="property"> | |
| <th class="col-md-4"> | |
| <a href="#/properties/references">references</a> | |
| </th> | |
| <td class="col-md-4"> | |
| <div> | |
| <span class="type">object</span> { | |
| <code title="Regex">/.+/</code> : | |
| </div> | |
| <div class="items-oneOf"> | |
| <div><span class="type Xof">oneOf</span> [</div> | |
| <div class="items-oneOf"> | |
| <a href="References/References_schema.html" class="schema_link">References.References</a> | |
| </div> | |
| <div class="items-oneOf"> | |
| <a href="References/Reference_schema.html" class="schema_link">References.Reference</a> | |
| </div> | |
| <div>]</div> | |
| </div> | |
| <div>}</div> | |
| </td> | |
| <td class="col-md-4"> | |
| <div><p>A mapping between aliases and the Registers they are referring to. Mostly used for keeping track of expanded RegisterArrays by their array name.</p></div> | |
| <h5>Examples</h5> | |
| <div> | |
| <pre class="schema-json"><code class="language-json">{ | |
| "REGA1_EL1": { | |
| "_type": "References.References", | |
| "indexes": { | |
| "0": { | |
| "_type": "References.Reference", | |
| "ref": "REGA10_EL1" | |
| }, | |
| "3": { | |
| "_type": "References.Reference", | |
| "ref": "REGA13_EL1" | |
| } | |
| } | |
| }, | |
| "REG_EL1": { | |
| "_type": "References.Reference", | |
| "ref": "EL1REG" | |
| } | |
| }</code></pre> | |
| </div> | |
| </td> | |
| </tr> | |
| <tr id="/properties/size" class="property"> | |
| <th class="col-md-4"> | |
| <a href="#/properties/size">size<sup>◊</sup></a> | |
| </th> | |
| <td class="col-md-4"> | |
| <ul class="inline list-type"> | |
| <li class="inline type">string</li> | |
| </ul> | |
| </td> | |
| <td class="col-md-4"> | |
| <div><p>Size of the address space in bytes as a hex string or equation.</p> | |
| <p>Example strings are: <code>0x0F</code>, <code>0x0F + (4 * n)</code> or <code>GIC + 0xFF</code>.</p></div> | |
| </td> | |
| </tr> | |
| <tr id="/properties/title" class="property"> | |
| <th class="col-md-4"> | |
| <a href="#/properties/title">title</a> | |
| </th> | |
| <td class="col-md-4"> | |
| <ul class="inline list-type"> | |
| <li class="inline type">string</li> | |
| <li class="inline type">null</li> | |
| </ul> | |
| </td> | |
| <td class="col-md-4"> | |
| <div><p>The display name of the register block.</p></div> | |
| </td> | |
| </tr> | |
| <!-- patternProperties --> | |
| <!-- object property attributes --> | |
| <tr> | |
| <td colspan="3"> | |
| <dl> | |
| <dt>Additional Properties</dt> | |
| <dd>Not Allowed</dd> | |
| </dl> | |
| </td> | |
| </tr> | |
| <tr> | |
| <td colspan="3"> | |
| <dl> | |
| <dt>◊ Required</dt> | |
| <dd>Properties marked with ◊ are required properties.</dd> | |
| </dl> | |
| </td> | |
| </tr> | |
| </tbody> | |
| </table> | |
| <!-- array, and it has described items --> | |
| </div> | |
| <h5>Examples</h5> | |
| <div> | |
| <pre class="schema-json"><code class="language-json">{ | |
| "_type": "RegisterBlock", | |
| "name": "RB", | |
| "size": "64000", | |
| "default_access": { | |
| "_type": "Accessors.Permission.AccessTypes.Memory.ReadWriteAccess", | |
| "read": "RAZ", | |
| "write": "WI" | |
| }, | |
| "accessors": [ | |
| { | |
| "_type": "Accessors.BlockAccess", | |
| "condition": { | |
| "_type": "AST.Function", | |
| "arguments": [ | |
| { | |
| "_type": "AST.Identifier", | |
| "value": "S" | |
| } | |
| ], | |
| "name": "IsFeatureImplemented" | |
| }, | |
| "references": { | |
| "_type": "AST.Identifier", | |
| "value": "S" | |
| }, | |
| "offset": [ | |
| { | |
| "_type": "AST.Integer", | |
| "value": 0 | |
| } | |
| ], | |
| "access": { | |
| "_type": "Accessors.Permission.MemoryAccess", | |
| "access": { | |
| "_type": "Accessors.Permission.AccessTypes.Memory.ReadWriteAccess", | |
| "read": "R", | |
| "write": "W" | |
| } | |
| } | |
| }, | |
| { | |
| "_type": "Accessors.BlockAccess", | |
| "references": { | |
| "_type": "AST.Identifier", | |
| "value": "NS" | |
| }, | |
| "offset": [ | |
| { | |
| "_type": "AST.Integer", | |
| "value": 32000 | |
| } | |
| ], | |
| "access": { | |
| "_type": "Accessors.Permission.MemoryAccess", | |
| "access": { | |
| "_type": "Accessors.Permission.AccessTypes.Memory.ReadWriteAccess", | |
| "read": "R", | |
| "write": "W" | |
| } | |
| } | |
| } | |
| ], | |
| "mapset": [ | |
| { | |
| "_type": "Mapping.Map", | |
| "maps": [ | |
| { | |
| "_type": "AST.Identifier", | |
| "value": "REG_S" | |
| }, | |
| { | |
| "_type": "AST.SquareOp", | |
| "arguments": [ | |
| { | |
| "_type": "AST.Slice", | |
| "left": { | |
| "_type": "AST.Integer", | |
| "value": 31 | |
| }, | |
| "right": { | |
| "_type": "AST.Integer", | |
| "value": 0 | |
| } | |
| } | |
| ], | |
| "var": { | |
| "_type": "Types.RegisterType", | |
| "value": { | |
| "instance": null, | |
| "name": "REG", | |
| "slices": null, | |
| "state": "AArch64" | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| ], | |
| "blocks": [ | |
| { | |
| "_type": "RegisterBlock", | |
| "condition": { | |
| "_type": "AST.Function", | |
| "arguments": [ | |
| { | |
| "_type": "AST.Identifier", | |
| "value": "S" | |
| } | |
| ], | |
| "name": "IsFeatureImplemented" | |
| }, | |
| "size": "32000", | |
| "name": "S", | |
| "default_access": "RAZ/WI", | |
| "accessors": [ | |
| { | |
| "_type": "Accessors.ReadOffsetAccessor", | |
| "offset": [ | |
| { | |
| "_type": "AST.Integer", | |
| "value": 0 | |
| } | |
| ], | |
| "access": { | |
| "_type": "Accessors.Permission.SystemAccess", | |
| "access": { | |
| "_type": "AST.Return", | |
| "val": { | |
| "_type": "AST.Identifier", | |
| "value": "REG_S" | |
| } | |
| } | |
| } | |
| }, | |
| { | |
| "_type": "Accessors.WriteOffsetAccessor", | |
| "offset": [ | |
| { | |
| "_type": "AST.Integer", | |
| "value": 0 | |
| } | |
| ], | |
| "access": { | |
| "_type": "Accessors.Permission.SystemAccess", | |
| "access": { | |
| "_type": "AST.Assignment", | |
| "val": { | |
| "_type": "AST.Identifier", | |
| "value": "value" | |
| }, | |
| "var": { | |
| "_type": "AST.Identifier", | |
| "value": "REG_S" | |
| } | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| { | |
| "_type": "RegisterBlock", | |
| "size": "32000", | |
| "name": "NS", | |
| "default_access": "RAZ/WI", | |
| "accessors": [ | |
| { | |
| "_type": "Accessors.ReadOffsetAccessor", | |
| "offset": [ | |
| { | |
| "_type": "AST.Integer", | |
| "value": 0 | |
| } | |
| ], | |
| "access": { | |
| "_type": "Accessors.Permission.SystemAccess", | |
| "access": { | |
| "_type": "AST.Return", | |
| "val": { | |
| "_type": "AST.Identifier", | |
| "value": "REG_NS" | |
| } | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| { | |
| "_type": "Register", | |
| "purpose": "Being an example", | |
| "name": "REG", | |
| "state": null, | |
| "instances": { | |
| "_type": "Instances.Instanceset", | |
| "values": [ | |
| { | |
| "_type": "Instances.Instance", | |
| "instance": "REG_NS" | |
| }, | |
| { | |
| "_type": "Instances.Instance", | |
| "condition": { | |
| "_type": "AST.Function", | |
| "arguments": [ | |
| { | |
| "_type": "AST.Identifier", | |
| "value": "S" | |
| } | |
| ], | |
| "name": "IsFeatureImplemented" | |
| }, | |
| "instance": "REG_S" | |
| } | |
| ] | |
| }, | |
| "fieldsets": [ | |
| { | |
| "_type": "Fieldset", | |
| "width": 32, | |
| "values": [ | |
| { | |
| "_type": "Fields.Field", | |
| "name": "F1", | |
| "rangeset": [ | |
| { | |
| "_type": "Range", | |
| "start": 0, | |
| "width": 32 | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| ] | |
| }</code></pre> | |
| </div> | |
| </div> | |
| <div class="row schema"> | |
| <h3>Schema <small><a href="http://json-schema.org/draft-04/schema#">http://json-schema.org/draft-04/schema#</a></small></h3> | |
| <pre class="schema-json"><code class="language-json">{ | |
| "info": [ | |
| [ | |
| "The RegisterBlock class captures all the information about an MMIO", | |
| "register block for an architecture specification or peripheral IP." | |
| ], | |
| [ | |
| "It is a contiguous range of the address map of length **size**, where only the", | |
| "least-significant bits affect the decoding of addresses inside it." | |
| ], | |
| [ | |
| "Accesses inside the address range of the RegisterBlock that do not", | |
| "resolve to a register behave as specified in the **default_access**", | |
| "field." | |
| ] | |
| ], | |
| "examples": [ | |
| { | |
| "_type": "RegisterBlock", | |
| "name": "RB", | |
| "size": "64000", | |
| "default_access": { | |
| "_type": "Accessors.Permission.AccessTypes.Memory.ReadWriteAccess", | |
| "read": "RAZ", | |
| "write": "WI" | |
| }, | |
| "accessors": [ | |
| { | |
| "_type": "Accessors.BlockAccess", | |
| "condition": { | |
| "_type": "AST.Function", | |
| "arguments": [ | |
| { | |
| "_type": "AST.Identifier", | |
| "value": "S" | |
| } | |
| ], | |
| "name": "IsFeatureImplemented" | |
| }, | |
| "references": { | |
| "_type": "AST.Identifier", | |
| "value": "S" | |
| }, | |
| "offset": [ | |
| { | |
| "_type": "AST.Integer", | |
| "value": 0 | |
| } | |
| ], | |
| "access": { | |
| "_type": "Accessors.Permission.MemoryAccess", | |
| "access": { | |
| "_type": "Accessors.Permission.AccessTypes.Memory.ReadWriteAccess", | |
| "read": "R", | |
| "write": "W" | |
| } | |
| } | |
| }, | |
| { | |
| "_type": "Accessors.BlockAccess", | |
| "references": { | |
| "_type": "AST.Identifier", | |
| "value": "NS" | |
| }, | |
| "offset": [ | |
| { | |
| "_type": "AST.Integer", | |
| "value": 32000 | |
| } | |
| ], | |
| "access": { | |
| "_type": "Accessors.Permission.MemoryAccess", | |
| "access": { | |
| "_type": "Accessors.Permission.AccessTypes.Memory.ReadWriteAccess", | |
| "read": "R", | |
| "write": "W" | |
| } | |
| } | |
| } | |
| ], | |
| "mapset": [ | |
| { | |
| "_type": "Mapping.Map", | |
| "maps": [ | |
| { | |
| "_type": "AST.Identifier", | |
| "value": "REG_S" | |
| }, | |
| { | |
| "_type": "AST.SquareOp", | |
| "arguments": [ | |
| { | |
| "_type": "AST.Slice", | |
| "left": { | |
| "_type": "AST.Integer", | |
| "value": 31 | |
| }, | |
| "right": { | |
| "_type": "AST.Integer", | |
| "value": 0 | |
| } | |
| } | |
| ], | |
| "var": { | |
| "_type": "Types.RegisterType", | |
| "value": { | |
| "instance": null, | |
| "name": "REG", | |
| "slices": null, | |
| "state": "AArch64" | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| ], | |
| "blocks": [ | |
| { | |
| "_type": "RegisterBlock", | |
| "condition": { | |
| "_type": "AST.Function", | |
| "arguments": [ | |
| { | |
| "_type": "AST.Identifier", | |
| "value": "S" | |
| } | |
| ], | |
| "name": "IsFeatureImplemented" | |
| }, | |
| "size": "32000", | |
| "name": "S", | |
| "default_access": "RAZ/WI", | |
| "accessors": [ | |
| { | |
| "_type": "Accessors.ReadOffsetAccessor", | |
| "offset": [ | |
| { | |
| "_type": "AST.Integer", | |
| "value": 0 | |
| } | |
| ], | |
| "access": { | |
| "_type": "Accessors.Permission.SystemAccess", | |
| "access": { | |
| "_type": "AST.Return", | |
| "val": { | |
| "_type": "AST.Identifier", | |
| "value": "REG_S" | |
| } | |
| } | |
| } | |
| }, | |
| { | |
| "_type": "Accessors.WriteOffsetAccessor", | |
| "offset": [ | |
| { | |
| "_type": "AST.Integer", | |
| "value": 0 | |
| } | |
| ], | |
| "access": { | |
| "_type": "Accessors.Permission.SystemAccess", | |
| "access": { | |
| "_type": "AST.Assignment", | |
| "val": { | |
| "_type": "AST.Identifier", | |
| "value": "value" | |
| }, | |
| "var": { | |
| "_type": "AST.Identifier", | |
| "value": "REG_S" | |
| } | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| { | |
| "_type": "RegisterBlock", | |
| "size": "32000", | |
| "name": "NS", | |
| "default_access": "RAZ/WI", | |
| "accessors": [ | |
| { | |
| "_type": "Accessors.ReadOffsetAccessor", | |
| "offset": [ | |
| { | |
| "_type": "AST.Integer", | |
| "value": 0 | |
| } | |
| ], | |
| "access": { | |
| "_type": "Accessors.Permission.SystemAccess", | |
| "access": { | |
| "_type": "AST.Return", | |
| "val": { | |
| "_type": "AST.Identifier", | |
| "value": "REG_NS" | |
| } | |
| } | |
| } | |
| } | |
| ] | |
| }, | |
| { | |
| "_type": "Register", | |
| "purpose": "Being an example", | |
| "name": "REG", | |
| "state": null, | |
| "instances": { | |
| "_type": "Instances.Instanceset", | |
| "values": [ | |
| { | |
| "_type": "Instances.Instance", | |
| "instance": "REG_NS" | |
| }, | |
| { | |
| "_type": "Instances.Instance", | |
| "condition": { | |
| "_type": "AST.Function", | |
| "arguments": [ | |
| { | |
| "_type": "AST.Identifier", | |
| "value": "S" | |
| } | |
| ], | |
| "name": "IsFeatureImplemented" | |
| }, | |
| "instance": "REG_S" | |
| } | |
| ] | |
| }, | |
| "fieldsets": [ | |
| { | |
| "_type": "Fieldset", | |
| "width": 32, | |
| "values": [ | |
| { | |
| "_type": "Fields.Field", | |
| "name": "F1", | |
| "rangeset": [ | |
| { | |
| "_type": "Range", | |
| "start": 0, | |
| "width": 32 | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| ] | |
| } | |
| ], | |
| "properties": { | |
| "_meta": { | |
| "$ref": "Meta.json" | |
| }, | |
| "_type": { | |
| "enum": [ | |
| "RegisterBlock" | |
| ] | |
| }, | |
| "accessors": { | |
| "info": [ | |
| "Defines the access behaviors for each of the Registers and RegisterBlocks present in the `blocks` property.", | |
| "Note that the contents of `blocks` should not contain any register accessors. It can, however, contain field level access information." | |
| ], | |
| "items": { | |
| "oneOf": [ | |
| { | |
| "$ref": "Accessors/BlockAccess.json" | |
| }, | |
| { | |
| "$ref": "Accessors/WriteOffsetAccessor.json" | |
| }, | |
| { | |
| "$ref": "Accessors/ReadOffsetAccessor.json" | |
| }, | |
| { | |
| "$ref": "Accessors/SystemAccessor.json" | |
| }, | |
| { | |
| "$ref": "Accessors/ImplementationDefinedOffsetAccessor.json" | |
| }, | |
| { | |
| "$ref": "Accessors/BlockAccessArray.json" | |
| }, | |
| { | |
| "$ref": "Accessors/WriteOffsetAccessorArray.json" | |
| }, | |
| { | |
| "$ref": "Accessors/ReadOffsetAccessorArray.json" | |
| }, | |
| { | |
| "$ref": "Accessors/SystemAccessorArray.json" | |
| }, | |
| { | |
| "$ref": "Accessors/ImplementationDefinedOffsetAccessorArray.json" | |
| }, | |
| { | |
| "$ref": "Accessors/Getter.json" | |
| }, | |
| { | |
| "$ref": "Accessors/Setter.json" | |
| }, | |
| { | |
| "$ref": "Accessors/WriteFunction.json" | |
| }, | |
| { | |
| "$ref": "Accessors/ReadFunction.json" | |
| } | |
| ] | |
| }, | |
| "type": "array" | |
| }, | |
| "blocks": { | |
| "info": [ | |
| "Array of all the Registers and RegisterBlocks in this RegisterBlock.", | |
| "All the names within `blocks` must be unique. For example:", | |
| "BLK0.BLK1 and BLK1.BLK1 would be valid as BLK1 does not appear twice in BLK0's context, but BLK0.BLK1 and BLK0.BLK1 would be invalid." | |
| ], | |
| "type": "array", | |
| "additionalItems": false, | |
| "items": { | |
| "anyOf": [ | |
| { | |
| "$ref": "Register.json" | |
| }, | |
| { | |
| "$ref": "RegisterArray.json" | |
| }, | |
| { | |
| "$ref": "#" | |
| } | |
| ] | |
| } | |
| }, | |
| "default_access": { | |
| "info": [ | |
| [ | |
| "Behaviour of accesses that are inside the register block, but", | |
| "do not resolve to a register." | |
| ] | |
| ], | |
| "oneOf": [ | |
| { | |
| "$ref": "Accessors/Permission/AccessTypes/Memory/ReadWriteAccess.json" | |
| }, | |
| { | |
| "$ref": "Accessors/Permission/AccessTypes/Memory/ImplementationDefined.json" | |
| } | |
| ] | |
| }, | |
| "name": { | |
| "info": [ | |
| "The canonical name of the register block. Should be globally unique." | |
| ], | |
| "type": "string" | |
| }, | |
| "purpose": { | |
| "$ref": "Text.json", | |
| "info": [ | |
| "A short human-readable description of purpose of this register block." | |
| ] | |
| }, | |
| "size": { | |
| "info": [ | |
| "Size of the address space in bytes as a hex string or equation.", | |
| "Example strings are: `0x0F`, `0x0F + (4 * n)` or `GIC + 0xFF`." | |
| ], | |
| "type": "string" | |
| }, | |
| "title": { | |
| "info": [ | |
| "The display name of the register block." | |
| ], | |
| "type": [ | |
| "string", | |
| "null" | |
| ] | |
| }, | |
| "condition": { | |
| "$ref": "Traits/HasCondition.json#/definitions/condition", | |
| "info": [ | |
| "The condition that must be true for this registerblock to be present.", | |
| [ | |
| "Certain registerblocks are only present based on the value of this property", | |
| "being evaluated to true. If the value is evaluated false see the `default_access` property." | |
| ] | |
| ] | |
| }, | |
| "mapset": { | |
| "info": [ | |
| "Architecturally registers may be mapped to other registers or register blocks. `mapset` provides an array of unique mappings for this `RegisterBlock`.", | |
| "Only `RegisterBlockMapping` is allowed in this Mapset." | |
| ], | |
| "$ref": "Mapset.json" | |
| }, | |
| "references": { | |
| "info": [ | |
| "A mapping between aliases and the Registers they are referring to. Mostly used for keeping track of expanded RegisterArrays by their array name." | |
| ], | |
| "examples": [ | |
| { | |
| "REGA1_EL1": { | |
| "_type": "References.References", | |
| "indexes": { | |
| "0": { | |
| "_type": "References.Reference", | |
| "ref": "REGA10_EL1" | |
| }, | |
| "3": { | |
| "_type": "References.Reference", | |
| "ref": "REGA13_EL1" | |
| } | |
| } | |
| }, | |
| "REG_EL1": { | |
| "_type": "References.Reference", | |
| "ref": "EL1REG" | |
| } | |
| } | |
| ], | |
| "type": "object", | |
| "propertyNames": { | |
| "$ref": "Types/Variable.json#/definitions/name_part_regex" | |
| }, | |
| "patternProperties": { | |
| ".+": { | |
| "oneOf": [ | |
| { | |
| "$ref": "References/References.json" | |
| }, | |
| { | |
| "$ref": "References/Reference.json" | |
| } | |
| ] | |
| } | |
| } | |
| } | |
| }, | |
| "required": [ | |
| "name", | |
| "size", | |
| "default_access" | |
| ], | |
| "title": "RegisterBlock", | |
| "type": "object", | |
| "$schema": "http://json-schema.org/draft-04/schema#", | |
| "additionalProperties": false | |
| }</code></pre> | |
| </div> | |
| </div> | |
| <div class="container"> | |
| <div class="footer text-right"> | |
| Copyright © 2025 ARM Limited or its affiliates. All rights reserved. | |
| </div> | |
| </div> | |
| <script src="./js/highlight/highlight.js"></script> | |
| <script src="./js/highlight/languages/json.min.js"></script> | |
| <script src="./js/highlight/languages/django.min.js"></script> <!-- JINJA2 --> | |
| <script src="./js/highlight/languages/yaml.min.js"></script> | |
| <script src="./js/highlight/languages/isa.js"></script> | |
| <script type="text/javascript"> | |
| window.onload = function() { | |
| hljs.configure({ | |
| cssSelector: ".schema-json code, .includes code, pre code", | |
| noHighlightRe: /^(no-?highlight|nohl)$/i, | |
| }); | |
| hljs.highlightAll() | |
| }; | |
| </script> | |
| </body> | |
| </html> |