Added info on esr registers and reset behavior
All checks were successful
Central(Architecture) Docs Build / Build Documentation (push) Successful in 15s
All checks were successful
Central(Architecture) Docs Build / Build Documentation (push) Successful in 15s
This commit is contained in:
parent
ab401b9d1b
commit
5f44805554
@ -11,4 +11,5 @@ include::execution-engine-spec/intro.adoc[]
|
|||||||
include::execution-engine-spec/program-and-exception-status-registers.adoc[]
|
include::execution-engine-spec/program-and-exception-status-registers.adoc[]
|
||||||
include::execution-engine-spec/channel-io-overview.adoc[]
|
include::execution-engine-spec/channel-io-overview.adoc[]
|
||||||
include::execution-engine-spec/instructions.adoc[]
|
include::execution-engine-spec/instructions.adoc[]
|
||||||
include::execution-engine-spec/subsystems.adoc[]
|
include::execution-engine-spec/subsystems.adoc[]
|
||||||
|
include::execution-engine-spec/system-behavior.adoc[]
|
@ -491,7 +491,7 @@ ssr ss15, pc, sr32, 0 <2>
|
|||||||
|
|
||||||
Privileged instruction:: No. (The access control is done at the register/command level).
|
Privileged instruction:: No. (The access control is done at the register/command level).
|
||||||
Updates program state flags:: No.
|
Updates program state flags:: No.
|
||||||
Exceptions:: UnknownInstr.
|
Exceptions:: PrivFault.
|
||||||
|
|
||||||
<<<
|
<<<
|
||||||
===== SSW: Subsystem Register Write
|
===== SSW: Subsystem Register Write
|
||||||
@ -539,5 +539,5 @@ ssw ss15, pc, sr32, 0 <2>
|
|||||||
|
|
||||||
Privileged instruction:: No. (The access control is done at the register/command level).
|
Privileged instruction:: No. (The access control is done at the register/command level).
|
||||||
Updates program state flags:: No.
|
Updates program state flags:: No.
|
||||||
Exceptions:: UnknownInstr.
|
Exceptions:: PrivFault.
|
||||||
|
|
||||||
|
@ -88,6 +88,9 @@ Debug::
|
|||||||
SvcDebug::
|
SvcDebug::
|
||||||
This exception is the same as the *Debug* exception, except it is generated when debug events are encountered while in supervisor-mode.
|
This exception is the same as the *Debug* exception, except it is generated when debug events are encountered while in supervisor-mode.
|
||||||
|
|
||||||
|
PrivFault::
|
||||||
|
This exception is generated when unprivileged software tries to execute a privileged instruction or tries to acces a privileged susbsystem register.
|
||||||
|
|
||||||
UnknownInstr::
|
UnknownInstr::
|
||||||
This exception is generated when an unknown instruction failed to be executed.
|
This exception is generated when an unknown instruction failed to be executed.
|
||||||
It is important not to ignore this exception as it can be the symptom of a memory corruption bug.
|
It is important not to ignore this exception as it can be the symptom of a memory corruption bug.
|
||||||
|
@ -17,7 +17,7 @@
|
|||||||
], config: {label: {right: 'psr'}}}
|
], config: {label: {right: 'psr'}}}
|
||||||
....
|
....
|
||||||
|
|
||||||
Only the ALU flags (C, Z, N, V) can be written to. Writing a 32-bits value into *psr* thus ignores the 28 upper bits.
|
Only the ALU flags (C, Z, N, V) can be written to. Writing a 32-bits value into *psr* thus ignores the 28 upper bits in any system mode.
|
||||||
|
|
||||||
=== Exception Status Registers
|
=== Exception Status Registers
|
||||||
|
|
||||||
@ -37,3 +37,49 @@ Only the ALU flags (C, Z, N, V) can be written to. Writing a 32-bits value into
|
|||||||
], config: {label: {right: 'esr_fault'}}}
|
], config: {label: {right: 'esr_fault'}}}
|
||||||
....
|
....
|
||||||
|
|
||||||
|
.Exceptions
|
||||||
|
[%header,cols="1,1,3"]
|
||||||
|
|===
|
||||||
|
|Value |Name |Argument
|
||||||
|
|
||||||
|
|0
|
||||||
|
|_Reset_
|
||||||
|
|_N/A_
|
||||||
|
|
||||||
|
|1
|
||||||
|
|SVC
|
||||||
|
|The SVC number.
|
||||||
|
|
||||||
|
|2
|
||||||
|
|MemFault
|
||||||
|
|The virtual address being accessed.
|
||||||
|
|
||||||
|
|3
|
||||||
|
|SysTick
|
||||||
|
|_N/A_
|
||||||
|
|
||||||
|
|4
|
||||||
|
|Debug
|
||||||
|
|#TODO: Describe it.#
|
||||||
|
|
||||||
|
|5
|
||||||
|
|SvcDebug
|
||||||
|
|#TODO: Describe it.#
|
||||||
|
|
||||||
|
|6
|
||||||
|
|PrivFault
|
||||||
|
|#TODO Describe it.#
|
||||||
|
|
||||||
|
|7
|
||||||
|
|UnknownInstr
|
||||||
|
|The virtual address of the instruction.
|
||||||
|
|
||||||
|
|8
|
||||||
|
|HdwrMgmt
|
||||||
|
|#TODO Describe it.#
|
||||||
|
|
||||||
|
|9
|
||||||
|
|Channel
|
||||||
|
|The channel number and exception reason. #TODO: Describe it.#
|
||||||
|
|===
|
||||||
|
|
||||||
|
35
src/execution-engine-spec/system-behavior.adoc
Normal file
35
src/execution-engine-spec/system-behavior.adoc
Normal file
@ -0,0 +1,35 @@
|
|||||||
|
== System Behavior
|
||||||
|
=== On Reset
|
||||||
|
|
||||||
|
On reset, the _Execution Engine_ assumes that the bootloader software was loaded in memory at address 0x0000_0000. +
|
||||||
|
The _Execution Engine_ starts execution in Supervisor mode.
|
||||||
|
|
||||||
|
.Registers content on reset
|
||||||
|
[cols="1,2,3"]
|
||||||
|
|===
|
||||||
|
|Register |Value |Description
|
||||||
|
|
||||||
|
|r0
|
||||||
|
|_Execution Engine_ ID
|
||||||
|
|Contains the execution engine ID. Reserved for when multiple _Execution Engines_ in a _Processing Unit_ will be specified. Always 0 until then.
|
||||||
|
|
||||||
|
|r1..r7, lr, sp_user, sp_svc, sp_fault
|
||||||
|
|_Unspecified_
|
||||||
|
|N/A
|
||||||
|
|
||||||
|
|pc_user, pc_fault
|
||||||
|
|0x0000_0004
|
||||||
|
|#TODO: Describe it#
|
||||||
|
|
||||||
|
|pc_svc
|
||||||
|
|0x0000_0000
|
||||||
|
|#TODO: Describe it#
|
||||||
|
|
||||||
|
|psr
|
||||||
|
|_See description_
|
||||||
|
|U=0, S=1, F=0. C, Z, N and V are undefined.
|
||||||
|
|
||||||
|
|esr_svc, esr_fault
|
||||||
|
|0x0000_0000
|
||||||
|
|exc=_Reset_
|
||||||
|
|===
|
Loading…
Reference in New Issue
Block a user