From: Eric Auger <eric.auger@redhat.com>
Introduce scripts that automate the generation of system register
definitions from a given linux source tree arch/arm64/tools/sysreg.
Invocation of
./update-aarch64-sysreg-code.sh $PATH_TO_LINUX_SOURCE_TREE
in scripts directory generates target/arm/cpu-sysregs.h.inc
containing defines for all system registers.
[CH: update to handle current kernel sysregs structure, and to emit
the re-worked register structures; cpu properties will be added
later]
Reviewed-by: Sebastian Ott <sebott@redhat.com>
Signed-off-by: Eric Auger <eric.auger@redhat.com>
Signed-off-by: Cornelia Huck <cohuck@redhat.com>
---
scripts/gen-cpu-sysregs-header.awk | 35 +++++++++++++++++++++++++++
scripts/update-aarch64-sysreg-code.sh | 25 +++++++++++++++++++
2 files changed, 60 insertions(+)
create mode 100755 scripts/gen-cpu-sysregs-header.awk
create mode 100755 scripts/update-aarch64-sysreg-code.sh
diff --git a/scripts/gen-cpu-sysregs-header.awk b/scripts/gen-cpu-sysregs-header.awk
new file mode 100755
index 000000000000..b6b207e3c0fd
--- /dev/null
+++ b/scripts/gen-cpu-sysregs-header.awk
@@ -0,0 +1,35 @@
+#!/bin/awk -f
+# SPDX-License-Identifier: GPL-2.0
+# gen-cpu-sysregs-header.awk: arm64 sysreg header include generator
+#
+# Usage: awk -f gen-cpu-sysregs-header.awk $LINUX_PATH/arch/arm64/tools/sysreg
+
+BEGIN {
+ print ""
+} END {
+ print ""
+}
+
+# skip blank lines and comment lines
+/^$/ { next }
+/^[\t ]*#/ { next }
+
+/^Sysreg\t/ || /^Sysreg /{
+
+ reg = $2
+ op0 = $3
+ op1 = $4
+ crn = $5
+ crm = $6
+ op2 = $7
+
+ if (op0 == 3 && (op1>=0 && op1<=3) && crn==0 && (crm>=0 && crm<=7) && (op2>=0 && op2<=7)) {
+ print "DEF("reg", "op0", "op1", "crn", "crm", "op2")"
+ }
+ next
+}
+
+{
+ /* skip all other lines */
+ next
+}
diff --git a/scripts/update-aarch64-sysreg-code.sh b/scripts/update-aarch64-sysreg-code.sh
new file mode 100755
index 000000000000..721f41a9a516
--- /dev/null
+++ b/scripts/update-aarch64-sysreg-code.sh
@@ -0,0 +1,25 @@
+#!/bin/sh -e
+#
+# Update target/arm/cpu-sysregs.h
+# from a linux source tree (arch/arm64/tools/sysreg)
+#
+# Copyright Red Hat, Inc. 2024
+#
+# Authors:
+# Eric Auger <eric.auger@redhat.com>
+#
+
+linux="$1"
+output="$PWD"
+
+if [ -z "$linux" ] || ! [ -d "$linux" ]; then
+ cat << EOF
+usage: update-aarch64-sysreg-code.sh LINUX_PATH
+
+LINUX_PATH Linux kernel directory to obtain the headers from
+EOF
+ exit 1
+fi
+
+awk -f gen-cpu-sysregs-header.awk \
+ $linux/arch/arm64/tools/sysreg > ../target/arm/cpu-sysregs.h.inc
--
2.49.0
On Tue, May 06, 2025 at 10:52:32AM +0200, Cornelia Huck wrote: > From: Eric Auger <eric.auger@redhat.com> > > Introduce scripts that automate the generation of system register > definitions from a given linux source tree arch/arm64/tools/sysreg. > > Invocation of > ./update-aarch64-sysreg-code.sh $PATH_TO_LINUX_SOURCE_TREE > in scripts directory generates target/arm/cpu-sysregs.h.inc > containing defines for all system registers. > > [CH: update to handle current kernel sysregs structure, and to emit > the re-worked register structures; cpu properties will be added > later] > Reviewed-by: Sebastian Ott <sebott@redhat.com> > Signed-off-by: Eric Auger <eric.auger@redhat.com> > Signed-off-by: Cornelia Huck <cohuck@redhat.com> > --- > scripts/gen-cpu-sysregs-header.awk | 35 +++++++++++++++++++++++++++ > scripts/update-aarch64-sysreg-code.sh | 25 +++++++++++++++++++ > 2 files changed, 60 insertions(+) > create mode 100755 scripts/gen-cpu-sysregs-header.awk > create mode 100755 scripts/update-aarch64-sysreg-code.sh > > diff --git a/scripts/gen-cpu-sysregs-header.awk b/scripts/gen-cpu-sysregs-header.awk > new file mode 100755 > index 000000000000..b6b207e3c0fd > --- /dev/null > +++ b/scripts/gen-cpu-sysregs-header.awk > @@ -0,0 +1,35 @@ > +#!/bin/awk -f > +# SPDX-License-Identifier: GPL-2.0 Invalid license name here - hopefully checkpatch.pl is warning about this. Same issue as in the other sysreg script in the host CPU model series. > diff --git a/scripts/update-aarch64-sysreg-code.sh b/scripts/update-aarch64-sysreg-code.sh > new file mode 100755 > index 000000000000..721f41a9a516 > --- /dev/null > +++ b/scripts/update-aarch64-sysreg-code.sh > @@ -0,0 +1,25 @@ > +#!/bin/sh -e > +# > +# Update target/arm/cpu-sysregs.h > +# from a linux source tree (arch/arm64/tools/sysreg) > +# > +# Copyright Red Hat, Inc. 2024 > +# > +# Authors: > +# Eric Auger <eric.auger@redhat.com> Although its fairly short, this still deserves SPDX-License-Identifier to be set. With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
On Tue, May 13 2025, Daniel P. Berrangé <berrange@redhat.com> wrote: > On Tue, May 06, 2025 at 10:52:32AM +0200, Cornelia Huck wrote: >> From: Eric Auger <eric.auger@redhat.com> >> >> Introduce scripts that automate the generation of system register >> definitions from a given linux source tree arch/arm64/tools/sysreg. >> >> Invocation of >> ./update-aarch64-sysreg-code.sh $PATH_TO_LINUX_SOURCE_TREE >> in scripts directory generates target/arm/cpu-sysregs.h.inc >> containing defines for all system registers. >> >> [CH: update to handle current kernel sysregs structure, and to emit >> the re-worked register structures; cpu properties will be added >> later] >> Reviewed-by: Sebastian Ott <sebott@redhat.com> >> Signed-off-by: Eric Auger <eric.auger@redhat.com> >> Signed-off-by: Cornelia Huck <cohuck@redhat.com> >> --- >> scripts/gen-cpu-sysregs-header.awk | 35 +++++++++++++++++++++++++++ >> scripts/update-aarch64-sysreg-code.sh | 25 +++++++++++++++++++ >> 2 files changed, 60 insertions(+) >> create mode 100755 scripts/gen-cpu-sysregs-header.awk >> create mode 100755 scripts/update-aarch64-sysreg-code.sh >> >> diff --git a/scripts/gen-cpu-sysregs-header.awk b/scripts/gen-cpu-sysregs-header.awk >> new file mode 100755 >> index 000000000000..b6b207e3c0fd >> --- /dev/null >> +++ b/scripts/gen-cpu-sysregs-header.awk >> @@ -0,0 +1,35 @@ >> +#!/bin/awk -f >> +# SPDX-License-Identifier: GPL-2.0 > > Invalid license name here - hopefully checkpatch.pl is warning > about this. It might not check .awk scripts? > > Same issue as in the other sysreg script in the host CPU model > series. > > >> diff --git a/scripts/update-aarch64-sysreg-code.sh b/scripts/update-aarch64-sysreg-code.sh >> new file mode 100755 >> index 000000000000..721f41a9a516 >> --- /dev/null >> +++ b/scripts/update-aarch64-sysreg-code.sh >> @@ -0,0 +1,25 @@ >> +#!/bin/sh -e >> +# >> +# Update target/arm/cpu-sysregs.h >> +# from a linux source tree (arch/arm64/tools/sysreg) >> +# >> +# Copyright Red Hat, Inc. 2024 >> +# >> +# Authors: >> +# Eric Auger <eric.auger@redhat.com> > > Although its fairly short, this still deserves SPDX-License-Identifier > to be set. @Eric: do you agree on "GPL-2.0-or-later"?
On Wed, May 14, 2025 at 04:54:15PM +0200, Cornelia Huck wrote: > On Tue, May 13 2025, Daniel P. Berrangé <berrange@redhat.com> wrote: > > > On Tue, May 06, 2025 at 10:52:32AM +0200, Cornelia Huck wrote: > >> From: Eric Auger <eric.auger@redhat.com> > >> > >> Introduce scripts that automate the generation of system register > >> definitions from a given linux source tree arch/arm64/tools/sysreg. > >> > >> Invocation of > >> ./update-aarch64-sysreg-code.sh $PATH_TO_LINUX_SOURCE_TREE > >> in scripts directory generates target/arm/cpu-sysregs.h.inc > >> containing defines for all system registers. > >> > >> [CH: update to handle current kernel sysregs structure, and to emit > >> the re-worked register structures; cpu properties will be added > >> later] > >> Reviewed-by: Sebastian Ott <sebott@redhat.com> > >> Signed-off-by: Eric Auger <eric.auger@redhat.com> > >> Signed-off-by: Cornelia Huck <cohuck@redhat.com> > >> --- > >> scripts/gen-cpu-sysregs-header.awk | 35 +++++++++++++++++++++++++++ > >> scripts/update-aarch64-sysreg-code.sh | 25 +++++++++++++++++++ > >> 2 files changed, 60 insertions(+) > >> create mode 100755 scripts/gen-cpu-sysregs-header.awk > >> create mode 100755 scripts/update-aarch64-sysreg-code.sh > >> > >> diff --git a/scripts/gen-cpu-sysregs-header.awk b/scripts/gen-cpu-sysregs-header.awk > >> new file mode 100755 > >> index 000000000000..b6b207e3c0fd > >> --- /dev/null > >> +++ b/scripts/gen-cpu-sysregs-header.awk > >> @@ -0,0 +1,35 @@ > >> +#!/bin/awk -f > >> +# SPDX-License-Identifier: GPL-2.0 > > > > Invalid license name here - hopefully checkpatch.pl is warning > > about this. > > It might not check .awk scripts? The existence of SPDX tags is only checked for .c, .h, .py, .pl, .sh, .json & .inc The validation of license names is checked unconditionally any time the SPDX-License-Identifier tag is seen. With regards, Daniel -- |: https://berrange.com -o- https://www.flickr.com/photos/dberrange :| |: https://libvirt.org -o- https://fstop138.berrange.com :| |: https://entangle-photo.org -o- https://www.instagram.com/dberrange :|
Hi Connie, On 5/14/25 4:54 PM, Cornelia Huck wrote: > On Tue, May 13 2025, Daniel P. Berrangé <berrange@redhat.com> wrote: > >> On Tue, May 06, 2025 at 10:52:32AM +0200, Cornelia Huck wrote: >>> From: Eric Auger <eric.auger@redhat.com> >>> >>> Introduce scripts that automate the generation of system register >>> definitions from a given linux source tree arch/arm64/tools/sysreg. >>> >>> Invocation of >>> ./update-aarch64-sysreg-code.sh $PATH_TO_LINUX_SOURCE_TREE >>> in scripts directory generates target/arm/cpu-sysregs.h.inc >>> containing defines for all system registers. >>> >>> [CH: update to handle current kernel sysregs structure, and to emit >>> the re-worked register structures; cpu properties will be added >>> later] >>> Reviewed-by: Sebastian Ott <sebott@redhat.com> >>> Signed-off-by: Eric Auger <eric.auger@redhat.com> >>> Signed-off-by: Cornelia Huck <cohuck@redhat.com> >>> --- >>> scripts/gen-cpu-sysregs-header.awk | 35 +++++++++++++++++++++++++++ >>> scripts/update-aarch64-sysreg-code.sh | 25 +++++++++++++++++++ >>> 2 files changed, 60 insertions(+) >>> create mode 100755 scripts/gen-cpu-sysregs-header.awk >>> create mode 100755 scripts/update-aarch64-sysreg-code.sh >>> >>> diff --git a/scripts/gen-cpu-sysregs-header.awk b/scripts/gen-cpu-sysregs-header.awk >>> new file mode 100755 >>> index 000000000000..b6b207e3c0fd >>> --- /dev/null >>> +++ b/scripts/gen-cpu-sysregs-header.awk >>> @@ -0,0 +1,35 @@ >>> +#!/bin/awk -f >>> +# SPDX-License-Identifier: GPL-2.0 >> Invalid license name here - hopefully checkpatch.pl is warning >> about this. > It might not check .awk scripts? > >> Same issue as in the other sysreg script in the host CPU model >> series. >> >> >>> diff --git a/scripts/update-aarch64-sysreg-code.sh b/scripts/update-aarch64-sysreg-code.sh >>> new file mode 100755 >>> index 000000000000..721f41a9a516 >>> --- /dev/null >>> +++ b/scripts/update-aarch64-sysreg-code.sh >>> @@ -0,0 +1,25 @@ >>> +#!/bin/sh -e >>> +# >>> +# Update target/arm/cpu-sysregs.h >>> +# from a linux source tree (arch/arm64/tools/sysreg) >>> +# >>> +# Copyright Red Hat, Inc. 2024 >>> +# >>> +# Authors: >>> +# Eric Auger <eric.auger@redhat.com> >> Although its fairly short, this still deserves SPDX-License-Identifier >> to be set. > @Eric: do you agree on "GPL-2.0-or-later"? Yes I agree Eric >
© 2016 - 2026 Red Hat, Inc.