Skip to content

Commit c7c7eb4

Browse files
committed
Merge branch 'for-next/sysregs' into for-next/core
* for-next/sysregs: arm64/sysreg: Update TCR_EL1 register arm64: sysreg: Add validation checks to sysreg header generation script arm64: sysreg: Correct sign definitions for EIESB and DoubleLock arm64: sysreg: Fix and tidy up sysreg field definitions
2 parents 712f4ee + 14f1585 commit c7c7eb4

3 files changed

Lines changed: 69 additions & 23 deletions

File tree

arch/arm64/include/asm/sysreg.h

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -281,8 +281,6 @@
281281
#define SYS_RGSR_EL1 sys_reg(3, 0, 1, 0, 5)
282282
#define SYS_GCR_EL1 sys_reg(3, 0, 1, 0, 6)
283283

284-
#define SYS_TCR_EL1 sys_reg(3, 0, 2, 0, 2)
285-
286284
#define SYS_APIAKEYLO_EL1 sys_reg(3, 0, 2, 1, 0)
287285
#define SYS_APIAKEYHI_EL1 sys_reg(3, 0, 2, 1, 1)
288286
#define SYS_APIBKEYLO_EL1 sys_reg(3, 0, 2, 1, 2)

arch/arm64/tools/gen-sysreg.awk

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -122,6 +122,10 @@ $1 == "SysregFields" && block_current() == "Root" {
122122
res1 = "UL(0)"
123123
unkn = "UL(0)"
124124

125+
if (reg in defined_fields)
126+
fatal("Duplicate SysregFields definition for " reg)
127+
defined_fields[reg] = 1
128+
125129
next_bit = 63
126130

127131
next
@@ -162,6 +166,10 @@ $1 == "Sysreg" && block_current() == "Root" {
162166
res1 = "UL(0)"
163167
unkn = "UL(0)"
164168

169+
if (reg in defined_regs)
170+
fatal("Duplicate Sysreg definition for " reg)
171+
defined_regs[reg] = 1
172+
165173
define("REG_" reg, "S" op0 "_" op1 "_C" crn "_C" crm "_" op2)
166174
define("SYS_" reg, "sys_reg(" op0 ", " op1 ", " crn ", " crm ", " op2 ")")
167175

@@ -284,6 +292,8 @@ $1 == "SignedEnum" && (block_current() == "Sysreg" || block_current() == "Sysreg
284292
define_field(reg, field, msb, lsb)
285293
define_field_sign(reg, field, "true")
286294

295+
delete seen_enum_vals
296+
287297
next
288298
}
289299

@@ -297,6 +307,8 @@ $1 == "UnsignedEnum" && (block_current() == "Sysreg" || block_current() == "Sysr
297307
define_field(reg, field, msb, lsb)
298308
define_field_sign(reg, field, "false")
299309

310+
delete seen_enum_vals
311+
300312
next
301313
}
302314

@@ -309,6 +321,8 @@ $1 == "Enum" && (block_current() == "Sysreg" || block_current() == "SysregFields
309321

310322
define_field(reg, field, msb, lsb)
311323

324+
delete seen_enum_vals
325+
312326
next
313327
}
314328

@@ -320,6 +334,8 @@ $1 == "EndEnum" && block_current() == "Enum" {
320334
lsb = null
321335
print ""
322336

337+
delete seen_enum_vals
338+
323339
block_pop()
324340
next
325341
}
@@ -329,6 +345,10 @@ $1 == "EndEnum" && block_current() == "Enum" {
329345
val = $1
330346
name = $2
331347

348+
if (val in seen_enum_vals)
349+
fatal("Duplicate Enum value " val " for " name)
350+
seen_enum_vals[val] = 1
351+
332352
define(reg "_" field "_" name, "UL(" val ")")
333353
next
334354
}

arch/arm64/tools/sysreg

Lines changed: 49 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@
3131
# Mapping <name_EL1>
3232
# EndSysreg
3333

34-
# Where multiple system regsiters are not VHE aliases but share a
34+
# Where multiple system registers are not VHE aliases but share a
3535
# common layout, a SysregFields block can be used to describe the
3636
# shared layout:
3737

@@ -54,7 +54,7 @@
5454
#
5555
# In general it is recommended that new enumeration items be named for the
5656
# feature that introduces them (eg, FEAT_LS64_ACCDATA introduces enumeration
57-
# item ACCDATA) though it may be more taseful to do something else.
57+
# item ACCDATA) though it may be more tasteful to do something else.
5858

5959
Sysreg OSDTRRX_EL1 2 0 0 0 2
6060
Res0 63:32
@@ -474,7 +474,7 @@ EndEnum
474474
Enum 7:4 Security
475475
0b0000 NI
476476
0b0001 EL3
477-
0b0001 NSACR_RFR
477+
0b0010 NSACR_RFR
478478
EndEnum
479479
UnsignedEnum 3:0 ProgMod
480480
0b0000 NI
@@ -1693,7 +1693,7 @@ UnsignedEnum 43:40 TraceFilt
16931693
0b0000 NI
16941694
0b0001 IMP
16951695
EndEnum
1696-
UnsignedEnum 39:36 DoubleLock
1696+
SignedEnum 39:36 DoubleLock
16971697
0b0000 IMP
16981698
0b1111 NI
16991699
EndEnum
@@ -2409,7 +2409,7 @@ UnsignedEnum 11:8 ASID2
24092409
0b0000 NI
24102410
0b0001 IMP
24112411
EndEnum
2412-
SignedEnum 7:4 EIESB
2412+
UnsignedEnum 7:4 EIESB
24132413
0b0000 NI
24142414
0b0001 ToEL3
24152415
0b0010 ToELx
@@ -2528,10 +2528,6 @@ Field 17:16 ZEN
25282528
Res0 15:0
25292529
EndSysreg
25302530

2531-
Sysreg CPACR_EL12 3 5 1 0 2
2532-
Mapping CPACR_EL1
2533-
EndSysreg
2534-
25352531
Sysreg CPACRALIAS_EL1 3 0 1 4 4
25362532
Mapping CPACR_EL1
25372533
EndSysreg
@@ -2576,10 +2572,6 @@ Sysreg PFAR_EL12 3 5 6 0 5
25762572
Mapping PFAR_EL1
25772573
EndSysreg
25782574

2579-
Sysreg RCWSMASK_EL1 3 0 13 0 3
2580-
Field 63:0 RCWSMASK
2581-
EndSysreg
2582-
25832575
Sysreg SCTLR2_EL1 3 0 1 0 3
25842576
Res0 63:13
25852577
Field 12 CPTM0
@@ -4765,17 +4757,53 @@ Field 37 TBI0
47654757
Field 36 AS
47664758
Res0 35
47674759
Field 34:32 IPS
4768-
Field 31:30 TG1
4769-
Field 29:28 SH1
4770-
Field 27:26 ORGN1
4771-
Field 25:24 IRGN1
4760+
Enum 31:30 TG1
4761+
0b01 16K
4762+
0b10 4K
4763+
0b11 64K
4764+
EndEnum
4765+
Enum 29:28 SH1
4766+
0b00 NONE
4767+
0b10 OUTER
4768+
0b11 INNER
4769+
EndEnum
4770+
Enum 27:26 ORGN1
4771+
0b00 NC
4772+
0b01 WBWA
4773+
0b10 WT
4774+
0b11 WBnWA
4775+
EndEnum
4776+
Enum 25:24 IRGN1
4777+
0b00 NC
4778+
0b01 WBWA
4779+
0b10 WT
4780+
0b11 WBnWA
4781+
EndEnum
47724782
Field 23 EPD1
47734783
Field 22 A1
47744784
Field 21:16 T1SZ
4775-
Field 15:14 TG0
4776-
Field 13:12 SH0
4777-
Field 11:10 ORGN0
4778-
Field 9:8 IRGN0
4785+
Enum 15:14 TG0
4786+
0b00 4K
4787+
0b01 64K
4788+
0b10 16K
4789+
EndEnum
4790+
Enum 13:12 SH0
4791+
0b00 NONE
4792+
0b10 OUTER
4793+
0b11 INNER
4794+
EndEnum
4795+
Enum 11:10 ORGN0
4796+
0b00 NC
4797+
0b01 WBWA
4798+
0b10 WT
4799+
0b11 WBnWA
4800+
EndEnum
4801+
Enum 9:8 IRGN0
4802+
0b00 NC
4803+
0b01 WBWA
4804+
0b10 WT
4805+
0b11 WBnWA
4806+
EndEnum
47794807
Field 7 EPD0
47804808
Res0 6
47814809
Field 5:0 T0SZ

0 commit comments

Comments
 (0)