fixmap.h 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. /* SPDX-License-Identifier: GPL-2.0 */
  2. #ifndef _ASM_FIXMAP_H
  3. #define _ASM_FIXMAP_H
  4. /*
  5. * This file defines the locations of the fixed mappings on parisc.
  6. *
  7. * All of the values in this file are machine virtual addresses.
  8. *
  9. * All of the values in this file must be <4GB (because of assembly
  10. * loading restrictions). If you place this region anywhere above
  11. * __PAGE_OFFSET, you must adjust the memory map accordingly
  12. */
  13. /*
  14. * The tmpalias region is used in kernel space to copy/clear/flush data
  15. * from pages congruently mapped with user space. It is comprised of
  16. * a pair regions. The size of these regions is determined by the largest
  17. * cache aliasing boundary for machines that support equivalent aliasing.
  18. *
  19. * The c3750 with PA8700 processor returns an alias value of 11. This
  20. * indicates that it has an alias boundary of 4 MB. It also supports
  21. * non-equivalent aliasing without a performance penalty.
  22. *
  23. * Machines with PA8800/PA8900 processors return an alias value of 0.
  24. * This indicates the alias boundary is unknown and may be larger than
  25. * 16 MB. Non-equivalent aliasing is not supported.
  26. *
  27. * Here we assume the maximum alias boundary is 4 MB.
  28. */
  29. #define TMPALIAS_SIZE_BITS 22 /* 4 MB */
  30. #define TMPALIAS_MAP_START ((__PAGE_OFFSET) - (2 << TMPALIAS_SIZE_BITS))
  31. #define FIXMAP_SIZE (FIX_BITMAP_COUNT << PAGE_SHIFT)
  32. #define FIXMAP_START (TMPALIAS_MAP_START - FIXMAP_SIZE)
  33. /* This is the kernel area for all maps (vmalloc, dma etc.) most
  34. * usually, it extends up to TMPALIAS_MAP_START. Virtual addresses
  35. * 0..GATEWAY_PAGE_SIZE are reserved for the gateway page */
  36. #define KERNEL_MAP_START (GATEWAY_PAGE_SIZE)
  37. #define KERNEL_MAP_END (FIXMAP_START)
  38. #ifndef __ASSEMBLY__
  39. enum fixed_addresses {
  40. /* Support writing RO kernel text via kprobes, jump labels, etc. */
  41. FIX_TEXT_POKE0,
  42. FIX_TEXT_KEXEC,
  43. FIX_BITMAP_COUNT
  44. };
  45. extern void *parisc_vmalloc_start;
  46. #define PCXL_DMA_MAP_SIZE (8*1024*1024)
  47. #define VMALLOC_START ((unsigned long)parisc_vmalloc_start)
  48. #define VMALLOC_END (KERNEL_MAP_END)
  49. #define __fix_to_virt(_x) (FIXMAP_START + ((_x) << PAGE_SHIFT))
  50. void set_fixmap(enum fixed_addresses idx, phys_addr_t phys);
  51. void clear_fixmap(enum fixed_addresses idx);
  52. #endif /*__ASSEMBLY__*/
  53. #endif /*_ASM_FIXMAP_H*/