nds32.h 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #ifndef __NDS32_H__
  2. #define __NDS32_H__
  3. #include "nds32_defs.h"
  4. /* Support FPU */
  5. #if defined(__NDS32_EXT_FPU_DP__) || defined(__NDS32_EXT_FPU_SP__)
  6. #define __TARGET_FPU_EXT
  7. #if defined(__NDS32_EXT_FPU_CONFIG_0__)
  8. #define FPU_REGS 8
  9. #elif defined(__NDS32_EXT_FPU_CONFIG_1__)
  10. #define FPU_REGS 16
  11. #elif defined(__NDS32_EXT_FPU_CONFIG_2__)
  12. #define FPU_REGS 32
  13. #elif defined(__NDS32_EXT_FPU_CONFIG_3__)
  14. #define FPU_REGS 64
  15. #else
  16. #error FPU register numbers no defined
  17. #endif
  18. #endif
  19. /* Support IFC */
  20. #ifdef __NDS32_EXT_IFC__
  21. #ifndef CONFIG_NO_NDS32_EXT_IFC
  22. #define __TARGET_IFC_EXT
  23. #endif
  24. #endif
  25. /* Support ZOL */
  26. #ifdef CONFIG_HWZOL
  27. #define __TARGET_ZOL_EXT
  28. #endif
  29. #ifndef __ASSEMBLER__
  30. #include "nds32_intrinsic.h"
  31. #define GIE_ENABLE() __nds32__gie_en()
  32. #define GIE_DISABLE() __nds32__gie_dis()
  33. #ifdef CONFIG_CPU_DCACHE_ENABLE
  34. #define NDS_DCache_Flush nds32_dcache_flush
  35. #define NDS_DCache_Invalidate_Flush nds32_dcache_invalidate
  36. #define NDS_DCache_Writeback nds32_dcache_flush_range
  37. #else
  38. #define NDS_DCache_Flush() ((void)0)
  39. #define NDS_DCache_Invalidate_Flush() ((void)0)
  40. #define NDS_DCache_Writeback() ((void)0)
  41. #endif
  42. static inline void GIE_SAVE(unsigned long *var)
  43. {
  44. *var = __nds32__mfsr(NDS32_SR_PSW);
  45. GIE_DISABLE();
  46. }
  47. static inline void GIE_RESTORE(unsigned long var)
  48. {
  49. if (var & PSW_mskGIE)
  50. GIE_ENABLE();
  51. }
  52. extern void *OS_CPU_Vector_Table[32];
  53. typedef void (*isr_t)(int vector);
  54. static inline void register_isr(int vector, isr_t isr, isr_t *old)
  55. {
  56. if (old)
  57. *old = OS_CPU_Vector_Table[vector];
  58. OS_CPU_Vector_Table[vector] = isr;
  59. }
  60. #endif /* __ASSEMBLER__ */
  61. #endif /* __NDS32_H__ */