blob: 8c7a262892223a85a0c925f5595d9001aee2fb15 [file] [log] [blame]
Mike Frysinger9171fc82008-03-30 15:46:13 -04001/*
2 * interrupt.S - trampoline default exceptions/interrupts to C handlers
3 *
Robin Getz03642ae2009-12-21 17:02:48 -05004 * Copyright (c) 2005-2009 Analog Devices Inc.
Mike Frysinger9171fc82008-03-30 15:46:13 -04005 * Licensed under the GPL-2 or later.
6 */
7
Mike Frysinger9c46e712009-08-24 20:48:04 -04008#include <config.h>
Mike Frysinger9171fc82008-03-30 15:46:13 -04009#include <asm/blackfin.h>
10#include <asm/entry.h>
11
12.text
13
14/* default entry point for exceptions */
15ENTRY(_trap)
Mike Frysinger9c46e712009-08-24 20:48:04 -040016 CONFIG_BFIN_SCRATCH_REG = sp;
17 sp.l = LO(L1_SRAM_SCRATCH_END - 20);
18 sp.h = HI(L1_SRAM_SCRATCH_END - 20);
Mike Frysinger9171fc82008-03-30 15:46:13 -040019 SAVE_ALL_SYS
Robin Getz03642ae2009-12-21 17:02:48 -050020
Mike Frysinger9171fc82008-03-30 15:46:13 -040021 r0 = sp; /* stack frame pt_regs pointer argument ==> r0 */
22 sp += -12;
23 call _trap_c;
24 sp += 12;
Robin Getz03642ae2009-12-21 17:02:48 -050025
26#if ANOMALY_05000257
27 R7 = LC0;
28 LC0 = R7;
29 R7 = LC1;
30 LC1 = R7;
31#endif
32
Mike Frysinger9171fc82008-03-30 15:46:13 -040033 RESTORE_ALL_SYS
Mike Frysinger9c46e712009-08-24 20:48:04 -040034 sp = CONFIG_BFIN_SCRATCH_REG;
Mike Frysinger9171fc82008-03-30 15:46:13 -040035 rtx;
36ENDPROC(_trap)
37
38/* default entry point for interrupts */
39ENTRY(_evt_default)
40 SAVE_ALL_SYS
41 r0 = sp; /* stack frame pt_regs pointer argument ==> r0 */
42 sp += -12;
43 call _bfin_panic;
44 sp += 12;
45 RESTORE_ALL_SYS
46 rti;
47ENDPROC(_evt_default)