Kyösti Mälkki (kyosti.malkki@gmail.com) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/3939
-gerrit
commit 041e1407233e5d6764cf4df88f9a3352807f7583 Author: Stefan Reinauer reinauer@chromium.org Date: Wed Jun 19 12:25:44 2013 -0700
Rename cpu/x86/car.h to arch/early_variables.h
and add an ARMv7 version.
Change-Id: I14fbff88d7c2b003dde57a19bf0ba9640d322156 Signed-off-by: Stefan Reinauer reinauer@google.com [km: rebased fa004acf8 from chromium git] Signed-off-by: Kyösti Mälkki kyosti.malkki@gmail.com --- src/arch/armv7/include/arch/early_variables.h | 59 ++++++++++++++++++++++++++ src/arch/x86/include/arch/early_variables.h | 60 +++++++++++++++++++++++++++ src/cpu/x86/car.c | 2 +- src/cpu/x86/lapic/apic_timer.c | 2 +- src/drivers/oxford/oxpcie/oxpcie_early.c | 2 +- src/drivers/pc80/tpm.c | 2 +- src/include/cpu/x86/car.h | 60 --------------------------- src/lib/cbmem.c | 2 +- src/lib/cbmem_console.c | 2 +- src/lib/dynamic_cbmem.c | 2 +- src/lib/timestamp.c | 2 +- src/lib/usbdebug.c | 2 +- src/northbridge/amd/amdfam10/raminit_amdmct.c | 2 +- src/northbridge/amd/amdk8/raminit.c | 2 +- src/northbridge/amd/amdk8/raminit_f.c | 2 +- src/vendorcode/google/chromeos/vbnv.c | 2 +- 16 files changed, 132 insertions(+), 73 deletions(-)
diff --git a/src/arch/armv7/include/arch/early_variables.h b/src/arch/armv7/include/arch/early_variables.h new file mode 100644 index 0000000..90ead9d --- /dev/null +++ b/src/arch/armv7/include/arch/early_variables.h @@ -0,0 +1,59 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2011 The ChromiumOS Authors. All rights reserved. + * + * 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; version 2 of the License. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA, 02110-1301 USA + */ + +#ifndef ARCH_EARLY_VARIABLES_H +#define ARCH_EARLY_VARIABLES_H + +#ifdef __PRE_RAM__ +#define CAR_GLOBAL __attribute__((section(".car.global_data,"w",%nobits@"))) +#define CAR_CBMEM __attribute__((section(".car.cbmem_console,"w",%nobits@"))) +#else +#define CAR_GLOBAL +#define CAR_CBMEM +#endif + +#if defined(__PRE_RAM__) +#define CAR_MIGRATE_ATTR __attribute__ ((used,section (".car.migrate"))) + +/* Call migrate_fn_() when CAR globals are migrated. */ +#define CAR_MIGRATE(migrate_fn_) \ + static void (* const migrate_fn_ ## _ptr)(void) CAR_MIGRATE_ATTR = \ + migrate_fn_; + +/* Get the correct pointer for the CAR global variable. */ +void *car_get_var_ptr(void *var); + +/* Get and set a primitive type global variable. */ +#define car_get_var(var) \ + *(typeof(var) *)car_get_var_ptr(&(var)) +#define car_set_var(var, val) \ + do { car_get_var(var) = (val); } while(0) + +/* Migrate the CAR variables to memory. */ +void car_migrate_variables(void); + +#else +#define CAR_MIGRATE(migrate_fn_) +static inline void *car_get_var_ptr(void *var) { return var; } +#define car_get_var(var) (var) +#define car_set_var(var, val) do { (var) = (val); } while (0) +static inline void car_migrate_variables(void) { } +#endif + +#endif diff --git a/src/arch/x86/include/arch/early_variables.h b/src/arch/x86/include/arch/early_variables.h new file mode 100644 index 0000000..ba7df97 --- /dev/null +++ b/src/arch/x86/include/arch/early_variables.h @@ -0,0 +1,60 @@ +/* + * This file is part of the coreboot project. + * + * Copyright (C) 2011 The ChromiumOS Authors. All rights reserved. + * + * 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; version 2 of the License. + * + * 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. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA, 02110-1301 USA + */ + +#ifndef ARCH_EARLY_VARIABLES_H +#define ARCH_EARLY_VARIABLES_H + +#ifdef __PRE_RAM__ +#define CAR_GLOBAL __attribute__((section(".car.global_data,"w",@nobits#"))) +#define CAR_CBMEM __attribute__((section(".car.cbmem_console,"w",@nobits#"))) +#else +#define CAR_GLOBAL +#define CAR_CBMEM +#endif + +#if defined(__PRE_RAM__) +#define CAR_MIGRATE_ATTR __attribute__ ((used,section (".car.migrate"))) + +/* Call migrate_fn_() when CAR globals are migrated. */ +#define CAR_MIGRATE(migrate_fn_) \ + static void (* const migrate_fn_ ## _ptr)(void) CAR_MIGRATE_ATTR = \ + migrate_fn_; + +/* Get the correct pointer for the CAR global variable. */ +void *car_get_var_ptr(void *var); + +/* Get and set a primitive type global variable. */ +#define car_get_var(var) \ + *(typeof(var) *)car_get_var_ptr(&(var)) +#define car_set_var(var, val) \ + do { car_get_var(var) = (val); } while(0) + +/* Migrate the CAR variables to memory. */ +void car_migrate_variables(void); + +#else +#define CAR_MIGRATE(migrate_fn_) +static inline void *car_get_var_ptr(void *var) { return var; } +#define car_get_var(var) (var) +#define car_set_var(var, val) do { (var) = (val); } while (0) +static inline void car_migrate_variables(void) { } +#endif + + +#endif diff --git a/src/cpu/x86/car.c b/src/cpu/x86/car.c index 87fa98b..481153d 100644 --- a/src/cpu/x86/car.c +++ b/src/cpu/x86/car.c @@ -21,7 +21,7 @@ #include <stddef.h> #include <console/console.h> #include <cbmem.h> -#include <cpu/x86/car.h> +#include <arch/early_variables.h>
typedef void (* const car_migration_func_t)(void);
diff --git a/src/cpu/x86/lapic/apic_timer.c b/src/cpu/x86/lapic/apic_timer.c index e5ce62f..868fb92 100644 --- a/src/cpu/x86/lapic/apic_timer.c +++ b/src/cpu/x86/lapic/apic_timer.c @@ -24,7 +24,7 @@ #include <thread.h> #include <arch/io.h> #include <arch/cpu.h> -#include <cpu/x86/car.h> +#include <arch/early_variables.h> #include <cpu/x86/msr.h> #include <cpu/x86/lapic.h> #include <cpu/intel/speedstep.h> diff --git a/src/drivers/oxford/oxpcie/oxpcie_early.c b/src/drivers/oxford/oxpcie/oxpcie_early.c index 2bca5c7..d04e9d4 100644 --- a/src/drivers/oxford/oxpcie/oxpcie_early.c +++ b/src/drivers/oxford/oxpcie/oxpcie_early.c @@ -19,7 +19,7 @@
#include <stdint.h> #include <arch/io.h> -#include <cpu/x86/car.h> +#include <arch/early_variables.h> #include <delay.h> #include <uart8250.h> #include <device/pci_def.h> diff --git a/src/drivers/pc80/tpm.c b/src/drivers/pc80/tpm.c index 0ea0017..b8ed3f1 100644 --- a/src/drivers/pc80/tpm.c +++ b/src/drivers/pc80/tpm.c @@ -34,7 +34,7 @@ #include <arch/byteorder.h> #include <console/console.h> #include <pc80/tpm.h> -#include <cpu/x86/car.h> +#include <arch/early_variables.h>
#define PREFIX "lpc_tpm: "
diff --git a/src/include/cpu/x86/car.h b/src/include/cpu/x86/car.h deleted file mode 100644 index 5fc11f9..0000000 --- a/src/include/cpu/x86/car.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * This file is part of the coreboot project. - * - * Copyright (C) 2011 The ChromiumOS Authors. All rights reserved. - * - * 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; version 2 of the License. - * - * 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. - * - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA, 02110-1301 USA - */ - -#ifndef CPU_X86_CAR_H -#define CPU_X86_CAR_H - -#ifdef __PRE_RAM__ -#define CAR_GLOBAL __attribute__((section(".car.global_data,"w",@nobits#"))) -#define CAR_CBMEM __attribute__((section(".car.cbmem_console,"w",@nobits#"))) -#else -#define CAR_GLOBAL -#define CAR_CBMEM -#endif - -#if defined(__PRE_RAM__) -#define CAR_MIGRATE_ATTR __attribute__ ((used,section (".car.migrate"))) - -/* Call migrate_fn_() when CAR globals are migrated. */ -#define CAR_MIGRATE(migrate_fn_) \ - static void (* const migrate_fn_ ## _ptr)(void) CAR_MIGRATE_ATTR = \ - migrate_fn_; - -/* Get the correct pointer for the CAR global variable. */ -void *car_get_var_ptr(void *var); - -/* Get and set a primitive type global variable. */ -#define car_get_var(var) \ - *(typeof(var) *)car_get_var_ptr(&(var)) -#define car_set_var(var, val) \ - do { car_get_var(var) = (val); } while(0) - -/* Migrate the CAR variables to memory. */ -void car_migrate_variables(void); - -#else -#define CAR_MIGRATE(migrate_fn_) -static inline void *car_get_var_ptr(void *var) { return var; } -#define car_get_var(var) (var) -#define car_set_var(var, val) do { (var) = (val); } while (0) -static inline void car_migrate_variables(void) { } -#endif - - -#endif diff --git a/src/lib/cbmem.c b/src/lib/cbmem.c index 8d69435..8a39647 100644 --- a/src/lib/cbmem.c +++ b/src/lib/cbmem.c @@ -23,7 +23,7 @@ #include <cbmem.h> #include <boot/coreboot_tables.h> #include <console/console.h> -#include <cpu/x86/car.h> +#include <arch/early_variables.h> #if CONFIG_HAVE_ACPI_RESUME && !defined(__PRE_RAM__) #include <arch/acpi.h> #endif diff --git a/src/lib/cbmem_console.c b/src/lib/cbmem_console.c index 881865c..dd88300 100644 --- a/src/lib/cbmem_console.c +++ b/src/lib/cbmem_console.c @@ -19,7 +19,7 @@
#include <console/console.h> #include <cbmem.h> -#include <cpu/x86/car.h> +#include <arch/early_variables.h> #include <string.h>
/* diff --git a/src/lib/dynamic_cbmem.c b/src/lib/dynamic_cbmem.c index ba7760d..e21f96e 100644 --- a/src/lib/dynamic_cbmem.c +++ b/src/lib/dynamic_cbmem.c @@ -23,7 +23,7 @@ #include <cbmem.h> #include <string.h> #include <stdlib.h> -#include <cpu/x86/car.h> +#include <arch/early_variables.h> #if CONFIG_HAVE_ACPI_RESUME && !defined(__PRE_RAM__) #include <arch/acpi.h> #endif diff --git a/src/lib/timestamp.c b/src/lib/timestamp.c index a9c354e..8942649 100644 --- a/src/lib/timestamp.c +++ b/src/lib/timestamp.c @@ -22,7 +22,7 @@ #include <console/console.h> #include <cbmem.h> #include <timestamp.h> -#include <cpu/x86/car.h> +#include <arch/early_variables.h> #include <cpu/x86/lapic.h>
#define MAX_TIMESTAMPS 30 diff --git a/src/lib/usbdebug.c b/src/lib/usbdebug.c index 39cd138..3faec10 100644 --- a/src/lib/usbdebug.c +++ b/src/lib/usbdebug.c @@ -24,7 +24,7 @@ #include <device/pci.h> #include <device/pci_def.h> #include <arch/byteorder.h> -#include <cpu/x86/car.h> +#include <arch/early_variables.h> #include <string.h> #include <cbmem.h>
diff --git a/src/northbridge/amd/amdfam10/raminit_amdmct.c b/src/northbridge/amd/amdfam10/raminit_amdmct.c index 6994c39..e5c18a8 100644 --- a/src/northbridge/amd/amdfam10/raminit_amdmct.c +++ b/src/northbridge/amd/amdfam10/raminit_amdmct.c @@ -120,7 +120,7 @@ static void print_t(const char *strval)
#endif /* DDR2 */
-#include <cpu/x86/car.h> +#include <arch/early_variables.h> struct sys_info sysinfo_car CAR_GLOBAL;
int mctRead_SPD(u32 smaddr, u32 reg) diff --git a/src/northbridge/amd/amdk8/raminit.c b/src/northbridge/amd/amdk8/raminit.c index 33a3245..4aaa1bb 100644 --- a/src/northbridge/amd/amdk8/raminit.c +++ b/src/northbridge/amd/amdk8/raminit.c @@ -14,7 +14,7 @@ #include "option_table.h" #endif
-#include <cpu/x86/car.h> +#include <arch/early_variables.h> struct sys_info sysinfo_car CAR_GLOBAL;
#if (CONFIG_RAMTOP & (CONFIG_RAMTOP -1)) != 0 diff --git a/src/northbridge/amd/amdk8/raminit_f.c b/src/northbridge/amd/amdk8/raminit_f.c index c1882d7..64271b5 100644 --- a/src/northbridge/amd/amdk8/raminit_f.c +++ b/src/northbridge/amd/amdk8/raminit_f.c @@ -39,7 +39,7 @@ #endif
-#include <cpu/x86/car.h> +#include <arch/early_variables.h> struct sys_info sysinfo_car CAR_GLOBAL;
#if (CONFIG_RAMTOP & (CONFIG_RAMTOP -1)) != 0 diff --git a/src/vendorcode/google/chromeos/vbnv.c b/src/vendorcode/google/chromeos/vbnv.c index d94203a..58ccbdb 100644 --- a/src/vendorcode/google/chromeos/vbnv.c +++ b/src/vendorcode/google/chromeos/vbnv.c @@ -21,7 +21,7 @@ #include <string.h> #include <console/console.h> #include <pc80/mc146818rtc.h> -#include <cpu/x86/car.h> +#include <arch/early_variables.h> #include "chromeos.h"
#define VBNV_BLOCK_SIZE 16 /* Size of NV storage block in bytes */