That's why highmem exist http://linux-mm.org/HighMemory
However, many people insist on using more than 1GB of physical memory on such a 32 bit system. This makes it necessary for the Linux kernel to jump through some interesting hoops... Basically the system uses the following tactics: * Memory above the physical address of 896MB are temporarily mapped into kernel virtual memory whenever the kernel needs to access that memory. * Data which the kernel frequently needs to access is allocated in the lower 896MB of memory (ZONE_NORMAL) and can be immediately accessed by the kernel (see Temporary mapping). * Data which the kernel only needs to access occasionally, including page cache, process memory and page tables, are preferentially allocated from ZONE_HIGHMEM. * The system can have additional physical memory zones to deal with devices that can only perform DMA to a limited amount of physical memory, ZONE_DMA and ZONE_DMA32. * Allocations and pageout pressure on the various memory zones need to be balanced (see Memory Balancing).
Cortex A15 uses 40-bit physical addressing is really useless : it is x86 PAE