File: sysreg-1.s

package info (click to toggle)
binutils 2.31.1-16
  • links: PTS, VCS
  • area: main
  • in suites: buster
  • size: 309,412 kB
  • sloc: ansic: 1,161,194; asm: 638,508; cpp: 128,829; exp: 68,580; makefile: 55,828; sh: 22,360; yacc: 14,238; lisp: 13,272; perl: 2,111; ada: 1,681; lex: 1,652; pascal: 1,446; cs: 879; sed: 195; python: 154; xml: 95; awk: 25
file content (174 lines) | stat: -rw-r--r-- 6,553 bytes parent folder | download | duplicates (5)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
/* sysreg-1.s Test file for AArch64 system registers.

   Copyright (C) 2011-2018 Free Software Foundation, Inc.
   Contributed by ARM Ltd.

   This file is part of GAS.

   GAS is free software; you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   the Free Software Foundation; either version 3 of the license, or
   (at your option) any later version.

   GAS is distributed in the hope that it will be useful,
   but WITHOUT ANY WARRANTY; without even the implied warranty of
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
   GNU General Public License for more details.

   You should have received a copy of the GNU General Public License
   along with this program; see the file COPYING3. If not,
   see <http://www.gnu.org/licenses/>.  */

	.macro rw_sys_reg sys_reg xreg r w
	.ifc \w, 1
	msr \sys_reg, \xreg
	.endif
	.ifc \r, 1
	mrs \xreg, \sys_reg
	.endif
	.endm

	.text

	rw_sys_reg sys_reg=id_aa64afr0_el1 xreg=x7 r=1 w=0
	rw_sys_reg sys_reg=id_aa64afr1_el1 xreg=x7 r=1 w=0
	rw_sys_reg sys_reg=mvfr2_el1 xreg=x7 r=1 w=0
	rw_sys_reg sys_reg=dlr_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=dspsr_el0 xreg=x7 r=1 w=1

	rw_sys_reg sys_reg=sder32_el3 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=mdcr_el3 xreg=x7 r=1 w=1

	rw_sys_reg sys_reg=mdccint_el1 xreg=x7 r=1 w=1

	rw_sys_reg sys_reg=dbgvcr32_el2 xreg=x7 r=1 w=1

	rw_sys_reg sys_reg=fpexc32_el2 xreg=x7 r=1 w=1

	rw_sys_reg sys_reg=teecr32_el1 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=teehbr32_el1 xreg=x7 r=1 w=1

	rw_sys_reg sys_reg=cntp_tval_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=cntp_ctl_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=cntp_cval_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=cntps_tval_el1 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=cntps_ctl_el1 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=cntps_cval_el1 xreg=x7 r=1 w=1

	rw_sys_reg sys_reg=pmccntr_el0 xreg=x7 r=1 w=1

	rw_sys_reg sys_reg=pmevcntr0_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevcntr1_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevcntr2_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevcntr3_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevcntr4_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevcntr5_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevcntr6_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevcntr7_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevcntr8_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevcntr9_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevcntr10_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevcntr11_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevcntr12_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevcntr13_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevcntr14_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevcntr15_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevcntr16_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevcntr17_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevcntr18_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevcntr19_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevcntr20_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevcntr21_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevcntr22_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevcntr23_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevcntr24_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevcntr25_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevcntr26_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevcntr27_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevcntr28_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevcntr29_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevcntr30_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper0_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper1_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper2_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper3_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper4_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper5_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper6_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper7_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper8_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper9_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper10_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper11_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper12_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper13_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper14_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper15_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper16_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper17_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper18_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper19_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper20_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper21_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper22_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper23_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper24_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper25_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper26_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper27_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper28_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper29_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmevtyper30_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=pmccfiltr_el0 xreg=x7 r=1 w=1

	rw_sys_reg sys_reg=tpidrro_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=tpidr_el0 xreg=x7 r=1 w=1
	rw_sys_reg sys_reg=cntfrq_el0 xreg=x7 r=1 w=1

	//
	// Macros to generate MRS and MSR with all the implementation defined
	// system registers in the form of S3_<op1>_<Cn>_<Cm>_<op2>.

	.altmacro
	.macro	all_op2	op1, crn, crm, from=0, to=7
	rw_sys_reg S3_\op1\()_C\crn\()_C\crm\()_\from x15 1 1
	.if	(\to-\from > 0)
	all_op2 \op1, \crn, \crm, %(\from+1), \to
	.endif
	.endm

	.macro	all_crm	op1, crn, from=0, to=15
	all_op2	\op1, \crn, \from, 0, 7
	.if	(\to-\from > 0)
	all_crm \op1, \crn, %(\from+1), \to
	.endif
	.endm

	.macro all_imple_defined	from=0, to=7
	.irp crn, 11, 15
	all_crm	\from, \crn, 0, 15
	.endr
	.if	\to-\from
	all_imple_defined %(\from+1), \to
	.endif
	.endm

	all_imple_defined	0, 7
	.noaltmacro

	rw_sys_reg sys_reg=dbgdtr_el0 xreg=x15 r=1 w=1
	rw_sys_reg sys_reg=dbgdtrrx_el0 xreg=x15 r=1 w=0

	rw_sys_reg sys_reg=rmr_el1 xreg=x15 r=1 w=1
	rw_sys_reg sys_reg=rmr_el2 xreg=x15 r=1 w=1
	rw_sys_reg sys_reg=rmr_el3 xreg=x15 r=1 w=1

	rw_sys_reg sys_reg=spsr_el1 xreg=x15 r=1 w=1
	rw_sys_reg sys_reg=spsr_el2 xreg=x15 r=1 w=1
	rw_sys_reg sys_reg=spsr_el3 xreg=x15 r=1 w=1

	rw_sys_reg sys_reg=s0_0_C0_C0_0 xreg=x15 r=1 w=1
	rw_sys_reg sys_reg=s1_7_C15_C15_7 xreg=x27 r=1 w=1
	rw_sys_reg sys_reg=s2_4_C6_C8_0 xreg=x14 r=1 w=1
	rw_sys_reg sys_reg=s1_2_C14_C4_2 xreg=x4 r=1 w=1
	rw_sys_reg sys_reg=s0_1_C13_C1_3 xreg=x7 r=1 w=1