cp15.h 1.1 KB

123456789101112131415161718192021222324252627282930313233
  1. /*
  2. * Copyright (c) 2006-2018, RT-Thread Development Team
  3. *
  4. * SPDX-License-Identifier: Apache-2.0
  5. *
  6. * Change Logs:
  7. * Date Author Notes
  8. * 2018-03-25 quanzhao the first version
  9. */
  10. #ifndef __CP15_H__
  11. #define __CP15_H__
  12. #define __get_cp(cp, op1, Rt, CRn, CRm, op2) \
  13. __asm__ volatile("MRC p" # cp ", " # op1 ", %0, c" # CRn ", c" # CRm ", " # op2 : "=r" (Rt) : : "memory" )
  14. #define __set_cp(cp, op1, Rt, CRn, CRm, op2) \
  15. __asm__ volatile("MCR p" # cp ", " # op1 ", %0, c" # CRn ", c" # CRm ", " # op2 : : "r" (Rt) : "memory" )
  16. #define __get_cp64(cp, op1, Rt, CRm) \
  17. __asm__ volatile("MRRC p" # cp ", " # op1 ", %Q0, %R0, c" # CRm : "=r" (Rt) : : "memory" )
  18. #define __set_cp64(cp, op1, Rt, CRm) \
  19. __asm__ volatile("MCRR p" # cp ", " # op1 ", %Q0, %R0, c" # CRm : : "r" (Rt) : "memory" )
  20. unsigned long rt_cpu_get_smp_id(void);
  21. void rt_cpu_mmu_disable(void);
  22. void rt_cpu_mmu_enable(void);
  23. void rt_cpu_tlb_set(volatile unsigned long*);
  24. void rt_cpu_dcache_clean_flush(void);
  25. void rt_cpu_icache_flush(void);
  26. void rt_cpu_vector_set_base(unsigned int addr);
  27. #endif