When CONFIG_RANDOMIZE_BASE is not set, determine_relocation_address()
always returns a constant. It is not friendly to users if the address
cannot be used. Make it can be configured at Kconfig.

Signed-off-by: Jinyang He <hejiny...@loongson.cn>
---
 arch/mips/Kconfig           | 5 +++++
 arch/mips/kernel/relocate.c | 2 +-
 2 files changed, 6 insertions(+), 1 deletion(-)

diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig
index 1508829..1c95478 100644
--- a/arch/mips/Kconfig
+++ b/arch/mips/Kconfig
@@ -2803,6 +2803,11 @@ config RELOCATION_TABLE_SIZE
 
          If unsure, leave at the default value.
 
+config RELOCATE_DESTINATION
+       hex "Relocate address when RANDOMIZE_BASE is not set"
+       depends on RELOCATABLE && !RANDOMIZE_BASE
+       default "0xffffffff81000000"
+
 config RANDOMIZE_BASE
        bool "Randomize the address of the kernel image"
        depends on RELOCATABLE
diff --git a/arch/mips/kernel/relocate.c b/arch/mips/kernel/relocate.c
index 709cfa0..b7ea6ff 100644
--- a/arch/mips/kernel/relocate.c
+++ b/arch/mips/kernel/relocate.c
@@ -276,7 +276,7 @@ static inline void __init 
*determine_relocation_address(void)
         * Choose a new address for the kernel
         * For now we'll hard code the destination
         */
-       return (void *)0xffffffff81000000;
+       return (void *)CONFIG_RELOCATE_DESTINATION;
 }
 
 #endif
-- 
2.1.0

Reply via email to