I compiled kernel for ARM processor.
I am trying to trace kernel control flow. I am looking at file
"arch/arm/kernel/head.S" . Code starting with

-------------------
        __INIT
        .type   stext, #function
ENTRY(stext)
        mov     r12, r0
        mov     r0, #PSR_F_BIT | PSR_I_BIT | MODE_SVC   @ make sure svc mode
        msr     cpsr_c, r0                      @ and all irqs disabled
        bl      __lookup_processor_type
-------------------


Question comes up at last line (bl    __lookup_processor_type) of this code
snippet.
If I look into System.map file I find the address of symbol
"__lookup_processor_type" as c0008168 and as per my understanding kernel
image is loaded in the memory starting after first 1 MB. Here I assume that
I am correctly interpreting System.map file. Please let me know if I am
misinterpreting this file. I assume that first column contains address,
second I dont know (please tell) and third symbol. Right?

Now since MMU is disabled at this point of time how come we can branch to
"__lookup_processor_type" whose address is after 3 GB??? What I mean is - at
this stage page tables have not been setup then how can we access a symbol
which has been assigned address as c0008168 and lying in some memory
region???

Thanks
- A.

Reply via email to