MIPS: reserve space for exception vectors

In order to set own exception handlers, a table with the exception
vectors must be built in DRAM and the CPU EBase register must be
set to the base address of this table.

Reserve the space above the stack and use gd->irq_sp as storage
for the exception base address.

Signed-off-by: Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
This commit is contained in:
Daniel Schwierzeck 2016-01-09 18:34:14 +01:00
parent 67588bdade
commit bd60252811
2 changed files with 20 additions and 0 deletions

View File

@ -7,6 +7,7 @@
obj-y += cache.o
obj-y += cache_init.o
obj-y += stack.o
obj-$(CONFIG_CMD_BOOTM) += bootm.o

19
arch/mips/lib/stack.c Normal file
View File

@ -0,0 +1,19 @@
/*
* SPDX-License-Identifier: GPL-2.0+
*/
#include <common.h>
DECLARE_GLOBAL_DATA_PTR;
int arch_reserve_stacks(void)
{
/* reserve space for exception vector table */
gd->start_addr_sp -= 0x500;
gd->start_addr_sp &= ~0xFFF;
gd->irq_sp = gd->start_addr_sp;
debug("Reserving %d Bytes for exception vector at: %08lx\n",
0x500, gd->start_addr_sp);
return 0;
}