The kernel of the low-end of physical memory area as a direct mapping area, the address area is defined as a high-end memory, to define their boundaries by a variable high_memory. high_memory is a virtual address, the definition of high-end memory is mapped into the kernel to allow the starting address.
It is defined in the arm platform are as follows:
void * high_memory;
EXPORT_SYMBOL(high_memory);
arm_lowmem_limit = lowmem_limit;
high_memory = __va(arm_lowmem_limit - 1) + 1;
if (!memblock_limit)
memblock_limit = arm_lowmem_limit;