xref: /linux/arch/loongarch/include/asm/setup.h (revision 69050f8d6d075dc01af7a5f2f550a8067510366f)
1 /* SPDX-License-Identifier: GPL-2.0 */
2 /*
3  * Copyright (C) 2020-2022 Loongson Technology Corporation Limited
4  */
5 
6 #ifndef _LOONGARCH_SETUP_H
7 #define _LOONGARCH_SETUP_H
8 
9 #include <linux/types.h>
10 #include <linux/threads.h>
11 #include <asm/sections.h>
12 #include <uapi/asm/setup.h>
13 
14 #define VECSIZE 0x200
15 
16 extern unsigned long eentry;
17 extern unsigned long tlbrentry;
18 extern unsigned long pcpu_handlers[NR_CPUS];
19 extern long exception_handlers[VECSIZE * 128 / sizeof(long)];
20 extern char init_command_line[COMMAND_LINE_SIZE];
21 extern void tlb_init(int cpu);
22 extern void cpu_cache_init(void);
23 extern void cache_error_setup(void);
24 extern void per_cpu_trap_init(int cpu);
25 extern void set_handler(unsigned long offset, void *addr, unsigned long len);
26 extern void set_merr_handler(unsigned long offset, void *addr, unsigned long len);
27 
28 #ifdef CONFIG_RELOCATABLE
29 
30 struct rela_la_abs {
31 	long pc;
32 	long symvalue;
33 };
34 
35 extern long __la_abs_begin;
36 extern long __la_abs_end;
37 extern long __rela_dyn_begin;
38 extern long __rela_dyn_end;
39 
40 #ifdef CONFIG_RELR
41 extern long __relr_dyn_begin;
42 extern long __relr_dyn_end;
43 #endif
44 
45 extern unsigned long __init relocate_kernel(void);
46 
47 #endif
48 
49 static inline unsigned long kaslr_offset(void)
50 {
51 	return (unsigned long)&_text - VMLINUX_LOAD_ADDRESS;
52 }
53 
54 #endif /* __SETUP_H */
55