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

📄 intvecs.asm.aptix

📁 OMAP1030 处理器的ARM 侧硬件测试代码 OMAP1030 是TI的双核处理器
💻 APTIX
📖 第 1 页 / 共 2 页
字号:
MIF_CS1_reg                     .word   0xFFFECC14MIF_CS2_reg                     .word   0xFFFECC18MIF_CS3_reg                     .word   0xFFFECC1CARM_IDLECT2_reg                 .word   0xFFFECE08ARM_RSTCT2_reg                  .word   0xFFFECE14MIF_DIV_BY2_MASK                .word   0x00000001                                                   ARM_CKCTL_reg                   .word   0xFFFECE00; bit 1 set to 1 allow to set ARM Peripheral clock divider by 4; bit 2 set to 1 allow to set LCD clock divider by 2; bit 4 set to 0 allow to set ARM clock divider by 1; bit 8 set to 1 allow to set TC clock divider by 2; bit 12 set to 1 allow to set TIMER clock divider by 2; bit 13 set to 0 allow to turn off DSP clock; bit 14 set to 1 allow to use ARM clock and not TC clock for interrupt handler;;; ARM_CKCTL_val                   .word   0x00005106;;; Modify by FVDB (12/04/02) to match DSP MMU at 100MhzARM_CKCTL_val                   .word   0x00005506                                                         AddrDpll                        .word   0xFFFECF00;ValueDpll                       .word   0x00003E32   ;;  [b 0011_(1110_0)(01)1_0010] : mult 28 ------ div 2 for 168MHz                                                      ;;           multp  divValueDpll                       .word   0x00003812    ;;  [b 0011_(1000_0)(00)1_0010] : mult 16 ------ div 1 for 192MHz;                                                     ;;           multp  div;ValueDpll                       .word   0x00003892   ;;  [b 0011_(1000_1)(00)1_0010] : mult 17 ------ div 1 for 204MHz                                                      ;;           multp  div;ValueDpll                       .word   0x00003A32   ;; mult 20 ------ div 2;ValueDpll                       .word   0x00003F52   ;; mult 30 ------ div 3ulpd_cam_clk_ctrl_addr	        .word   0xFFFE087Cconf_pull_dwn_ctrl_4_addr	.word	0xFFFE10AC	.text		.state32	;; INT_Swi(unsigned stack, unsigned stackSize);                  R0              R1;; Enable exception and set up a stack; Works only if called from 16-bit (THUMB) mode;;INT_Swi:        LDRH    r4, [LR, #-2]     ; retrieve SWI parameter	AND	r4, r4, #0xFF	  ; keep the argument only	CMP     r4, #0xFA        BEQ     SetSupervisor        CMP     r4, #0xFB        BEQ     SetUser			CMP     r4, #0xFC        BEQ     EnableFIQ	CMP     r4, #0xFD        BEQ     EnableIRQ	CMP	r4, #0xF5	BEQ	Set_SVC_Stack	CMP	r4, #0xF4	BEQ	Set_AbortD_Stack		CMP	r4, #0xF0	BEQ	SetIRQBit		CMP	r4, #0xF1	BEQ	ClearIRQBit		CMP	r4, #0xF2	BEQ	SetFIQBit		CMP	r4, #0xF3	BEQ	ClearFIQBit	B       ExitSwi           ; not handled		SetSupervisor:		MRS	r7, SPSR	  ; Take a copy of Program Status Register	BIC	r7,r7,#MODE_MASK  ; Clear the mode bits	ORR	r7,r7,#SUP_MODE	  ; Set Supervisor Mode	MSR	SPSR, r7	  ; Write back the modified SPSR	B       ExitSwi           ; not handled	SetUser:	MRS	r7, SPSR		; Get copy of Program Status Register	BIC	r7, r7, #MODE_MASK	; Clear mode bits		ORR	r7, r7, #USR_MODE	; Set User Mode	MSR	SPSR, r7		; Write back modified SPSR		B       ExitSwi			; not handledEnableIRQ:        MOV     r5, #IRQ_MODE        MOV     r6, #IRQ_MASK        B       DoItEnableFIQ:                MOV     r5, #FIQ_MODE        MOV     r6, #FIQ_MASK	B       DoItSet_SVC_Stack:			;STACK MANIPULATION        MOV     SP, r0            ; stack address	MOV	r1,r1,lsl #2      ; convertion from word size to byte size        ADD     SP, r1, SP        ; add size to get initial SP	B	ExitSwiSet_AbortD_Stack:	MRS	r2, CPSR	BIC	r2, r2, #MODE_MASK	ORR	r2, r2, #ABORT_MODE	MSR	CPSR, r2						; set abort mode	;STACK MANIPULATION        MOV     SP, r0            ; stack address	MOV	r1,r1,lsl #2      ; convertion from word size to byte size        ADD     SP, r1, SP        ; add size to get initial SP	BIC	r2, r2, #MODE_MASK	ORR	r2, r2, #SUP_MODE	MSR	CPSR, r2						; restore supervisor mode	B	ExitSwi	SetIRQBit:	MOV     r5, #IRQ_MASK        MOV     r6, #SET_BIT	B       SetClearFIQIRQClearIRQBit:	MOV     r5, #IRQ_MASK        MOV     r6, #CLEAR_BIT	B       SetClearFIQIRQ	SetFIQBit:	MOV     r5, #FIQ_MASK        MOV     r6, #SET_BIT	B       SetClearFIQIRQClearFIQBit:	MOV     r5, #FIQ_MASK        MOV     r6, #CLEAR_BIT	B       SetClearFIQIRQSetClearFIQIRQ:	MRS     r7, SPSR          ; read saved PSR	BIC     r7, r7, r5        ; clear FIQ or IRQ bit of saved PSR	CMP	r6, #CLEAR_BIT    ; if equal to #CLEAR_BIT	BEQ	STORE_SPSR        ; do not set any bit of saved PSR        ORR     r7, r7, r5        ; set FIQ or IRQ bit of saved PSRSTORE_SPSR:        MSR     SPSR, r7          ; store saved PSR to set or clear FIQ or IRQ bit       	B	ExitSwi		DoIt:	;Set FIQ or IRQ mode before reset I/F bit to prevent interruption         MRS     r4, CPSR          ; read current PSR        BIC     r4,r4,#MODE_MASK  ; remove all mode bits        ORR     r4,r4,r5          ; set desired mode        MSR     CPSR, r4          ; set current mode to disable FIQ or IRQ catch	;STACK MANIPULATION        MOV     SP, r0            ; stack address	MOV	r1,r1,lsl #2      ; convertion from word size to byte size        ADD     SP, r1, SP        ; add size to get initial SP	BIC     r4,r4,#MODE_MASK  ; remove all mode bits        ORR     r4,r4,#SUP_MODE                 MSR     CPSR, r4          ; reset supervisor mode               MRS     r4,SPSR           ; read stored status reg         BIC     r4,r4,r6          ; Enable exception        MSR     SPSR,r4           ; set stored status regExitSwi:	MOVS    PC, R14           ; return from SWI	.state16$INT_SetSupervisor	MOV	r3, LR        SWI     #0xFA         ; 0xFA : Enable INT_Swi        MOV     PC, r3   $INT_SetUser:	MOV	r3, LR        SWI     #0xFB        ; 0xFB : Enable INT_Swi	MOV     PC, r3     ;; INT_EnableIRQ(unsigned stack, unsigned stackSize);                    R0              R1;; Enable IRQ and set up a stack - perform SWI to switch to supervisor mode;$INT_EnableIRQ:	MOV	r3, LR        SWI     #0xFD                   ; 0xFD : Enable IRQ        MOV     PC, r3  ;; INT_EnableFIQ(unsigned stack, unsigned stackSize);                  R0              R1;; Enable FIQ and set up a stack - perform SWI to switch to supervisor mode;$INT_EnableFIQ:	MOV	r3, LR        SWI     #0xFC                   ; 0xFE : Enable FIQ        MOV     PC, r3;; INT_Set_SVC_Stack(unsigned stack, unsigned stackSize);                      R0              R1;; Set up a stack for supervisor mode - perform SWI to switch to supervisor mode;$INT_Set_SVC_Stack:	MOV	r3, LR        SWI     #0xF5                   ; 0xF5 : Set Supervisor Stack        MOV     PC, r3	;; INT_Set_SVC_Stack(unsigned stack, unsigned stackSize);                      R0              R1;; Set up a stack for supervisor mode - perform SWI to switch to supervisor mode;$INT_Set_AbortD_Stack:	MOV	r3, LR        SWI     #0xF4                   ; 0xF4 : Set AbortD Stack        MOV     PC, r3	;; INT_SetIRQBit;; Set IRQ bit of PSR (Program Status Register); (Disable IRQ);$INT_SetIRQBit:	MOV	r3, LR        SWI     #0xF0                   ; 0xF0 : Set IRQ Bit of PSR        MOV     PC, r3	;; INT_ClearIRQBit;; Clear IRQ bit of PSR (Program Status Register); (Enable IRQ);$INT_ClearIRQBit:	MOV	r3, LR        SWI     #0xF1                   ; 0xF1 : Clear IRQ Bit of PSR        MOV     PC, r3	;; INT_SetFIQBit;; Set FIQ bit of PSR (Program Status Register); (Disable FIQ);$INT_SetFIQBit:	MOV	r3, LR        SWI     #0xF2                   ; 0xF2 : Set FIQ Bit of PSR        MOV     PC, r3	;; INT_ClearFIQBit;; Clear FIQ bit of PSR (Program Status Register); (Enable FIQ);$INT_ClearFIQBit:	MOV	r3, LR        SWI     #0xF3                   ; 0xF3 : Clear FIQ Bit of PSR        MOV     PC, r3	                .end                    ; Terminate assembly               

⌨️ 快捷键说明

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