os_cpu.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. /***********************************Jieli tech************************************************
  2. File : os_cpu.h
  3. By : Juntham
  4. date : 2014-07-03 09:06
  5. ********************************************************************************************/
  6. #ifndef _OS_CPU_H
  7. #define _OS_CPU_H
  8. #include "asm/cpu.h"
  9. #include "jiffies.h"
  10. #ifndef __ASSEMBLY__
  11. typedef unsigned short QS;
  12. typedef unsigned int OS_STK; /* Each stack entry is 32-bit wide*/
  13. typedef unsigned int OS_CPU_SR; /* Unsigned 32 bit quantity */
  14. typedef unsigned int OS_CPU_DATA; /* Unsigned 32 bit quantity */
  15. #endif
  16. #define OS_CPU_EXT extern
  17. #define OS_CPU_CORE CPU_CORE_NUM
  18. #define OS_CPU_ID current_cpu_id()
  19. #define OS_STK_GROWTH 1 /* Stack grows from HIGH to LOW memory*/
  20. #define OS_CPU_MMU 0
  21. #define OS_CPU_VIRTUAL_MEM 1 //临时定义:区别于OS_CPU_MMU
  22. #ifndef OS_CORE_AFFINITY_ENABLE
  23. #define OS_CORE_AFFINITY_ENABLE 0
  24. #endif
  25. #define OS_TASK_CLR(a) CPU_TASK_CLR(a)
  26. #define OS_TASK_SW(a) CPU_TASK_SW(a) /* 任务级任务切换函数*/
  27. #define OS_INT_NESTING CPU_INT_NESTING
  28. #define CPU_SR_ALLOC()
  29. #define OS_SR_ALLOC()
  30. #define OS_ENTER_CRITICAL() \
  31. CPU_CRITICAL_ENTER(); \
  32. #define OS_EXIT_CRITICAL() \
  33. CPU_CRITICAL_EXIT()
  34. #ifndef __ASSEMBLY__
  35. /*#include "system/spinlock.h"
  36. extern spinlock_t os_lock;
  37. #define OS_ENTER_CRITICAL() \
  38. spin_lock(&os_lock)
  39. #define OS_EXIT_CRITICAL() \
  40. spin_unlock(&os_lock)*/
  41. void OSCtxSw(void);
  42. extern void EnableOtherCpu(void) ;
  43. #define os_ctx_sw OSCtxSw
  44. void OSInitTick(u32 hz);
  45. void InstallOSISR(void);
  46. void os_task_dead(const char *task_name);
  47. //=======================================================//
  48. // 系统进临界区多核同步类型 //
  49. //=======================================================//
  50. enum CPU_SUSPEND_TYPE {
  51. CPU_SUSPEND_TYPE_NONE = 0,
  52. CPU_SUSPEND_TYPE_SFC = 0x55, //操作Flash
  53. CPU_SUSPEND_TYPE_PDOWN, //系统进低功耗Pdown
  54. CPU_SUSPEND_TYPE_POFF, //系统进低功耗Pdown
  55. CPU_SUSPEND_TYPE_SOFF,
  56. };
  57. /* ---------------------------------------------------------------------------- */
  58. /**
  59. * @brief 系统进入临界区用于多核同步
  60. */
  61. /* ---------------------------------------------------------------------------- */
  62. void cpu_suspend_other_core(enum CPU_SUSPEND_TYPE type);
  63. /* ---------------------------------------------------------------------------- */
  64. /**
  65. * @brief 系统退出临界区用于多核同步
  66. */
  67. /* ---------------------------------------------------------------------------- */
  68. void cpu_resume_other_core(enum CPU_SUSPEND_TYPE type);
  69. #endif
  70. /*
  71. *********************************************************************************************************
  72. * DATA TYPES
  73. * (Compiler Specific)
  74. *********************************************************************************************************
  75. */
  76. #define OS_CRITICAL_METHOD 3
  77. #if OS_CRITICAL_METHOD == 3 /* Allocate storage for CPU status register */
  78. //#define CPU_SR_ALLOC() OS_CPU_SR cpu_sr
  79. #endif
  80. #endif /*_OS_CPU_H */