root/arch/csky/abiv1/inc/abi/ckmmu.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. read_mmu_index
  2. write_mmu_index
  3. read_mmu_entrylo0
  4. read_mmu_entrylo1
  5. write_mmu_pagemask
  6. read_mmu_entryhi
  7. write_mmu_entryhi
  8. read_mmu_msa0
  9. write_mmu_msa0
  10. read_mmu_msa1
  11. write_mmu_msa1
  12. tlb_probe
  13. tlb_read
  14. tlb_invalid_all
  15. local_tlb_invalid_all
  16. tlb_invalid_indexed
  17. setup_pgd
  18. get_pgd

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 // Copyright (C) 2018 Hangzhou C-SKY Microsystems co.,ltd.
   3 
   4 #ifndef __ASM_CSKY_CKMMUV1_H
   5 #define __ASM_CSKY_CKMMUV1_H
   6 #include <abi/reg_ops.h>
   7 
   8 static inline int read_mmu_index(void)
   9 {
  10         return cprcr("cpcr0");
  11 }
  12 
  13 static inline void write_mmu_index(int value)
  14 {
  15         cpwcr("cpcr0", value);
  16 }
  17 
  18 static inline int read_mmu_entrylo0(void)
  19 {
  20         return cprcr("cpcr2") << 6;
  21 }
  22 
  23 static inline int read_mmu_entrylo1(void)
  24 {
  25         return cprcr("cpcr3") << 6;
  26 }
  27 
  28 static inline void write_mmu_pagemask(int value)
  29 {
  30         cpwcr("cpcr6", value);
  31 }
  32 
  33 static inline int read_mmu_entryhi(void)
  34 {
  35         return cprcr("cpcr4");
  36 }
  37 
  38 static inline void write_mmu_entryhi(int value)
  39 {
  40         cpwcr("cpcr4", value);
  41 }
  42 
  43 static inline unsigned long read_mmu_msa0(void)
  44 {
  45         return cprcr("cpcr30");
  46 }
  47 
  48 static inline void write_mmu_msa0(unsigned long value)
  49 {
  50         cpwcr("cpcr30", value);
  51 }
  52 
  53 static inline unsigned long read_mmu_msa1(void)
  54 {
  55         return cprcr("cpcr31");
  56 }
  57 
  58 static inline void write_mmu_msa1(unsigned long value)
  59 {
  60         cpwcr("cpcr31", value);
  61 }
  62 
  63 /*
  64  * TLB operations.
  65  */
  66 static inline void tlb_probe(void)
  67 {
  68         cpwcr("cpcr8", 0x80000000);
  69 }
  70 
  71 static inline void tlb_read(void)
  72 {
  73         cpwcr("cpcr8", 0x40000000);
  74 }
  75 
  76 static inline void tlb_invalid_all(void)
  77 {
  78         cpwcr("cpcr8", 0x04000000);
  79 }
  80 
  81 
  82 static inline void local_tlb_invalid_all(void)
  83 {
  84         tlb_invalid_all();
  85 }
  86 
  87 static inline void tlb_invalid_indexed(void)
  88 {
  89         cpwcr("cpcr8", 0x02000000);
  90 }
  91 
  92 static inline void setup_pgd(unsigned long pgd, bool kernel)
  93 {
  94         cpwcr("cpcr29", pgd | BIT(0));
  95 }
  96 
  97 static inline unsigned long get_pgd(void)
  98 {
  99         return cprcr("cpcr29") & ~BIT(0);
 100 }
 101 #endif /* __ASM_CSKY_CKMMUV1_H */

/* [<][>][^][v][top][bottom][index][help] */