set_memory.h 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. /* SPDX-License-Identifier: GPL-2.0-only */
  2. /*
  3. * Copyright (C) 2019 SiFive
  4. */
  5. #ifndef _ASM_RISCV_SET_MEMORY_H
  6. #define _ASM_RISCV_SET_MEMORY_H
  7. #ifndef __ASSEMBLY__
  8. /*
  9. * Functions to change memory attributes.
  10. */
  11. #ifdef CONFIG_MMU
  12. int set_memory_ro(unsigned long addr, int numpages);
  13. int set_memory_rw(unsigned long addr, int numpages);
  14. int set_memory_x(unsigned long addr, int numpages);
  15. int set_memory_nx(unsigned long addr, int numpages);
  16. #else
  17. static inline int set_memory_ro(unsigned long addr, int numpages) { return 0; }
  18. static inline int set_memory_rw(unsigned long addr, int numpages) { return 0; }
  19. static inline int set_memory_x(unsigned long addr, int numpages) { return 0; }
  20. static inline int set_memory_nx(unsigned long addr, int numpages) { return 0; }
  21. #endif
  22. int set_direct_map_invalid_noflush(struct page *page);
  23. int set_direct_map_default_noflush(struct page *page);
  24. #endif /* __ASSEMBLY__ */
  25. #ifdef CONFIG_ARCH_HAS_STRICT_KERNEL_RWX
  26. #ifdef CONFIG_64BIT
  27. #define SECTION_ALIGN (1 << 21)
  28. #else
  29. #define SECTION_ALIGN (1 << 22)
  30. #endif
  31. #else /* !CONFIG_ARCH_HAS_STRICT_KERNEL_RWX */
  32. #define SECTION_ALIGN L1_CACHE_BYTES
  33. #endif /* CONFIG_ARCH_HAS_STRICT_KERNEL_RWX */
  34. #endif /* _ASM_RISCV_SET_MEMORY_H */