summaryrefslogtreecommitdiffstats
path: root/arch/riscv/include/asm/kexec.h
blob: 86e6e4922d1fa821e42f1a0645c4ed25ba2b7860 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
/* SPDX-License-Identifier: GPL-2.0 */
/*
 * Copyright (C) 2019 FORTH-ICS/CARV
 *  Nick Kossifidis <mick@ics.forth.gr>
 */

#ifndef _RISCV_KEXEC_H
#define _RISCV_KEXEC_H

#include <asm/page.h>    /* For PAGE_SIZE */

/* Maximum physical address we can use pages from */
#define KEXEC_SOURCE_MEMORY_LIMIT (-1UL)

/* Maximum address we can reach in physical address mode */
#define KEXEC_DESTINATION_MEMORY_LIMIT (-1UL)

/* Maximum address we can use for the control code buffer */
#define KEXEC_CONTROL_MEMORY_LIMIT (-1UL)

/* Reserve a page for the control code buffer */
#define KEXEC_CONTROL_PAGE_SIZE PAGE_SIZE

#define KEXEC_ARCH KEXEC_ARCH_RISCV

static inline void
crash_setup_regs(struct pt_regs *newregs,
		 struct pt_regs *oldregs)
{
	/* Dummy implementation for now */
}


#define ARCH_HAS_KIMAGE_ARCH

struct kimage_arch {
	unsigned long fdt_addr;
};

const extern unsigned char riscv_kexec_relocate[];
const extern unsigned int riscv_kexec_relocate_size;

typedef void (*riscv_kexec_do_relocate)(unsigned long first_ind_entry,
					unsigned long jump_addr,
					unsigned long fdt_addr,
					unsigned long hartid,
					unsigned long va_pa_off);

#endif