浏览代码

microblaze: Support systems without lmb bram

When the system has no lmb bram, main memory should be start from
zero because of microblaze vectors.

DTS fragment could look like:
	DDR2_SDRAM: memory@0 {
		device_type = "memory";
		reg = < 0x0 0x10000000 >;
	} ;

Then you have to setup CONFIG_KERNEL_BASE_ADDR=0 which caused
that kernel physical start address will be zero. On reset vector place
will be jump to 0x100 and on 0x100 starts kernel text.

You have to solve how to load the kernel before cpu starts.
Tested with XMD.

Signed-off-by: Michal Simek <monstr@monstr.eu>
Michal Simek 15 年之前
父节点
当前提交
ee68f1745e
共有 1 个文件被更改,包括 6 次插入0 次删除
  1. 6 0
      arch/microblaze/kernel/head.S

+ 6 - 0
arch/microblaze/kernel/head.S

@@ -51,6 +51,12 @@ swapper_pg_dir:
 
 
 	.text
 	.text
 ENTRY(_start)
 ENTRY(_start)
+#if CONFIG_KERNEL_BASE_ADDR == 0
+	brai	TOPHYS(real_start)
+	.org	0x100
+real_start:
+#endif
+
 	mfs	r1, rmsr
 	mfs	r1, rmsr
 	andi	r1, r1, ~2
 	andi	r1, r1, ~2
 	mts	rmsr, r1
 	mts	rmsr, r1