AARCHMRS Schema 2.7.4

↚ Home

SystemAccessor oneOf [ ... ]

A SystemAccessor contains the system instruction, encoding and the permissions (permissionset).

The name of the system instruction can be one of the _type properties, the encoding is the unique address to get to this register and permissionset provides a list of conditions under which this instruction has access to this register.

The accessor is unique for the _type and encoding.

definition

Definitions Type Description
access
oneOf [
null
]

The access property defines the logic behind the access of this accessor, for example:

When calling MSR with a given encoding you get access to this register at EL0, otherwise accesses are UNDEFINED

Where in EL0 is a condition, and otherwise is the default access defined by no condition.

oneOf null
condition Traits.HasCondition

The condition which must be true for this accessor to be used.

See definitions.condition in Traits.HasCondition for more information.
encoding
array [
Encoding
]

This defines the encodings for the current register.

An encoding is a unique address that points to the current register, for example:

  • opc1: 0b000
  • opc2: 0b010
  • CRn: 0b1001
  • coproc: 0b1111
  • CRm: 0b1101

When encoding is set to a string it can have the string form that can be read by the system

opc1:0b000 opc2:0b010 CRn:0b1001 coproc:0b1111 CRm:0b1101

The order of the string representation is not important.

name
  • string

Name of the SystemAccessor. For example: A64.MRS

object

Properties Type Description
_meta Meta

Metadata

See Meta for more information.
_type
Enum
Accessors.SystemAccessor
access
See definitions.access for more information.
condition Traits.HasCondition

The condition which must be true for this accessor to be used.

See definitions.condition in Traits.HasCondition for more information.
encoding
See definitions.encoding for more information.
name
See definitions.name for more information.
Additional Properties
Not Allowed
◊ Required
Properties marked with ◊ are required properties.
There is a deprecated schema definition, viewable in the JSONSchema itself but not rendered here.

Schema http://json-schema.org/draft-04/schema#

{
  "definitions": {
    "name": {
      "type": "string",
      "info": [
        "Name of the SystemAccessor. For example: A64.MRS"
      ]
    },
    "condition": {
      "$ref": "../Traits/HasCondition.json#/definitions/condition",
      "info": [
        "The condition which must be true for this accessor to be used."
      ]
    },
    "encoding": {
      "info": [
        "This defines the encodings for the current register.",
        "An encoding is a unique address that points to the current register, for example:",
        [
          " - **opc1**: `0b000`",
          " - **opc2**: `0b010`",
          " - **CRn**: `0b1001`",
          " - **coproc**: `0b1111`",
          " - **CRm**: `0b1101`"
        ],
        "When encoding is set to a string it can have the string form that can be read by the system",
        "> opc1:0b000 opc2:0b010 CRn:0b1001 coproc:0b1111 CRm:0b1101",
        "The order of the string representation is not important."
      ],
      "items": {
        "$ref": "../Encoding.json"
      },
      "type": "array"
    },
    "access": {
      "oneOf": [
        {
          "$ref": "./Permission/SystemAccess.json"
        },
        {
          "type": "null"
        }
      ],
      "info": [
        "The access property defines the logic behind the access of this accessor, for example:",
        "> When calling **MSR** with a given **encoding** you get **access to this register at EL0**, otherwise accesses are **UNDEFINED**",
        "Where `in EL0` is a condition, and otherwise is the default access defined by no condition."
      ]
    }
  },
  "title": "SystemAccessor",
  "oneOf": [
    {
      "deprecated": true,
      "additionalProperties": false,
      "properties": {
        "_meta": {
          "$ref": "../Meta.json",
          "info": [
            "Metadata"
          ]
        },
        "_type": {
          "enum": [
            "Accessors.A64.AT_SYS",
            "Accessors.A64.DC_SYS",
            "Accessors.A64.IC_SYS",
            "Accessors.A64.MRS",
            "Accessors.A64.MSRimmediate",
            "Accessors.A64.MSRregister",
            "Accessors.A64.MSRcapability",
            "Accessors.A64.MRScapability",
            "Accessors.A64.SYS",
            "Accessors.A64.SYSL",
            "Accessors.A64.TLBI_SYS",
            "Accessors.A64.CFP_SYS",
            "Accessors.A64.CSR_SYS",
            "Accessors.A64.CPP_SYS",
            "Accessors.A64.BRB_SYS",
            "Accessors.A64.DVP_SYS",
            "Accessors.A32.MCR",
            "Accessors.A32.MCRR",
            "Accessors.A32.MRC",
            "Accessors.A32.MRRC",
            "Accessors.A32.MRS",
            "Accessors.A32.MRSbanked",
            "Accessors.A32.MSRbanked",
            "Accessors.A32.MSRimmediate",
            "Accessors.A32.MSRregister",
            "Accessors.A32.VMRS",
            "Accessors.A32.VMSR",
            "Accessors.A32.STC",
            "Accessors.A32.LDC"
          ],
          "info": [
            "The possible set of system instructions that can be used to access a register"
          ]
        },
        "condition": {
          "$ref": "../Traits/HasCondition.json#/definitions/condition",
          "info": [
            "The condition which must be true for this accessor to be used."
          ]
        },
        "encoding": {
          "info": [
            "This defines the encodings for the current register.",
            "An encoding is a unique address that points to the current register, for example:",
            [
              " - **opc1**: `0b000`",
              " - **opc2**: `0b010`",
              " - **CRn**: `0b1001`",
              " - **coproc**: `0b1111`",
              " - **CRm**: `0b1101`"
            ],
            "When encoding is set to a string it can have the string form that can be read by the system:",
            "> opc1:0b000 opc2:0b010 CRn:0b1001 coproc:0b1111 CRm:0b1101",
            "The order of the string representation is not important."
          ],
          "items": {
            "oneOf": [
              {
                "items": {
                  "oneOf": [
                    {
                      "$ref": "../Encoding.json"
                    }
                  ]
                },
                "type": "array"
              }
            ]
          }
        },
        "access": {
          "oneOf": [
            {
              "$ref": "./Permission/SystemAccess.json"
            },
            {
              "type": "null"
            }
          ],
          "info": [
            "The access property defines the logic behind the access of this accessor, for example:",
            "> When calling **MSR** with a given **encoding** you get **access to this register at EL0**, otherwise accesses are **UNDEFINED**",
            "Where `in EL0` is a condition, and otherwise is the default access defined by no condition"
          ]
        }
      },
      "required": [
        "encoding",
        "access"
      ],
      "info": [
        "The possible set of system instructions that can be used to access a register"
      ]
    },
    {
      "additionalProperties": false,
      "properties": {
        "_meta": {
          "$ref": "../Meta.json",
          "info": [
            "Metadata"
          ]
        },
        "_type": {
          "enum": [
            "Accessors.SystemAccessor"
          ]
        },
        "name": {
          "$ref": "#/definitions/name"
        },
        "condition": {
          "$ref": "../Traits/HasCondition.json#/definitions/condition",
          "info": [
            "The condition which must be true for this accessor to be used."
          ]
        },
        "encoding": {
          "$ref": "#/definitions/encoding"
        },
        "access": {
          "$ref": "#/definitions/access"
        }
      },
      "required": [
        "encoding",
        "access",
        "name"
      ],
      "type": "object"
    }
  ],
  "$schema": "http://json-schema.org/draft-04/schema#",
  "info": [
    "A SystemAccessor contains the **system instruction**, **encoding** and the **permissions** (permissionset).",
    [
      "The name of the system instruction can be one of the `_type` properties,",
      "the encoding is the unique address to get to this register and",
      "permissionset provides a list of conditions under which this instruction has access to ",
      "this register."
    ],
    "_The accessor is unique for the `_type` and `encoding`_."
  ]
}