85620db107
This patch adds stub implementations of exception_init() to all archs so that it can be called from src/lib/hardwaremain.c. It also moves/adds all other invocations of exception_init() (which needs to be rerun in every stage) close to console_init(), in the hopes that it will be less likely overlooked when creating future boards. Also added (an ineffective) one to the armv4 bootblock implementations for consistency and in case we want to implement it later. Change-Id: Iecad10172d25f6c1fc54b0fec8165d7ef60e3414 Signed-off-by: Julius Werner <jwerner@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/176764 Reviewed-by: Gabe Black <gabeblack@chromium.org> Reviewed-by: David Hendricks <dhendrix@chromium.org> (cherry picked from commit 2960623f4a59d841a13793ee906db8d1b1c16c5d) Signed-off-by: Isaac Christensen <isaac.christensen@se-eng.com> Reviewed-on: http://review.coreboot.org/6884 Reviewed-by: Stefan Reinauer <stefan.reinauer@coreboot.org> Reviewed-by: Paul Menzel <paulepanter@users.sourceforge.net> Tested-by: build bot (Jenkins)
65 lines
1.6 KiB
C
65 lines
1.6 KiB
C
/*
|
|
* This file is part of the coreboot project.
|
|
*
|
|
* Copyright 2010 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.
|
|
*
|
|
* 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
|
|
*/
|
|
|
|
#include <arch/cache.h>
|
|
#include <arch/exception.h>
|
|
#include <arch/hlt.h>
|
|
#include <arch/stages.h>
|
|
#include <bootblock_common.h>
|
|
#include <cbfs.h>
|
|
#include <console/console.h>
|
|
#include <smp/node.h>
|
|
|
|
void main(void)
|
|
{
|
|
const char *stage_name = "fallback/romstage";
|
|
void *entry;
|
|
uint32_t sctlr;
|
|
|
|
/* Globally disable MMU, caches, and branch prediction (these should
|
|
* be disabled by default on reset) */
|
|
sctlr = read_sctlr();
|
|
sctlr &= ~(SCTLR_M | SCTLR_C | SCTLR_Z | SCTLR_I);
|
|
write_sctlr(sctlr);
|
|
|
|
arm_invalidate_caches();
|
|
|
|
/*
|
|
* Re-enable icache and branch prediction. MMU and dcache will be
|
|
* set up later.
|
|
*/
|
|
sctlr = read_sctlr();
|
|
sctlr |= SCTLR_Z | SCTLR_I;
|
|
write_sctlr(sctlr);
|
|
|
|
bootblock_cpu_init();
|
|
bootblock_mainboard_init();
|
|
|
|
#if CONFIG_BOOTBLOCK_CONSOLE
|
|
console_init();
|
|
exception_init();
|
|
#endif
|
|
|
|
entry = cbfs_load_stage(CBFS_DEFAULT_MEDIA, stage_name);
|
|
|
|
if (entry) stage_exit(entry);
|
|
hlt();
|
|
}
|