0

Linux separates virtual memory space into two parts: 0x00000000 ~ 0xBFFFFFFF and 0xC0000000 ~ 0xFFFFFFFF. As I read, all the processes share the same kernel virtual space 0xC0000000 ~ 0xFFFFFFFF.

I am trying to lock one TLB for system call on ARM architecture. For example, for raw_spin system call, I got the virtual address 0xc04d35b0 from System.map then I want to find corresponding physical address to lock one TLB entry.

My question is how can I read the kernel page table? Thanks!

beikesea
  • 11
  • 1
  • Which chip are you using? Usually you should not require the physical address to lock the TLB. – Nico Erfurth May 19 '14 at 09:21
  • I am using OMAP 5432. According to technical manual, I need write physical address and virtual address to MMU_CAM and MMU_RAM respectively. And then I need to set BASEVALUE to lock that TLB~ – beikesea May 19 '14 at 09:30
  • 1
    The OMAP 5432 is a Cortex-A15. See: [Find physical address of exception vector table](http://stackoverflow.com/questions/19275718/find-the-physical-address-of-exception-vector-table-from-kernel-module). The accepted answer is a `TL;DR` with code to get your physical map. My other answer has some details about the structure of Linux. You missing piece is the TLB lock; look at the cortex-A15 TRM and there will be a sample. – artless noise May 20 '14 at 16:24

0 Answers0