cachepc-linux

Fork of AMDESE/linux with modifications for CachePC side-channel attack
git clone https://git.sinitax.com/sinitax/cachepc-linux
Log | Files | Refs | README | LICENSE | sfeed.txt

gen-mach-types (2113B)


      1#!/bin/awk
      2# SPDX-License-Identifier: GPL-2.0
      3#
      4# Awk script to generate include/generated/mach-types.h
      5#
      6BEGIN	{ nr = 0 }
      7/^#/	{ next }
      8/^[ 	]*$/ { next }
      9
     10NF == 4 {
     11	  machine_is[nr] = "machine_is_"$1;
     12	  config[nr] = "CONFIG_"$2;
     13	  mach_type[nr] = "MACH_TYPE_"$3;
     14	  num[nr] = $4; nr++
     15	}
     16
     17NF == 3 {
     18	  machine_is[nr] = "machine_is_"$1;
     19	  config[nr] = "CONFIG_"$2;
     20	  mach_type[nr] = "MACH_TYPE_"$3;
     21	  num[nr] = ""; nr++
     22	}
     23
     24
     25END	{
     26	  printf("/*\n");
     27	  printf(" * This was automagically generated from %s!\n", FILENAME);
     28	  printf(" * Do NOT edit\n");
     29	  printf(" */\n\n");
     30	  printf("#ifndef __ASM_ARM_MACH_TYPE_H\n");
     31	  printf("#define __ASM_ARM_MACH_TYPE_H\n\n");
     32	  printf("#ifndef __ASSEMBLY__\n");
     33	  printf("/* The type of machine we're running on */\n");
     34	  printf("extern unsigned int __machine_arch_type;\n");
     35	  printf("#endif\n\n");
     36
     37	  printf("/* see arch/arm/kernel/arch.c for a description of these */\n");
     38	  for (i = 0; i < nr; i++)
     39	    if (num[i] ~ /..*/)
     40	      printf("#define %-30s %d\n", mach_type[i], num[i]);
     41
     42	  printf("\n");
     43
     44	  for (i = 0; i < nr; i++)
     45	    if (num[i] ~ /..*/) {
     46	      printf("#ifdef %s\n", config[i]);
     47	      printf("# ifdef machine_arch_type\n");
     48	      printf("#  undef machine_arch_type\n");
     49	      printf("#  define machine_arch_type\t__machine_arch_type\n");
     50	      printf("# else\n");
     51	      printf("#  define machine_arch_type\t%s\n", mach_type[i]);
     52	      printf("# endif\n");
     53	      printf("# define %s()\t(machine_arch_type == %s)\n", machine_is[i], mach_type[i]);
     54	      printf("#else\n");
     55	      printf("# define %s()\t(0)\n", machine_is[i]);
     56	      printf("#endif\n\n");
     57	    }
     58
     59	  printf("/*\n * These have not yet been registered\n */\n");
     60	  for (i = 0; i < nr; i++)
     61	    if (num[i] !~ /..*/)
     62	      printf("/* #define %-30s <<not registered>> */\n", mach_type[i]);
     63
     64	  for (i = 0; i < nr; i++)
     65	    if (num[i] !~ /..*/) {
     66	      printf("#define %s()\t(0)\n", machine_is[i]);
     67	    }
     68
     69	  printf("\n#ifndef machine_arch_type\n");
     70	  printf("#define machine_arch_type\t__machine_arch_type\n");
     71	  printf("#endif\n\n");
     72	  printf("#endif\n");
     73	}