📄 cpregxsc1.s
字号:
;
; 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 + -