| <!-- Copyright (c) 2010-2025 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.7.4</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.7.4</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> |