54 lines
1.4 KiB
C
54 lines
1.4 KiB
C
/*
|
|
* This file is part of the coreboot project.
|
|
*
|
|
* Copyright (C) 2013 Google, Inc.
|
|
*
|
|
* 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.
|
|
*/
|
|
#include <console/console.h>
|
|
#include <cbmem.h>
|
|
#include <bootstate.h>
|
|
#include <rules.h>
|
|
#include <symbols.h>
|
|
#if IS_ENABLED(CONFIG_ARCH_X86) && !IS_ENABLED(CONFIG_EARLY_CBMEM_INIT)
|
|
#include <arch/acpi.h>
|
|
#endif
|
|
|
|
void cbmem_run_init_hooks(int is_recovery)
|
|
{
|
|
cbmem_init_hook_t *init_hook_ptr = (cbmem_init_hook_t*) &_cbmem_init_hooks;
|
|
cbmem_init_hook_t *einit_hook_ptr = (cbmem_init_hook_t*) &_ecbmem_init_hooks;
|
|
|
|
if (_cbmem_init_hooks_size == 0)
|
|
return;
|
|
|
|
while (init_hook_ptr != einit_hook_ptr) {
|
|
(*init_hook_ptr)(is_recovery);
|
|
init_hook_ptr++;
|
|
}
|
|
}
|
|
|
|
void __attribute__((weak)) cbmem_fail_resume(void)
|
|
{
|
|
}
|
|
|
|
#if ENV_RAMSTAGE && !IS_ENABLED(CONFIG_EARLY_CBMEM_INIT)
|
|
static void init_cbmem_post_device(void *unused)
|
|
{
|
|
if (acpi_is_wakeup())
|
|
cbmem_initialize();
|
|
else
|
|
cbmem_initialize_empty();
|
|
}
|
|
|
|
BOOT_STATE_INIT_ENTRY(BS_POST_DEVICE, BS_ON_ENTRY,
|
|
init_cbmem_post_device, NULL);
|
|
#endif
|