⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mmumacro.s

📁 FIC8120方案的 StartCell_Driver
💻 S
📖 第 1 页 / 共 3 页
字号:
;
	MACRO
	WRMMU_FlushTB	$reg_number
 IF :LNOT: :DEF: HAL_HAS_MMU
	NO_WRMMU_FlushTB	$reg_number
 ENDIF
 IF :DEF: ARM720T
	WRMMU_FlushTB_720T	$reg_number
 ENDIF
 IF :DEF: ARM922
	WRMMU_FlushTB_920T	$reg_number
 ENDIF
 IF :DEF: ARM1020T
	WRMMU_FlushTB_1020T	$reg_number
 ENDIF
 IF :DEF: SA110
	WRMMU_FlushTB_110	$reg_number
 ENDIF
 IF :DEF: XSCALE
	WRMMU_FlushTB_XSCALE	$reg_number
 ENDIF
	MEND

;Flush Instruction TLB 
;
	MACRO
	WRMMU_FlushITB	$reg_number
 IF :LNOT: :DEF: HAL_HAS_MMU
	NO_WRMMU_FlushITB	$reg_number
 ENDIF
 IF :DEF: ARM720T
	WRMMU_FlushITB_720T	$reg_number
 ENDIF
 IF :DEF: ARM922
	WRMMU_FlushITB_920T	$reg_number
 ENDIF
 IF :DEF: ARM1020T
	WRMMU_FlushITB_1020T	$reg_number
 ENDIF
 IF :DEF: SA110
	WRMMU_FlushITB_110	$reg_number
 ENDIF
 IF :DEF: XSCALE
	WRMMU_FlushITB_XSCALE	$reg_number
 ENDIF
	MEND

;Flush Data TLB
;
	MACRO
	WRMMU_FlushDTB	$reg_number
 IF :LNOT: :DEF: HAL_HAS_MMU
	NO_WRMMU_FlushDTB	$reg_number
 ENDIF
 IF :DEF: ARM720T
	WRMMU_FlushDTB_720T	$reg_number
 ENDIF
 IF :DEF: ARM922
	WRMMU_FlushDTB_920T	$reg_number
 ENDIF
 IF :DEF: ARM1020T
	WRMMU_FlushDTB_1020T	$reg_number
 ENDIF
 IF :DEF: SA110
	WRMMU_FlushDTB_110	$reg_number
 ENDIF
 IF :DEF: XSCALE
	WRMMU_FlushDTB_XSCALE	$reg_number
 ENDIF
	MEND

;Coprocessor read of Coprocessor Access Control reg. 
;
	MACRO
	RDCP_Access	$reg_number
 IF :DEF: XSCALE
	RDCP_Access_XSCALE	$reg_number
 ENDIF
	MEND

;Coprocessor write of Coprocessor Access Control reg. 
;
	MACRO
	WRCP_Access	$reg_number
 IF :DEF: XSCALE
	WRCP_Access_XSCALE	$reg_number
 ENDIF
	MEND

;-----------------------------------------------------------
; MPU support macros:

;Coprocessor write of MPU cache bits 
;
	MACRO 
	WRMPU_CacheBits	$reg_number
 IF :LNOT: :DEF: HAL_HAS_MPU
	NO_WRMPU_CacheBits	$reg_number
 ENDIF
 IF :DEF: ARM740T
	WRMPU_CacheBits_740T	$reg_number
 ENDIF
 IF :DEF: ARM940T
	WRMPU_CacheBits_940T	$reg_number
 ENDIF
 IF :DEF: ARM946T
	WRMPU_CacheBits_946T	$reg_number
 ENDIF
	MEND

;Coprocessor write of MPU buffer bits 
;
	MACRO 
	WRMPU_BufferBits	$reg_number
 IF :LNOT: :DEF: HAL_HAS_MPU
	NO_WRMPU_BufferBits	$reg_number
 ENDIF
 IF :DEF: ARM740T
	WRMPU_BufferBits_740T	$reg_number
 ENDIF
 IF :DEF: ARM940T
	WRMPU_BufferBits_940T	$reg_number
 ENDIF
 IF :DEF: ARM946T
	WRMPU_BufferBits_946T	$reg_number
 ENDIF
	MEND

;Coprocessor write of MPU access bits 
;
	MACRO 
	WRMPU_AccessBits	$reg_number
 IF :LNOT: :DEF: HAL_HAS_MPU
	NO_WRMPU_AccessBits	$reg_number
 ENDIF
 IF :DEF: ARM740T
	WRMPU_AccessBits_740T	$reg_number
 ENDIF
 IF :DEF: ARM940T
	WRMPU_AccessBits_940T	$reg_number
 ENDIF
 IF :DEF: ARM946T
	WRMPU_AccessBits_946T	$reg_number
 ENDIF
	MEND

;Coprocessor write of MPU region registors 
;
	MACRO 
	WRMPU_Region	$region, $reg_number
 IF :LNOT: :DEF: HAL_HAS_MPU
	NO_WRMPU_Region	$region, $reg_number
 ENDIF
 IF :DEF: ARM740T
	WRMPU_Region_740T	$region, $reg_number
 ENDIF
 IF :DEF: ARM940T
	WRMPU_Region_940T	$region, $reg_number
 ENDIF
 IF :DEF: ARM946T
	WRMPU_Region_946T	$region, $reg_number
 ENDIF
	MEND

;-----------------------------------------------------------
;Coprocessor cache control 
;Flush I & D Caches
;
	MACRO 
	WRCACHE_FlushIDC	$reg_number
 IF :LNOT: :DEF: HAL_HAS_CACHE
	NO_WRCACHE_FlushIDC	$reg_number
 ENDIF
 IF :DEF: ARM720T
	WRCACHE_FlushIDC_720T	$reg_number
 ENDIF
 IF :DEF: ARM740T
	WRCACHE_FlushIDC_740T	$reg_number
 ENDIF
 IF :DEF: ARM922
	WRCACHE_FlushIDC_920T	$reg_number
 ENDIF
 IF :DEF: ARM940T
	WRCACHE_FlushIDC_940T	$reg_number
 ENDIF
 IF :DEF: ARM946T
	WRCACHE_FlushIDC_946T	$reg_number
 ENDIF
 IF :DEF: ARM1020T
	WRCACHE_FlushIDC_1020T	$reg_number
 ENDIF
 IF :DEF: SA110
	WRCACHE_FlushIDC_110	$reg_number
 ENDIF
 IF :DEF: XSCALE
	WRCACHE_FlushIDC_XSCALE	$reg_number
 ENDIF
	MEND

;Coprocessor cache control 
;Flush ICache
;
	MACRO 
	WRCACHE_FlushIC	$reg_number
 IF :LNOT: :DEF: HAL_HAS_CACHE
	NO_WRCACHE_FlushIC	$reg_number
 ENDIF
 IF :DEF: ARM720T
	WRCACHE_FlushIC_720T	$reg_number
 ENDIF
 IF :DEF: ARM740T
	WRCACHE_FlushIC_740T	$reg_number
 ENDIF
 IF :DEF: ARM922
	WRCACHE_FlushIC_920T	$reg_number
 ENDIF
 IF :DEF: ARM940T
	WRCACHE_FlushIC_940T	$reg_number
 ENDIF
 IF :DEF: ARM946T
	WRCACHE_FlushIC_946T	$reg_number
 ENDIF
 IF :DEF: ARM1020T
	WRCACHE_FlushIC_1020T	$reg_number
 ENDIF
 IF :DEF: SA110
	WRCACHE_FlushIC_110	$reg_number
 ENDIF
 IF :DEF: XSCALE
	WRCACHE_FlushIC_XSCALE	$reg_number
 ENDIF
	MEND

;Coprocessor cache control 
;Flush DCache
;
	MACRO 
	WRCACHE_FlushDC	$reg_number
 IF :LNOT: :DEF: HAL_HAS_CACHE
	NO_WRCACHE_FlushDC	$reg_number
 ENDIF
 IF :DEF: ARM720T
	WRCACHE_FlushDC_720T	$reg_number
 ENDIF
 IF :DEF: ARM740T
	WRCACHE_FlushDC_740T	$reg_number
 ENDIF
 IF :DEF: ARM922
	WRCACHE_FlushDC_920T	$reg_number
 ENDIF
 IF :DEF: ARM940T
	WRCACHE_FlushDC_940T	$reg_number
 ENDIF
 IF :DEF: ARM946T
	WRCACHE_FlushDC_946T	$reg_number
 ENDIF
 IF :DEF: ARM1020T
	WRCACHE_FlushDC_1020T	$reg_number
 ENDIF
 IF :DEF: SA110
	WRCACHE_FlushDC_110	$reg_number
 ENDIF
 IF :DEF: XSCALE
	WRCACHE_FlushDC_XSCALE	$reg_number
 ENDIF
	MEND

;Coprocessor cache control 
;Flush DCache entry
;
	MACRO 
	WRCACHE_CacheFlushDentry	$reg_number
 IF :LNOT: :DEF: HAL_HAS_CACHE
	NO_WRCACHE_CacheFlushDentry	$reg_number
 ENDIF
 IF :DEF: ARM720T
	WRCACHE_CacheFlushDentry_720T	$reg_number
 ENDIF
 IF :DEF: ARM740T
	WRCACHE_CacheFlushDentry_740T	$reg_number
 ENDIF
 IF :DEF: ARM922
	WRCACHE_CacheFlushDentry_920T	$reg_number
 ENDIF
 IF :DEF: ARM940T
	WRCACHE_CacheFlushDentry_940T	$reg_number
 ENDIF
 IF :DEF: ARM946T
	WRCACHE_CacheFlushDentry_946T	$reg_number
 ENDIF
 IF :DEF: ARM1020T
	WRCACHE_CacheFlushDentry_1020T	$reg_number
 ENDIF
 IF :DEF: SA110
	WRCACHE_CacheFlushDentry_110	$reg_number
 ENDIF
 IF :DEF: XSCALE
	WRCACHE_CacheFlushDentry_XSCALE	$reg_number
 ENDIF
	MEND

;Coprocessor cache control 
;Clean DCache entry
;
	MACRO 
	WRCACHE_CleanDCentry	$reg_number
 IF :LNOT: :DEF: HAL_HAS_CACHE
	NO_WRCACHE_CleanDCentry	$reg_number
 ENDIF
 IF :DEF: ARM720T
	WRCACHE_CleanDCentry_720T	$reg_number
 ENDIF
 IF :DEF: ARM740T
	WRCACHE_CleanDCentry_740T	$reg_number
 ENDIF
 IF :DEF: ARM922
	WRCACHE_CleanDCentry_920T	$reg_number
 ENDIF
 IF :DEF: ARM940T
	WRCACHE_CleanDCentry_940T	$reg_number
 ENDIF
 IF :DEF: ARM946T
	WRCACHE_CleanDCentry_946T	$reg_number
 ENDIF
 IF :DEF: ARM1020T
	WRCACHE_CleanDCentry_1020T	$reg_number
 ENDIF
 IF :DEF: SA110
	WRCACHE_CleanDCentry_110	$reg_number
 ENDIF
 IF :DEF: XSCALE
	WRCACHE_CleanDCentry_XSCALE	$reg_number
 ENDIF
	MEND

;Coprocessor cache control 
;Clean + Flush DCache entry
;
	MACRO 
	WRCACHE_Clean_FlushDCentry	$reg_number
 IF :LNOT: :DEF: HAL_HAS_CACHE
	NO_WRCACHE_Clean_FlushDCentry	$reg_number
 ENDIF
 IF :DEF: ARM720T
	WRCACHE_Clean_FlushDCentry_720T	$reg_number
 ENDIF
 IF :DEF: ARM740T
	WRCACHE_Clean_FlushDCentry_740T	$reg_number
 ENDIF
 IF :DEF: ARM922
	WRCACHE_Clean_FlushDCentry_920T	$reg_number
 ENDIF
 IF :DEF: ARM940T
	WRCACHE_Clean_FlushDCentry_940T	$reg_number
 ENDIF
 IF :DEF: ARM946T
	WRCACHE_Clean_FlushDCentry_946T	$reg_number
 ENDIF
 IF :DEF: ARM1020T
	WRCACHE_Clean_FlushDCentry_1020T	$reg_number
 ENDIF
 IF :DEF: SA110
	WRCACHE_Clean_FlushDCentry_110	$reg_number
 ENDIF
 IF :DEF: XSCALE
	WRCACHE_Clean_FlushDCentry_XSCALE	$reg_number
 ENDIF
	MEND

;Drain Write Buffer.
;
	MACRO
	WRCACHE_DrainWriteBuffer	$reg_number
 IF :LNOT: :DEF: HAL_HAS_WBUFFER
	NO_WRCACHE_DrainWriteBuffer	$reg_number
 ENDIF
 IF :DEF: ARM720T
	WRCACHE_DrainWriteBuffer_720T	$reg_number
 ENDIF
 IF :DEF: ARM740T
	WRCACHE_DrainWriteBuffer_740T	$reg_number
 ENDIF
 IF :DEF: ARM922
	WRCACHE_DrainWriteBuffer_920T	$reg_number
 ENDIF
 IF :DEF: ARM940T
	WRCACHE_DrainWriteBuffer_940T	$reg_number
 ENDIF
 IF :DEF: ARM946T
	WRCACHE_DrainWriteBuffer_946T	$reg_number
 ENDIF
 IF :DEF: ARM1020T
	WRCACHE_DrainWriteBuffer_1020T	$reg_number
 ENDIF
 IF :DEF: SA110
	WRCACHE_DrainWriteBuffer_110	$reg_number
 ENDIF
 IF :DEF: XSCALE
	WRCACHE_DrainWriteBuffer_XSCALE	$reg_number
 ENDIF
	MEND

;Clean DCache (only) from address in $reg1 to (excl) addr in $reg2
;
	MACRO
	WRCACHE_CleanDrange	$reg1, $reg2
 IF :LNOT: :DEF: HAL_HAS_CACHE
	NO_WRCACHE_CleanDrange	$reg1, $reg2
 ENDIF
 IF :DEF: ARM720T
	WRCACHE_CleanDrange_720T	$reg1, $reg2
 ENDIF
 IF :DEF: ARM740T
	WRCACHE_CleanDrange_740T	$reg1, $reg2
 ENDIF
 IF :DEF: ARM922
	WRCACHE_CleanDrange_920T	$reg1, $reg2
 ENDIF
 IF :DEF: ARM940T
	WRCACHE_CleanDrange_940T	$reg1, $reg2
 ENDIF
 IF :DEF: ARM946T
	WRCACHE_CleanDrange_946T	$reg1, $reg2
 ENDIF
 IF :DEF: ARM1020T
	WRCACHE_CleanDrange_1020T	$reg1, $reg2
 ENDIF
 IF :DEF: SA110
	WRCACHE_CleanDrange_110	$reg1, $reg2
 ENDIF
 IF :DEF: XSCALE
	WRCACHE_CleanDrange_XSCALE	$reg1, $reg2
 ENDIF
	MEND

;Clean all DCache 
;
	MACRO
	WRCACHE_CleanDCache	$w1, $w2, $w3, $w4, $w5, $w6
 IF :LNOT: :DEF: HAL_HAS_CACHE
	NO_WRCACHE_CleanDCache	$w1, $w2, $w3, $w4, $w5, $w6
 ENDIF
 IF :DEF: ARM720T
	WRCACHE_CleanDCache_720T	$w1, $w2, $w3, $w4, $w5, $w6
 ENDIF
 IF :DEF: ARM740T
	WRCACHE_CleanDCache_740T	$w1, $w2, $w3, $w4, $w5, $w6
 ENDIF
 IF :DEF: ARM922
	WRCACHE_CleanDCache_920T	$w1, $w2, $w3, $w4, $w5, $w6
 ENDIF
 IF :DEF: ARM940T
	WRCACHE_CleanDCache_940T	$w1, $w2, $w3, $w4, $w5, $w6
 ENDIF
 IF :DEF: ARM946T
	WRCACHE_CleanDCache_946T	$w1, $w2, $w3, $w4, $w5, $w6
 ENDIF
 IF :DEF: ARM1020T
	WRCACHE_CleanDCache_1020T	$w1, $w2, $w3, $w4, $w5, $w6
 ENDIF
 IF :DEF: SA110
	WRCACHE_CleanDCache_110	$w1, $w2, $w3, $w4, $w5, $w6
 ENDIF
 IF :DEF: XSCALE
	WRCACHE_CleanDCache_XSCALE	$w1, $w2, $w3, $w4, $w5, $w6
 ENDIF
	MEND

;------------------------------------------------------------------
;Coprocessor test/clock/idle control 
;Enable Clock Switching
;
	MACRO
	WRCLK_EnableClockSW	$reg_number
	NO_WRCLK_EnableClockSW	$reg_number
 IF :DEF: ARM922
	WRCLK_EnableClockSW_920T	$reg_number
 ENDIF
 IF :DEF: ARM940T
	WRCLK_EnableClockSW_940T	$reg_number
 ENDIF
 IF :DEF: ARM946T
	WRCLK_EnableClockSW_946T	$reg_number
 ENDIF
 IF :DEF: SA110
	WRCLK_EnableClockSW_110	$reg_number
 ENDIF
 IF :DEF: XSCALE
	WRCLK_EnableClockSW_XSCALE	$reg_number
 ENDIF
	MEND

;Coprocessor test/clock/idle control 
;Disable Clock Switching
;
	MACRO
	WRCLK_DisableClockSW	$reg_number
	NO_WRCLK_DisableClockSW	$reg_number
 IF :DEF: ARM922
	WRCLK_DisableClockSW_920T	$reg_number
 ENDIF
 IF :DEF: ARM940T
	WRCLK_DisableClockSW_940T	$reg_number
 ENDIF
 IF :DEF: ARM946T
	WRCLK_DisableClockSW_946T	$reg_number
 ENDIF
 IF :DEF: SA110
	WRCLK_DisableClockSW_110	$reg_number
 ENDIF
 IF :DEF: XSCALE
	WRCLK_DisableClockSW_XSCALE	$reg_number
 ENDIF
	MEND

;Coprocessor test/clock/idle control 
;Disable nMCLK output
;
	MACRO
	WRCLK_DisablenMCLK	$reg_number
	NO_WRCLK_DisablenMCLK	$reg_number
 IF :DEF: ARM922
	WRCLK_DisablenMCLK_920T	$reg_number
 ENDIF
 IF :DEF: SA110
	WRCLK_DisablenMCLK_110	$reg_number
 ENDIF
 IF :DEF: XSCALE
	WRCLK_DisablenMCLK_XSCALE	$reg_number
 ENDIF
	MEND

;Coprocessor test/clock/idle control 
;Wait for Interrupt
;
	MACRO
	WRTEST_WaitInt	$reg_number
	NO_WRTEST_WaitInt	$reg_number
 IF :DEF: ARM720T
	WRTEST_WaitInt_720T	$reg_number
 ENDIF
 IF :DEF: ARM740T
	WRTEST_WaitInt_740T	$reg_number
 ENDIF
 IF :DEF: ARM922
	WRTEST_WaitInt_920T	$reg_number
 ENDIF
 IF :DEF: ARM940T
	WRTEST_WaitInt_940T	$reg_number
 ENDIF
 IF :DEF: ARM946T
	WRTEST_WaitInt_946T	$reg_number
 ENDIF
 IF :DEF: ARM1020T
	WRTEST_WaitInt_1020T	$reg_number
 ENDIF
 IF :DEF: SA110
	WRTEST_WaitInt_110	$reg_number
 ENDIF
 IF :DEF: XSCALE
	WRTEST_WaitInt_XSCALE	$reg_number
 ENDIF
	MEND

;-----------------------------------------------------------
; MPU setup macro and variables
;

	MACRO
	SET_MPU_REGION	$num, $address, $size, $access
 IF :LNOT: :DEF: HAL_HAS_MPU
	NO_SET_MPU_REGION	$num, $address, $size, $access
 ENDIF
 IF :DEF: ARM740T
	SET_MPU_REGION_740T	$num, $address, $size, $access
 ENDIF
 IF :DEF: ARM940T
	SET_MPU_REGION_940T	$num, $address, $size, $access
 ENDIF
 IF :DEF: ARM946T
	SET_MPU_REGION_946T	$num, $address, $size, $access
 ENDIF
	MEND

 ENDIF
	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -