diff options
Diffstat (limited to 'cpu/bf533/interrupt.S')
| -rw-r--r-- | cpu/bf533/interrupt.S | 257 | 
1 files changed, 56 insertions, 201 deletions
| diff --git a/cpu/bf533/interrupt.S b/cpu/bf533/interrupt.S index e780dc6d6..c356d53aa 100644 --- a/cpu/bf533/interrupt.S +++ b/cpu/bf533/interrupt.S @@ -1,7 +1,7 @@  /*   * U-boot - interrupt.S Processing of interrupts and exception handling   * - * Copyright (c) 2005 blackfin.uclinux.org + * Copyright (c) 2005-2007 Analog Devices Inc.   *   * (C) Copyright 2000-2004   * Wolfgang Denk, DENX Software Engineering, wd@denx.de. @@ -35,208 +35,63 @@   *   * 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., 59 Temple Place, Suite 330, Boston, - * MA 02111-1307 USA + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, + * MA 02110-1301 USA   */  #define ASSEMBLY - +#include <config.h> +#include <asm/blackfin.h>  #include <asm/hw_irq.h>  #include <asm/entry.h>  #include <asm/blackfin_defs.h> -#include <asm/cpu/bf533_irq.h> -.global blackfin_irq_panic; +.global _blackfin_irq_panic;  .text  .align 2  #ifndef CONFIG_KGDB -.global evt_emulation -evt_emulation: +.global _evt_emulation +_evt_emulation:  	SAVE_CONTEXT  	r0 = IRQ_EMU;  	r1 = seqstat;  	sp += -12; -	call blackfin_irq_panic; +	call _blackfin_irq_panic;  	sp += 12;  	rte;  #endif -.global evt_nmi -evt_nmi: +.global _evt_nmi +_evt_nmi:  	SAVE_CONTEXT  	r0 = IRQ_NMI;  	r1 = RETN;  	sp += -12; -	call blackfin_irq_panic; +	call _blackfin_irq_panic;  	sp += 12;  _evt_nmi_exit:  	rtn; -.global trap -trap: -	[--sp] = r0; -	[--sp] = r1; -	[--sp] = p0; -	[--sp] = p1; -	[--sp] = astat; -	r0 = seqstat; -	R0 <<= 26; -	R0 >>= 26; -	p0 = r0; -	p1.l = EVTABLE; -	p1.h = EVTABLE; -	p0 = p1 + (p0 << 1); -	r1 = W[p0] (Z); -	p1 = r1; -	jump (pc + p1); - -.global _EVENT1 -_EVENT1: -	RAISE 14; -	JUMP.S _EXIT; - -.global _EVENT2 -_EVENT2: -	RAISE 14; -	JUMP.S _EXIT; - -.global _EVENT3 -_EVENT3: -	RAISE 14; -	JUMP.S _EXIT; - -.global _EVENT4 -_EVENT4: -	RAISE 14; -	JUMP.S _EXIT; - -.global _EVENT5 -_EVENT5: -	RAISE 14; -	JUMP.S _EXIT; - -.global _EVENT6 -_EVENT6: -	RAISE 14; -	JUMP.S _EXIT; - -.global _EVENT7 -_EVENT7: -	RAISE 15; -	JUMP.S _EXIT; - -.global _EVENT8 -_EVENT8: -	RAISE 14; -	JUMP.S _EXIT; - -.global _EVENT9 -_EVENT9: -	RAISE 14; -	JUMP.S _EXIT; - -.global _EVENT10 -_EVENT10: -	RAISE 14; -	JUMP.S _EXIT; - -.global _EVENT11 -_EVENT11: -	RAISE 14; -	JUMP.S _EXIT; - -.global _EVENT12 -_EVENT12: -	RAISE 14; -	JUMP.S _EXIT; - -.global _EVENT13 -_EVENT13: -	RAISE 14; -	JUMP.S _EXIT; - -.global _EVENT14 -_EVENT14: -/*	RAISE 14;	*/ -	CALL	_cplb_hdr; -	JUMP.S _EXIT; - -.global _EVENT19 -_EVENT19: -	RAISE 14; -	JUMP.S _EXIT; - -.global _EVENT20 -_EVENT20: -	RAISE 14; -	JUMP.S _EXIT; - -.global _EVENT21 -_EVENT21: -	RAISE 14; -	JUMP.S _EXIT; - -.global _EXIT -_EXIT: -	ASTAT = [sp++]; -	p1 = [sp++]; -	p0 = [sp++]; -	r1 = [sp++]; -	r0 = [sp++]; -	RTX; - -EVTABLE: -	.byte2 0x0000; -	.byte2 0x0000; -	.byte2 0x0000; -	.byte2 0x0000; -	.byte2 0x0000; -	.byte2 0x0000; -	.byte2 0x0000; -	.byte2 0x0000; -	.byte2 0x0000; -	.byte2 0x0000; -	.byte2 0x0000; -	.byte2 0x0000; -	.byte2 0x0000; -	.byte2 0x0000; -	.byte2 0x0000; -	.byte2 0x0000; -	.byte2 0x003E; -	.byte2 0x0042; -	.byte4 0x0000; -	.byte4 0x0000; -	.byte4 0x0000; -	.byte4 0x0000; -	.byte4 0x0000; -	.byte4 0x0000; -	.byte4 0x0000; -	.byte2 0x0000; -	.byte2 0x001E; -	.byte2 0x0022; -	.byte2 0x0032; -	.byte2 0x002e; -	.byte2 0x0002; -	.byte2 0x0036; -	.byte2 0x002A; -	.byte2 0x001A; -	.byte2 0x0016; -	.byte2 0x000A; -	.byte2 0x000E; -	.byte2 0x0012; -	.byte2 0x0006; -	.byte2 0x0026; +.global _trap +_trap: +	SAVE_ALL_SYS +	r0 = sp;        /* stack frame pt_regs pointer argument ==> r0 */ +	sp += -12; +	call _trap_c +	sp += 12; +	RESTORE_ALL_SYS +	rtx; -.global evt_rst -evt_rst: +.global _evt_rst +_evt_rst:  	SAVE_CONTEXT  	r0 = IRQ_RST;  	r1 = RETN;  	sp += -12; -	call do_reset; +	call _do_reset;  	sp += 12;  _evt_rst_exit: @@ -246,19 +101,19 @@ irq_panic:  	r0 = IRQ_EVX;  	r1 =  sp;  	sp += -12; -	call blackfin_irq_panic; +	call _blackfin_irq_panic;  	sp += 12; -.global evt_ivhw -evt_ivhw: +.global _evt_ivhw +_evt_ivhw:  	SAVE_CONTEXT  	RAISE 14;  _evt_ivhw_exit:  	 rti; -.global evt_timer -evt_timer: +.global _evt_timer +_evt_timer:  	SAVE_CONTEXT  	r0 = IRQ_CORETMR;  	sp += -12; @@ -269,91 +124,91 @@ evt_timer:  	rti;  	nop; -.global evt_evt7 -evt_evt7: +.global _evt_evt7 +_evt_evt7:  	SAVE_CONTEXT  	r0 = 7;  	sp += -12; -	call process_int; +	call _process_int;  	sp += 12;  evt_evt7_exit:  	RESTORE_CONTEXT  	rti; -.global evt_evt8 -evt_evt8: +.global _evt_evt8 +_evt_evt8:  	SAVE_CONTEXT  	r0 = 8;  	sp += -12; -	call process_int; +	call _process_int;  	sp += 12;  evt_evt8_exit:  	RESTORE_CONTEXT  	rti; -.global evt_evt9 -evt_evt9: +.global _evt_evt9 +_evt_evt9:  	SAVE_CONTEXT  	r0 = 9;  	sp += -12; -	call process_int; +	call _process_int;  	sp += 12;  evt_evt9_exit:  	RESTORE_CONTEXT  	rti; -.global evt_evt10 -evt_evt10: +.global _evt_evt10 +_evt_evt10:  	SAVE_CONTEXT  	r0 = 10;  	sp += -12; -	call process_int; +	call _process_int;  	sp += 12;  evt_evt10_exit:  	RESTORE_CONTEXT  	rti; -.global evt_evt11 -evt_evt11: +.global _evt_evt11 +_evt_evt11:  	SAVE_CONTEXT  	r0 = 11;  	sp += -12; -	call process_int; +	call _process_int;  	sp += 12;  evt_evt11_exit:  	RESTORE_CONTEXT  	rti; -.global evt_evt12 -evt_evt12: +.global _evt_evt12 +_evt_evt12:  	SAVE_CONTEXT  	r0 = 12;  	sp += -12; -	call process_int; +	call _process_int;  	sp += 12;  evt_evt12_exit:  	 RESTORE_CONTEXT  	 rti; -.global evt_evt13 -evt_evt13: +.global _evt_evt13 +_evt_evt13:  	SAVE_CONTEXT  	r0 = 13;  	sp += -12; -	call process_int; +	call _process_int;  	sp += 12;  evt_evt13_exit:  	 RESTORE_CONTEXT  	 rti; -.global evt_system_call -evt_system_call: +.global _evt_system_call +_evt_system_call:  	[--sp] = r0;  	[--SP] = RETI;  	r0 = [sp++]; @@ -363,7 +218,7 @@ evt_system_call:  	r0 = [SP++];  	SAVE_CONTEXT  	sp += -12; -	call display_excp; +	call _exception_handle;  	sp += 12;  	RESTORE_CONTEXT  	RTI; @@ -371,8 +226,8 @@ evt_system_call:  evt_system_call_exit:  	rti; -.global evt_soft_int1 -evt_soft_int1: +.global _evt_soft_int1 +_evt_soft_int1:  	[--sp] = r0;  	[--SP] = RETI;  	r0 = [sp++]; @@ -382,7 +237,7 @@ evt_soft_int1:  	r0 = [SP++];  	SAVE_CONTEXT  	sp += -12; -	call display_excp; +	call _exception_handle;  	sp += 12;  	RESTORE_CONTEXT  	RTI; |