📄 xllp_arm_primitives.lst
字号:
ARM macroassembler Page:1
1 00000000 ;******************************************************************************
2 00000000 ;
3 00000000 ; COPYRIGHT (C) 2005 Intel Corporation.
4 00000000 ;
5 00000000 ; This software as well as the software described in it is furnished under
6 00000000 ; license and may only be used or copied in accordance with the terms of the
7 00000000 ; license. The information in this file is furnished for informational use
8 00000000 ; only, is subject to change without notice, and should not be construed as
9 00000000 ; a commitment by Intel Corporation. Intel Corporation assumes no
10 00000000 ; responsibility or liability for any errors or inaccuracies that may appear
11 00000000 ; in this document or any software that may be provided in association with
12 00000000 ; this document.
13 00000000 ;
14 00000000 ; Except as permitted by such license, no part of this document may be
15 00000000 ; reproduced, stored in a retrieval system, or transmitted in any form or by
16 00000000 ; any means without the express written consent of Intel Corporation.
17 00000000 ;
18 00000000 ;******************************************************************************
19 00000000 ; PURPOSE:
20 00000000 ; Provide ARM CPU primitive functions (eg. register access) for C code use
21 00000000
22 AREA |.text|, CODE, READONLY, ALIGN=5 ; Align =5 required for "ALIGN 32" to work
23 00000000 ;
24 00000000 ; Functions made public by this file:
25 00000000 ;
26 00000000 EXPORT Xllp_Get_ARM_CPSR
27 00000000 EXPORT Xllp_Set_ARM_CPSR
28 00000000 EXPORT Xllp_Get_ARM_SPSR
29 00000000 EXPORT Xllp_Set_ARM_SPSR
30 00000000 EXPORT Xllp_Get_ARM_SP
31 00000000 EXPORT Xllp_Set_ARM_SP
32 00000000 EXPORT Xllp_Get_ARM_CPAR
33 00000000 EXPORT Xllp_Set_ARM_CPAR
34 00000000
35 00000000 EXPORT XllpCpuIdle
36 00000000 EXPORT XllpCpuStandby
37 00000000
38 00000000 INCLUDE xllp_ARM_macros.inc ; for RETURN macro
1 00000000 IF !:DEF: _xllp_arm_macros_included
2 00000000 xllp_arm_macros_included EQU 1
3 00000000 ;******************************************************************************
4 00000000 ;
5 00000000 ; COPYRIGHT (C) 2005 Intel Corporation.
6 00000000 ;
7 00000000 ; This software as well as the software described in it is furnished under
8 00000000 ; license and may only be used or copied in accordance with the terms of the
9 00000000 ; license. The information in this file is furnished for informational use
10 00000000 ; only, is subject to change without notice, and should not be construed as
11 00000000 ; a commitment by Intel Corporation. Intel Corporation assumes no
12 00000000 ; responsibility or liability for any errors or inaccuracies that may appear
13 00000000 ; in this document or any software that may be provided in association with
14 00000000 ; this document.
15 00000000 ;
16 00000000 ; Except as permitted by such license, no part of this document may be
17 00000000 ; reproduced, stored in a retrieval system, or transmitted in any form or by
18 00000000 ; any means without the express written consent of Intel Corporation.
19 00000000 ;
20 00000000 ;******************************************************************************
21 00000000
22 00000000 MACRO
23 00000000 RETURN
24 00000000 IF :DEF: Interworking
25 00000000 IF Interworking :LOR: Thumbing
26 00000000 bx lr
27 00000000 ELSE
28 00000000 mov pc, lr ; return
29 00000000 ENDIF ; ELSE of IF Interworking :LOR: Thumbing
30 00000000 ELSE ; IF :DEF: Interworking
31 00000000 mov pc, lr ; return
32 00000000 ENDIF ; ELSE OF IF :DEF: Interworking
33 00000000
34 00000000 MEND
35 00000000
36 00000000 ;;------------------------------------------------------------------------------
37 00000000 ENDIF
38 00000000 END
39 00000000
40 00000000 ;******************************************************************************
41 00000000 Xllp_Get_ARM_CPSR FUNCTION
42 00000000 e10f0000 mrs r0, cpsr
43 00000004 RETURN
24 00000004 IF :DEF: Interworking
25 00000004 IF Interworking :LOR: Thumbing
26 00000004 e12fff1e bx lr
27 00000008 ELSE
29 00000008 ENDIF ; ELSE of IF Interworking :LOR: Thumbing
30 00000008 ELSE ; IF :DEF: Interworking
32 00000008 ENDIF ; ELSE OF IF :DEF: Interworking
33 00000008
44 00000008 ENDFUNC
45 00000008
46 00000008 Xllp_Set_ARM_CPSR FUNCTION
47 00000008 e129f000 msr cpsr, r0
48 0000000c RETURN
24 0000000c IF :DEF: Interworking
25 0000000c IF Interworking :LOR: Thumbing
26 0000000c e12fff1e bx lr
27 00000010 ELSE
29 00000010 ENDIF ; ELSE of IF Interworking :LOR: Thumbing
30 00000010 ELSE ; IF :DEF: Interworking
32 00000010 ENDIF ; ELSE OF IF :DEF: Interworking
33 00000010
49 00000010 ENDFUNC
50 00000010
51 00000010 Xllp_Get_ARM_SPSR FUNCTION
52 00000010 e14f0000 mrs r0, spsr
53 00000014 RETURN
24 00000014 IF :DEF: Interworking
25 00000014 IF Interworking :LOR: Thumbing
26 00000014 e12fff1e bx lr
27 00000018 ELSE
29 00000018 ENDIF ; ELSE of IF Interworking :LOR: Thumbing
30 00000018 ELSE ; IF :DEF: Interworking
32 00000018 ENDIF ; ELSE OF IF :DEF: Interworking
33 00000018
54 00000018 ENDFUNC
55 00000018
56 00000018 Xllp_Set_ARM_SPSR FUNCTION
57 00000018 e169f000 msr spsr, r0
58 0000001c RETURN
24 0000001c IF :DEF: Interworking
25 0000001c IF Interworking :LOR: Thumbing
26 0000001c e12fff1e bx lr
27 00000020 ELSE
29 00000020 ENDIF ; ELSE of IF Interworking :LOR: Thumbing
30 00000020 ELSE ; IF :DEF: Interworking
32 00000020 ENDIF ; ELSE OF IF :DEF: Interworking
33 00000020
59 00000020 ENDFUNC
60 00000020
61 00000020 Xllp_Get_ARM_SP FUNCTION
62 00000020 e1a0000d mov r0, sp
63 00000024 RETURN
24 00000024 IF :DEF: Interworking
25 00000024 IF Interworking :LOR: Thumbing
26 00000024 e12fff1e bx lr
27 00000028 ELSE
29 00000028 ENDIF ; ELSE of IF Interworking :LOR: Thumbing
30 00000028 ELSE ; IF :DEF: Interworking
32 00000028 ENDIF ; ELSE OF IF :DEF: Interworking
33 00000028
64 00000028 ENDFUNC
65 00000028
66 00000028 Xllp_Set_ARM_SP FUNCTION
67 00000028 e1a0d000 mov sp, r0
68 0000002c RETURN
24 0000002c IF :DEF: Interworking
25 0000002c IF Interworking :LOR: Thumbing
26 0000002c e12fff1e bx lr
27 00000030 ELSE
29 00000030 ENDIF ; ELSE of IF Interworking :LOR: Thumbing
30 00000030 ELSE ; IF :DEF: Interworking
32 00000030 ENDIF ; ELSE OF IF :DEF: Interworking
33 00000030
69 00000030 ENDFUNC
70 00000030
71 00000030 Xllp_Get_ARM_CPAR FUNCTION
72 00000030 ee1f0f11 mrc p15, 0, r0, c15, c1, 0
73 00000034 RETURN
24 00000034 IF :DEF: Interworking
25 00000034 IF Interworking :LOR: Thumbing
26 00000034 e12fff1e bx lr
27 00000038 ELSE
29 00000038 ENDIF ; ELSE of IF Interworking :LOR: Thumbing
30 00000038 ELSE ; IF :DEF: Interworking
32 00000038 ENDIF ; ELSE OF IF :DEF: Interworking
33 00000038
74 00000038 ENDFUNC
75 00000038
76 00000038 Xllp_Set_ARM_CPAR FUNCTION
77 00000038 ee0f0f11 mcr p15, 0, r0, c15, c1, 0 ; store to CPAR
78 0000003c ;CPWAIT 00000000
79 0000003c ee120f10 mrc p15, 0, r0, c2, c0, 0 ; arbitrary read of CP15
80 00000040 e1a00000 mov r0, r0 ; wait for it (foward dependency)
81 00000044 e24ff004 sub pc, pc, #4 ; branch to next instruction
82 00000048 RETURN
24 00000048 IF :DEF: Interworking
25 00000048 IF Interworking :LOR: Thumbing
26 00000048 e12fff1e bx lr
27 0000004c ELSE
29 0000004c ENDIF ; ELSE of IF Interworking :LOR: Thumbing
30 0000004c ELSE ; IF :DEF: Interworking
32 0000004c ENDIF ; ELSE OF IF :DEF: Interworking
33 0000004c
83 0000004c ENDFUNC
84 0000004c
85 0000004c XllpCpuIdle FUNCTION
86 0000004c e3a00001 mov r0, #1
87 00000050 ee070e10 mcr p14, 0, r0, c7, c0, 0 ; Enter Idle mode
88 00000054 RETURN
24 00000054 IF :DEF: Interworking
25 00000054 IF Interworking :LOR: Thumbing
26 00000054 e12fff1e bx lr
27 00000058 ELSE
29 00000058 ENDIF ; ELSE of IF Interworking :LOR: Thumbing
30 00000058 ELSE ; IF :DEF: Interworking
32 00000058 ENDIF ; ELSE OF IF :DEF: Interworking
33 00000058
89 00000058 ENDFUNC
90 00000058
91 00000058 XllpCpuStandby FUNCTION
92 00000058 e3a00002 mov r0, #2
93 0000005c ee070e10 mcr p14, 0, r0, c7, c0, 0 ; Enter Standby mode
94 00000060 e1a00000 nop
95 00000064 e1a00000 nop
96 00000068 e1a00000 nop
97 0000006c e1a00000 nop
98 00000070 e1a00000 nop
99 00000074 e1a00000 nop
100 00000078 e1a00000 nop
101 0000007c RETURN
24 0000007c IF :DEF: Interworking
25 0000007c IF Interworking :LOR: Thumbing
26 0000007c e12fff1e bx lr
27 00000080 ELSE
29 00000080 ENDIF ; ELSE of IF Interworking :LOR: Thumbing
30 00000080 ELSE ; IF :DEF: Interworking
32 00000080 ENDIF ; ELSE OF IF :DEF: Interworking
33 00000080
102 00000080 ENDFUNC
103 00000080 ;------------------------------------------
104 00000080 END
Assembly terminated, errors: 0, warnings: 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -