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

📄 cpregxsc1.s

📁 Xcale270Bsp包,wince平台
💻 S
📖 第 1 页 / 共 3 页
字号:
;
; This routine Reads all the registers of CP10
;

	LEAF_ENTRY GetCP10Regs

	cmp     r0, #0					; Compare R0 to make sure it's not NULL
	beq		%FT10					; done
    mrc     p10, 0, r2, c0,  c0, 0    ;Get Reg0 of Cp10 
	str		r2, [r0], #4
	mrc     p10, 0, r2, c1,  c0, 0    ;Get Reg1 of Cp10 
	str		r2, [r0], #4
	mrc     p10, 0, r2, c2,  c0, 0    ;Get Reg2 of Cp10 
	str		r2, [r0], #4
	mrc     p10, 0, r2, c3,  c0, 0    ;Get Reg3 of Cp10 
	str		r2, [r0], #4
	mrc     p10, 0, r2, c4,  c0, 0    ;Get Reg4 of Cp10 
	str		r2, [r0], #4
	mrc     p10, 0, r2, c5,  c0, 0    ;Get Reg5 of Cp10 
	str		r2, [r0], #4
	mrc     p10, 0, r2, c6,  c0, 0    ;Get Reg6 of Cp10 
	str		r2, [r0], #4
	mrc     p10, 0, r2, c7,  c0, 0    ;Get Reg7 of Cp10 
	str		r2, [r0], #4
	mrc     p10, 0, r2, c8,  c0, 0    ;Get Reg8 of Cp10 
	str		r2, [r0], #4
	mrc     p10, 0, r2, c9,  c0, 0    ;Get Reg9 of Cp10
	str		r2, [r0], #4
	mrc     p10, 0, r2, c10, c0, 0    ;Get Reg10 of Cp10
	str		r2, [r0], #4
	mrc     p10, 0, r2, c11, c0, 0    ;Get Reg11 of Cp10
	str		r2, [r0], #4
	mrc     p10, 0, r2, c12, c0, 0    ;Get Reg12 of Cp10
	str		r2, [r0], #4
   	mrc     p10, 0, r2, c13, c0, 0    ;Get Reg13 of Cp10
   	str		r2, [r0], #4
   	mrc     p10, 0, r2, c14, c0, 0    ;Get Reg14 of Cp10
   	str		r2, [r0], #4
   	mrc     p10, 0, r2, c15, c0, 0    ;Get Reg15 of Cp10
   	str		r2, [r0], #4
	
10 
    IF Interworking :LOR: Thumbing
       bx  lr
    ELSE
       mov  pc, lr          ; return
    ENDIF

;
; GetCP11Regs - Gets all the registers of CP11
;
; This routine Reads all the registers of CP11
;

	LEAF_ENTRY GetCP11Regs

	cmp     r0, #0					; Compare R0 to make sure it's not NULL
	beq		%FT10					; done
    mrc     p11, 0, r2, c0,  c0, 0    ;Get Reg0 of Cp11 
	str		r2, [r0], #4
	mrc     p11, 0, r2, c1,  c0, 0    ;Get Reg1 of Cp11 
	str		r2, [r0], #4
	mrc     p11, 0, r2, c2,  c0, 0    ;Get Reg2 of Cp11 
	str		r2, [r0], #4
	mrc     p11, 0, r2, c3,  c0, 0    ;Get Reg3 of Cp11 
	str		r2, [r0], #4
	mrc     p11, 0, r2, c4,  c0, 0    ;Get Reg4 of Cp11 
	str		r2, [r0], #4
	mrc     p11, 0, r2, c5,  c0, 0    ;Get Reg5 of Cp11 
	str		r2, [r0], #4
	mrc     p11, 0, r2, c6,  c0, 0    ;Get Reg6 of Cp11 
	str		r2, [r0], #4
	mrc     p11, 0, r2, c7,  c0, 0    ;Get Reg7 of Cp11 
	str		r2, [r0], #4
	mrc     p11, 0, r2, c8,  c0, 0    ;Get Reg8 of Cp11 
	str		r2, [r0], #4
	mrc     p11, 0, r2, c9,  c0, 0    ;Get Reg9 of Cp11
	str		r2, [r0], #4
	mrc     p11, 0, r2, c10, c0, 0    ;Get Reg10 of Cp11
	str		r2, [r0], #4
	mrc     p11, 0, r2, c11, c0, 0    ;Get Reg11 of Cp11
	str		r2, [r0], #4
	mrc     p11, 0, r2, c12, c0, 0    ;Get Reg12 of Cp11
	str		r2, [r0], #4
   	mrc     p11, 0, r2, c13, c0, 0    ;Get Reg13 of Cp11
   	str		r2, [r0], #4
   	mrc     p11, 0, r2, c14, c0, 0    ;Get Reg14 of Cp11
   	str		r2, [r0], #4
   	mrc     p11, 0, r2, c15, c0, 0    ;Get Reg15 of Cp11
   	str		r2, [r0], #4
	
10 
    IF Interworking :LOR: Thumbing
       bx  lr
    ELSE
       mov  pc, lr          ; return
    ENDIF

;
; GetCP12Regs - Gets all the registers of CP12
;
; This routine Reads all the registers of CP12
;

	LEAF_ENTRY GetCP12Regs

	cmp     r0, #0					; Compare R0 to make sure it's not NULL
	beq		%FT10					; done
    mrc     p12, 0, r2, c0,  c0, 0    ;Get Reg0 of Cp12 
	str		r2, [r0], #4
	mrc     p12, 0, r2, c1,  c0, 0    ;Get Reg1 of Cp12 
	str		r2, [r0], #4
	mrc     p12, 0, r2, c2,  c0, 0    ;Get Reg2 of Cp12 
	str		r2, [r0], #4
	mrc     p12, 0, r2, c3,  c0, 0    ;Get Reg3 of Cp12 
	str		r2, [r0], #4
	mrc     p12, 0, r2, c4,  c0, 0    ;Get Reg4 of Cp12 
	str		r2, [r0], #4
	mrc     p12, 0, r2, c5,  c0, 0    ;Get Reg5 of Cp12 
	str		r2, [r0], #4
	mrc     p12, 0, r2, c6,  c0, 0    ;Get Reg6 of Cp12 
	str		r2, [r0], #4
	mrc     p12, 0, r2, c7,  c0, 0    ;Get Reg7 of Cp12 
	str		r2, [r0], #4
	mrc     p12, 0, r2, c8,  c0, 0    ;Get Reg8 of Cp12 
	str		r2, [r0], #4
	mrc     p12, 0, r2, c9,  c0, 0    ;Get Reg9 of Cp12
	str		r2, [r0], #4
	mrc     p12, 0, r2, c10, c0, 0    ;Get Reg10 of Cp12
	str		r2, [r0], #4
	mrc     p12, 0, r2, c11, c0, 0    ;Get Reg11 of Cp12
	str		r2, [r0], #4
	mrc     p12, 0, r2, c12, c0, 0    ;Get Reg12 of Cp12
	str		r2, [r0], #4
   	mrc     p12, 0, r2, c13, c0, 0    ;Get Reg13 of Cp12
   	str		r2, [r0], #4
   	mrc     p12, 0, r2, c14, c0, 0    ;Get Reg14 of Cp12
   	str		r2, [r0], #4
   	mrc     p12, 0, r2, c15, c0, 0    ;Get Reg15 of Cp12
   	str		r2, [r0], #4
	
10 
    IF Interworking :LOR: Thumbing
       bx  lr
    ELSE
       mov  pc, lr          ; return
    ENDIF

;
; GetCP13Regs - Gets all the registers of CP13
;
; This routine Reads all the registers of CP13
;

	LEAF_ENTRY GetCP13Regs

	cmp     r0, #0					; Compare R0 to make sure it's not NULL
	beq		%FT10					; done
    mrc     p13, 0, r2, c0,  c0, 0    ;Get Reg0 of Cp13 
	str		r2, [r0], #4
	mrc     p13, 0, r2, c1,  c0, 0    ;Get Reg1 of Cp13 
	str		r2, [r0], #4
	mrc     p13, 0, r2, c2,  c0, 0    ;Get Reg2 of Cp13 
	str		r2, [r0], #4
	mrc     p13, 0, r2, c3,  c0, 0    ;Get Reg3 of Cp13 
	str		r2, [r0], #4
	mrc     p13, 0, r2, c4,  c0, 0    ;Get Reg4 of Cp13 
	str		r2, [r0], #4
	mrc     p13, 0, r2, c5,  c0, 0    ;Get Reg5 of Cp13 
	str		r2, [r0], #4
	mrc     p13, 0, r2, c6,  c0, 0    ;Get Reg6 of Cp13 
	str		r2, [r0], #4
	mrc     p13, 0, r2, c7,  c0, 0    ;Get Reg7 of Cp13 
	str		r2, [r0], #4
	mrc     p13, 0, r2, c8,  c0, 0    ;Get Reg8 of Cp13 
	str		r2, [r0], #4
	mrc     p13, 0, r2, c9,  c0, 0    ;Get Reg9 of Cp13
	str		r2, [r0], #4
	mrc     p13, 0, r2, c10, c0, 0    ;Get Reg10 of Cp13
	str		r2, [r0], #4
	mrc     p13, 0, r2, c11, c0, 0    ;Get Reg11 of Cp13
	str		r2, [r0], #4
	mrc     p13, 0, r2, c12, c0, 0    ;Get Reg12 of Cp13
	str		r2, [r0], #4
   	mrc     p13, 0, r2, c13, c0, 0    ;Get Reg13 of Cp13
   	str		r2, [r0], #4
   	mrc     p13, 0, r2, c14, c0, 0    ;Get Reg14 of Cp13
   	str		r2, [r0], #4
   	mrc     p13, 0, r2, c15, c0, 0    ;Get Reg15 of Cp13
   	str		r2, [r0], #4
	
10 
    IF Interworking :LOR: Thumbing
       bx  lr
    ELSE
       mov  pc, lr          ; return
    ENDIF




;
; GetCP14Regs - Gets all the registers of CP14
;
; This routine Reads all the registers of CP 14
;

	LEAF_ENTRY GetCP14Regs

	cmp     r0, #0					; Compare R0 to make sure it's not NULL
	beq		%FT10					; done
    mrc     p14, 0, r2, c0,  c0, 0    ;Get Reg0 of CP14 
	str		r2, [r0], #4
	mrc     p14, 0, r2, c1,  c0, 0    ;Get Reg1 of CP14 
	str		r2, [r0], #4
	mrc     p14, 0, r2, c2,  c0, 0    ;Get Reg2 of CP14 
	str		r2, [r0], #4
	mrc     p14, 0, r2, c3,  c0, 0    ;Get Reg3 of CP14 
	str		r2, [r0], #4
	mrc     p14, 0, r2, c4,  c0, 0    ;Get Reg4 of CP14 
	str		r2, [r0], #4
	mrc     p14, 0, r2, c5,  c0, 0    ;Get Reg5 of CP14 
	str		r2, [r0], #4
	mrc     p14, 0, r2, c6,  c0, 0    ;Get Reg6 of CP14 
	str		r2, [r0], #4
	mrc     p14, 0, r2, c7,  c0, 0    ;Get Reg7 of CP14 
	str		r2, [r0], #4
	mrc     p14, 0, r2, c8,  c0, 0    ;Get Reg8 of CP14 
	str		r2, [r0], #4
	mrc     p14, 0, r2, c9,  c0, 0    ;Get Reg9 of CP14
	str		r2, [r0], #4
	mrc     p14, 0, r2, c10, c0, 0    ;Get Reg10 of CP14
	str		r2, [r0], #4
	mrc     p14, 0, r2, c11, c0, 0    ;Get Reg11 of CP14
	str		r2, [r0], #4
	mrc     p14, 0, r2, c12, c0, 0    ;Get Reg12 of CP14
	str		r2, [r0], #4
   	mrc     p14, 0, r2, c13, c0, 0    ;Get Reg13 of CP14
   	str		r2, [r0], #4
   	mrc     p14, 0, r2, c14, c0, 0    ;Get Reg14 of CP14
   	str		r2, [r0], #4
   	mrc     p14, 0, r2, c15, c0, 0    ;Get Reg15 of CP14
   	str		r2, [r0], #4
	
10 
    IF Interworking :LOR: Thumbing
       bx  lr
    ELSE
       mov  pc, lr          ; return
    ENDIF


;
; GetCP15Regs - Gets all the registers of CP15 
;
; This routine Reads all the registers of CP 15
;

	LEAF_ENTRY GetCP15Regs

   	cmp     r0, #0					; Compare R0 to make sure it's not NULL
	beq		%FT10					; done
    mrc     p15, 0, r2, c0,  c0, 0    ;Get Reg0 of CP15 
	str		r2, [r0], #4
	mrc     p15, 0, r2, c1,  c0, 0    ;Get Reg1 of CP15 
	str		r2, [r0], #4
	mrc     p15, 0, r2, c2,  c0, 0    ;Get Reg2 of CP15 
	str		r2, [r0], #4
	mrc     p15, 0, r2, c3,  c0, 0    ;Get Reg3 of CP15 
	str		r2, [r0], #4
	mrc     p15, 0, r2, c4,  c0, 0    ;Get Reg4 of CP15 
	str		r2, [r0], #4
	mrc     p15, 0, r2, c5,  c0, 0    ;Get Reg5 of CP15 
	str		r2, [r0], #4
	mrc     p15, 0, r2, c6,  c0, 0    ;Get Reg6 of CP15 
	str		r2, [r0], #4
	mrc     p15, 0, r2, c7,  c0, 0    ;Get Reg7 of CP15 
	str		r2, [r0], #4
	mrc     p15, 0, r2, c8,  c0, 0    ;Get Reg8 of CP15 
	str		r2, [r0], #4
	mrc     p15, 0, r2, c9,  c0, 0    ;Get Reg9 of CP15 
	str		r2, [r0], #4
	mrc     p15, 0, r2, c10, c0, 0    ;Get Reg10 of CP15
	str		r2, [r0], #4
	mrc     p15, 0, r2, c11, c0, 0    ;Get Reg11 of CP15
	str		r2, [r0], #4
	mrc     p15, 0, r2, c12, c0, 0    ;Get Reg12 of CP15
	str		r2, [r0], #4
   	mrc     p15, 0, r2, c13, c0, 0    ;Get Reg13 of CP15
   	str		r2, [r0], #4
   	mrc     p15, 0, r2, c14, c0, 0    ;Get Reg14 of CP15
   	str		r2, [r0], #4
   	mrc     p15, 0, r2, c15, c1, 0    ;Get Reg15 of CP15
   	str		r2, [r0], #4

10	
    IF Interworking :LOR: Thumbing
       bx  lr
    ELSE
       mov  pc, lr          ; return
    ENDIF
;
; GetCP15Regs - Gets all the registers of CP15 for XScale i.e opcode2=1
;
; This routine Reads all the registers of CP 15
;

	LEAF_ENTRY GetXScCP15Regs

   	cmp     r0, #0					; Compare R0 to make sure it's not NULL
	beq		%FT10					; done
    mrc     p15, 0, r2, c0,  c0, 1    ;Get Reg0 of CP15 
	str		r2, [r0], #4
	mrc     p15, 0, r2, c1,  c0, 1    ;Get Reg1 of CP15 
	str		r2, [r0], #4
	mrc     p15, 0, r2, c2,  c0, 1    ;Get Reg2 of CP15 
	str		r2, [r0], #4
	mrc     p15, 0, r2, c3,  c0, 1    ;Get Reg3 of CP15 
	str		r2, [r0], #4
	mrc     p15, 0, r2, c4,  c0, 1    ;Get Reg4 of CP15 
	str		r2, [r0], #4
	mrc     p15, 0, r2, c5,  c0, 1    ;Get Reg5 of CP15 
	str		r2, [r0], #4
	mrc     p15, 0, r2, c6,  c0, 1    ;Get Reg6 of CP15 
	str		r2, [r0], #4
	mrc     p15, 0, r2, c7,  c0, 1    ;Get Reg7 of CP15 
	str		r2, [r0], #4
	mrc     p15, 0, r2, c8,  c0, 1    ;Get Reg8 of CP15 
	str		r2, [r0], #4
	mrc     p15, 0, r2, c9,  c0, 1    ;Get Reg9 of CP15 
	str		r2, [r0], #4
	mrc     p15, 0, r2, c10, c0, 1    ;Get Reg10 of CP15
	str		r2, [r0], #4
	mrc     p15, 0, r2, c11, c0, 1    ;Get Reg11 of CP15
	str		r2, [r0], #4
	mrc     p15, 0, r2, c12, c0, 1    ;Get Reg12 of CP15
	str		r2, [r0], #4
   	mrc     p15, 0, r2, c13, c0, 1    ;Get Reg13 of CP15
   	str		r2, [r0], #4
   	mrc     p15, 0, r2, c14, c0, 1    ;Get Reg14 of CP15
   	str		r2, [r0], #4
   	mrc     p15, 0, r2, c15, c1, 1    ;Get Reg15 of CP15
   	str		r2, [r0], #4

10	
    IF Interworking :LOR: Thumbing
       bx  lr
    ELSE
       mov  pc, lr          ; return
    ENDIF   

;
; SetCP14Reg0 - Set CP14's Reg 0
;
; This routine sets the passed value into CP14's Reg 0
;

	LEAF_ENTRY SetCP14Reg0

   	cmp     r0, #0					; Compare R0 to make sure it's not NULL
	beq		%FT10					; done

    mcr     p14, 0, r0, c0,  c0, 0    ;Get Reg0 of CP15 
10	
    IF Interworking :LOR: Thumbing
       bx  lr
    ELSE
       mov  pc, lr          ; return
    ENDIF
;
; SetCP14Reg1 - Set CP14's Reg 1
;
; This routine sets the passed value into CP14's Reg 1
;

	LEAF_ENTRY SetCP14Reg1

   	cmp     r0, #0					; Compare R0 to make sure it's not NULL
	beq		%FT10					; done

    mcr     p14, 0, r0, c1,  c0, 0    ;Set Reg1 of CP14
10	
    IF Interworking :LOR: Thumbing
       bx  lr
    ELSE
       mov  pc, lr          ; return
    ENDIF

;
; SetCP14Reg2 - Set CP14's Reg 2
;
; This routine sets the passed value into CP14's Reg 2
;

	LEAF_ENTRY SetCP14Reg2

   	cmp     r0, #0					; Compare R0 to make sure it's not NULL
	beq		%FT10					; done

    mcr     p14, 0, r0, c2,  c0, 0    ;Set Reg2 of CP14
10	
    IF Interworking :LOR: Thumbing
       bx  lr
    ELSE
       mov  pc, lr          ; return
    ENDIF

;
; SetCP14Reg3 - Set CP14's Reg 3
;
; This routine sets the passed value into CP14's Reg 3
;

	LEAF_ENTRY SetCP14Reg3

   	cmp     r0, #0					; Compare R0 to make sure it's not NULL
	beq		%FT10					; done

    mcr     p14, 0, r0, c3,  c0, 0    ;Set Reg3 of CP14
10	
    IF Interworking :LOR: Thumbing
       bx  lr
    ELSE
       mov  pc, lr          ; return
    ENDIF

;
; ReadICHP
;
; This routine reads cr5 from CoProcesser 6 to get the ICHP register
;
;       Uses r0 - value of ICHP  
;

	LEAF_ENTRY ReadICHP

    mrc     p6, 0, r0, c5, c0, 0
      IF Interworking :LOR: Thumbing
         bx  lr
      ELSE
         mov  pc, lr          ; return
      ENDIF


	END

⌨️ 快捷键说明

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