1 #!/bin/awk 2 # SPDX-License-Identifier: GPL-2.0 3 # 4 # Awk script to generate include/generated/mach-types.h 5 # 6 BEGIN { nr = 0 } 7 /^#/ { next } 8 /^[ ]*$/ { next } 9 10 NF == 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 17 NF == 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 25 END { 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 }
Linux® is a registered trademark of Linus Torvalds in the United States and other countries.
TOMOYO® is a registered trademark of NTT DATA CORPORATION.