Re: Virtual to physical address Translation

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi..
> sri wrote:
> >                     I am a newbie to kernel ..
> >  I am using a hardware debugger to debug the kernel start-up code for
2.4.18
> > kernel for which i have been setting a break point at the 0xffff0200
address
> > location which i believe is the vector base address+0x24
(__trap_init+0x24
> > address location ).
> >                     Now i have moved to 2.4.20 kernel for which the
above break
> > point is not working.. I could get the virtual address of this location
from
> > System.map file but not clear how to get the physical address..
>
> On which architecture are you running ?
>
> If it's x86 (but I don't think it is) with the default configuration (4G
> address space, 3G/1G split), then kernel virtual addresses are directly
> mapped to physical addresses with a 3G offset. So the formula to compute
> a physical address from a kernel virtual address is :
>
>   physical = virtual - 3G
>
> For other architectures, this may be different, in particular for
> architecture that have fixed address interrupt vectors.
>
> Sincerly,
>
> Thomas
                    What u say is right.. Its not an x86. I am working on
Intel Xscale arch based ixp420 up. I am trying to set a break point at the
label __trap_init in the file arch/arm/kernel/entry-armv.S
This is the piece of code..
ENTRY(__trap_init)
  stmfd sp!, {r4 - r6, lr}

  adr r1, .LCvectors   @ set up the vectors
  ldmia r1, {r1, r2, r3, r4, r5, r6, ip, lr}
  stmia r0, {r1, r2, r3, r4, r5, r6, ip, lr}

  add r2, r0, #0x200
  adr r0, __stubs_start  @ copy stubs to 0x200
  adr r1, __stubs_end
1:  ldr r3, [r0], #4
  str r3, [r2], #4
  cmp r0, r1
The debugger seems to recognize only the physical address at this point
though i load the symbols from vmlinux file. Can u help me to get that..

I have a doubt.. will the vector table address change from one kernel
version to another thought the arch doesent change. If i am not asking too
much, can u xplain me how the kernel initializes the vector table.. I
understand that it would be different for different archs (correct me if i
am wrong).. It would be helpful if u can take the case of arm arch.
                        That would be of great help.. Thanks in advance !!
Regards,
Srikanth


--
Kernelnewbies: Help each other learn about the Linux kernel.
Archive:       http://mail.nl.linux.org/kernelnewbies/
FAQ:           http://kernelnewbies.org/faq/


[Index of Archives]     [Newbies FAQ]     [Linux Kernel Mentors]     [Linux Kernel Development]     [IETF Annouce]     [Git]     [Networking]     [Security]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux RAID]     [Linux SCSI]     [Linux ACPI]
  Powered by Linux