diff options
| author | Tom Rini <trini@ti.com> | 2014-01-10 10:56:00 -0500 | 
|---|---|---|
| committer | Tom Rini <trini@ti.com> | 2014-01-10 10:56:00 -0500 | 
| commit | 7f673c99c2d8d1aa21996c5b914f06d784b080ca (patch) | |
| tree | df68108a0bd7326dc6299b96853b769220c55470 /arch/arm/lib/interrupts_64.c | |
| parent | 8401bfa91ef57e331e2a3abdf768d41803bec88e (diff) | |
| parent | 10a147bc665367111920be657409a5d56d3c0590 (diff) | |
| download | olio-uboot-2014.01-7f673c99c2d8d1aa21996c5b914f06d784b080ca.tar.xz olio-uboot-2014.01-7f673c99c2d8d1aa21996c5b914f06d784b080ca.zip | |
Merge branch 'master' of git://git.denx.de/u-boot-arm
Bringing in the MMC tree means that CONFIG_BOUNCE_BUFFER needed to be
added to include/configs/exynos5-dt.h now.
Conflicts:
	include/configs/exynos5250-dt.h
Signed-off-by: Tom Rini <trini@ti.com>
Diffstat (limited to 'arch/arm/lib/interrupts_64.c')
| -rw-r--r-- | arch/arm/lib/interrupts_64.c | 120 | 
1 files changed, 120 insertions, 0 deletions
| diff --git a/arch/arm/lib/interrupts_64.c b/arch/arm/lib/interrupts_64.c new file mode 100644 index 000000000..b47672255 --- /dev/null +++ b/arch/arm/lib/interrupts_64.c @@ -0,0 +1,120 @@ +/* + * (C) Copyright 2013 + * David Feng <fenghua@phytium.com.cn> + * + * SPDX-License-Identifier:	GPL-2.0+ + */ + +#include <common.h> +#include <linux/compiler.h> + + +int interrupt_init(void) +{ +	return 0; +} + +void enable_interrupts(void) +{ +	return; +} + +int disable_interrupts(void) +{ +	return 0; +} + +void show_regs(struct pt_regs *regs) +{ +	int i; + +	printf("ELR:     %lx\n", regs->elr); +	printf("LR:      %lx\n", regs->regs[30]); +	for (i = 0; i < 29; i += 2) +		printf("x%-2d: %016lx x%-2d: %016lx\n", +		       i, regs->regs[i], i+1, regs->regs[i+1]); +	printf("\n"); +} + +/* + * do_bad_sync handles the impossible case in the Synchronous Abort vector. + */ +void do_bad_sync(struct pt_regs *pt_regs, unsigned int esr) +{ +	printf("Bad mode in \"Synchronous Abort\" handler, esr 0x%08x\n", esr); +	show_regs(pt_regs); +	panic("Resetting CPU ...\n"); +} + +/* + * do_bad_irq handles the impossible case in the Irq vector. + */ +void do_bad_irq(struct pt_regs *pt_regs, unsigned int esr) +{ +	printf("Bad mode in \"Irq\" handler, esr 0x%08x\n", esr); +	show_regs(pt_regs); +	panic("Resetting CPU ...\n"); +} + +/* + * do_bad_fiq handles the impossible case in the Fiq vector. + */ +void do_bad_fiq(struct pt_regs *pt_regs, unsigned int esr) +{ +	printf("Bad mode in \"Fiq\" handler, esr 0x%08x\n", esr); +	show_regs(pt_regs); +	panic("Resetting CPU ...\n"); +} + +/* + * do_bad_error handles the impossible case in the Error vector. + */ +void do_bad_error(struct pt_regs *pt_regs, unsigned int esr) +{ +	printf("Bad mode in \"Error\" handler, esr 0x%08x\n", esr); +	show_regs(pt_regs); +	panic("Resetting CPU ...\n"); +} + +/* + * do_sync handles the Synchronous Abort exception. + */ +void do_sync(struct pt_regs *pt_regs, unsigned int esr) +{ +	printf("\"Synchronous Abort\" handler, esr 0x%08x\n", esr); +	show_regs(pt_regs); +	panic("Resetting CPU ...\n"); +} + +/* + * do_irq handles the Irq exception. + */ +void do_irq(struct pt_regs *pt_regs, unsigned int esr) +{ +	printf("\"Irq\" handler, esr 0x%08x\n", esr); +	show_regs(pt_regs); +	panic("Resetting CPU ...\n"); +} + +/* + * do_fiq handles the Fiq exception. + */ +void do_fiq(struct pt_regs *pt_regs, unsigned int esr) +{ +	printf("\"Fiq\" handler, esr 0x%08x\n", esr); +	show_regs(pt_regs); +	panic("Resetting CPU ...\n"); +} + +/* + * do_error handles the Error exception. + * Errors are more likely to be processor specific, + * it is defined with weak attribute and can be redefined + * in processor specific code. + */ +void __weak do_error(struct pt_regs *pt_regs, unsigned int esr) +{ +	printf("\"Error\" handler, esr 0x%08x\n", esr); +	show_regs(pt_regs); +	panic("Resetting CPU ...\n"); +} |