Hi,
On Tue, Nov 10, 2020 at 12:21:50PM +0000, Michael Grunditz wrote:
On Tue, 10 Nov 2020 at 10:40, Stefan Kalkowski stefan.kalkowski@genode-labs.com wrote:
Hi Michael,
I just answered to you in the IRC channel. I could imagine that access to the GIC is the actual problem, because this is done in _arch_init() inside of the Cpu constructor.
Can you confirm, that you can proceed at least behind the Cpu construction if you uncomment the line:
repos/base-hw/src/core/spec/arm_v8/kernel/cpu.cc:20
or not?
Not.. I have checked all related constructors , and non seems to get called. I somewhat suspect cpu constructor isn't called.
To be really sure, that the constructor does not even get called, you might derive the Kernel::Cpu class from a Dummy class that prints something in its contructor. Of course, it should be the first class the Cpu class inherits from.
If the (hardware-)exception is really not caused inside the constructor, but before the constructor call, then you would be right and it has to do with the actual memory access for the object creation. The Cpu objects are constructed using the Genode::Constructible class, which contains a static char array as placeholder for the object memory. That means it is actually no dynamically allocated memory but already part of core's ELF sections. Therefore, it might be useful to investigate the linking address you are using for the whole image, and maybe to change that. Another reason might be some alignment constraints? To be really sure, what is going on, you could temporarily change the exception vector in file 'repos/base-hw/src/core/spec/arm_v8/exception_vector.s' at the very beginning to, e.g.:
.section .text.crt0
.rept 16 mrs x0, elr_el1 mrs x1, spsr_el1 adr x2, . and x2, x2, #0xf80 bl kernel .balign 128 .endr
And change the function kernel() to something like:
extern "C" void kernel(void * ip, void * spsr, void * off, void * esr_el1) { Genode::raw("ip=", ip, " spsr=", spsr, " exc_off=", off, " esr_el1=", esr_el1); }
Then the outcome of the first printing would be quite interesting to know.
Regards Stefan
MIchael
Genode users mailing list users@lists.genode.org https://lists.genode.org/listinfo/users