summary refs log tree commit diff stats
path: root/results/classifier/deepseek-2/output/hypervisor/1349277
blob: 86aa055a0597a1fcfd00966815dbbf49333bffed (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
AArch64 emulation ignores SPSel=0 when taking (or returning from) an exception at EL1 or greater

The AArch64 emulation ignores SPSel=0 when:

(1) taking an interrupt from an exception level greater than EL0 (e.g., EL1t),

(2) returning from an exception (via ERET) to an exception level greater than EL0 (e.g., EL1t), with SPSR_ELx[SPSel]=0.

The attached patch fixes the problem in my application.

Background:

I'm running a standalone application (toy OS) that is performing preemptive multithreading between threads running at EL1t, with exception handling / context switching occurring at EL1h.  This bug causes the stack pointer to be corrupted in the threads running at EL1t (they end up with a version of the EL1h stack pointer (SP_EL1)).

Occurs in:
	qemu-2.1.0-rc1 (found in)
	commit c60a57ff497667780132a3fcdc1500c83af5d5c0 (current master)