xref: /openbmc/linux/arch/arm/tools/gen-mach-types (revision 1da177e4)
11da177e4SLinus Torvalds#!/bin/awk
21da177e4SLinus Torvalds#
31da177e4SLinus Torvalds# Awk script to generate include/asm-arm/mach-types.h
41da177e4SLinus Torvalds#
51da177e4SLinus TorvaldsBEGIN	{ nr = 0 }
61da177e4SLinus Torvalds/^#/	{ next }
71da177e4SLinus Torvalds/^[ 	]*$/ { next }
81da177e4SLinus Torvalds
91da177e4SLinus TorvaldsNF == 4 {
101da177e4SLinus Torvalds	  machine_is[nr] = "machine_is_"$1;
111da177e4SLinus Torvalds	  config[nr] = "CONFIG_"$2;
121da177e4SLinus Torvalds	  mach_type[nr] = "MACH_TYPE_"$3;
131da177e4SLinus Torvalds	  num[nr] = $4; nr++
141da177e4SLinus Torvalds	}
151da177e4SLinus Torvalds
161da177e4SLinus TorvaldsNF == 3 {
171da177e4SLinus Torvalds	  machine_is[nr] = "machine_is_"$1;
181da177e4SLinus Torvalds	  config[nr] = "CONFIG_"$2;
191da177e4SLinus Torvalds	  mach_type[nr] = "MACH_TYPE_"$3;
201da177e4SLinus Torvalds	  num[nr] = ""; nr++
211da177e4SLinus Torvalds	}
221da177e4SLinus Torvalds
231da177e4SLinus Torvalds
241da177e4SLinus TorvaldsEND	{
251da177e4SLinus Torvalds	  printf("/*\n");
261da177e4SLinus Torvalds	  printf(" * This was automagically generated from %s!\n", FILENAME);
271da177e4SLinus Torvalds	  printf(" * Do NOT edit\n");
281da177e4SLinus Torvalds	  printf(" */\n\n");
291da177e4SLinus Torvalds	  printf("#ifndef __ASM_ARM_MACH_TYPE_H\n");
301da177e4SLinus Torvalds	  printf("#define __ASM_ARM_MACH_TYPE_H\n\n");
311da177e4SLinus Torvalds	  printf("#include <linux/config.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