http://infocenter.arm.com/help/topic/com.arm.doc.dui0056d/ch07s05s01.html this provide the additional info that cache store virtual addresses, and since different processes may have same virtual address, but different physical address, u have to beware! On Sat, Jun 11, 2011 at 2:45 PM, Peter Teoh <htmldeveloper@xxxxxxxxx> wrote: > For ARM, MMU info can be found here: > > http://infocenter.arm.com/help/topic/com.arm.doc.ddi0333h/Babbhigi.html > > That is the theory behind MMU in ARM....but if u want the high level API, look > under the arch/arm/mm directory lots of examples there. Otherwise u > might try the following steps as proposed by "Marco Wang" - google for > it. To quote: > > phys_to_virt() only works with directly mapped physical address. I > don't think using phys_to_virt() is the best idea, anyway. Usually you > do this in several steps in a device driver: > > 1. Call request_mem_region() to request virtual memory region; > 2. Call ioremap() to map physical address to virtual address; > 3. Read/write mapped virtual address by using iowriteXX() / > ioreadXX(), etc. Here XX can be 8, 16, or 32 for example, represents > bit width. > 4. Call iounmap() and release_mem_region() to release memory mapping; > > Thanks, > Marco Wang > > On Fri, Jun 10, 2011 at 3:46 PM, Micha M. <kernelnewbies@xxxxxxxxxxx> wrote: >> On Fri, Jun 10, 2011 at 07:30:46AM +0800, Gavin Guo wrote: >>> > So maybe I have to explain some more. There is some code located in the >>> > pysical address space and I need to call it from a kernel module. The >>> > problem is, that the code must be run from that location it is stored (it >>> > contains absolute jumps). So I'd like to be able to run that code in that >>> > address space, or to "tell" the keeernel to ignore page faults/memory >>> > protection on a certain address range, so that I can jump there run the >>> > code and return to the caller (kernel module) >>> >>> What is the architecture do you use? ex: x86, arm, mips,... >> >> ARM. >> >>> I know in some platform like andes, it is possible to turn off the >>> virtual memory. >>> Then you can jump to the physical address. After doing what you want, turning on >>> virtual memory again. Finally, system return to the normal operation. >>> However, the >>> code is a little tricky. Before turning off the virtual memory, you >>> must lock the >>> code jumping to physical address in cache. Otherwise, behaviors, after >>> turning off >>> the cache, is unpredictable. >>> >>> Gavin Guo >> > > > -- > Regards, > Peter Teoh > -- Regards, Peter Teoh _______________________________________________ Kernelnewbies mailing list Kernelnewbies@xxxxxxxxxxxxxxxxx http://lists.kernelnewbies.org/mailman/listinfo/kernelnewbies