mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-24 05:01:03 +02:00
This patch adds support for relocating the kernel to a random address. Entropy is derived from the banner, which will change every build and random_get_entropy() which should provide additional runtime entropy. The kernel is relocated by up to RANDOMIZE_BASE_MAX_OFFSET bytes from its link address. Because relocation happens so early during the kernel booting, the amount of physical memory has not yet been determined. This means the only way to limit relocation within the available memory is via Kconfig. So we limit the maximum value of RANDOMIZE_BASE_MAX_OFFSET to 256M (0x10000000) because our memory layout has many holes. Signed-off-by: Youling Tang <tangyouling@loongson.cn> Signed-off-by: Xi Ruoyao <xry111@xry111.site> # Fix compiler warnings Signed-off-by: Huacai Chen <chenhuacai@loongson.cn>
41 lines
932 B
C
41 lines
932 B
C
/* SPDX-License-Identifier: GPL-2.0 */
|
|
/*
|
|
* Copyright (C) 2020-2022 Loongson Technology Corporation Limited
|
|
*/
|
|
|
|
#ifndef _LOONGARCH_SETUP_H
|
|
#define _LOONGARCH_SETUP_H
|
|
|
|
#include <linux/types.h>
|
|
#include <uapi/asm/setup.h>
|
|
|
|
#define VECSIZE 0x200
|
|
|
|
extern unsigned long eentry;
|
|
extern unsigned long tlbrentry;
|
|
extern char init_command_line[COMMAND_LINE_SIZE];
|
|
extern void tlb_init(int cpu);
|
|
extern void cpu_cache_init(void);
|
|
extern void cache_error_setup(void);
|
|
extern void per_cpu_trap_init(int cpu);
|
|
extern void set_handler(unsigned long offset, void *addr, unsigned long len);
|
|
extern void set_merr_handler(unsigned long offset, void *addr, unsigned long len);
|
|
|
|
#ifdef CONFIG_RELOCATABLE
|
|
|
|
struct rela_la_abs {
|
|
long offset;
|
|
long symvalue;
|
|
};
|
|
|
|
extern long __la_abs_begin;
|
|
extern long __la_abs_end;
|
|
extern long __rela_dyn_begin;
|
|
extern long __rela_dyn_end;
|
|
|
|
extern void * __init relocate_kernel(void);
|
|
|
|
#endif
|
|
|
|
#endif /* __SETUP_H */
|