162306a36Sopenharmony_ci#!/bin/awk -f
262306a36Sopenharmony_ci# SPDX-License-Identifier: GPL-2.0
362306a36Sopenharmony_ci# gen-cpucaps.awk: arm64 cpucaps header generator
462306a36Sopenharmony_ci#
562306a36Sopenharmony_ci# Usage: awk -f gen-cpucaps.awk cpucaps.txt
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci# Log an error and terminate
862306a36Sopenharmony_cifunction fatal(msg) {
962306a36Sopenharmony_ci	print "Error at line " NR ": " msg > "/dev/stderr"
1062306a36Sopenharmony_ci	exit 1
1162306a36Sopenharmony_ci}
1262306a36Sopenharmony_ci
1362306a36Sopenharmony_ci# skip blank lines and comment lines
1462306a36Sopenharmony_ci/^$/ { next }
1562306a36Sopenharmony_ci/^#/ { next }
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ciBEGIN {
1862306a36Sopenharmony_ci	print "#ifndef __ASM_CPUCAPS_H"
1962306a36Sopenharmony_ci	print "#define __ASM_CPUCAPS_H"
2062306a36Sopenharmony_ci	print ""
2162306a36Sopenharmony_ci	print "/* Generated file - do not edit */"
2262306a36Sopenharmony_ci	cap_num = 0
2362306a36Sopenharmony_ci	print ""
2462306a36Sopenharmony_ci}
2562306a36Sopenharmony_ci
2662306a36Sopenharmony_ci/^[vA-Z0-9_]+$/ {
2762306a36Sopenharmony_ci	printf("#define ARM64_%-40s\t%d\n", $0, cap_num++)
2862306a36Sopenharmony_ci	next
2962306a36Sopenharmony_ci}
3062306a36Sopenharmony_ci
3162306a36Sopenharmony_ciEND {
3262306a36Sopenharmony_ci	printf("#define ARM64_NCAPS\t\t\t\t\t%d\n", cap_num)
3362306a36Sopenharmony_ci	print ""
3462306a36Sopenharmony_ci	print "#endif /* __ASM_CPUCAPS_H */"
3562306a36Sopenharmony_ci}
3662306a36Sopenharmony_ci
3762306a36Sopenharmony_ci# Any lines not handled by previous rules are unexpected
3862306a36Sopenharmony_ci{
3962306a36Sopenharmony_ci	fatal("unhandled statement")
4062306a36Sopenharmony_ci}
41