sh: Make PAGE_OFFSET configurable.
nommu needs to be able to shift PAGE_OFFSET, so we switch it to a non-user-visible CONFIG_PAGE_OFFSET and use that in the few places where it matters. Signed-off-by: Paul Mundt <lethal@linux-sh.org>
This commit is contained in:
		
							parent
							
								
									adf1890b0c
								
							
						
					
					
						commit
						e7f93a355c
					
				| @ -238,32 +238,6 @@ endchoice | ||||
| 
 | ||||
| source "arch/sh/mm/Kconfig" | ||||
| 
 | ||||
| config MEMORY_START | ||||
| 	hex "Physical memory start address" | ||||
| 	default "0x08000000" | ||||
| 	---help--- | ||||
| 	  Computers built with Hitachi SuperH processors always | ||||
| 	  map the ROM starting at address zero.  But the processor | ||||
| 	  does not specify the range that RAM takes. | ||||
| 
 | ||||
| 	  The physical memory (RAM) start address will be automatically | ||||
| 	  set to 08000000. Other platforms, such as the Solution Engine | ||||
| 	  boards typically map RAM at 0C000000. | ||||
| 
 | ||||
| 	  Tweak this only when porting to a new machine which does not | ||||
| 	  already have a defconfig. Changing it from the known correct | ||||
| 	  value on any of the known systems will only lead to disaster. | ||||
| 
 | ||||
| config MEMORY_SIZE | ||||
| 	hex "Physical memory size" | ||||
| 	default "0x00400000" | ||||
| 	help | ||||
| 	  This sets the default memory size assumed by your SH kernel. It can | ||||
| 	  be overridden as normal by the 'mem=' argument on the kernel command | ||||
| 	  line. If unsure, consult your board specifications or just leave it | ||||
| 	  as 0x00400000 which was the default value before this became | ||||
| 	  configurable. | ||||
| 
 | ||||
| config CF_ENABLER | ||||
| 	bool "Compact Flash Enabler support" | ||||
| 	depends on SH_ADX || SH_SOLUTION_ENGINE || SH_UNKNOWN || SH_CAT68701 || SH_SH03 | ||||
|  | ||||
| @ -18,9 +18,10 @@ endif | ||||
| # Assign dummy values if these 2 variables are not defined,
 | ||||
| # in order to suppress error message.
 | ||||
| #
 | ||||
| CONFIG_PAGE_OFFSET	?= 0x80000000 | ||||
| CONFIG_MEMORY_START     ?= 0x0c000000 | ||||
| CONFIG_BOOT_LINK_OFFSET ?= 0x00800000 | ||||
| IMAGE_OFFSET := $(shell printf "0x%8x" $$[0x80000000+$(CONFIG_MEMORY_START)+$(CONFIG_BOOT_LINK_OFFSET)]) | ||||
| IMAGE_OFFSET := $(shell printf "0x%8x" $$[$(CONFIG_PAGE_OFFSET)+$(CONFIG_MEMORY_START)+$(CONFIG_BOOT_LINK_OFFSET)]) | ||||
| 
 | ||||
| LDFLAGS_vmlinux := -Ttext $(IMAGE_OFFSET) -e startup -T $(obj)/../../kernel/vmlinux.lds | ||||
| 
 | ||||
|  | ||||
| @ -13,7 +13,7 @@ OUTPUT_ARCH(sh) | ||||
| ENTRY(_start) | ||||
| SECTIONS | ||||
| { | ||||
|   . = 0x80000000 + CONFIG_MEMORY_START + CONFIG_ZERO_PAGE_OFFSET;
 | ||||
|   . = CONFIG_PAGE_OFFSET + CONFIG_MEMORY_START + CONFIG_ZERO_PAGE_OFFSET;
 | ||||
|   _text = .;			/* Text and read-only data */
 | ||||
|   text = .;			/* Text and read-only data */
 | ||||
|   .empty_zero_page : { | ||||
|  | ||||
| @ -161,6 +161,37 @@ config MMU | ||||
| 	  turning this off will boot the kernel on these machines with the | ||||
| 	  MMU implicitly switched off. | ||||
| 
 | ||||
| config PAGE_OFFSET | ||||
| 	hex | ||||
| 	default "0x80000000" if MMU | ||||
| 	default "0x00000000" | ||||
| 
 | ||||
| config MEMORY_START | ||||
| 	hex "Physical memory start address" | ||||
| 	default "0x08000000" | ||||
| 	---help--- | ||||
| 	  Computers built with Hitachi SuperH processors always | ||||
| 	  map the ROM starting at address zero.  But the processor | ||||
| 	  does not specify the range that RAM takes. | ||||
| 
 | ||||
| 	  The physical memory (RAM) start address will be automatically | ||||
| 	  set to 08000000. Other platforms, such as the Solution Engine | ||||
| 	  boards typically map RAM at 0C000000. | ||||
| 
 | ||||
| 	  Tweak this only when porting to a new machine which does not | ||||
| 	  already have a defconfig. Changing it from the known correct | ||||
| 	  value on any of the known systems will only lead to disaster. | ||||
| 
 | ||||
| config MEMORY_SIZE | ||||
| 	hex "Physical memory size" | ||||
| 	default "0x00400000" | ||||
| 	help | ||||
| 	  This sets the default memory size assumed by your SH kernel. It can | ||||
| 	  be overridden as normal by the 'mem=' argument on the kernel command | ||||
| 	  line. If unsure, consult your board specifications or just leave it | ||||
| 	  as 0x00400000 which was the default value before this became | ||||
| 	  configurable. | ||||
| 
 | ||||
| config 32BIT | ||||
| 	bool "Support 32-bit physical addressing through PMB" | ||||
| 	depends on CPU_SH4A | ||||
|  | ||||
| @ -84,7 +84,7 @@ typedef struct { unsigned long pgprot; } pgprot_t; | ||||
| #define __MEMORY_START		CONFIG_MEMORY_START | ||||
| #define __MEMORY_SIZE		CONFIG_MEMORY_SIZE | ||||
| 
 | ||||
| #define PAGE_OFFSET		(0x80000000UL) | ||||
| #define PAGE_OFFSET		CONFIG_PAGE_OFFSET | ||||
| #define __pa(x)			((unsigned long)(x)-PAGE_OFFSET) | ||||
| #define __va(x)			((void *)((unsigned long)(x)+PAGE_OFFSET)) | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user