blob: 2613a882bec7900ccb023ef2b30e2505d707357b (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
gdbstub memory accesses performed with wrong attributes
Qemu-commit: b2f7c27f56bf1116ebb7848c75914aa7c5d6a040
The ARMv8-M architecture (with security extensions) contains a SAU, the Security Attribution Unit. After booting the mps2-an505 and immediately halting (`-S`), I attempt to read the SAU_TYPE register, located at 0xE000EDD4, using gdb (x 0xE000EDD4). The returned value is 0, while the expected value is 8 (number of regions).
On further investigation, it seems that `attrs.secure` is set to false (armv7m_nvic.c - nvic_readl, line 1167). Commenting out the check will return the correct value.
As the CPU should be in 'secure' mode after reset, I think this behavior is wrong.
Steps to reproduce:
Example code that loads an endless loop into the beginning of secure memory: https://github.com/ajblane/armv8m-hello
Commandline: qemu-system-arm -machine mps2-an505 -cpu cortex-m33 \
-m 4096 \
-nographic -serial mon:stdio \
-kernel $(IMAGE) -s -S
Attach with arm-none-eabi-gdb, and run x 0xE000EDD4.
|