runmode.mk 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182
  1. # RUN Mode, to control ILM/DLM/ICACHE/DCACHE enable or disable
  2. # Combined with ILM_EN/DLM_EN/IC_EN/DC_EN/CCM_EN
  3. # only works in evalsoc
  4. RUNMODE ?=
  5. ifneq ($(RUNMODE),) # RUNMODE defined but not empty
  6. # lm mode, ilm/dlm enabled, icache/dcache disabled
  7. ifeq ($(RUNMODE),lm)
  8. ILM_EN ?= 1
  9. DLM_EN ?= 1
  10. IC_EN ?= 0
  11. DC_EN ?= 0
  12. CCM_EN ?= 0
  13. # icache+dlm mode, ilm disabled, icache enabled, dlm enabled, dcache disabled
  14. else ifeq ($(RUNMODE),icdlm)
  15. ILM_EN ?= 0
  16. DLM_EN ?= 1
  17. IC_EN ?= 1
  18. DC_EN ?= 0
  19. CCM_EN ?= 1
  20. # dcache+ilm mode, ilm enabled, icache disabled, dlm disabled, dcache enabled
  21. else ifeq ($(RUNMODE),dcilm)
  22. ILM_EN ?= 1
  23. DLM_EN ?= 0
  24. IC_EN ?= 0
  25. DC_EN ?= 1
  26. CCM_EN ?= 1
  27. # cache mode, ilm/dlm is disabled, icache/dcache enabled
  28. else ifeq ($(RUNMODE),cache)
  29. ILM_EN ?= 0
  30. DLM_EN ?= 0
  31. IC_EN ?= 1
  32. DC_EN ?= 1
  33. CCM_EN ?= 1
  34. # bus mode, ilm/dlm/icache/dcache is disabled by default
  35. else ifeq ($(RUNMODE),bus)
  36. ILM_EN ?= 0
  37. DLM_EN ?= 0
  38. IC_EN ?= 0
  39. DC_EN ?= 0
  40. CCM_EN ?= 0
  41. # all on/cache lm mode, ilm/dlm/icache/dcache enabled
  42. else ifeq ($(RUNMODE),clm)
  43. ILM_EN ?= 1
  44. DLM_EN ?= 1
  45. IC_EN ?= 1
  46. DC_EN ?= 1
  47. CCM_EN ?= 1
  48. # if not match above cases, manual control mode, if not match, default equal lm mode
  49. else
  50. ILM_EN ?= 1
  51. DLM_EN ?= 1
  52. IC_EN ?= 0
  53. DC_EN ?= 0
  54. CCM_EN ?= 0
  55. endif
  56. $(info Do run mode control, RUNMODE=$(RUNMODE), IC_EN=$(IC_EN), DC_EN=$(DC_EN), ILM_EN=$(ILM_EN), DLM_EN=$(DLM_EN), CCM_EN=$(CCM_EN))
  57. COMMON_FLAGS += -DRUNMODE_STRING=\"$(RUNMODE)\" -DRUNMODE_CONTROL
  58. else # RUNMODE is not defined
  59. # please don't define RUNMODE_CONTROL
  60. CCM_EN ?=
  61. ILM_EN ?=
  62. DLM_EN ?=
  63. IC_EN ?=
  64. DC_EN ?=
  65. endif
  66. ifneq ($(ILM_EN),)
  67. COMMON_FLAGS += -DRUNMODE_ILM_EN=$(ILM_EN)
  68. endif
  69. ifneq ($(DLM_EN),)
  70. COMMON_FLAGS += -DRUNMODE_DLM_EN=$(DLM_EN)
  71. endif
  72. ifneq ($(IC_EN),)
  73. COMMON_FLAGS += -DRUNMODE_IC_EN=$(IC_EN)
  74. endif
  75. ifneq ($(DC_EN),)
  76. COMMON_FLAGS += -DRUNMODE_DC_EN=$(DC_EN)
  77. endif
  78. ifneq ($(CCM_EN),)
  79. COMMON_FLAGS += -DRUNMODE_CCM_EN=$(CCM_EN)
  80. endif
  81. LDSPEC_EN ?=
  82. ifneq ($(LDSPEC_EN),)
  83. COMMON_FLAGS += -DRUNMODE_LDSPEC_EN=$(LDSPEC_EN)
  84. endif
  85. L2_EN ?=
  86. ifneq ($(L2_EN),)
  87. COMMON_FLAGS += -DRUNMODE_L2_EN=$(L2_EN)
  88. endif
  89. BPU_EN ?=
  90. ifneq ($(BPU_EN),)
  91. COMMON_FLAGS += -DRUNMODE_BPU_EN=$(BPU_EN)
  92. endif
  93. ECC_EN ?=
  94. ifneq ($(ECC_EN),)
  95. COMMON_FLAGS += -DRUNMODE_ECC_EN=$(ECC_EN)
  96. endif
  97. # NOTE: extra XLCFG_xxx make variables to control
  98. # cpu feature present or not which is only internally used by Nuclei(XinLai)
  99. # This will affect the cpufeature.h and evalsoc.h
  100. XLCFG_SPMP ?=
  101. ifeq ($(XLCFG_SPMP),1)
  102. XLCFG_TEE := 1
  103. COMMON_FLAGS += -DCFG_HAS_SPMP
  104. endif
  105. XLCFG_SMPU ?=
  106. ifeq ($(XLCFG_SMPU),1)
  107. XLCFG_TEE := 1
  108. COMMON_FLAGS += -DCFG_HAS_SMPU
  109. endif
  110. XLCFG_TEE ?=
  111. ifeq ($(XLCFG_TEE),1)
  112. COMMON_FLAGS += -DCFG_HAS_TEE
  113. endif
  114. XLCFG_PMP ?=
  115. ifeq ($(XLCFG_PMP),1)
  116. COMMON_FLAGS += -DCFG_HAS_PMP
  117. else ifeq ($(XLCFG_PMP),0)
  118. COMMON_FLAGS += -DUNDEF_CFG_HAS_PMP
  119. endif
  120. XLCFG_CCM ?=
  121. ifeq ($(XLCFG_CCM),1)
  122. COMMON_FLAGS += -DCFG_HAS_IOCC
  123. endif
  124. XLCFG_ECLIC ?=
  125. ifeq ($(XLCFG_ECLIC),1)
  126. COMMON_FLAGS += -DCFG_HAS_CLIC
  127. else ifeq ($(XLCFG_ECLIC),2)
  128. COMMON_FLAGS += -DCFG_HAS_ECLICV2 -DCFG_HAS_CLIC
  129. else ifeq ($(XLCFG_ECLIC),0)
  130. COMMON_FLAGS += -DUNDEF_CFG_HAS_CLIC
  131. endif
  132. XLCFG_PLIC ?=
  133. ifeq ($(XLCFG_PLIC),1)
  134. COMMON_FLAGS += -DCFG_HAS_PLIC
  135. endif
  136. XLCFG_SYSTIMER ?=
  137. ifeq ($(XLCFG_SYSTIMER),1)
  138. COMMON_FLAGS += -DCFG_TMR_PRIVATE
  139. else ifeq ($(XLCFG_SYSTIMER),0)
  140. COMMON_FLAGS += -DUNDEF_CFG_TMR_PRIVATE
  141. endif
  142. XLCFG_SSTC ?=
  143. ifeq ($(XLCFG_SSTC),1)
  144. COMMON_FLAGS += -DCFG_HAS_ISA_SSTC
  145. endif
  146. XLCFG_CIDU ?=
  147. ifeq ($(XLCFG_CIDU),1)
  148. COMMON_FLAGS += -DCFG_HAS_IDU
  149. endif
  150. XLCFG_HPM ?=
  151. ifeq ($(XLCFG_HPM),1)
  152. COMMON_FLAGS += -DCFG_HAS_HPM
  153. endif
  154. XLCFG_SMPCC ?=
  155. ifeq ($(XLCFG_SMPCC),1)
  156. COMMON_FLAGS += -DCFG_HAS_SMP
  157. else ifeq ($(XLCFG_SMPCC),0)
  158. COMMON_FLAGS += -DUNDEF_CFG_HAS_SMP
  159. endif