This data structure encapsulates all the information about a register in the Arm architecture.
| Properties | Type | Description | |||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| _meta | Meta |
See
Meta
for more information.
|
|||||||||||||||
| _type |
|
||||||||||||||||
| access_text | Text |
Any information architecturally describing the access should be placed here.
See
Text
for more information.
|
|||||||||||||||
| accessors |
array [
]
|
This property holds an array of accessors defining how to access this register.
A register can have multiple accessors, however each accessor must be unique. For example, a system accessor is unique by name, encoding and instance. Where as Accessors.MemoryMapped and Accessors.ExternalDebug are unique by frame (because two memory mapped registers can have the same offset as long as they are in a unique frame). |
|||||||||||||||
| condition | Traits.HasCondition |
The condition which must be true for this register is present. When false the default access behavior is defined by the architecture.
See
definitions.condition in
Traits.HasCondition
for more information.
|
|||||||||||||||
| configuration | Text |
This field is used to represent the architectural configuration of the register. For example:
See
Text
for more information.
|
|||||||||||||||
| fieldsets◊ |
array [
]
|
||||||||||||||||
| groups |
|
The groups of which the register is a member. If
Default
|
|||||||||||||||
| instances |
oneOf [
boolean
]
|
The list of register instances that this Register represents, or a boolean where True means the Registers instances is the same as its name. Which is identical to having one Instance with the same name as the register. False is identical to an empty Instanceset.
oneOf Instances.Instanceset
oneOf
Default
|
|||||||||||||||
| mapset | Mapset |
Architecturally registers may be mapped to other registers.
See
Mapset
for more information.
|
|||||||||||||||
| name◊ |
|
The canonical name of the register (must be unique within the set of registers).
|
|||||||||||||||
| purpose◊ | Text |
A short description about the purpose of this register.
See
Text
for more information.
|
|||||||||||||||
| reset |
oneOf [
null
]
|
An overall reset value of this register. Field level reset will overwrite this property. When the property is set to null, no reset (or default architectural reset) applies.
oneOf RegisterReset
oneOf null
Default
|
|||||||||||||||
| state◊ |
This property determines what state a register is used in.
|
||||||||||||||||
| title |
|
The display name of the register. If title is not set, a renderer should use name as the display name. Note that the title should be treated as an extension of Examples
|
|||||||||||||||
|
|||||||||||||||||
|
|||||||||||||||||
{
"info": [
"This data structure encapsulates all the information about a register in the Arm architecture."
],
"properties": {
"_meta": {
"$ref": "Meta.json"
},
"_type": {
"enum": [
"Register"
]
},
"access_text": {
"$ref": "Text.json",
"info": [
"Any information architecturally describing the access should be placed here."
]
},
"accessors": {
"info": [
"This property holds an array of accessors defining how to access this register.",
[
" - $(Accessors.SystemAccessor): Provides a list of system instruction that can access this register.",
" - $(Accessors.MemoryMapped): This accessor is used to define a memory address to access this register.",
" - $(Accessors.ExternalDebug): This is used for debug registers."
],
"A register can have multiple accessors, however each accessor must be unique.",
[
"For example, a system accessor is unique by name, encoding and instance. Where as $(Accessors.MemoryMapped) ",
"and $(Accessors.ExternalDebug) are unique by frame (because two memory mapped registers can have the same ",
"offset as long as they are in a unique frame)."
]
],
"items": {
"oneOf": [
{
"$ref": "Accessors/SystemAccessor.json"
},
{
"$ref": "Accessors/SystemAccessorArray.json"
},
{
"$ref": "Accessors/MemoryMapped.json"
},
{
"$ref": "Accessors/ExternalDebug.json"
},
{
"$ref": "Accessors/WriteOffsetAccessor.json"
},
{
"$ref": "Accessors/ReadOffsetAccessor.json"
},
{
"$ref": "Accessors/Getter.json"
},
{
"$ref": "Accessors/Setter.json"
},
{
"$ref": "Accessors/WriteFunction.json"
},
{
"$ref": "Accessors/ReadFunction.json"
}
]
},
"type": "array"
},
"condition": {
"$ref": "Traits/HasCondition.json#/definitions/condition",
"info": [
"The condition which must be true for this register is present.",
"When false the default access behavior is defined by the architecture."
]
},
"configuration": {
"$ref": "Text.json",
"info": [
"This field is used to represent the architectural configuration of the register. For example:",
"> Under certain conditions a write to ICC\\_SGI1R\\_EL1 can generate Group 0 interrupts, see Forwarding an SGI to a target PE."
]
},
"fieldsets": {
"info": [
"An array of $(Fieldset) which defines the layout of the register.",
[
"Multiple $(Fieldset) are used to represent different conditional layouts. All the ",
"conditions in the $(Fieldset) must be mutually exclusive."
]
],
"items": {
"oneOf": [
{
"$ref": "Fieldset.json"
},
{
"$ref": "StructureReference.json"
}
]
},
"type": "array"
},
"groups": {
"info": [
"The groups of which the register is a member.",
"If `groups` is an object, then the primary group is required. The secondary groups (if any) are then listed as an array."
],
"properties": {
"primary": {
"info": [
"The primary group is the main group a register belongs to, one register can only have one primary group."
],
"type": [
"string",
"null"
]
},
"secondary": {
"info": [
"A register can have many secondary groups."
],
"items": {
"type": "string"
},
"type": [
"array",
"null"
]
}
},
"required": [
"primary"
],
"type": [
"object",
"null"
],
"default": null
},
"instances": {
"info": [
"The list of register instances that this Register represents, or a boolean where True means the Registers instances is the same as its name. Which is identical to having one Instance with the same name as the register.",
"False is identical to an empty Instanceset."
],
"oneOf": [
{
"$ref": "Instances/Instanceset.json"
},
{
"type": "boolean"
}
],
"default": true
},
"mapset": {
"info": [
"Architecturally registers may be mapped to other registers. `mapset` provides an array of unique mappings for this register."
],
"$ref": "Mapset.json"
},
"name": {
"info": [
"The canonical name of the register (must be unique within the set of registers).",
"> VBAR_EL3"
],
"type": "string"
},
"purpose": {
"$ref": "Text.json",
"info": [
"A short description about the purpose of this register.",
"> Holds the vector base address for any exception that is taken to EL3."
]
},
"reset": {
"info": [
"An overall reset value of this register. Field level reset will overwrite this property.",
"When the property is set to null, no reset (or default architectural reset) applies."
],
"oneOf": [
{
"$ref": "RegisterReset.json"
},
{
"type": "null"
}
],
"default": null,
"deprecated": true
},
"state": {
"info": [
"This property determines what state a register is used in.",
[
"`AArch64` and `AArch32` is used for system register given their respective state and",
"`ext` is used for external memory mapped registers."
]
],
"enum": [
"AArch64",
"AArch32",
"ext",
null
]
},
"title": {
"examples": [
"Vector Base Address Register (EL3)",
"Trace Address Comparator Value Register <n>"
],
"info": [
"The display name of the register. If _title_ is not set, a renderer should use _name_ as the display name.",
"Note that the title should be treated as an extension of `description`, and may contain markdown or XML, and requires escaping of unsafe XML characters."
],
"type": [
"string",
"null"
]
}
},
"required": [
"name",
"fieldsets",
"purpose",
"state"
],
"title": "Register",
"type": "object",
"$schema": "http://json-schema.org/draft-04/schema#",
"additionalProperties": false
}