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:
@@ -238,32 +238,6 @@ endchoice
|
|||||||
|
|
||||||
source "arch/sh/mm/Kconfig"
|
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
|
config CF_ENABLER
|
||||||
bool "Compact Flash Enabler support"
|
bool "Compact Flash Enabler support"
|
||||||
depends on SH_ADX || SH_SOLUTION_ENGINE || SH_UNKNOWN || SH_CAT68701 || SH_SH03
|
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,
|
# Assign dummy values if these 2 variables are not defined,
|
||||||
# in order to suppress error message.
|
# in order to suppress error message.
|
||||||
#
|
#
|
||||||
|
CONFIG_PAGE_OFFSET ?= 0x80000000
|
||||||
CONFIG_MEMORY_START ?= 0x0c000000
|
CONFIG_MEMORY_START ?= 0x0c000000
|
||||||
CONFIG_BOOT_LINK_OFFSET ?= 0x00800000
|
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
|
LDFLAGS_vmlinux := -Ttext $(IMAGE_OFFSET) -e startup -T $(obj)/../../kernel/vmlinux.lds
|
||||||
|
|
||||||
|
@@ -13,7 +13,7 @@ OUTPUT_ARCH(sh)
|
|||||||
ENTRY(_start)
|
ENTRY(_start)
|
||||||
SECTIONS
|
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 */
|
||||||
text = .; /* Text and read-only data */
|
text = .; /* Text and read-only data */
|
||||||
.empty_zero_page : {
|
.empty_zero_page : {
|
||||||
|
@@ -161,6 +161,37 @@ config MMU
|
|||||||
turning this off will boot the kernel on these machines with the
|
turning this off will boot the kernel on these machines with the
|
||||||
MMU implicitly switched off.
|
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
|
config 32BIT
|
||||||
bool "Support 32-bit physical addressing through PMB"
|
bool "Support 32-bit physical addressing through PMB"
|
||||||
depends on CPU_SH4A
|
depends on CPU_SH4A
|
||||||
|
@@ -84,7 +84,7 @@ typedef struct { unsigned long pgprot; } pgprot_t;
|
|||||||
#define __MEMORY_START CONFIG_MEMORY_START
|
#define __MEMORY_START CONFIG_MEMORY_START
|
||||||
#define __MEMORY_SIZE CONFIG_MEMORY_SIZE
|
#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 __pa(x) ((unsigned long)(x)-PAGE_OFFSET)
|
||||||
#define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET))
|
#define __va(x) ((void *)((unsigned long)(x)+PAGE_OFFSET))
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user