/*
 * (C) Copyright 2008 - 2013 Tensilica Inc.
 * (C) Copyright 2014 - 2016 Cadence Design Systems Inc.
 *
 * SPDX-License-Identifier:	GPL-2.0+
 */

/*
 * Exception handling.
 *  We currently don't handle any exception and force a reset.
 *  (Note that alloca is a special case and handled in start.S)
 */

#include <common.h>
#include <command.h>
#include <asm/string.h>
#include <asm/regs.h>

typedef void (*handler_t)(struct pt_regs *);

void unhandled_exception(struct pt_regs *regs)
{
	printf("Unhandled Exception: EXCCAUSE = %ld, EXCVADDR = %lx, pc = %lx\n",
	       regs->exccause, regs->excvaddr, regs->pc);
	panic("*** PANIC\n");
}

handler_t exc_table[EXCCAUSE_LAST] = {
	[0 ... EXCCAUSE_LAST-1]			= unhandled_exception,
};

int interrupt_init(void)
{
	return 0;
}

void enable_interrupts(void)
{
}

int disable_interrupts(void)
{
	return 0;
}
