xref: /openbmc/linux/arch/arm/tools/gen-mach-types (revision b2441318)
11da177e4SLinus Torvalds#!/bin/awk
2b2441318SGreg Kroah-Hartman# SPDX-License-Identifier: GPL-2.0
31da177e4SLinus Torvalds#
466206536SSam Ravnborg# Awk script to generate include/generated/mach-types.h
51da177e4SLinus Torvalds#
61da177e4SLinus TorvaldsBEGIN	{ nr = 0 }
71da177e4SLinus Torvalds/^#/	{ next }
81da177e4SLinus Torvalds/^[ 	]*$/ { next }
91da177e4SLinus Torvalds
101da177e4SLinus TorvaldsNF == 4 {
111da177e4SLinus Torvalds	  machine_is[nr] = "machine_is_"$1;
121da177e4SLinus Torvalds	  config[nr] = "CONFIG_"$2;
131da177e4SLinus Torvalds	  mach_type[nr] = "MACH_TYPE_"$3;
141da177e4SLinus Torvalds	  num[nr] = $4; nr++
151da177e4SLinus Torvalds	}
161da177e4SLinus Torvalds
171da177e4SLinus TorvaldsNF == 3 {
181da177e4SLinus Torvalds	  machine_is[nr] = "machine_is_"$1;
191da177e4SLinus Torvalds	  config[nr] = "CONFIG_"$2;
201da177e4SLinus Torvalds	  mach_type[nr] = "MACH_TYPE_"$3;
211da177e4SLinus Torvalds	  num[nr] = ""; nr++
221da177e4SLinus Torvalds	}
231da177e4SLinus Torvalds
241da177e4SLinus Torvalds
251da177e4SLinus TorvaldsEND	{
261da177e4SLinus Torvalds	  printf("/*\n");
271da177e4SLinus Torvalds	  printf(" * This was automagically generated from %s!\n", FILENAME);
281da177e4SLinus Torvalds	  printf(" * Do NOT edit\n");
291da177e4SLinus Torvalds	  printf(" */\n\n");
301da177e4SLinus Torvalds	  printf("#ifndef __ASM_ARM_MACH_TYPE_H\n");
311da177e4SLinus Torvalds	  printf("#define __ASM_ARM_MACH_TYPE_H\n\n");
321da177e4SLinus Torvalds	  printf("#ifndef __ASSEMBLY__\n");
331da177e4SLinus Torvalds	  printf("/* The type of machine we're running on */\n");
341da177e4SLinus Torvalds	  printf("extern unsigned int __machine_arch_type;\n");
351da177e4SLinus Torvalds	  printf("#endif\n\n");
361da177e4SLinus Torvalds
371da177e4SLinus Torvalds	  printf("/* see arch/arm/kernel/arch.c for a description of these */\n");
381da177e4SLinus Torvalds	  for (i = 0; i < nr; i++)
391da177e4SLinus Torvalds	    if (num[i] ~ /..*/)
401da177e4SLinus Torvalds	      printf("#define %-30s %d\n", mach_type[i], num[i]);
411da177e4SLinus Torvalds
421da177e4SLinus Torvalds	  printf("\n");
431da177e4SLinus Torvalds
441da177e4SLinus Torvalds	  for (i = 0; i < nr; i++)
451da177e4SLinus Torvalds	    if (num[i] ~ /..*/) {
461da177e4SLinus Torvalds	      printf("#ifdef %s\n", config[i]);
471da177e4SLinus Torvalds	      printf("# ifdef machine_arch_type\n");
481da177e4SLinus Torvalds	      printf("#  undef machine_arch_type\n");
491da177e4SLinus Torvalds	      printf("#  define machine_arch_type\t__machine_arch_type\n");
501da177e4SLinus Torvalds	      printf("# else\n");
511da177e4SLinus Torvalds	      printf("#  define machine_arch_type\t%s\n", mach_type[i]);
521da177e4SLinus Torvalds	      printf("# endif\n");
531da177e4SLinus Torvalds	      printf("# define %s()\t(machine_arch_type == %s)\n", machine_is[i], mach_type[i]);
541da177e4SLinus Torvalds	      printf("#else\n");
551da177e4SLinus Torvalds	      printf("# define %s()\t(0)\n", machine_is[i]);
561da177e4SLinus Torvalds	      printf("#endif\n\n");
571da177e4SLinus Torvalds	    }
581da177e4SLinus Torvalds
591da177e4SLinus Torvalds	  printf("/*\n * These have not yet been registered\n */\n");
601da177e4SLinus Torvalds	  for (i = 0; i < nr; i++)
611da177e4SLinus Torvalds	    if (num[i] !~ /..*/)
621da177e4SLinus Torvalds	      printf("/* #define %-30s <<not registered>> */\n", mach_type[i]);
631da177e4SLinus Torvalds
641da177e4SLinus Torvalds	  for (i = 0; i < nr; i++)
651da177e4SLinus Torvalds	    if (num[i] !~ /..*/) {
661da177e4SLinus Torvalds	      printf("#define %s()\t(0)\n", machine_is[i]);
671da177e4SLinus Torvalds	    }
681da177e4SLinus Torvalds
691da177e4SLinus Torvalds	  printf("\n#ifndef machine_arch_type\n");
701da177e4SLinus Torvalds	  printf("#define machine_arch_type\t__machine_arch_type\n");
711da177e4SLinus Torvalds	  printf("#endif\n\n");
721da177e4SLinus Torvalds	  printf("#endif\n");
731da177e4SLinus Torvalds	}
74