Загрузчик передает параметры ядру через укзатель на список специальных структур, где в том числе содержатся сведения о физической памяти, например в bootstrap атмеловском
/* it is allowed to have multiple ATAG_MEM nodes */
#define ATAG_MEM 0x54410002
struct tag_mem32 {
u32 size;
u32 start; /* physical start address */
};
подробней можете прочитать тут
http://www.simtec.co.uk/products/SWLINUX/files/booting_article.html
но когда-то я ковырялся с атмеловским ядром и заметил что оно особо не смотрит на ATAG_MEM и берет базовый адрес из своего конфига, например для g45
arch/arm/mach-at91/include/mach/at91sam9g45.h:
#define CONFIG_DRAM_BASE AT91_CHIPSELECT_6
arch/arm/mach-at91/include/mach/hardware.h:
/* External Memory Map */
#define AT91_CHIPSELECT_0 0x10000000
#define AT91_CHIPSELECT_1 0x20000000
#define AT91_CHIPSELECT_2 0x30000000
#define AT91_CHIPSELECT_3 0x40000000
#define AT91_CHIPSELECT_4 0x50000000
#define AT91_CHIPSELECT_5 0x60000000
#define AT91_CHIPSELECT_6 0x70000000
#define AT91_CHIPSELECT_7 0x80000000
откуда у вас берется 0x71000000 - вам наверно лучше знать :)