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

📄 intendis.s

📁 VRTX操作系统
💻 S
字号:
;*************************************************************************
;
;
;  IMPORTANT - USE OF THIS SOFTWARE IS SUBJECT TO LICENSE RESTRICTIONS
;  CAREFULLY READ THE LICENSE AGREEMENT BEFORE USING THE SOFTWARE
;
;
;*************************************************************************
; ORIGIN UK 35-0450.05-400
;******************************************************************
;
;       ARM VRTRmc
;
;******************************************************************
;
;       Description
;       ===========
;
;       INTENDIS.S - Interrupt Enable/Disable routines
;
;
;       Revision History
;       ================
;
;       Version    Date       Author               Reason for Change
;       1.0        03/06/96   Samsung & P.Cumming  Initial Version
;	1.1        29/07/97   Samsung & P.Cumming  cpu_interrupt_window
;	                                           modified to include
;	                                           exceptions
;*******************************************************************

FIQMode			EQU	&11
IRQMode			EQU	&12
SVCMode			EQU	&13
MaskMode		EQU	&1f

NoInt			EQU	&000000c0
NoIRQInt		EQU	&00000080
NoFIQInt		EQU	&00000040

	
	IMPORT	vmc_keep_FIQ_enabled
	
	EXPORT	|cpu_interrupt_disable|
	EXPORT	|cpu_interrupt_restore|
	EXPORT	|cpu_interrupt_enable|
	EXPORT	|cpu_interrupt_window|


	AREA	|C$$code$$interrupt_dis_en|, CODE, READONLY, INTERWORK

c_keep_FIQ_enabled DCD  vmc_keep_FIQ_enabled


;****************************************************************************
;	cpu_interrupt_xxxx : Interrupt disable / enable routines
;****************************************************************************
;
;	extern	cpu_interrupt_t	cpu_interrupt_disable(void);
;
|cpu_interrupt_disable|
	ldr	r0,c_keep_FIQ_enabled	;load address of vmc_keep_FIQ_enabled
	ldrb	r1,[r0]			;get vmc_keep_FIQ_enables
	cmp	r1,#0			;check if we keep FIQ enabled	

	mrs	r0,cpsr
	orreq	r1,r0,#NoInt
	orrne	r1,r0,#NoIRQInt
	msr	cpsr,r1

 IF :DEF:VMC_PROBE_INTERRUPT
	IMPORT	vmc_intr_disable_start
	stmfd	sp!,{r0,lr} 	;save r0 used by vmc_intr_disable_stop
	mov	r0,lr	;lr gives pc for interrupt disable 
	bl	vmc_intr_disable_start ;start timer
	ldmfd	sp!,{r0,lr} 	;restore r0
 ENDIF

 IF Thumb = {FALSE}	
	mov	pc,lr
 ELSE
        bx lr 
 ENDIF


;
;	extern	void	cpu_interrupt_restore(cpu_interrupt_t);
;
|cpu_interrupt_restore|

	msr	cpsr,r0
 IF Thumb = {FALSE}
	mov	pc,lr
 ELSE
        bx lr 
 ENDIF

;
;	extern	void	cpu_interrupt_enable(void);
;
|cpu_interrupt_enable|
	mrs	r0,cpsr
	bic	r0,r0,#NoInt

 IF :DEF:VMC_PROBE_INTERRUPT	
	IMPORT	vmc_intr_disable_stop
	stmfd	sp!,{r0,lr} 	;save r0 used by vmc_intr_disable_stop
	mov	r0,lr		;lr gives pc for interrupt disable 
	bl	vmc_intr_disable_stop ;stop timer
	ldmfd	sp!,{r0,lr} 	;restore r0
 ENDIF

	msr	cpsr,r0
 IF Thumb = {FALSE}
	mov	pc,lr
 ELSE
        bx lr 
 ENDIF

;
;	extern	void	cpu_interrupt_window(cpu_interrupt_t);
;
|cpu_interrupt_window|
	mrs	r1,cpsr
	msr	cpsr,r0
	msr	cpsr,r1
 IF Thumb = {FALSE}
	mov	pc,lr
 ELSE
        bx lr  
 ENDIF

 END

⌨️ 快捷键说明

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