Page 1 of 1

GICv3 memory mapped registers always 0

Posted: Sun May 02, 2021 1:00 pm
by ARMy
Hi,

I am trying to get interrupts working on my operating system for ARMv8 on QEMU. But when I read the GICv3 memory mapped registers after writing, they are always 0.

Code: Select all

ldr x0, =0x8000380 GICD_ICACTIVER
ldr w1, =0x0xffffffff
str w1, [x0]
dsb sy
ldr w2, [x0]

>>> info register x2
x2             0x0                 0
>>> x/1w 0x8000380
0x8000380	0
Can someone give me please a hint what the problem could be?

Re: GICv3 memory mapped registers always 0

Posted: Tue May 04, 2021 6:27 am
by qookie
Are you sure the GIC base is 0x8000000? Did you map it in as device nGnR(nE/E) memory (qemu doesn't really care but real hardware does care a lot)? Do you see any values at all? Try reading from GICD_IIDR, which is at offset 0x08 from the base of the distributor, and seeing if that also returns all 0s.