File Index
Files and directories
Sign in
FILE

set_memory.h

File preview with syntax highlighting.

linux-6.19.14/arch/riscv/include/asm/set_memory.h C
 1/* SPDX-License-Identifier: GPL-2.0-only */
 2/*
 3 * Copyright (C) 2019 SiFive
 4 */
 5
 6#ifndef _ASM_RISCV_SET_MEMORY_H
 7#define _ASM_RISCV_SET_MEMORY_H
 8
 9#ifndef __ASSEMBLER__
10/*
11 * Functions to change memory attributes.
12 */
13#ifdef CONFIG_MMU
14int set_memory_ro(unsigned long addr, int numpages);
15int set_memory_rw(unsigned long addr, int numpages);
16int set_memory_x(unsigned long addr, int numpages);
17int set_memory_nx(unsigned long addr, int numpages);
18int set_memory_rw_nx(unsigned long addr, int numpages);
19static __always_inline int set_kernel_memory(char *startp, char *endp,
20					     int (*set_memory)(unsigned long start,
21							       int num_pages))
22{
23	unsigned long start = (unsigned long)startp;
24	unsigned long end = (unsigned long)endp;
25	int num_pages = PAGE_ALIGN(end - start) >> PAGE_SHIFT;
26
27	return set_memory(start, num_pages);
28}
29#else
30static inline int set_memory_ro(unsigned long addr, int numpages) { return 0; }
31static inline int set_memory_rw(unsigned long addr, int numpages) { return 0; }
32static inline int set_memory_x(unsigned long addr, int numpages) { return 0; }
33static inline int set_memory_nx(unsigned long addr, int numpages) { return 0; }
34static inline int set_memory_rw_nx(unsigned long addr, int numpages) { return 0; }
35static inline int set_kernel_memory(char *startp, char *endp,
36				    int (*set_memory)(unsigned long start,
37						      int num_pages))
38{
39	return 0;
40}
41#endif
42
43int set_direct_map_invalid_noflush(struct page *page);
44int set_direct_map_default_noflush(struct page *page);
45int set_direct_map_valid_noflush(struct page *page, unsigned nr, bool valid);
46bool kernel_page_present(struct page *page);
47
48#endif /* __ASSEMBLER__ */
49
50#if defined(CONFIG_STRICT_KERNEL_RWX) || defined(CONFIG_XIP_KERNEL)
51#ifdef CONFIG_64BIT
52#define SECTION_ALIGN (1 << 21)
53#else
54#define SECTION_ALIGN (1 << 22)
55#endif
56#else /* !CONFIG_STRICT_KERNEL_RWX */
57#define SECTION_ALIGN L1_CACHE_BYTES
58#endif /* CONFIG_STRICT_KERNEL_RWX */
59
60#define PECOFF_SECTION_ALIGNMENT        0x1000
61#define PECOFF_FILE_ALIGNMENT           0x200
62
63#endif /* _ASM_RISCV_SET_MEMORY_H */
~/ Read-only file preview.