Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 9ed68785 authored by Eugeniy Paltsev's avatar Eugeniy Paltsev Committed by Vineet Gupta
Browse files

ARC: mm: Decouple RAM base address from kernel link address



	[Needed for HSDK]

Currently the first page of system (hence RAM base) is assumed to be
@ CONFIG_LINUX_LINK_BASE, where kernel itself is linked.

However is case of HSDK platform, for reasons explained in that patch,
this is not true. kernel needs to be linked @ 0x9000_0000 while DDR
is still wired at 0x8000_0000. To properly account for this 256M of RAM,
we need to introduce a new option and base page frame accountiing off of
it.

Signed-off-by: default avatarEugeniy Paltsev <Eugeniy.Paltsev@synopsys.com>
Signed-off-by: default avatarVineet Gupta <vgupta@synopsys.com>
[vgupta: renamed  CONFIG_KERNEL_RAM_BASE_ADDRESS => CONFIG_LINUX_RAM_BASE
       : simplified changelog]
parent bee91c3a
Loading
Loading
Loading
Loading
+9 −1
Original line number Diff line number Diff line
@@ -418,7 +418,7 @@ endif # ISA_ARCV2
endmenu   # "ARC CPU Configuration"

config LINUX_LINK_BASE
	hex "Linux Link Address"
	hex "Kernel link address"
	default "0x80000000"
	help
	  ARC700 divides the 32 bit phy address space into two equal halves
@@ -431,6 +431,14 @@ config LINUX_LINK_BASE
	  If you don't know what the above means, leave this setting alone.
	  This needs to match memory start address specified in Device Tree

config LINUX_RAM_BASE
	hex "RAM base address"
	default LINUX_LINK_BASE
	help
	  By default Linux is linked at base of RAM. However in some special
	  cases (such as HSDK), Linux can't be linked at start of DDR, hence
	  this option.

config HIGHMEM
	bool "High Memory Support"
	select ARCH_DISCONTIGMEM_ENABLE
+1 −1
Original line number Diff line number Diff line
@@ -99,7 +99,7 @@

	memory {
		device_type = "memory";
		/* CONFIG_KERNEL_RAM_BASE_ADDRESS needs to match low mem start */
		/* CONFIG_LINUX_RAM_BASE needs to match low mem start */
		reg = <0x0 0x80000000 0x0 0x1b000000>;	/* (512 - 32) MiB */
	};

+1 −1
Original line number Diff line number Diff line
@@ -109,7 +109,7 @@

	memory {
		device_type = "memory";
		/* CONFIG_KERNEL_RAM_BASE_ADDRESS needs to match low mem start */
		/* CONFIG_LINUX_RAM_BASE needs to match low mem start */
		reg = <0x0 0x80000000 0x0 0x20000000	/* 512 MiB low mem */
		       0x1 0xc0000000 0x0 0x40000000>;	/* 1 GiB highmem */
	};
+1 −1
Original line number Diff line number Diff line
@@ -115,7 +115,7 @@

	memory {
		device_type = "memory";
		/* CONFIG_KERNEL_RAM_BASE_ADDRESS needs to match low mem start */
		/* CONFIG_LINUX_RAM_BASE needs to match low mem start */
		reg = <0x0 0x80000000 0x0 0x20000000	/* 512 MiB low mem */
		       0x1 0xc0000000 0x0 0x40000000>;	/* 1 GiB highmem */
	};
+1 −1
Original line number Diff line number Diff line
@@ -18,7 +18,7 @@

	memory {
		device_type = "memory";
		/* CONFIG_LINUX_LINK_BASE needs to match low mem start */
		/* CONFIG_LINUX_RAM_BASE needs to match low mem start */
		reg = <0x0 0x80000000 0x0 0x20000000	/* 512 MB low mem */
		       0x1 0x00000000 0x0 0x40000000>;	/* 1 GB highmem */
	};
Loading