Allocate a variable in a known physical location

Fabian Cenedese Cenedese@indel.ch
Tue Feb 1 11:21:00 GMT 2011


At 03:07 01.02.2011 -0800, isuru herath wrote:
>Hi David,
>
>Thanks a lot for the reply. The address 0x10001000 is a physical address 
>and not a virtual address. I thought we can only do this type casting with 
>virtual addresses. Anyway I tried the method you suggested and I got a 
>segmentation fault.
>
>I use mmap to map those physical addresses to virtual addresses, because 
>OS(linux) in unaware of this other piece of memory which uses physical 
>address range 0x10001000 to 0x10101000.
>
>In my example, when I use my method to access i via pointer p (p->i), it 
>first accesses p and then accesses i. But this introduces unnecessary 
>access p. Therefore I was wondering how to allocate i in the above 
>physical region.(Please note that I cant use any optimization -O2, -O3)

Once you have p->i, you can also do int* pi=&(p->i);
So *pi=1 will only be one access.

bye  Fabi



More information about the Gcc-help mailing list