xref: /openbmc/u-boot/arch/microblaze/cpu/irq.S (revision cc53690e)
16260fb04SPeter Tyser/*
26260fb04SPeter Tyser * (C) Copyright 2007 Michal Simek
36260fb04SPeter Tyser *
46260fb04SPeter Tyser * Michal  SIMEK <monstr@monstr.eu>
56260fb04SPeter Tyser *
66260fb04SPeter Tyser * See file CREDITS for list of people who contributed to this
76260fb04SPeter Tyser * project.
86260fb04SPeter Tyser *
96260fb04SPeter Tyser * This program is free software; you can redistribute it and/or
106260fb04SPeter Tyser * modify it under the terms of the GNU General Public License as
116260fb04SPeter Tyser * published by the Free Software Foundation; either version 2 of
126260fb04SPeter Tyser * the License, or (at your option) any later version.
136260fb04SPeter Tyser *
146260fb04SPeter Tyser * This program is distributed in the hope that it will be useful,
156260fb04SPeter Tyser * but WITHOUT ANY WARRANTY; without even the implied warranty of
166260fb04SPeter Tyser * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
176260fb04SPeter Tyser * GNU General Public License for more details.
186260fb04SPeter Tyser *
196260fb04SPeter Tyser * You should have received a copy of the GNU General Public License
206260fb04SPeter Tyser * along with this program; if not, write to the Free Software
216260fb04SPeter Tyser * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
226260fb04SPeter Tyser * MA 02111-1307 USA
236260fb04SPeter Tyser */
246260fb04SPeter Tyser
256260fb04SPeter Tyser#include <config.h>
266260fb04SPeter Tyser#include <asm/asm.h>
276260fb04SPeter Tyser	.text
286260fb04SPeter Tyser	.global _interrupt_handler
296260fb04SPeter Tyser_interrupt_handler:
30*cc53690eSMichal Simek	swi	r2, r1, -4
31*cc53690eSMichal Simek	swi	r3, r1, -8
32*cc53690eSMichal Simek	swi	r4, r1, -12
33*cc53690eSMichal Simek	swi	r5, r1, -16
34*cc53690eSMichal Simek	swi	r6, r1, -20
35*cc53690eSMichal Simek	swi	r7, r1, -24
36*cc53690eSMichal Simek	swi	r8, r1, -28
37*cc53690eSMichal Simek	swi	r9, r1, -32
38*cc53690eSMichal Simek	swi	r10, r1, -36
39*cc53690eSMichal Simek	swi	r11, r1, -40
40*cc53690eSMichal Simek	swi	r12, r1, -44
41*cc53690eSMichal Simek	swi	r13, r1, -48
42*cc53690eSMichal Simek	swi	r14, r1, -52
43*cc53690eSMichal Simek	swi	r15, r1, -56
44*cc53690eSMichal Simek	swi	r16, r1, -60
45*cc53690eSMichal Simek	swi	r17, r1, -64
46*cc53690eSMichal Simek	swi	r18, r1, -68
47*cc53690eSMichal Simek	swi	r19, r1, -72
48*cc53690eSMichal Simek	swi	r20, r1, -76
49*cc53690eSMichal Simek	swi	r21, r1, -80
50*cc53690eSMichal Simek	swi	r22, r1, -84
51*cc53690eSMichal Simek	swi	r23, r1, -88
52*cc53690eSMichal Simek	swi	r24, r1, -92
53*cc53690eSMichal Simek	swi	r25, r1, -96
54*cc53690eSMichal Simek	swi	r26, r1, -100
55*cc53690eSMichal Simek	swi	r27, r1, -104
56*cc53690eSMichal Simek	swi	r28, r1, -108
57*cc53690eSMichal Simek	swi	r29, r1, -112
58*cc53690eSMichal Simek	swi	r30, r1, -116
59*cc53690eSMichal Simek	swi	r31, r1, -120
60*cc53690eSMichal Simek	addik	r1, r1, -124
616260fb04SPeter Tyser	brlid	r15, interrupt_handler
626260fb04SPeter Tyser	nop
636260fb04SPeter Tyser	nop
64*cc53690eSMichal Simek	addik	r1, r1, 124
65*cc53690eSMichal Simek	lwi	r31, r1, -120
66*cc53690eSMichal Simek	lwi	r30, r1, -116
67*cc53690eSMichal Simek	lwi	r29, r1, -112
68*cc53690eSMichal Simek	lwi	r28, r1, -108
69*cc53690eSMichal Simek	lwi	r27, r1, -104
70*cc53690eSMichal Simek	lwi	r26, r1, -100
71*cc53690eSMichal Simek	lwi	r25, r1, -96
72*cc53690eSMichal Simek	lwi	r24, r1, -92
73*cc53690eSMichal Simek	lwi	r23, r1, -88
74*cc53690eSMichal Simek	lwi	r22, r1, -84
75*cc53690eSMichal Simek	lwi	r21, r1, -80
76*cc53690eSMichal Simek	lwi	r20, r1, -76
77*cc53690eSMichal Simek	lwi	r19, r1, -72
78*cc53690eSMichal Simek	lwi	r18, r1, -68
79*cc53690eSMichal Simek	lwi	r17, r1, -64
80*cc53690eSMichal Simek	lwi	r16, r1, -60
81*cc53690eSMichal Simek	lwi	r15, r1, -56
82*cc53690eSMichal Simek	lwi	r14, r1, -52
83*cc53690eSMichal Simek	lwi	r13, r1, -48
84*cc53690eSMichal Simek	lwi	r12, r1, -44
85*cc53690eSMichal Simek	lwi	r11, r1, -40
86*cc53690eSMichal Simek	lwi	r10, r1, -36
87*cc53690eSMichal Simek	lwi	r9, r1, -32
88*cc53690eSMichal Simek	lwi	r8, r1, -28
89*cc53690eSMichal Simek	lwi	r7, r1, -24
90*cc53690eSMichal Simek	lwi	r6, r1, -20
91*cc53690eSMichal Simek	lwi	r5, r1, -16
92*cc53690eSMichal Simek	lwi	r4, r1, -12
93*cc53690eSMichal Simek	lwi	r3, r1, -8
94*cc53690eSMichal Simek	lwi	r2, r1, -4
956260fb04SPeter Tyser
966260fb04SPeter Tyser	/* enable_interrupt */
976260fb04SPeter Tyser#ifdef XILINX_USE_MSR_INSTR
986260fb04SPeter Tyser	msrset	r0, 2
996260fb04SPeter Tyser#else
1006260fb04SPeter Tyser	/* FIXME unstable in stressed mode - two irqs */
1016260fb04SPeter Tyser	nop
1026260fb04SPeter Tyser	addi	r1, r1, -4
1036260fb04SPeter Tyser	swi	r12, r1, 0
1046260fb04SPeter Tyser	mfs	r12, rmsr
1056260fb04SPeter Tyser	ori	r12, r12, 2
1066260fb04SPeter Tyser	mts	rmsr, r12
1076260fb04SPeter Tyser	lwi	r12, r1, 0
1086260fb04SPeter Tyser	addi	r1, r1, 4
1096260fb04SPeter Tyser	nop
1106260fb04SPeter Tyser#endif
1116260fb04SPeter Tyser	bra	r14
1126260fb04SPeter Tyser	nop
1136260fb04SPeter Tyser	nop
1146260fb04SPeter Tyser	.size _interrupt_handler,.-_interrupt_handler
115