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

📄 mmumacro.s

📁 wince底层驱动开发代码 ARM作为一种嵌入式系统处理器
💻 S
📖 第 1 页 / 共 3 页
字号:
 ENDIF
	MEND

;Coprocessor read of Domain Access Control reg. 
;
	MACRO
	RDMMU_DAControl	$reg_number
	NO_RDMMU_DAControl	$reg_number
 IF FORCE_TGTCPU = "ARM720"
	RDMMU_DAControl_720T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM920"
	RDMMU_DAControl_920T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "SA110"
	RDMMU_DAControl_110	$reg_number
 ENDIF
	MEND

;Coprocessor write of Domain Access Control reg. 
;
	MACRO 
	WRMMU_DAControl	$reg_number
	NO_WRMMU_DAControl	$reg_number
 IF FORCE_TGTCPU = "ARM720"
	WRMMU_DAControl_720T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM920"
	WRMMU_DAControl_920T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "SA110"
	WRMMU_DAControl_110	$reg_number
 ENDIF
	MEND

;Coprocessor read of Fault Status register 
;
    MACRO
    RDMMU_FaultStatus	$reg
    NO_RDMMU_FaultStatus	$reg
 IF FORCE_TGTCPU = "SA110"
    RDMMU_FaultStatus_110	$reg
 ENDIF
 IF FORCE_TGTCPU = "SA110"
    RDMMU_FaultStatus_110	$reg
 ENDIF
 IF FORCE_TGTCPU = "SA110"
    RDMMU_FaultStatus_110	$reg
 ENDIF
    MEND

;Coprocessor write of Fault Status register 
;
    MACRO 
    WRMMU_FaultStatus	$reg
    NO_WRMMU_FaultStatus	$reg
 IF FORCE_TGTCPU = "ARM720"
    WRMMU_FaultStatus_720T	$reg
 ENDIF
 IF FORCE_TGTCPU = "ARM920"
    WRMMU_FaultStatus_920T	$reg
 ENDIF
 IF FORCE_TGTCPU = "SA110"
    WRMMU_FaultStatus_110	$reg
 ENDIF
    MEND

;Coprocessor read of Fault Address register 
;
    MACRO
    RDMMU_FaultAddress	$reg
    NO_RDMMU_FaultAddress	$reg
 IF FORCE_TGTCPU = "ARM720"
    RDMMU_FaultAddress_720T	$reg
 ENDIF
 IF FORCE_TGTCPU = "ARM920"
    RDMMU_FaultAddress_920T	$reg
 ENDIF
 IF FORCE_TGTCPU = "SA110"
    RDMMU_FaultAddress_110	$reg
 ENDIF
    MEND

;Coprocessor write of Fault Address register 
;
    MACRO 
    WRMMU_FaultAddress	$reg
    NO_WRMMU_FaultAddress	$reg
 IF FORCE_TGTCPU = "ARM720"
    WRMMU_FaultAddress_720T	$reg
 ENDIF
 IF FORCE_TGTCPU = "ARM920"
    WRMMU_FaultAddress_920T	$reg
 ENDIF
 IF FORCE_TGTCPU = "SA110"
    WRMMU_FaultAddress_110	$reg
 ENDIF
    MEND

;Flush TLB 
;
	MACRO
	WRMMU_FlushTB	$reg_number
	NO_WRMMU_FlushTB	$reg_number
 IF FORCE_TGTCPU = "ARM720"
	WRMMU_FlushTB_720T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM920"
	WRMMU_FlushTB_920T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "SA110"
	WRMMU_FlushTB_110	$reg_number
 ENDIF
	MEND

;Flush Instruction TLB 
;
	MACRO
	WRMMU_FlushITB	$reg_number
	NO_WRMMU_FlushITB	$reg_number
 IF FORCE_TGTCPU = "ARM720"
	WRMMU_FlushITB_720T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM920"
	WRMMU_FlushITB_920T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "SA110"
	WRMMU_FlushITB_110	$reg_number
 ENDIF
	MEND

;Flush Data TLB
;
	MACRO
	WRMMU_FlushDTB	$reg_number
	NO_WRMMU_FlushDTB	$reg_number
 IF FORCE_TGTCPU = "ARM720"
	WRMMU_FlushDTB_720T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM920"
	WRMMU_FlushDTB_920T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "SA110"
	WRMMU_FlushDTB_110	$reg_number
 ENDIF
	MEND

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

;Coprocessor write of MPU cache bits 
;
	MACRO 
	WRMPU_CacheBits	$reg_number
	NO_WRMPU_CacheBits	$reg_number
 IF FORCE_TGTCPU = "ARM740"
	WRMPU_CacheBits_740T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM940"
	WRMPU_CacheBits_940T	$reg_number
 ENDIF
	MEND

;Coprocessor write of MPU buffer bits 
;
	MACRO 
	WRMPU_BufferBits	$reg_number
	NO_WRMPU_BufferBits	$reg_number
 IF FORCE_TGTCPU = "ARM740"
	WRMPU_BufferBits_740T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM940"
	WRMPU_BufferBits_940T	$reg_number
 ENDIF
	MEND

;Coprocessor write of MPU access bits 
;
	MACRO 
	WRMPU_AccessBits	$reg_number
	NO_WRMPU_AccessBits	$reg_number
 IF FORCE_TGTCPU = "ARM740"
	WRMPU_AccessBits_740T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM940"
	WRMPU_AccessBits_940T	$reg_number
 ENDIF
	MEND

;Coprocessor write of MPU region registors 
;
	MACRO 
	WRMPU_Region	$region, $reg_number
	NO_WRMPU_Region	$region, $reg_number
 IF FORCE_TGTCPU = "ARM740"
	WRMPU_Region_740T	$region, $reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM940"
	WRMPU_Region_940T	$region, $reg_number
 ENDIF
	MEND

;-----------------------------------------------------------
;Coprocessor cache control 
;Flush I & D Caches
;
	MACRO 
	WRCACHE_FlushIDC	$reg_number
	NO_WRCACHE_FlushIDC	$reg_number
 IF FORCE_TGTCPU = "ARM720"
	WRCACHE_FlushIDC_720T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM740"
	WRCACHE_FlushIDC_740T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM920"
	WRCACHE_FlushIDC_920T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM940"
	WRCACHE_FlushIDC_940T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "SA110"
	WRCACHE_FlushIDC_110	$reg_number
 ENDIF
	MEND

;Coprocessor cache control 
;Flush ICache
;
	MACRO 
	WRCACHE_FlushIC	$reg_number
	NO_WRCACHE_FlushIC	$reg_number
 IF FORCE_TGTCPU = "ARM720"
	WRCACHE_FlushIC_720T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM740"
	WRCACHE_FlushIC_740T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM920"
	WRCACHE_FlushIC_920T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM940"
	WRCACHE_FlushIC_940T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "SA110"
	WRCACHE_FlushIC_110	$reg_number
 ENDIF
	MEND

;Coprocessor cache control 
;Flush DCache
;
	MACRO 
	WRCACHE_FlushDC	$reg_number
	NO_WRCACHE_FlushDC	$reg_number
 IF FORCE_TGTCPU = "ARM720"
	WRCACHE_FlushDC_720T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM740"
	WRCACHE_FlushDC_740T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM920"
	WRCACHE_FlushDC_920T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM940"
	WRCACHE_FlushDC_940T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "SA110"
	WRCACHE_FlushDC_110	$reg_number
 ENDIF
	MEND

;Coprocessor cache control 
;Flush DCache entry
;
	MACRO 
	WRCACHE_CacheFlushDentry	$reg_number
	NO_WRCACHE_CacheFlushDentry	$reg_number
 IF FORCE_TGTCPU = "ARM720"
	WRCACHE_CacheFlushDentry_720T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM740"
	WRCACHE_CacheFlushDentry_740T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM920"
	WRCACHE_CacheFlushDentry_920T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM940"
	WRCACHE_CacheFlushDentry_940T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "SA110"
	WRCACHE_CacheFlushDentry_110	$reg_number
 ENDIF
	MEND

;Coprocessor cache control 
;Clean DCache entry
;
	MACRO 
	WRCACHE_CleanDCentry	$reg_number
	NO_WRCACHE_CleanDCentry	$reg_number
 IF FORCE_TGTCPU = "ARM720"
	WRCACHE_CleanDCentry_720T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM740"
	WRCACHE_CleanDCentry_740T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM920"
	WRCACHE_CleanDCentry_920T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM940"
	WRCACHE_CleanDCentry_940T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "SA110"
	WRCACHE_CleanDCentry_110	$reg_number
 ENDIF
	MEND

;Coprocessor cache control 
;Clean + Flush DCache entry
;
	MACRO 
	WRCACHE_Clean_FlushDCentry	$reg_number
	NO_WRCACHE_Clean_FlushDCentry	$reg_number
 IF FORCE_TGTCPU = "ARM720"
	WRCACHE_Clean_FlushDCentry_720T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM740"
	WRCACHE_Clean_FlushDCentry_740T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM920"
	WRCACHE_Clean_FlushDCentry_920T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM940"
	WRCACHE_Clean_FlushDCentry_940T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "SA110"
	WRCACHE_Clean_FlushDCentry_110	$reg_number
 ENDIF
	MEND

;Drain Write Buffer.
;
	MACRO
	WRCACHE_DrainWriteBuffer	$reg_number
	NO_WRCACHE_DrainWriteBuffer	$reg_number
 IF FORCE_TGTCPU = "ARM720"
	WRCACHE_DrainWriteBuffer_720T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM740"
	WRCACHE_DrainWriteBuffer_740T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM920"
	WRCACHE_DrainWriteBuffer_920T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM940"
	WRCACHE_DrainWriteBuffer_940T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "SA110"
	WRCACHE_DrainWriteBuffer_110	$reg_number
 ENDIF
	MEND

;Clean DCache (only) from address in $reg1 to (excl) addr in $reg2
;
	MACRO
	WRCACHE_CleanDrange	$reg1, $reg2
	NO_WRCACHE_CleanDrange	$reg1, $reg2
 IF FORCE_TGTCPU = "ARM720"
	WRCACHE_CleanDrange_720T	$reg1, $reg2
 ENDIF
 IF FORCE_TGTCPU = "ARM740"
	WRCACHE_CleanDrange_740T	$reg1, $reg2
 ENDIF
 IF FORCE_TGTCPU = "ARM920"
	WRCACHE_CleanDrange_920T	$reg1, $reg2
 ENDIF
 IF FORCE_TGTCPU = "ARM940"
	WRCACHE_CleanDrange_940T	$reg1, $reg2
 ENDIF
 IF FORCE_TGTCPU = "SA110"
	WRCACHE_CleanDrange_110	$reg1, $reg2
 ENDIF
	MEND

;Clean all DCache 
;
	MACRO
	WRCACHE_CleanDCache	$w1, $w2, $w3, $w4, $w5, $w6
	NO_WRCACHE_CleanDCache	$w1, $w2, $w3, $w4, $w5, $w6
 IF FORCE_TGTCPU = "ARM720"
	WRCACHE_CleanDCache_720T	$w1, $w2, $w3, $w4, $w5, $w6
 ENDIF
 IF FORCE_TGTCPU = "ARM740"
	WRCACHE_CleanDCache_740T	$w1, $w2, $w3, $w4, $w5, $w6
 ENDIF
 IF FORCE_TGTCPU = "ARM920"
	WRCACHE_CleanDCache_920T	$w1, $w2, $w3, $w4, $w5, $w6
 ENDIF
 IF FORCE_TGTCPU = "ARM940"
	WRCACHE_CleanDCache_940T	$w1, $w2, $w3, $w4, $w5, $w6
 ENDIF
 IF FORCE_TGTCPU = "SA110"
	WRCACHE_CleanDCache_110	$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 FORCE_TGTCPU = "ARM920"
	WRCLK_EnableClockSW_920T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM940"
	WRCLK_EnableClockSW_940T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "SA110"
	WRCLK_EnableClockSW_110	$reg_number
 ENDIF
	MEND

;Coprocessor test/clock/idle control 
;Disable Clock Switching
;
	MACRO
	WRCLK_DisableClockSW	$reg_number
	NO_WRCLK_DisableClockSW	$reg_number
 IF FORCE_TGTCPU = "ARM920"
	WRCLK_DisableClockSW_920T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM940"
	WRCLK_DisableClockSW_940T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "SA110"
	WRCLK_DisableClockSW_110	$reg_number
 ENDIF
	MEND

;Coprocessor test/clock/idle control 
;Disable nMCLK output
;
	MACRO
	WRCLK_DisablenMCLK	$reg_number
	NO_WRCLK_DisablenMCLK	$reg_number
 IF FORCE_TGTCPU = "ARM920"
	WRCLK_DisablenMCLK_920T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "SA110"
	WRCLK_DisablenMCLK_110	$reg_number
 ENDIF
	MEND

;Coprocessor test/clock/idle control 
;Wait for Interrupt
;
	MACRO
	WRTEST_WaitInt	$reg_number
	NO_WRTEST_WaitInt	$reg_number
 IF FORCE_TGTCPU = "ARM720"
	WRTEST_WaitInt_720T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM740"
	WRTEST_WaitInt_740T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM920"
	WRTEST_WaitInt_920T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "ARM940"
	WRTEST_WaitInt_940T	$reg_number
 ENDIF
 IF FORCE_TGTCPU = "SA110"
	WRTEST_WaitInt_110	$reg_number
 ENDIF
	MEND

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

	MACRO
	SET_MPU_REGION	$num, $address, $size, $access
	NO_SET_MPU_REGION	$num, $address, $size, $access
 IF FORCE_TGTCPU = "ARM740"
	SET_MPU_REGION_740T	$num, $address, $size, $access
 ENDIF
 IF FORCE_TGTCPU = "ARM940"
	SET_MPU_REGION_940T	$num, $address, $size, $access
 ENDIF
	MEND

 ENDIF
	END

; EOF mmumacros.s

⌨️ 快捷键说明

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