diff options
author | Alexandru Gagniuc <alexandrux.gagniuc@intel.com> | 2015-10-30 18:05:57 -0700 |
---|---|---|
committer | Martin Roth <martinroth@google.com> | 2016-06-08 22:35:18 +0200 |
commit | 6a587343a96167c21d63ace1857ee2d55cdebfa0 (patch) | |
tree | 822c3a01cf1327849dd0ad16be214a4f02cff833 | |
parent | 0f61da85820c518341240ce0b60ebfec70187fc0 (diff) |
drivers/intel/fsp2.0: Add semantic patch for FspUpdVpd.h header
Previous FSP implementations in coreboot have included FspUpdVpd.h
directly, along with with efi headers. Instead of taking that
approach in FSP 2.0, we provide a semantic patch that, with minimal
modifications, makes FspUpdVpd.h easier to include in coreboot, and
eliminates reliance on external headers and definitions.
Change-Id: I0c2a6f7baf6fb50ae22b64e08e653cfe1aefdaf9
Signed-off-by: Alexandru Gagniuc <alexandrux.gagniuc@intel.com>
Reviewed-on: https://review.coreboot.org/13331
Tested-by: build bot (Jenkins)
Reviewed-by: Aaron Durbin <adurbin@chromium.org>
-rw-r--r-- | src/drivers/intel/fsp2_0/header_util/fspupdvpd.spatch | 187 | ||||
-rw-r--r-- | src/drivers/intel/fsp2_0/header_util/fspupdvpd_sanitize.sh | 33 |
2 files changed, 220 insertions, 0 deletions
diff --git a/src/drivers/intel/fsp2_0/header_util/fspupdvpd.spatch b/src/drivers/intel/fsp2_0/header_util/fspupdvpd.spatch new file mode 100644 index 0000000000..d6bc820c48 --- /dev/null +++ b/src/drivers/intel/fsp2_0/header_util/fspupdvpd.spatch @@ -0,0 +1,187 @@ +/* + * Semantic patch for fspupdvpd_sanitize.sh. Please call the script directly. + * + * This file is part of the coreboot project. + * + * Copyright (C) 2015 Intel Corp. + * (Written by Alexandru Gagniuc <alexandrux.gagniuc@intel.com> for Intel Corp.) + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This semantic patch is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + */ + +@ kill_pragma_pack @ +@@ +- #pragma pack(...) + +/* + * Convert named typedef'd structs + * Example : typedef struct name {} name_t; -> struct name {}; + */ +@ named_struct @ +identifier i; +type t; +@@ +typedef struct i { ... } t; + +/* Make typename usable as identifier */ +@ script:python named_struct_type @ +t << named_struct.t; +i; +@@ +coccinelle.i = t.rstrip('_t') + + +@ convert_named_struct_decls @ +type named_struct.t; +identifier named_struct_type.i; +identifier g; +@@ +- typedef struct g { ++ struct i { +... +} +- t +; + +/* Replace type with struct */ +@ named_typedef_to_struct @ +type named_struct.t; +identifier named_struct_type.i; +@@ +- t ++ struct i + + +/* + * Convert unnamed typedef'd structs + * Example : typedef struct {} name_t; -> struct name {}; + */ +@ unnamed_struct @ +type t; +@@ +typedef struct { ... } t; + +/* Make typename usable as identifier */ +@ script:python unnamed_struct_type @ +t << unnamed_struct.t; +i; +@@ +coccinelle.i = t.rstrip('_t') + +@ convert_unnamed_struct_decls @ +type unnamed_struct.t; +identifier unnamed_struct_type.i; +@@ +-typedef struct { ++struct i { + ... +} +- t +; + +/* + * Convert unnamed typedef'd enums + */ +@ unnamed_enum @ +type t; +@@ +typedef enum { ... } t; + +/* Make typename usable as identifier */ +@ script:python unnamed_enum_type @ +t << unnamed_enum.t; +i; +@@ +coccinelle.i = t.rstrip('_t') + +@ convert_unnamed_enum_decls @ +type unnamed_enum.t; +identifier unnamed_enum_type.i; +@@ +-typedef enum { ++enum i { + ... +} +- t +; + +/* Replace type with struct */ +@ unnamed_typedef_to_struct @ +type unnamed_struct.t; +identifier unnamed_struct_type.i; +@@ +-t ++struct i + +/* + * Pack _ALL_ structs + */ +@ pack_structs @ +identifier s; +@@ + +struct s { +... +} ++ __attribute__((packed)) +; + +/* + * BIGINT to stdint + */ +@ uint8_t @ +typedef UINT8; +typedef uint8_t; +@@ +- UINT8 ++ uint8_t + +@ uint16_t @ +typedef UINT16; +typedef uint16_t; +@@ +- UINT16 ++ uint16_t + +@ uint32_t @ +typedef UINT32; +typedef uint32_t; +@@ +- UINT32 ++ uint32_t + +@ uint64_t @ +typedef UINT64; +typedef uint64_t; +@@ +- UINT64 ++ uint64_t + +@ bool @ +typedef BOOLEAN; +typedef bool; +@@ +- BOOLEAN ++ bool + +@ wchar_t @ +typedef CHAR16; +typedef wchar_t; +@@ +- CHAR16 ++ wchar_t + +/* This rule can't be named "void" */ +@ replace_uppercase_void @ +typedef VOID; +@@ +- VOID ++ void diff --git a/src/drivers/intel/fsp2_0/header_util/fspupdvpd_sanitize.sh b/src/drivers/intel/fsp2_0/header_util/fspupdvpd_sanitize.sh new file mode 100644 index 0000000000..2b500539b7 --- /dev/null +++ b/src/drivers/intel/fsp2_0/header_util/fspupdvpd_sanitize.sh @@ -0,0 +1,33 @@ +# +# Convert the FspUpdVpd.h header file into a format usable by coreboot +# Usage: +# fspupdvpd_sanitize.sh <path/to/FspUpdVpd.h> +# +# This file is part of the coreboot project. +# +# Copyright (C) 2015-2016 Intel Corp. +# (Written by Alexandru Gagniuc <alexandrux.gagniuc@intel.com> for Intel Corp.) +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +PWD=$(dirname "${BASH_SOURCE[0]}") + +SPATCH=spatch + +# Fix line terminations +dos2unix $1 + +# Clean up trailing whitespace +sed -e "s, $,,g" -i $1 + +# Now fix the actual coding style +$SPATCH -sp_file ${PWD}/fspupdvpd.spatch \ + -in_place $1 |