[Bug 1887854] Re: Spurious Data Abort on qemu-system-aarch64

2020-07-20 Thread K
An update for anyone interested: I didn't remember seeing the leading 0x10 because the values are correct when retrieved from memory. They get packed into a structure that gets returned in a single register, so the 0x10 second element ends up in the upper 4 bytes of x0 which is provided as the firs

[Bug 1887854] Re: Spurious Data Abort on qemu-system-aarch64

2020-07-17 Thread K
Ok, thanks for rooting this out. I could swear that I checked that address several times and I clearly remember 0x4010ca28, but I don't remember ever seeing 0x10 ahead of it. I'll dig into it a bit and hopefully find the root cause in my code. ** Changed in: qemu Status: New => Invalid --

[Bug 1887854] Re: Spurious Data Abort on qemu-system-aarch64

2020-07-17 Thread Peter Maydell
It does still crash on current QEMU. The proximate cause of the crash is that you are trying to read from an address which is way outside RAM: Trace 0: 0x7f8d50054340 [/400195d8/0x82104000] strcmp PC=400195d8 X00=00104010ca28 X01=4001ec28 X02=00

[Bug 1887854] Re: Spurious Data Abort on qemu-system-aarch64

2020-07-17 Thread K
I would have thought that TLB considerations would not apply when the MMU is disabled (RTEMS runs in a completely flat memory space). I'll try to reproduce on more modern QEMU today. Thanks for taking a look at this. -- You received this bug notification because you are a member of qemu- devel-ml

[Bug 1887854] Re: Spurious Data Abort on qemu-system-aarch64

2020-07-16 Thread Peter Maydell
Writing to SCTLR can cause QEMU to flush its TLB (as an internal implementation detail), so if adding SCTLR writes is sufficient to cause the problem to go away, I would be suspicious that your guest code is missing necessary TLB maintenance instructions. QEMU 3.1 and 4.1 are quite old -- can you

[Bug 1887854] Re: Spurious Data Abort on qemu-system-aarch64

2020-07-16 Thread K
** Description changed: When running RTEMS test psxndbm01.exe built for AArch64-ilp32 (this code is not yet publically available), the test generates a spurious data abort (the MMU and alignment checks should be disabled according to bits 1, 0 of SCTLR_EL1). The abort information is as follow