summary refs log tree commit diff stats
path: root/gitlab/issues/target_arm/host_missing/accel_missing/1850.toml
blob: f490b16b3498b2f9320549681b0835e951e6a87e (plain) (blame)
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
31
32
33
34
35
36
37
id = 1850
title = "AARCH64 Illegal Instruction (CurrentEL)"
state = "closed"
created_at = "2023-08-28T16:52:43.798Z"
closed_at = "2023-08-28T18:30:08.582Z"
labels = ["Closed::Invalid", "target: arm"]
url = "https://gitlab.com/qemu-project/qemu/-/issues/1850"
host-os = "Ubuntu 22.04.2 LTS"
host-arch = "x86"
qemu-version = "6.2.0 (Debian 1:6.2+dfsg-2ubuntu6.12)"
guest-os = "Alpine (3.18.0)"
guest-arch = "aarch64"
description = """While emulating Aarch64 in QEMU, whenever the instruction `CurrentEL` is executed,
QEMU crashes with the following message.

`qemu: uncaught target signal 4 (Illegal instruction) - core dumped
Illegal instruction (core dumped)`

I've tried both QEMU user space translation (qemu-aarch64-static) and QEMU emulation (qemu-system-aarch64),
and both fail with the above message.

C Code to reproduce bug, courtesy of https://github.com/cirosantilli/linux-kernel-module-cheat/blob/35684b1b7e0a04a68987056cb15abd97e3d2f0cc/baremetal/arch/aarch64/el.c
```
#include <stdio.h>
#include <inttypes.h>

int main(void) {
        register uint64_t x0 __asm__ ("x0");
\t__asm__ ("mrs x0, CurrentEL;" : : : "%x0");
\tprintf("%" PRIu64 "\\n", x0 >> 2);
\treturn 0;
}
```"""
reproduce = """1. Copy C code above into file.
2. Compile code `gcc ./main.c --static`
3. Execute elf bin `./a.out`"""
additional = """"""