GICv3 memory mapped registers always 0

Question about which tools to use, bugs, the best way to implement a function, etc should go here. Don't forget to see if your question is answered in the wiki first! When in doubt post here.
Post Reply
ARMy
Posts: 1
Joined: Sun May 02, 2021 12:30 pm

GICv3 memory mapped registers always 0

Post 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?
User avatar
qookie
Member
Member
Posts: 72
Joined: Sun Apr 30, 2017 12:16 pm
Libera.chat IRC: qookie
Location: Poland

Re: GICv3 memory mapped registers always 0

Post 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.
Working on managarm.
Post Reply