summaryrefslogtreecommitdiff
path: root/documentation/images/interrupt_handling/irq.msc
blob: 62657ccfd66a9f66172eff787f5a163687c09eac (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
msc {
	hscale = "1.5", wordwraparcs = on;

	a [label="Normal world"], b [label="Secure Monitor"],
	c [label="Trusted OS entry"], d [label="Trusted OS"];


	--- [ label = "IRQ and FIQ unmasked" ];
	d=>d [ label = "process" ];
	--- [ label = "IRQ and FIQ masked,\nIRQ received" ];
	d=>d [ label = "suspend thread" ];
	d=>c [ label = "forward IRQ" ];
	c=>b [ label = "smc: forward IRQ" ];
	b=>b [ label = "Save secure context" ];
	b=>b [ label = "Restore non-secure context" ];
	--- [ label = "IRQ and FIQ unmasked" ];
	b>>a [ label = "eret: IRQ forwarded" ];
        --- [ label = "FIQ unmasked, IRQ received" ];
	a=>a [ label = "process IRQ" ];
        --- [ label = "IRQ and FIQ unmasked" ];
	a=>b [ label = "smc: return from IRQ" ];
	--- [ label = "IRQ and FIQ masked" ];
	b=>b [ label = "Save non-secure context" ];
	b=>b [ label = "Restore secure context" ];
	b>>c [ label = "eret: return from IRQ" ];
	c=>c [ label = "find thread" ];
	c>>d [ label = "resume execution"];
	--- [ label = "IRQ and FIQ unmasked" ];
	d=>d [ label = "process" ];
}