#!/bin/awk
#
# Awk script to generate include/asm-arm/mach-types.h
#
BEGIN	{ nr = 0 }
/^#/	{ next }
/^[ 	]*$/ { next }

NF == 4 {
	  machine_is[nr] = "machine_is_"$1;
	  config[nr] = "CONFIG_"$2;
	  mach_type[nr] = "MACH_TYPE_"$3;
	  num[nr] = $4; nr++
	}

NF == 3 {
	  machine_is[nr] = "machine_is_"$1;
	  config[nr] = "CONFIG_"$2;
	  mach_type[nr] = "MACH_TYPE_"$3;
	  num[nr] = ""; nr++
	}


END	{
	  printf("/*\n");
	  printf(" * This was automagically generated from %s!\n", FILENAME);
	  printf(" * Do NOT edit\n");
	  printf(" */\n\n");
	  printf("#ifndef __ASM_ARM_MACH_TYPE_H\n");
	  printf("#define __ASM_ARM_MACH_TYPE_H\n\n");
	  printf("#include <linux/config.h>\n\n");
	  printf("#ifndef __ASSEMBLY__\n");
	  printf("/* The type of machine we're running on */\n");
	  printf("extern unsigned int __machine_arch_type;\n");
	  printf("#endif\n\n");

	  printf("/* see arch/arm/kernel/arch.c for a description of these */\n");
	  for (i = 0; i < nr; i++)
	    if (num[i] ~ /..*/)
	      printf("#define %-30s %d\n", mach_type[i], num[i]);

	  printf("\n");

	  for (i = 0; i < nr; i++)
	    if (num[i] ~ /..*/) {
	      printf("#ifdef %s\n", config[i]);
	      printf("# ifdef machine_arch_type\n");
	      printf("#  undef machine_arch_type\n");
	      printf("#  define machine_arch_type\t__machine_arch_type\n");
	      printf("# else\n");
	      printf("#  define machine_arch_type\t%s\n", mach_type[i]);
	      printf("# endif\n");
	      printf("# define %s()\t(machine_arch_type == %s)\n", machine_is[i], mach_type[i]);
	      printf("#else\n");
	      printf("# define %s()\t(0)\n", machine_is[i]);
	      printf("#endif\n\n");
	    }

	  printf("/*\n * These have not yet been registered\n */\n");
	  for (i = 0; i < nr; i++)
	    if (num[i] !~ /..*/)
	      printf("/* #define %-30s <<not registered>> */\n", mach_type[i]);

	  for (i = 0; i < nr; i++)
	    if (num[i] !~ /..*/) {
	      printf("#define %s()\t(0)\n", machine_is[i]);
	    }

	  printf("\n#ifndef machine_arch_type\n");
	  printf("#define machine_arch_type\t__machine_arch_type\n");
	  printf("#endif\n\n");
	  printf("#endif\n");
	}
